■ SEARCH.EXE
    recreational-programming

    Test Locked 4

    sdsds szeze

    recreational-programming

    Test Locked

    this is a testsds sds

    recreational-programming

    Building a Local Voice-to-Text and Rewriting Assistant on Linux

    This article comes from a frustration I had with Discord Web. I didn't have the possibility to directly send a voice message. The only way to send one was to literally record my voice, save the file, and then send it manually. But that was enough to give me an idea: if I had a way to simply speak and immediately send the damn message, that would already be great. And then, imagine having a way to transcribe my voice directly into text and copy it straight to the clipboard; perfect for emails. Even better: a way to reformulate what I've said in different tones! That's the system I scripted yesterday, using keyboard shortcuts in my i3 environment, along with Bash, yad, notify, xclip, jq, ffmpeg, whisper.cpp, llama.cpp, systemd, and…

    recreational-programming

    Building a ChatGPT-like CLI in Bash: a journey through pipes, JSON, streaming, and shell weirdness

    There is something deeply satisfying about building a serious tool with primitive Unix bricks. The mentioned in this article comes from: repo A shell. A while true. A read. A curl. A jq. A pipe. At first, the goal looks almost absurdly simple: "I want ChatGPT, but in my terminal, with Bash." Then the real questions begin. How do we keep a conversation alive if the API is stateless? How do we build valid JSON safely from user input? How do we stream tokens as they arrive? Why does curl | while read ... break variable updates? What exactly is this cursed construct: done < <(curl ...)? And what is Bash really doing when we write IFS= read -r line? This article is the story of building a small but…

    recreational-programming

    How I Spy on My Own Blog (Politely): A Shiny/Nginx Log Analyzer That Separates Humans From the Internet’s Roombas

    I run a blog. People read it. Bots also “read” it — in the same way a vacuum cleaner “enjoys” a carpet. So I built a small R Shiny app that ingests my Nginx access logs, extracts the interesting bits, and applies a few pragmatic heuristics to answer the only question that matters: was this a human, or was this a script having a very busy day? Note By the way my blog and R shiny log analyzer is open-source at https://github.com/julienlargetpiet/blog The problem On a static blog, you don’t get “analytics events”. You get requests. A lot of requests. And if you do anything even mildly modern (like prefetching links), your own browser becomes suspiciously productive. Meanwhile, bots show up with a smile, download everything, and then leave without…

    recreational-programming

    Turning Blog HTML into RSS, the Low-Level Way (in C++)

    If you publish long-form posts on the web, you’ve probably felt the friction of keeping your RSS feed in sync. I did too. So I wrote a tiny command-line tool in C++ that converts a finished blog post page (the raw HTML file itself, not just the body) into a ready-to-drop <item> block for your RSS feed. Because yes—CLI is fun, and C++ is low-level, baby. 🛠️ TL;DR What it does: Reads a full raw blog HTML page (not just the body) → emits a valid RSS <item> XML snippet. Why it’s useful: No separate markdown front matter or duplication. Your source of truth is the rendered page. How to use: ./a.out post.html rss.xml "My Title" "https://example.com/post" "2025-10-04" Where it lives: github.com/julienlargetpiet/automate_rss The Problem An RSS feed wants clean metadata…

    recreational-programming

    A New Way to Explore Your System on Linux

    On Linux, productivity often comes from small but powerful tools. dmenu and rofi are great examples: minimalist application launchers that make your desktop more efficient. But I wanted to go further. Instead of just launching programs, what if I could explore my system, run scripts, and interact with the shell — without opening a terminal? That’s how I created dmenu_all, an extensible, open tool that transforms dmenu into a universal system navigator. What It Does Browse your files: Navigate directories quickly through a dmenu-driven menu. Launch applications: Use it like a classic launcher. Run scripts: Define your own actions and execute them from the same interface. Chain commands: Build workflows without typing shell commands manually. In short, dmenu_all makes dmenu (or rofi) a hub for your daily Linux tasks. How…

    recreational-programming

    Automating YouTube Video Imports into My Website with One Magic Bash Line

    Over the past months I’ve been downloading my own YouTube videos with yt-dlp. It’s a fantastic tool for archiving, and I’ve built up a folder full of .mp4, .webm, and .mkv files. But here’s the boring part: every time I wanted to put those videos on my personal website, I had to manually write <a> tags for each one. Copying file names, escaping spaces, renaming stuff… too much grunt work. So I decided to automate it. And the result is this single, magic line of Bash: Copy $ find . -type f \( -name "*.webm" -o -name "*.mp4" -o -name "*.mkv" \) -printf "%P\0" | xargs -0 -n1 bash -c 'X="$1"; clean=$(echo "$X" | sed "s/ /_/g"); echo "<a href="/assets/common_files/$clean">$X</a><br>"' X1 Breaking Down the Magic find . -type f \(…

    recreational-programming

    Building My Own Parser in R - A Custom Syntax Experiment

    This was one of my older projects, a little bit eccentric but very educational. I wanted to see if I could design and implement a parser from scratch in R, complete with a brand-new syntax and functions to both read and write data. The project is part of my old data manipulation library written in R avaiable on this repo It wasn’t about reinventing JSON, XML, or YAML — it was about learning how parsing works at a low level, handling nested structures, and building a system that’s flexible enough to store and retrieve hierarchical data. The Custom Syntax I invented a compact bracket-based format to represent hierarchical data. It looks like this: Copy (ok(ee:56)) (ok(oui(rr((rr2:6)(rr:5))))(oui(bb(rr2:1)))(ee1:4)) The rules are simple: Each node is wrapped in parentheses (...). A node may…

    recreational-programming

    SoundCutr: An Early Attempt at Voice Extraction in Audio Files

    Think of this article as a small time capsule of my programming journey — proof that everyone starts somewhere, and that projects don’t need to be perfect to be fun and functional. Project Overview The goal of SoundCutr was to isolate the human voice from an audio track. This is useful for tasks like: Karaoke (removing or extracting vocals) Speech analysis Audio preprocessing for further machine learning tasks The approach is based on two key principles: Frequency filtering to focus on the human voice range (roughly 300 Hz – 3400 Hz). Block compartmentalization (time segmentation) to distinguish between real continuous speech and short transient sounds. How It Works The pipeline for processing audio files includes both spectral and temporal logic: Read the audio file (typically a .wav format). Apply filters…

    recreational-programming

    Validating JSON Syntax: A Conceptual Approach

    In modern systems, JSON has become the de facto standard for exchanging structured data. Its popularity comes from its simplicity and readability. Yet, beneath this apparent simplicity lies a crucial question: how can we be sure that what we call “JSON” actually respects the rules of the format? Parsing alone is not enough — validation is essential. In this article, I share a way of thinking about JSON validation that goes beyond existing tools. The objective is not to provide a new parser or a piece of software, but to propose a conceptual algorithm for understanding what it really means to validate JSON. The Problem of Validation When we speak of JSON, we often assume that if a parser can read a string without raising an error, then the content…

    recreational-programming

    Custom Encoding For Integers

    Ok, so i had to encode a structured data, a positive integer in this case representing the space for the server to reserve a byte slice for a file content, image, text... Basically, how to convert any positive integer to a vector of number that accepts value from 0 to 255. Encoding First solution, i just add 256, which will be 255 (from 0) in a vector, and the ending position value will be the rest of the integer minus the previous additions. But that is non optimal, because the vector is too long. Something that reduces more the size of the integer is of course a division, which will reduce a lot the size of the sending byte vector. Ok, so this is it for encoding: Copy func IntToByteSlice(x…

    recreational-programming

    Authentication Without Cookies

    Recently, i've been programming a simple cloud webserver in Go. And of course, it is unavoidable when including accounts, how to make sure a user is who he pretends to be when he connects to a page. Of course, there are authetication and session cookies, but in this blog we like to imagine another way to achive this. So let's implement a custom authentication mechanism that does not rely on cookies at all. Sounds cool. The projetc is available on this website Friendly_Cloud Or here on GitHub repo Method The credentials database consists of 3 columns: username password temp_password The password is only used in the login process, to verify that the users gives the right password. After validation, a randomly temporary password is generated, stored in the third column,…

    recreational-programming

    Symetric Encryption Protocol

    How i've implemented an original symetric encryption protocol with combinatorial mathematics repo Or download on this website as zip: zip It starts with this formula: n! / ((n-k)! * k!) It tells how many of k elements combinations can be created in a set of length n. For example, if we have: [1, 1, 0] We notice that the set has a length of 3 there are 2 elements inside. The possible combinations are: [1, 1, 0] [1, 0, 1] [0, 1, 1] It is intuitively made (easy for a set of length 3), but what tells the formula? 3! / ((3 - 2)! * 2!) = 6 / (1 * 2) = 3 We get the number of combinations. Won't be cool to have an algorithm returning the combinations…

    recreational-programming

    A ReGex Dialect

    In this article i'm gonna present you a method to implement RegEx. Link: repo Or on this website: zip Before the explanation, what even is RegEx ? Regular Expressions are in fact a synthax allowing to find any pattern inside a text. A good RegEx dialect is Search Complete if it can, just by its synthax, find any pattern inside a text. I'm not a huge fan of the actual synthax in the majority of the RegEx dialects. I was inspired by these dialects but tried to simplify them, in C++. But first we have to define the characteristics of our dialect sensed to be Search Complete. Allow set definition as a condition This will be built by the introduction of a special character being - which will link the…

    recreational-programming

    An Original Transformation Engine

    In this article i will introduce you, in short, how i've implemented transformation engine XSLT like from scratch (with C++). repo Or download on this website: zip Which means requesting a value using its path in the data structure, the introduction of conditions, loops and sorting algorithms to generate a html page that the user describes inside a file with query instructions. Since i start from scratch, i have to create my own synthax to structure data. I remember of an algorithm i've created 1 year ago now allowing to tokenize pairs of parentheses inside a string. Bingo, for nested data XML, Json or even TOML like, pairs of parentheses design is great to describe their nesting. How it looks: Copy (destination: (restaurant: (menu: (size: (weight:150g) (size:small) ) (size: (weight:200g)…