Skip to main content
Welcome. This site supports keyboard navigation and screen readers. Press ? at any time for keyboard shortcuts. Press [ to focus the sidebar, ] to focus the content. High-contrast themes are available via the toolbar.
serard@dev00:~/cv

Skills & Expertise

.NET Ecosystem

Core Platform

  • C# 13, .NET 10, ASP.NET Core, Web API, Workers, SignalR
  • Blazor (Server + WASM), Razor Pages, OpenAPI
  • Entity Framework Core, LINQ, System.Text.Json
  • .NET Aspire, dependency injection, configuration, logging

Roslyn & Source Generation

Design Patterns & Architecture

  • Domain-Driven Design — attribute-based, no base classes: [AggregateRoot], [Entity], [ValueObject], [Command], [DomainEvent], [Invariant]
  • CQRS — lightweight (interface-level separation, no event sourcing): ICommandHandler<TCommand, TResult>, IQueryHandler<TQuery, TResult>, direct injection (no mediator)
  • Result Pattern — composable Result<T, TError> types replacing exceptions: Map, Bind, Recover, Tap, Ensure
  • Builder Pattern — source-generated async construction with fluent API, validation, circular reference detection
  • Finite State Machine — generic FSM with enum-typed states and transitions
  • Meta-metamodeling (M3) — 5 self-describing primitives ([MetaConcept], [MetaProperty], [MetaReference], [MetaConstraint], [MetaInherits]) forming the foundation for all DSLs

SOLID Principles (Applied, Not Theoretical)

  • Interface Segregation as primary driver — 1-method interfaces as standard
  • Dependency Inversion via optional constructor parameters with defaults
  • Open/Closed through extension points and middleware pipelines
  • No mocking frameworks — hand-written Fakes only, testing through real interfaces
  • 100% code coverage as design pressure, not just a metric

Testing & Quality

  • TDD — tests drive design, not just verify it
  • QualityGate — custom Roslyn-based static analysis: cyclomatic complexity, cognitive complexity, coupling (Ca/Ce), cohesion (LCOM4), maintainability index
  • Mutation testing (Stryker) — test quality score >= 0.95
  • No mocking frameworks — FakeHttpClient, hand-written fakes, deterministic tests
  • Quality gates in YAML (quality-gate.yml), enforced in CI with pass/fail exit codes

PHP Ecosystem

  • Symfony, Doctrine ORM, Diem CMF (contributor, 2010)
  • LAMP stack, Composer, Twig
  • Legacy modernization and migration

JavaScript / Frontend

  • TypeScript, Node.js, vanilla ES6+
  • HTML5, CSS3, responsive design, CSS custom properties
  • jQuery (legacy), Flash/Flex (legacy)
  • Markdown rendering (marked.js), diagram generation (Mermaid), syntax highlighting (highlight.js)

DevOps & Infrastructure

CI/CD Pipeline Design

Diagram
  • GitLab CI/CD — pipelines, runners, package registry, container registry
  • Jenkins, Job DSL (previous roles)
  • Dev / CI / QA / CDel / CDep problem-space separation

Containers & Virtualization

  • Docker, Docker Compose (V2) — type-safe wrappers
  • Podman, Podman Compose — container-based scraping infrastructure
  • Packer — VM image building with Alpine provisioning plugins
  • Vagrant — VM lifecycle management with typed event hierarchies
  • All CLI tools wrapped via BinaryWrapper with full IntelliSense

Scripting & Automation

  • PowerShell 7+ — modules, cmdlets, tab completers, structured logging
    • DevPoSh (developer shell profile)
    • Infrastructure modules (Vagrant, Packer, Docker, Traefik)
    • Claude Code VM lifecycle management
  • Bash — automation, CI scripts, container provisioning

Cloud & Infrastructure

  • Azure, AWS (previous roles)
  • On-premises GitLab CE deployment with container stack
  • Traefik reverse proxy configuration
  • Alpine Linux provisioning and hardening

Design-Time Engineering

A distinctive skill: building design-time tooling that runs before code generation.

Diagram
  • Design pipelines — composable middleware for scraping, transforming, and serializing versioned data
  • Container-based scraping — parallel image builds + container execution via channels
  • Version diffing — merge multiple version trees, compute [SinceVersion]/[UntilVersion] annotations
  • Help parsers — GNU, Cobra, argparse, custom formats (5 parser implementations)
  • JSON schema processing — download and transform versioned schemas from GitHub/GitLab

See the BinaryWrapper article for the full architecture.

Architecture & Methodology

Software Engineering Practices

  • "anything-as-code" — infrastructure, configuration, requirements, quality gates
  • "you better make it a module" — modular design with clear boundaries
  • SDLC, ALM, PLM lifecycle management
  • Web & distributed architectures, high availability, high volume

Domain-Driven Design Philosophy

  • Attributes over base classes — developer declares intent, generator handles implementation
  • Behavioral companions — constraint methods on MetaConcept base classes
  • 4-layer metamodel: M0 (runtime) → M1 (domain model) → M2 (DSL) → M3 (meta-metamodel)
  • 5 DSLs built on M3: DDD, Content, Admin, Pages, Workflow

Requirements Engineering

  • Requirements as code — abstract classes with acceptance criteria as abstract methods
  • 4-layer traceability: Requirement → Specification → Implementation → Test
  • Compile-time enforcement: the build fails if any AC is unlinked
  • typeof() and nameof() references (never strings)

AI-Assisted Development

  • Claude Code (CLI) — daily driver for architecture design, code generation, testing, documentation
  • Claude Code Skills — custom skill definitions for consistent code generation across the ecosystem
  • Multi-LLM integration in DockAi: Claude, OpenAI, Ollama

Education

Year Diploma
2007 BTS Informatique de Gestion (2-year apprenticeship)
2004 BAC STI (Sciences et Technologies Industrielles)

Soft Skills

  • Strong team spirit and communication skills
  • Self-taught, continuously learning — from PHP CMF contributor (2010) to .NET meta-metamodeling (2026)
  • Agile methodology practitioner
  • Fluent in English (written and spoken), French native
  • Remote work experience across multiple positions