AAG software development page

From Argentina.
Contact: aagzorzal.net

Here it is some of the software I made during the years. All of it is open source and anyone is welcome to use it and give feedback, although I do not provide any warranties.

Page under construction

MLImgSynth (machine learning image synthetizer)
ai cli lib ggml c

Command line program that generate images from textual prompts using Stable Diffusion models. Written from scratch in C using GGML as inference backend. It can also be used as a dynamic library. An example using it from Python is provided.

Binaries, code and more information at github.

Catan
game sdl c

Unofficial implementation of the Settlers of Catan board game that can be played against the computer. The players take turns to build roads and settlements to obtain the resources inside the hexagonal tiles which compose the board. See the manual in the official site for a complete explanation. Written in C using SDL and my common code. The online version was compiled with emscripten.

Play online
Download for Windows 64bits
Source code

ccommon
source library c

Library of common C code I use across multiple projects. Each "module" is fairly independent and can be copied into a project without separate compilation. I distribute it under the permissive Zlib license to allow anyone to use it. Includes allocators, vectors (dynamically-sized arrays), dynamic strings, images and sounds objects, image I/O (using libpng, libjpeg, and libav), structured I/O (json, cbor), rich text rendering, a simple immediate-mode GUI, and more.

Source code

You can see some examples of its use in the above projects.

pymacro
cli python

Text preprocessor that executes sections marked by $ inside a python environment. Useful for code generation tasks that require a language more powerful than that of the C preprocessor.

pymacro.py

Example

ffscrrec
cli ffmpeg python

This small Python program uses ffmpeg to record the screen and sound from the microphone. Useful to record online presentations or tutorials. The command ffmpeg must be in the path.

ffscrrec.py

Usage: execute python ffscrrec.py -o output.mp4. When you have finished, press q in with the command line window. See ffscrrec.py -h for additional options.

pyfff
lib ffmpeg python

This one-file Python module simplifies the use of ffmpeg complex filters to produce simple animated videos such as presentations. The command ffmpeg must be in the path.

pyfff.py

Example

Example video

gnuplot_util.py
lib gnuplot python

Python module to interface with gnuplot, which I prefer over matplotlib. The command gnuplot must be in the path.

gnuplot_util.py

Example

ngnupg.vim
plugin gpg vim

Plug-in for NeoVim to encrypt and decrypt files in memory using a password and the symmetric encryption options of GnuPG. It is written in vimscript so, it may work in Vim too. The command gpg must be in the path. I have been using it for several years.

ngnupg.vim

Usage:

  1. Copy ngnupg.vim to the plugin directory (e.g. .config/nvim/plugin).
  2. Open a new file in vim and write some initial text.
  3. Execute the command :GPGEncrypt. You will be asked for a passphrase.
  4. Save the encrypted file.
  5. Next time you open the file, you can decrypt it with the command :GPGDecrypt. You will be asked for the passphrase again.
  6. You can automate this last step by adding the line let g:ngnupg_patterns = "*.gpg" to your init.vim. Then, you will be automatically asked for the passphrase each time you open a file with the extension .gpg.



Last update 2026-01-11.