RSS Amplifier

Blog

TheBestTvarynka

My personal blog with articles, thoughts, guides/tips

tbt.qkation.comRSS feed ↗24 posts

Latest posts

Cursed story #1: CRLF

Cursed story - a tiny story from my experience I wish had never happened and increases my cursed knowledge . CRLF and failed migration We all know about the different line endings ( Difference between CR LF, LF and CR line break types ). Usually, I have no problems with them. I just commit files as they are and do not care. Surprisingly, I still managed to face a problem with it. Despite all the…

Grafily improvements 0.3.0...0.3.6

And while I am writing this post, hiding in the shelter from russian missiles attacking my city, please consider helping Ukraine fight the evil. During the night from July 18 to 19, 2026, russia has fired the most ballistic missiles at Kyiv since the start of the war (> 40 missiles). Intro Here we go again 😉. Since May 09 , I have implemented new features, fixed many bugs, and extensively…

Announcing Grafily v.0.3.0

Short release notes: github/TheBestTvarynka/grafily/v.0.3.0 . Intro Around a month ago, I released Grafily v.0.3.0. I was really happy to reach this milestone. Grafily is the most algorithmically challenging project so far, and I had a lot of enjoyment working on it. The fact that I personally use this tool for my own family research makes me happy. Let me recall what Grafily is and what its…

Obsidian photo-tagging

TL;DR: github/TheBestTvarynka/photo-tagging . The problem I store my genealogy research data inside the Obsidian vault. Its structure assumes that I have one page per person. When I got a lot of old photos from many relatives, I started thinking about how to store them. Obviously, I cannot group them by person because there are many photos with many people in them. After a bit of thinking and…

Drawing Genealogy Graphs. Part 1: Tree Drawing Using Reingold-Tilford Algorithm

Motivation Last year, I started my own genealogy research. Honestly, I planned to start it many years ago. One day in 2025, I realized that if I did not start, then it may never happen, and I would lose a huge part of my family history. I spent a lot of time visiting my old relatives and asking them many questions, and scanning old photos and documents. At some point, I questioned myself about how…

Grafily

Source code: github/TheBestTvarynka/grafily . TODO: coming soon. While I am working on it, please, read this: Announcing Grafily v.0.3.0 .

Announcing crypto-helper v.0.16.0

Visit this tool at crypto.qkation.com . Short release notes can be found here: crypto-helper/v.0.16.0 . Intro The previous release was around 1.5 years ago. I've made many improvements and fixes since then. It's time to publish a new release. Note: Actually, releases are just checkpoints during the crypto-helper development and do not mean anything special. All features and fixes are deployed and…

How RDP smart card logon works

Intro Around two years ago, FreeRDP got smart card logon support: Smartcard logon with FreeRDP . Theoretically (and sometimes practically), it is possible to use a smart card (scard) for RDP logon in FreeRDP. In this post, I will explain how RDP scard logon works and how to set it up. This post has two main parts: theoretical and practical. I was thinking about two separate posts, but then I…

Announcing Dataans v.0.3.0

GitHub/TheBestTvarynka/Dataans/releases/v.0.3.0 . Intro The Dataans app has adopted a local-first approach since the very beginning of its existence. After some time, I started to use the app on many devices and inside my Windows/Linux VMs. I caught myself thinking that it would be good to be able to transfer data from one device to another. Fast forward two months, and suddenly I realized that it…

Safety Comments Matter

TL;DR: This article is highly inspired by this GitHub comment . Safety Comments Matter SAFETY comments are always welcome when dealing with unsafe code in Rust. The clippy even has a lint to enforce writing them: rust-lang.github.io/rust-clippy/#undocumented_unsafe_blocks : #![warn(clippy :: undocumented_unsafe_blocks)] You can find such comments in many crates and std. Example : // SAFETY:…

Implementing Kerberos RPC encryption over SSPI

Intro Today's world has many unknown and magical things. Proprietary protocols and libraries are among them 🤪. In this blog post, I will explain how RPC encryption works under the hood and how to implement it over the SSPI interface. Goals Provide a detailed explanation of how RPC PDUs are encrypted. Explain how it is related to SSPI. Implement RPC PDUs encryption/decryption and test it against…

Tauri error handling recipes

Intro I'm developing the desktop app to meet my own needs: Dataans . Take notes in the form of markdown snippets grouped into spaces. I use Tauri as the main framework and Leptos as the frontend. I am satisfied with the developing experience and the result I got. During the initial implementation (PoC phase), I didn't implement any error handling and called .unwrap() every time. However, after the…

Announcing Dataans v.0.1.0

Intro Around half a year ago, I started my new side project: Dataans . It already has plenty of good features and I think I'm ready to present it to you. I'd say that it's not ready and missing a lot of functionality, but I remembered the following quote ( Lessons learned in 35 years of making software ): When you deliver work you’re really proud of, you’ve almost certainly done too much and taken…

Dataans

Source code: github/TheBestTvarynka/Dataans . The Dataans is a desktop app that allows you to take notes in the form of markdown snippets grouped into spaces. Yes, it's another note-taking app, but it has unique features that I miss in all other note-taking apps. Motivation I write notes almost every time I use my computer. Usually, it's small pieces of data/code/docs/links I found during the…

crypto-helper

Visit this tool at crypto.qkation.com . The crypto-helper is an online app that helps to work with the different crypto algorithms. This app can hash/hmac, encrypt/decrypt, and sign/verify the data, debug JWT tokens, parse ASN1 structures, compute diffs, and more. All computations are performed on the client side. This tool never sends the data the any servers. Motivation Crypto helper During my…

Writing unsafe Rust code? Please, consider Miri

For ones who don't know ( quote src ): Miri is an interpreter for Rust's mid-level intermediate representation. Miri is an Undefined Behavior detection tool for Rust. It can run binaries and test suites of cargo projects and detect unsafe code that fails to uphold its safety requirements. 👍 The description is pretty clear. So, why did you write an entire blog post about it? I have a few reasons…

Git recipes

Recently I lectured in my company about git and resolving specific situations with it. It inspired me to write this article. I know that there is tons of info about git and related stuff. I wanted to make this one as a comprehensive set of instructions about resolving concrete git situations. Note. This page can be changed and improved in the future (I'll try to save the backward compatibility)!…

Smart card container name

Before I start Goals Explain how the Windows minidriver treats the smart card container name. Tell how a bad container name can break scard auth. Fun 🥳. Non-goals Explain every piece of smart card architecture in Windows. Explain every smart card minidriver function. Getting Started In my previous article , I explained the different smart card cache items (files), their format, and purpose. The…

Windows smart card cache

Getting Started A few months ago I had a great opportunity to implement the smart card emulation . The whole point was to emulate the smart card behavior without an actual smart card. I can talk a lot about such stuff, but in this article, I'm going to share my experience in smart card cache exploration and implementation. To make all my decisions clear for you, I provide you with some additional…

Debugging with API Monitor

The API Monitor speaks for itself. It's a great tool for the system API calls debugging, monitoring, information extraction, exploring. Especially in cases when you don't know how exactly API works. Disclaimer . (If you don't get it yet). Mentioned API Monitor is a tool for monitoring the system API calls. So, I you are back/front-end dude which is not interested in such stuff, this article will…

Rust Clap recipes

I bet you know, but I still wanna recall it. Clap is a full-featured, fast Command Line Argument Parser for Rust. docs.rs . crates.io . Goals Goals: Show non-standard examples of the cli arguments configuration. Tell you about alternate ways to parse cli args with the clap . Non-goals: Write the "ultimate" guide to the clap library. Create an introduction (or for newbies) article about the clap.…

SSPI introduction

Goals The main purpose of this article is to tell you about Windows SSPI . If you know nothing about it and want to start working with it, this article will benefit you. If you are familiar with SSPI and have worked with it, then this article most likely will not be useful. Goals : Provide a comprehensive SSPI description. Introduce and explain basic SSPI terms. Understand core SSPI functions,…

yew-notifications

Notifications components library for Yew . It's like react-toastify but for Yew and more simpler (so far 😏). TL;DR: documentation . Motivation I was writing my personal project crypto-helper some time ago. I was forced to write awful code ( [1] , [2] ) to add some notifications functionality to my web app. So, I decided to write this library that allows the easy showing of notifications to users.…

bytes-formatter

Visit this tool at bf.qkation.com . Motivation During my work, I often need to convert bytes between different representations (format) like from hex to decimal and vice versa. From hex/base64 to ASCII . And so on. Before I just have one small rust project on my laptop with a few dependencies and every time I inserted my new data, run this project, and copy the output. After some time it became…