.NET engineerSão Paulo, BR

Mihael Costa

.NET systems that hold up in production: queues, integrations and APIs nobody has to restart at three in the morning.

  • C# / .NET 8
  • Azure
  • SQL Server
  • RabbitMQ
- uptimep95 -last deploy -

Selected work

six projects · six different proofs
01FRONTEND CRAFT

Flow Studio

A visual flow editor. Drag blocks onto a canvas, connect them, configure each node in a side panel, then run the flow against a live .NET backend.

  • Vue 3
  • Nuxt
  • TypeScript
  • .NET 10
  • SSE
flowonboarding100%fit
TriggerTransformDispatch
02PERFORMANCE

SQL Performance Lab

Run the slow query and the optimised one side by side, against a real database, and read both plans.

  • .NET 10
  • Dapper
  • EF Core
  • PostgreSQL
  • React
offset 500,000128ms
keyset0.2ms

execution time · 2.65M rows

live p95 -uptime -

03DISTRIBUTED SYSTEMS

Event Flow

A distributed .NET system with two faces, the product a customer uses and the machinery underneath reacting in real time.

  • .NET Aspire
  • MassTransit
  • RabbitMQ
  • SignalR
  • React
Order #4417confirmed
Order placed
Payment authorized
Reservedjust now
04AGENT EVALUATION

Query Advisor

A language model is given a slow query and asked to make it faster. Then the database decides whether it did.

  • .NET 10
  • Microsoft.Extensions.AI
  • MCP
  • PostgreSQL
  • Evals
claude-haiku-4-53/5
claude-opus-54/5

5 questions · the database decides

Both models miss the same question, and both miss it confidently — the textbook rewrite is slower than the query it replaces.

live p95 -uptime -

05LEGACY MIGRATION

Migration Log

A .NET Framework 4.8 to .NET 8 migration, documented decision by decision, including the parts that are still on 4.8.

  • .NET 8
  • EF Core
  • YARP
  • Strangler fig
  1. stage 01

    A reverse proxy went in first, routing 100% of traffic to the application it was there to replace.

  2. stage 06

    MSMQ has no .NET 8 successor, so it kept a 200-line 4.8 process instead of a rewrite nobody could scope.

  3. stage 07

    Twenty RDLC reports were frozen where they are. The stage produced no code, and that was the outcome.

06LOAD TESTING

Load Lab

The two hosted services under six load shapes, run the way a real engagement is run. Objectives first, the process measured next to the client, a findings log with re-tests, and the numbers committed to the repository.

  • k6
  • .NET 10
  • ASP.NET Core
  • GitHub Actions
p50
0.7ms
p95
1.9ms
p99
3.4ms

stress · 91 VUs · 2,043 refused · 0 errors

Eighty editors plus a stream of spectators against Flow Studio. Half the run requests were refused because all six slots were busy, none failed, and the latency tail stayed where it was at two users.