cavo789 🐳

@avonture.be

Markdown, WSL and Docker lover ~ PHP developer ~ Insatiable curious. 👉 https://www.avonture.be

In my Linux terminal, I type “ai-test” followed by the name of a Bash, PHP, or Python file (like “ai-test main.py”), and a connection is established to #Ollama; I provide it with the specified script and ask it to generate unit tests (which everyone knows is mandatory, but who actually writes them?)

ai-test: Generate Missing Unit Tests From Your Terminal With a Local LLM | Christophe Avonture

Turn your local Ollama model into an on-demand unit test generator. A zsh function that reads a Bash, PHP or Python file, detects whether you already have tests for it, prints only the missing Bats/Pe...

avonture.be

A few weeks ago, I added a “Helpful / Not really” feature at the bottom of my #docusaurus posts. This is to let visitors let me know when they liked a post or if they ran into a problem. Here's a post that explains in detail how I went about it

Adding Reader Reactions to Your Docusaurus Blog | Christophe Avonture

Build a fully working "Was this article helpful?" widget for your Docusaurus blog. Step-by-step guide covering the PHP backend, React component, CSS module, Docusaurus swizzle, and an admin dashboard ...

avonture.be

What’s the point of a technical #docusaurus blog if the code snippets are too complex? Shouldn’t the article adapt to the reader? I added a 'Explain like I’m 5' feature to my blog: a '?' appears next to less obvious code lines. Hover for a clear, plain-language explanation. Simple and unobtrusive

AI-Powered Code Tooltips in Docusaurus — Explain Like I'm Five | Christophe Avonture

Add hover tooltips to tricky code lines in your Docusaurus blog — powered by Claude, generated at build time, zero browser latency. Covers the remark plugin, the React renderer, and the CLI script.

avonture.be

This weekend, while I was devouring my AI quota at top speed, I asked Claude to hide some Easter eggs on my #Docusaurus blog. There are now up to eight of them. I won't say, “Go find them,” since I'm going to explain the trick. One of them—the best-hidden one—pops up if you do the Konami Code.

Meerkat Mischief: Sprinkling Easter Eggs Across my Blog | Christophe Avonture

A tour of eight small, discoverable easter eggs added to this Docusaurus blog — a hidden ASCII-art meerkat in the page source, a Konami-code sprite run, a console.log wink, a tab-away favicon swap, ro...

avonture.be

On Linux, grep works well for a file and a precise pattern. Across folders, it’s slower and needs many excludes (.git, node_modules, vendor…). Writing the perfect grep command first try? World-champion stuff. So yes, #ripgrep—rg for friends—is better. Let’s see why.

ripgrep — The Search Tool That Changed My WSL2 Workflow | Christophe Avonture

Discover ripgrep, the blazingly fast grep alternative written in Rust. Installation on Ubuntu/WSL2, ZSH configuration, practical shell functions, and real-world use cases that will transform how you s...

avonture.be

Tired of dull CLI blocks instantly popping up in your #Docusaurus posts? My new article introduces a 'typewriter' effect simulating real-time keystrokes. Animation speed scales dynamically based on character count. This visual gadget makes the page more engaging—because why not?

Bring Your CLI Tutorials to Life with a Typewriter Terminal | Christophe Avonture

Add a typewriter animation to your Docusaurus Terminal component — command lines typed character-by-character, output lines appearing in sequence, with a blinking cursor and a click-to-skip escape hat...

avonture.be

#Delta is a CLI tool making #git diff highly visual. It replaces +/- lines with red/green color-coding and merges word-level edits into a single line for better readability. As an external utility, you can also use it to compare any two text files! Give it a try if you're a git user!

delta: a Syntax-Highlighted Pager for git diff | Christophe Avonture

Stop squinting at raw git diff outputs. Learn how to install and configure Delta to add syntax highlighting and side-by-side views in under 5 minutes.

avonture.be

Ever know a word (e.g. “PASSWORD”) exists somewhere in a script or config file, but not where? Or you changed “John” to “Jane” and need to find every file still using the old value. Grep can do it but who remembers the right flags? An interactive search with live filtering solves that. #fzf #ripgrep

FZF + ripgrep: Interactive Code Search with Live Preview | Christophe Avonture

Combine ripgrep and fzf with a bat syntax-highlighted preview panel to build an interactive code search — then open the result directly in VSCode at the exact matching line.

avonture.be

Recently switched from #Gemini to #Claude Code—mind blown! Going from endless web UI copy-pasting to an agentic VSCode mode is revolutionary. But yikes, Claude uses tokens and usage quotas. After much reading, here are my notes on understanding tokens and how to reduce consumption...

Claude Code - Optimizing Token Usage | Christophe Avonture

A practical guide to reducing token consumption in Claude Code; CLI commands, optimization of CLAUDE.md, and other context management.

avonture.be

A new article discussing a best practice: instead of creating custom functions in your #zsh ~/.zshrc file, place them one by one (which is better for version control) in a dedicated folder. This also improves memory efficiency and reduces terminal startup time. Using a #fzf example

Beyond the Monolith - Organizing Your ZSH Workflow Like a Pro | Christophe Avonture

Stop bloating your shell configuration. Learn why moving ZSH functions to standalone files improves performance and maintainability, featuring a universal project navigator.

avonture.be

A colleague asked: "Can we run AI on a private network?" Now I'm building a home client-server setup! My workstation acts as the AI server, my laptop as the client. I access a #Gemini like web UI & #VSCode autocomplete locally. 100% private, zero quotas, zero cost! 💻🚀 #Ollama

Accessing Ollama across your local network | Christophe Avonture

Learn how to set up a dedicated Ollama server on your local network and configure VSCode with the Continue extension for a private, free AI coding assistant.

avonture.be

Something completely different this time: the #Belgif standard, which defines the foundation for API standardization at the Belgian federal level. In this new article, after introducing best practices for REST APIs, we’ll look at some linting errors (returned by Belgif) and how to address them.

Validate your OpenAPI schema against the Belgif REST standards | Christophe Avonture

Use VS Code Remote - SSH: connect to production servers, and edit/execute remotely while avoiding common pitfalls.

avonture.be

2024 best-in-class approach (optimization, security, simplicity) for #Markitdown: a Microsoft tool to convert numerous formats to Markdown. Convert .docx, .pdf, .xlsx, and many others to .md to extract text and document hierarchy efficiently.

Markitdown - Convert files and MS Office documents to Markdown | Christophe Avonture

Easily convert MS Office documents (Word, Excel) and PDFs into Markdown format with Microsoft's Markitdown tool. Includes step-by-step instructions for installation via Docker.

avonture.be

At work, I manage ~50 Linux servers, often connecting via " #ssh my_server. Instead of memorizing names, what if a TUI listed them alongside their installed websites, projects, and other relevant info? That’s all the inspiration I needed to code "sshf" (f for #FuzzyFinder).

Master your ssh command and select the host from a list | Christophe Avonture

Build an interactive, searchable SSH host selector using FZF. Learn to modularize your SSH configurations, add rich documentation, and trigger advanced custom actions via a fast Terminal User Interfac...

avonture.be

Let's stop writing documentation... Let's make it generate itself. This week, we'll explore how to generate diagrams, pie charts, mind maps, or any other #mermaid.js diagram using a ready-to-use #Docker image. I'll show you how to do it yourself.

Documentation as Code - Transform Your Infrastructure into Beautiful Diagrams with Python and Mermaid | Christophe Avonture

Automate your Documentation as Code by building a Dockerized Python and Mermaid CLI stack to generate dynamic architecture diagrams directly from your codebase.

avonture.be

What if we manually minify #CSS and #JS without heavy frameworks like #Node.js? A simple Bash script, a config file, a #Docker image, and boom! We merge all .css into one "style.min.css" (same for .js). Zero system bloat, no extra dependencies, and no wasted MBs on your drive.

Streamline Your Frontend - Minifying Assets with Docker, Bash, and YAML | Christophe Avonture

Drop the heavy Node toolchains. Build a fast, dependency-free asset minification pipeline using a declarative YAML manifest, Bash, and Docker.

avonture.be

There you go; it happened to me again. Coming back to a project several weeks later and realizing I’m working on the wrong #Git branch. It’s silly. Let’s see how we can try to prevent this from happening. We'll use #zsh and his chpwd hook.

Showing the last 3 updated branches when you jump in a git repo | Christophe Avonture

Learn how to configure ZSH to automatically display your most recently updated Git branches whenever you enter a repository or check its status.

avonture.be

I've built an automated tech doc generator using #Quarto. It auto-discovers DB schemas, APIs, and file structures via GitLab CI! I packaged it in a reusable #Docker image for any project. My new article shares the copy-paste code to try it in <5 mins.

Quarto - How I Built a Self-Documenting Ecosystem for 50+ Projects | Christophe Avonture

A deep dive into how I engineered a fully automated documentation ecosystem using Quarto and Docker, transforming documentation from a chore into a high-performance build pipeline.

avonture.be

In my new blog post, I'm showing how I've implemented the Google #gemini co-author in my #Docusaurus blog. From now, I just have to add the "ai_assisted: true" YAML frontmatter key and all the rest is automated i.e. adding the co-author and the small badge. www.avonture.be/blog/docusau...

How to indicate AI-assisted content in a Docusaurus blog | Christophe Avonture

A step-by-step guide to show when a blog post has been written with the help of an AI like Google Gemini, by adding an icon and an author.

avonture.be

#Docker: #ZSH + #fzf = efficiency. Beyond Bash, ZSH offers deep customization. Use fzf to filter lists and trigger actions instantly. My new article explains how to use it with Docker: select containers to open shells, view logs, or delete images via shortcuts like dex or dnuke.

ZSH Functions - Customizing Your Shell for Docker Management | Christophe Avonture

A collection of ZSH functions to enhance your terminal experience, including interactive Docker container management with fzf. Start new sessions, stop containers, and more with ease.

avonture.be

This week, I'm unveiling my #Docusaurus blog's killer feature: the ProjectSetup component. Paired with Snippet, it displays multi-file source code and generates a Linux Bash install script. Just copy-paste the script to build the entire project structure instantly. A ZIP download is also available.

Introducing the ProjectSetup Component - A Standardized Way to Share Project Structures | Christophe Avonture

Learn how to use the new ProjectSetup component to easily share project structures in your Docusaurus blog posts, complete with interactive file snippets and automated setup scripts.

avonture.be

New week, new post: I’ve automated Google #Gemini to generate the "TLDR" block at the start of my articles. It summarizes key concepts in a few hundred characters, helping readers decide whether to dive in. The script calls the API and injects the summary into a custom #Docusaurus component.

Automating TL;DR Summaries with Gemini AI | Christophe Avonture

Improve your reader's experience by automatically generating concise TL;DR summaries for your blog posts using Google's Gemini AI and Python.

avonture.be

Let's see how to automatically publish the list of your 10 last blog posts to your GitHub profile. The scenario will be: once a week, a GitHub Action will grab your rss.xml, get the last #Docusaurus articles and inject them in your profile. For sure, it's working for every rss; can be Joomla too.

Automate your GitHub README with your latest blog posts | Christophe Avonture

Keep your GitHub profile README up to date with your latest blog posts using GitHub Actions. Learn how to set up a scheduled workflow that fetches your RSS feed and updates your README automatically e...

avonture.be

Today, a small utility that will “visit” your #docusaurus website and give you some optimization tips for your images. The idea is to identify those that are not lazy_load, those that do not have height/width, and those that you could optimize by converting them to .webp.

Running some checks on your Docusaurus images | Christophe Avonture

A Python script to verify lazy loading and size of images in your Docusaurus site using Playwright and BeautifulSoup.

avonture.be

Managing multiple tabs for sub-projects in #WindowsTerminal is often inefficient. Learn how to split your screen into panes to keep everything in one window. As a bonus, discover how to broadcast commands to all open panes simultaneously for maximum efficiency. www.avonture.be/blog/windows...

Windows Terminal - Split Panes | Christophe Avonture

Learn how to split panes in Windows Terminal for efficient multitasking; shortcuts, configuration tips, and workflow examples.

avonture.be