Askepit Hub
Articles
March 4th, 2025
Making bots play cards endlessly, part I
So there I was, doing what I love—messing around with writing mini-games that no one but me would ever see. This time, I was tinkering with a card game, a knockoff of Inscryption. Well, more like a pale imitation with vague goals and even vaguer prospects. But one thing was clear: the core mechanic of the game was card-based combat, and it needed to be engaging enough to suck the player in for hours.
November 28th, 2024
Writing plugins for Obsidian, part II
Let's continue writing our own plugins for Obsidian. You can find the first part of the article here. In it, we: Discovered that writing plugins can be even easier than the official documentation suggests; Wrote three small plugins, which are already being used in production personally by me; Promised to write a fourth "final boss" plugin; Now, let's get started.
November 27th, 2024
Writing plugins for Obsidian, part I
After all the hype around Notion, people scattered in all directions, but somehow most ended up looking toward Obsidian. Internet was flooded with articles about Obsidian and plugins for Obsidian. However, to my disappointment, there are not so many articles about how to write your own plugin rather than just use someone else’s creations. In the meantime, I’d like to fill this gap with my own guide.
November 20th, 2024
constexpr Game of Life
For over a decade now, C++ has had constexpr, a feature that allows programmers to dump part of the workload onto the compiler. When I first encountered it, it blew my mind—imagine the compiler crunching some pretty complex calculations before the program even runs!
August 6th, 2024
Multithreading in games
Modern games are rich in content, gameplay mechanics, and interactivity. A lot happens on the screen all at once—the world feels alive, responsive, and even without active player involvement, life continues to simmer, with multiple events unfolding simultaneously. Let’s dive into the details of how this diversity of in-game events is implemented and find out what role multithreading plays in all this, and how many cores a typical game needs.
August 2nd, 2024
Punk riff generator
Once upon a time, maybe five years ago, I decided I wanted to play a sound in the browser. I don’t even remember the exact task or what I was trying to achieve—most likely just messing around with different samples, maybe programming a track. So I Googled how to do it, landed on a StackOverflow question/answer somewhat like this. And there it was—my simple “playing a sound” query was met with a barrage of contexts, buffers, decoding… I felt so suffocated that I immediately waved it all off and decided I wasn’t that interested in the first place—certainly not at that cost. And I forgot about the whole thing for many years.
February 25th, 2024
Git in conditions of extreme branch atomicity
How are your branches organized in Git? What do they look like, and what size are they? Below, I'll tell you how to restrict yourself within limits and then deal with the consequences using a nifty life hack.
February 19th, 2024
Voronoi, Manhattan, random
This is a story about how to never quite finish a project, yet gain a ton of experience and have no regrets. So, we had one programmer, one artist, an absolute lack of understanding of the workflow, an unfamiliar game engine, and a desire to create something. If you're curious about the mixup of Voronoi diagrams, a special case of Minkowski distance, polygon transformations, procedural generation, and noise—all wrapped up in a beautifully stylized package—this is the right place for you to read.
January 18th, 2024
Utilizing git to make Rust development even sweatier
Rust was created to make programmers suffer, right? So why not make git collaborate with Rust and make it all even more hardcore? Actually, the article is more about git than Rust, so if you're not particularly familiar with Rust, don't hesitate — the narrative will be more about the development flow than the language itself. Rust was chosen for the article mainly for its convenient package manager cargo, which makes the storytelling more laconic and illustrative.
January 15th, 2024
What we lack in C++
C++ has been evolving rapidly for the past decade and more. Nevertheless, in our codebases, there are still numerous helper files and classes that aim to fill the gaps in the language's standard library. How did we end up with these helper files, and when will this ever end?