chrominsky/

Senior .NET engineer · Poland · EN / PL

Backend in C#. Apps in Swift. Built to be trusted.

Senior .NET engineer. By day I build event-driven services on AWS (DynamoDB, Step Functions, EventBridge, Pulumi), track production defects down to a proven root cause, and ship test-first fixes. After hours I build focused native apps for macOS, iPhone and iPad, each one doing a single job and claiming only what it can actually do.

01 / Now building

Four apps,
one job each.

Native utilities for macOS, iOS and iPadOS. Each comes with a public website, a support guide and a privacy policy, and each one states its availability honestly. None is on the App Store yet, and none of them says otherwise.

DevPulse

macOS · iOS · iPadOS

Azure DevOps, out of the browser. Follow pipeline runs, read stage logs and work through boards in a native app.

  • Draws each run as stages, jobs and tasks in the order of that run's compiled YAML, as cards or as an ASCII graph.
  • A real work item editor: every save checks the baseline revision, so it can't silently overwrite a colleague's change.
  • Desktop widgets for pinned runs. Sign in with Microsoft Entra ID or a personal access token.
  • SwiftUI
  • WidgetKit
  • Azure DevOps REST
  • iCloud KV
in development Website ↗ Repo ↗

Mighty Markdown

macOS

A native place to read, write and move around Markdown files.

  • Read, Edit and Split modes, with source and preview kept on the same part of the document.
  • A filterable heading outline and a draggable minimap for long files.
  • Your files stay ordinary .md files. No account, analytics or advertising.
  • SwiftUI
  • AppKit text
  • Swift Markdown
  • App Sandbox
preparing for Mac App Store Website ↗ Repo ↗

CloudLatch

macOS menu bar

AWS MFA sessions and IAM role switching from the menu bar.

  • Assume a configured role with MFA, see when the role session expires, and get it renewed five minutes before it does.
  • Uses the AWS SDK for Swift in-process, so the AWS CLI isn't needed.
  • You choose which directory it can touch. Temporary source sessions are kept in the macOS Keychain.
  • Swift 6
  • AWS SDK for Swift
  • Keychain
  • MenuBarExtra
preparing for App Store Website ↗ Repo ↗

TapVault

iPhone · iPad

Read, save and write compatible NFC tags, with a library synced across your devices.

  • Shows NDEF records, tag technology, capacity and write access on a compatible iPhone.
  • Create links, text and vCard contacts. It asks before writing a tag, then reads it back to confirm the write worked.
  • SwiftData library with private iCloud sync. Interface in Polish and English.
  • SwiftUI
  • Core NFC
  • SwiftData
  • CloudKit
in development Website ↗ Repo ↗

02 / Server side

Built on
.NET 8.

C# is where I started and where I still do most of my work. At my day job that means event-sourced domain services on AWS: DynamoDB key and GSI design, events published against expected versions, Step Functions orchestration, and table migrations run behind feature flags with dual projection and a planned cutover. In public, it means the libraries and reference APIs below.

By day · production engineering on a multi-repo AWS platform

01

Root cause, proven

Defects get traced through HAR files, CloudWatch logs and production data until the cause is proven. More than once that showed the ticket's original theory was wrong, so the real cause got fixed instead of a symptom.

02

Test-first, verified live

A failing test first, then the fix, self-review, PR and review comments. Done means confirmed on dev and stable through Step Function executions, DynamoDB state and latency checks, not just a green CI run.

03

Flags & migrations

New behaviour ships behind AppConfig feature flags, with the code and config PRs kept separate. Reactors move to new projections, and tenant data migrates from written plans with a handover.

04

On-call & RCAs

Incident triage across production regions: alarms, logs, queue redrives and follow-up tickets. Each incident closes with a short, client-ready RCA covering symptom, root cause, fix and status.

03 / How I build

Small promises,
kept.

The same rules run through every repository above, from the website copy down to the commit history.

i

Private by default

No analytics, tracking, cookies or third-party font services on the product sites. Credentials stay in the Keychain or the user's own files.

ii

Honest status

Nothing is called available until it is. Every limitation is written down: what isn't supported, what needs real hardware, what the simulator can't do.

iii

Explicit over magic

Saves happen when you choose. Conflicts are caught before they overwrite anything. Writes ask for confirmation and are read back to check them. Access is granted one directory at a time.

iv

Preview before apply

Infrastructure changes start with a pulumi preview. Deploys target dev only and touch as little as possible. Data migrations go through backup, restore and a feature flag, never a big-bang switch.

v

Tested like it matters

xUnit with explicit Moq setups and FluentAssertions. LocalStack and EventStoreDB fixtures for integration tests, Cypress on the front end. Semantic versions and a changelog entry with every change.

vi

AI does the work, I review it

Agents run the defect-to-PR loop: red, green, verify, review. I keep them on the repository's existing conventions and the smallest change that works, ask for the evidence behind every claim, and approve everything that others will see before it goes out.

04 / Toolbox

What I
reach for.

.NET and AWS on the server, Swift on the device, React where the product needs it, and an agent doing the repetitive work.

Server C# / .NET 8

  • ASP.NET Core Web API, MVC Razor
  • EF Core SQL Server, PostgreSQL
  • MediatR & DDD commands, multi-tenancy
  • EventStoreDB event sourcing, gRPC
  • xUnit · Moq FluentAssertions
  • Serilog · Redis logging, caching

Cloud AWS · eu-west-1

  • DynamoDB PK/SK, GSIs, migrations
  • Step Functions · Lambda orchestration
  • SQS · SNS · EventBridge messaging
  • ECS Fargate · AppConfig runtime
  • Pulumi TypeScript IaC
  • CloudWatch Logs Insights root cause
  • LocalStack integration tests

Apple Swift 6

  • SwiftUI & AppKit macOS, iOS, iPadOS
  • WidgetKit desktop widgets
  • SwiftData & CloudKit private sync
  • Core NFC NDEF read / write
  • Keychain & Sandbox least privilege

Around it delivery

  • React · TypeScript microfrontends
  • Cypress component, hooks
  • Docker & Compose local stacks
  • Azure DevOps · GitHub CI, reviews
  • PagerDuty on-call triage
  • Claude Code agents, skills, hooks
  • Rider · Ubuntu · Nginx daily tools

05 / Contact

Got a problem that needs a focused tool?

LinkedIn · in/chrominsky GitHub · @Chrominskyy Based in · Poland Languages · English, Polish App reports · through each product's issue tracker Off the clock · rebuilding a 1994 MX-5, Home Assistant, ESP32