$ whoami

Ronald Schlenker · Independent tech consultant · Frankfurt, Germany

$ cat positioning.md

I help technically ambitious teams build AI-assisted workflows that stay reproducible, maintainable, and honest about their limits. I bring F#, .NET, and compiler-level thinking to problems most people try to solve with prompt templates. You get craft, not hype.

$ echo "$TAGLINE"

AI-era engineering, built on fifteen years of functional craft.

$ ls -la ./services/
$ tree ./projects/
./projects/
├── pxl-clock/     A 24×24 programmable LED display you code in C# or F#.
VS Code extension, hot-reload simulator, over-the-air updates.
[pxlclock.com · code `RONALD` for €25 off]

├── fs-http/       A hackable HTTP client for .NET. Reads like `.http`
files, scales to any edge case.
[499★ · 128 dependent packages · fsprojects/FsHttp]

├── type-fighter/  An experimental language built around an
inference-first, structural type system: records match by shape,
set-theoretic unions, minimal annotations.
[github.com/SchlenkR/TypeFighter]

├── the-blunt/     A one-file recursive-descent parser-combinator
library for F# and Fable. Small surface, serious power.
[github.com/SchlenkR/TheBlunt]

└── trulla/        Templates that are type-safe at compile time.
      Ships as an F# Type Provider, a C# Source Generator, and a Node.js CLI.
      [github.com/SchlenkR/Trulla]
$ cat theses.md
  1. Composition beats objects. Lego, not Playmobil. Pure functions compose forever; object hierarchies are dead ends.
  2. Syntax should match how you think. If a language makes you fight notation to express intent, it’s the wrong language.
  3. Types make code obvious. Hindley-Milner inference plus structural records replace paragraphs of documentation.
  4. AI drifts — discipline pays. Reproducible AI output comes from small tools, tight specs, multi-turn loops, not heroic prompts.
  5. Build the tool, don’t buy the SaaS. Three hundred lines of code that do exactly what you need beat any feature-bloated platform.
$ cat about.md
$ echo $CONTACT

Start a conversation

$ cat ~/.links