Flagship

Mappa

Compile-time mapping that stays Native AOT friendly, readable, and reusable.

A C# source generator that emits plain mapping code between types — similar in spirit to AutoMapper, but the work happens at compile time. Attributes configure the mapper without changing source or target types; missing nested maps are generated for you. Methods can live on any partial class, including static types and extension methods. Companion packages cover Google.Protobuf well-known types and MongoDB BSON. Recent releases add IQueryable projection, polymorphic mapping, reference and cycle handling, and dependency-injection registration.

Tags C#source-generatorcsharpdotnet

Posts Mappa v10.2.0 Mappa v10.1.0 Mappa v10.0.0 Mappa v1.2.0 Mappa v1.1.0 Mappa the source generator C# mapper

Comment TODO Analyzer

TODOs without a ticket number rot; this makes the format a compiler rule.

A Roslyn analyzer that requires every TODO comment to follow the same shape. Built-in formats are GitHub (TODO [#33] This needs to be handled.), Jira (TODO [COMMON-1234] This needs to be handled!), and plain (TODO: Should we handle this?), or a custom regex from .editorconfig. Optional rules fail the build on any leftover TODO (TA0002) or on a list of task IDs you want closed (TA0003).

Tags C#analyzercsharpdotnet

Posts Comment TODO analyzer v1.2.0 Comment TODO analyzer v1.1.0 Comment TODO analyzer

Libraries

PrettyCode.StringBuilder

Generated source is easier to debug when indent and directives nest and unwind themselves.

A StringBuilder wrapper for emitting formatted source. Disposable scopes handle indentation, curly-brace blocks, #pragma warning, #nullable, and #region, and restore the previous state when the scope ends.

Tags C#csharpdotnet

Posts Pretty Code string builder

Web

sanelli.github.io

The default Jekyll theme was already enough; this is the site after opening the hood.

This page. A Jekyll site on GitHub Pages: YAML-driven work, projects, and media lists, an SVG sprite, dark / light / system theme, and a GitHub Actions build on Jekyll 4 so plugins like the sitemap, redirects, cached includes, and pagination can run.

Tags jekyllliquidsassgithub-pages

Posts Rebuilding this site

Games

Blocchi

Learn Rust and Bevy’s ECS by implementing Tetris.

A Tetris clone written in Rust with the Bevy game engine.

Blocchi — a Tetris-style board in Bevy

Tags rustBevygameecs

Posts Blocchi

Fifteen

A small C++ and SDL2 sliding-tile puzzle to practise native game setup.

A 15 Puzzle built with C++ and SDL2 (image and TTF). CMake on macOS with Homebrew SDL packages.

Fifteen — the 15-puzzle board

Tags c++cppSDLSDL2gamepuzzle

Posts Fifteen

Interpreters

Turing machine emulators

One Turing-machine interpreter, many languages, so the idioms are comparable.

The same Turing machine interpreter written in C#, Python, C++, Go, Pascal, Ada, C, D, and Rust. Shared PowerShell scripts check toolchains, build, run a substitute-machine sample, and test every language the same way.

Turing machine emulator — tape and state display

Tags c++pythondotnetgocsharppascaladacdrust

Posts New Turing machine interpreter implemented in Rust New Turing machine interpreter implemented in D New Turing machine interpreter implemented in C New Turing machine interpreter implemented in Ada New Turing machine interpreter implemented in Pascal Turing machine interpreters implemented in C#, C++, Python and Go

Brainfuck interpreters

The same cross-language exercise for a tiny language, including Erlang.

A Brainfuck interpreter in C#, Python, C++, Go, Pascal, Ada, C, D, Rust, and Erlang. The same Check / Build / Test scripts as the Turing suite, plus a hello-world runner.

Brainfuck interpreter — running a small program

Tags c++pythondotnetgocsharppascaladacdrusterlang

Posts New Brainfuck interpreter implemented in Erlang New Brainfuck interpreter implemented in Rust New Brainfuck interpreters implemented in C and D New Brainfuck interpreter implemented in Ada New Brainfuck interpreter implemented in Pascal Brainfuck interpreters implemented in C#, C++, Python and Go