<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-us">
  <id>https://sibexi.co/</id>
  <title>The sibexico databank</title>
  <updated>2026-04-02T00:35:30-07:00</updated>
  <link href="https://sibexi.co/" rel="alternate" type="text/html" />
  <link href="https://sibexi.co/atom.xml" rel="self" type="application/atom+xml" /><entry>
    <id>https://sibexi.co/posts/windows-clipboard-unprotected/</id>
    <title>Your Windows Clipboard Is Unprotected</title>
    <updated>2026-04-02T00:35:30-07:00</updated>
    <link href="https://sibexi.co/posts/windows-clipboard-unprotected/" rel="alternate" type="text/html" />
    <summary>So, I just want to explain some problem of the Windows clipboard&amp;amp;hellip; It&amp;amp;rsquo;s completely unprotected. I mean, any process with user privileges is able to intercept your copied content silently. Let&amp;amp;rsquo;s try to do it in practice and think about how to live with this knowledge?
Windows clipboard under hood What happens when you copy some text (or other data)? It goes into shared memory managed by user32.dll. We&amp;amp;rsquo;ll skip the part with allocation and everything, today we&amp;amp;rsquo;re here to intercept the clipboard, not to study the Windows architecture deeply, right? So, when the copied information goes to the clipboard, it also receives tags to mark the copied data type. For example, it will be CF_UNICODETEXT for Unicode text and CF_BITMAP for bitmaps. The recipient (the application that will receive the copied data) will use these tags to decide what to do with the data. This procedure is highly abstracted in production ready GUI frameworks, so you don&amp;amp;rsquo;t need to think about processing it, you just won&amp;amp;rsquo;t be able to insert bytes of your cat photo into the clipboard as bytes in the text field of the app. When the receiving application gets the data from the clipboard, it uses GetClipboardData() to do it and uses GlobalLock() to read the data safely from the shared memory and copy it to its own private buffer.
</summary>
  </entry><entry>
    <id>https://sibexi.co/posts/os-level-sandboxing-in-c/</id>
    <title>OS-Level Sandboxing in C</title>
    <updated>2026-03-15T21:10:44-07:00</updated>
    <link href="https://sibexi.co/posts/os-level-sandboxing-in-c/" rel="alternate" type="text/html" />
    <summary>I found the slides and notes that I had prepared for a workshop I gave last year and decided to write a post about that topic. Here we will explore how we can sandbox a process to protect it from memory-corruption vulnerabilities and malicious code injection. To be honest, I&amp;amp;rsquo;m not really fluent in Windows development, so I used official documentation and then just tested the code. I&amp;amp;rsquo;m not sure if the best practices were used there, but the code was tested and it works. We will look at the techniques in 3 different worlds: Linux, Windows, and FreeBSD. The C23 standard is used in the examples.
</summary>
  </entry><entry>
    <id>https://sibexi.co/posts/cf-tunnels-usage/</id>
    <title>Cloudflare Tunnels Basics</title>
    <updated>2026-03-14T14:55:56-07:00</updated>
    <link href="https://sibexi.co/posts/cf-tunnels-usage/" rel="alternate" type="text/html" />
    <summary>Cloudflare provides a solution that will help you make your server, which is hosted at your home under NAT, visible from the internet—did you know? It also gives you all the features of Cloudflare, such as DDoS protection for your website. It&amp;amp;rsquo;s completely free and easy to configure. As an example, let&amp;amp;rsquo;s configure a website hosted on our local Raspberry Pi to make it visible from the internet. All we need is to have our own domain name attached to Cloudflare.
</summary>
  </entry><entry>
    <id>https://sibexi.co/posts/linux-cpu-core-isolation/</id>
    <title>Linux CPU Core Isolation for a Process</title>
    <updated>2026-03-06T21:34:58-07:00</updated>
    <link href="https://sibexi.co/posts/linux-cpu-core-isolation/" rel="alternate" type="text/html" />
    <summary>Today we will isolate a CPU core, deny the Linux scheduler from using it, and assign it to a specific process. It can be used to ensure CPU core availability for critical processes and can be useful in many cases (especially on CPUs with asymmetric cores, like E and P cores in Intel desktop CPUs).
In my case, I&amp;amp;rsquo;m working with Raspberry Pi with my students for the past couple of weeks, so, as an example in this post, we will make the process use a dedicated core on the RPi.
</summary>
  </entry><entry>
    <id>https://sibexi.co/posts/rpi-sd-optimization/</id>
    <title>Raspberry Pi SD Card Wear Optimization</title>
    <updated>2026-02-25T11:59:25-07:00</updated>
    <link href="https://sibexi.co/posts/rpi-sd-optimization/" rel="alternate" type="text/html" />
    <summary>Raspberry Pi is a perfect choice for a tiny home server for low load levels, especially the RPi 5, which is powerful enough, cheap, and small in size. The only problem is that it works with SD cards, which die very fast if you use them on a server. Let&amp;amp;rsquo;s see what we can do to reduce SD card wear when using the RPi as a server.
SD card trimming
</summary>
  </entry><entry>
    <id>https://sibexi.co/posts/go-channels/</id>
    <title>Go Channels</title>
    <updated>2025-10-23T22:00:33-07:00</updated>
    <link href="https://sibexi.co/posts/go-channels/" rel="alternate" type="text/html" />
    <summary>Go is my favorite language, without a doubt! Readable, simple code, active and friendly community, fast and modern language with GC, and a PERFECT vendoring system (absolutely love it). I realized that the channel mechanics in Go are not completely clear for some people, so let me explain!
Basically, everything is really simple. We have goroutines—it&amp;amp;rsquo;s like coroutines, but go-routines, did you catch it? :) So we have independent threads using this. Channels are just a mechanism for communication between different goroutines in our program. It&amp;amp;rsquo;s not limited to use with parallel goroutines, but, to be honest, it&amp;amp;rsquo;s pointless to use channels outside of goroutines.
</summary>
  </entry><entry>
    <id>https://sibexi.co/posts/tinygate-introduction/</id>
    <title>TinyGate Introduction</title>
    <updated>2025-09-21T19:58:14-07:00</updated>
    <link href="https://sibexi.co/posts/tinygate-introduction/" rel="alternate" type="text/html" />
    <summary>During COVID isolation in 2020-2021 I developed a very simple web reverse proxy in pure C. In 2025 I found this project, moved it to C23 standard and decided to release it publicly. It&amp;amp;rsquo;s configurable, very fast and can serve even high loaded systems. Basically I made it just for manage few standalone web services hosted at single server.
Key features:
&amp;amp;ndash; Configurable by .ini file, very simple config with just few parameters.
&amp;amp;ndash; Cross platform, works on both Linux and Windows.
&amp;amp;ndash; Multithreading with configurable size of thread pool.
&amp;amp;ndash; Modern language: redesigned for C23.
</summary>
  </entry><entry>
    <id>https://sibexi.co/posts/freertos_daemon_c/</id>
    <title>FreeRTOS Daemon On C89</title>
    <updated>2025-08-22T11:51:06-07:00</updated>
    <link href="https://sibexi.co/posts/freertos_daemon_c/" rel="alternate" type="text/html" />
    <summary>August was very busy for me so it was no publications here… Need to fix it then, let&amp;amp;rsquo;s make a daemon for the FreeRTOS and understand how it works! :)
First things first, let&amp;amp;rsquo;s understand core concepts of the FreeRTOS:
Standard language for FreeRTOS which is used by most developers is C89. In the daemon we need to have a blocking calls to allow other tasks to run. The daemon is based on an infinite loop that will make our task running forever. First we will include all necessary headers for our daemon:
</summary>
  </entry><entry>
    <id>https://sibexi.co/posts/understanding-love2d/</id>
    <title>Understanding Love2D</title>
    <updated>2025-07-19T20:07:26-07:00</updated>
    <link href="https://sibexi.co/posts/understanding-love2d/" rel="alternate" type="text/html" />
    <summary>Today we will talk about love&amp;amp;hellip; I mean, Love2D - the engine for 2D games. Basically, I really love the game engine because it&amp;amp;rsquo;s fast, simple and will let you make your first game in just a couple of hours! The process of a game creation looks like just programming on Lua, without any heavy overloaded IDE or special tools. Little by little,we will create a prototype for a 2D RPG with point-and-click controls right now! It will even have an animated character and we will do all of this in less than 100 strings of the code on Lua!
</summary>
  </entry><entry>
    <id>https://sibexi.co/posts/zig-lang-overview/</id>
    <title>Zig Language Overview</title>
    <updated>2025-07-17T19:07:09-07:00</updated>
    <link href="https://sibexi.co/posts/zig-lang-overview/" rel="alternate" type="text/html" />
    <summary>It&amp;amp;rsquo;s number of new programming languages here. Let&amp;amp;rsquo;s look at Zig and check what features it offers and how it basically looks. So, Zig is a new language on the market, still having version 0.14.1. No GC here, strong static typing, really small size of compiled binaries. Positioned as a replacement for C. We will begin from pros and cons tnd then will try to code on it a bit.
</summary>
  </entry><entry>
    <id>https://sibexi.co/posts/post-zero/</id>
    <title>Post Zero</title>
    <updated>2025-07-14T17:04:13-07:00</updated>
    <link href="https://sibexi.co/posts/post-zero/" rel="alternate" type="text/html" />
    <summary>So guys, welcome to my new blog. I have not blog since 2018 but in the past couple years I&amp;amp;rsquo;ve been doing tons of interesting things and experiments and really wanna share my experience. I believe you will find something interesting about programming, electronics, networks, security and all around this. As well just a couple months ago I found myself interested in gamedev, maybe I will post something about this too. The design of the website will be adjusted and more content will be added. I will try to post at least a couple interesting stories per month so stay tuned.
</summary>
  </entry>
</feed>
