chrominsky/
EN

Bartosz Chrominski · Senior .NET engineer · Polska

Backend w C#. Aplikacje w Swift. Zbudowane, by im ufać.

Senior .NET engineer. Na co dzień buduję serwisy event-driven na AWS (DynamoDB, Step Functions, EventBridge, Pulumi), szukam przyczyn defektów produkcyjnych aż do udowodnionego źródła i dostarczam poprawki zaczynając od testu. Po godzinach tworzę natywne aplikacje na macOS, iPhone i iPad: każda robi jedną rzecz i obiecuje tylko to, co naprawdę potrafi.

01 / W budowie

Cztery aplikacje,
każda do jednego.

Natywne narzędzia na macOS, iOS i iPadOS. Każde ma publiczną stronę, poradnik i politykę prywatności, i każde uczciwie podaje swój status. Żadne nie jest jeszcze w App Store i żadne nie twierdzi inaczej.

DevPulse: widok uruchomienia pipeline'u z etapami, jobami i zadaniami

DevPulse

macOS · iOS · iPadOS

Azure DevOps poza przeglądarką. Śledź uruchomienia pipeline'ów, czytaj logi etapów i pracuj na tablicach w natywnej aplikacji.

  • Rysuje każde uruchomienie jako etapy, joby i zadania w kolejności ze skompilowanego YAML tego uruchomienia: jako karty albo graf ASCII.
  • Prawdziwy edytor work itemów: każdy zapis sprawdza rewizję bazową, więc nie nadpisze po cichu zmiany kolegi.
  • Widgety na pulpit dla przypiętych uruchomień. Logowanie przez Microsoft Entra ID albo personal access token.
  • SwiftUI
  • WidgetKit
  • Azure DevOps REST
  • iCloud KV
w trakcie rozwoju Strona ↗ Repo ↗
Mighty Markdown w trybie Split: źródło Markdown obok podglądu

Mighty Markdown

macOS

Natywne miejsce do czytania, pisania i poruszania się po plikach Markdown.

  • Tryby Read, Edit i Split, w których źródło i podgląd pokazują ten sam fragment dokumentu.
  • Filtrowany spis nagłówków i przeciągana minimapa dla długich plików.
  • Twoje pliki pozostają zwykłymi plikami .md. Bez konta, analityki i reklam.
  • SwiftUI
  • AppKit text
  • Swift Markdown
  • App Sandbox
przygotowanie do Mac App Store Strona ↗ Repo ↗
Grafika CloudLatch: chmura ze szczotkowanego metalu z zielonym zatrzaskiem

CloudLatch

pasek menu macOS

Sesje AWS MFA i przełączanie ról IAM z paska menu.

  • Przyjmij skonfigurowaną rolę z MFA, zobacz, kiedy wygasa sesja roli, i pozwól odnowić ją pięć minut wcześniej.
  • Korzysta z AWS SDK for Swift wewnątrz aplikacji, więc AWS CLI nie jest potrzebne.
  • Ty decydujesz, do którego katalogu ma dostęp. Tymczasowe sesje źródłowe trzyma w pęku kluczy macOS.
  • Swift 6
  • AWS SDK for Swift
  • Keychain
  • MenuBarExtra
przygotowanie do App Store Strona ↗ Repo ↗
Grafika TapVault: świecący symbol NFC z orbitami

TapVault

iPhone · iPad

Odczytuj, zapisuj i programuj zgodne tagi NFC, z biblioteką synchronizowaną między urządzeniami.

  • Pokazuje rekordy NDEF, technologię tagu, pojemność i możliwość zapisu na zgodnym iPhonie.
  • Twórz linki, tekst i kontakty vCard. Przed zapisem tagu pyta o potwierdzenie, a potem odczytuje go, by sprawdzić, czy zapis się udał.
  • Biblioteka w SwiftData z prywatną synchronizacją iCloud. Interfejs po polsku i angielsku.
  • SwiftUI
  • Core NFC
  • SwiftData
  • CloudKit
w trakcie rozwoju Strona ↗ Repo ↗

02 / Po stronie serwera

Zbudowane na
.NET 8.

Od C# zaczynałem i w nim wciąż robię większość pracy. W pracy etatowej to serwisy domenowe z event sourcingiem na AWS: projektowanie kluczy i GSI w DynamoDB, zdarzenia publikowane z oczekiwaną wersją, orkiestracja w Step Functions i migracje tabel za feature flagami, z podwójną projekcją i zaplanowanym przełączeniem. Publicznie: biblioteki i referencyjne API poniżej.

Na co dzień · praca produkcyjna na wielorepozytoryjnej platformie AWS

01

Przyczyna, udowodniona

Defekty śledzę w plikach HAR, logach CloudWatch i danych produkcyjnych, aż przyczyna jest udowodniona. Nieraz okazało się, że pierwotna teza zgłoszenia była błędna, więc naprawiona została prawdziwa przyczyna, a nie objaw.

02

Najpierw test, potem weryfikacja na żywo

Najpierw czerwony test, potem poprawka, samodzielny review, PR i uwagi z review. Gotowe znaczy potwierdzone na dev i stable przez wykonania Step Functions, stan DynamoDB i pomiary opóźnień, a nie tylko zielone CI.

03

Flagi i migracje

Nowe zachowanie trafia na produkcję za feature flagami w AppConfig, z osobnymi PR-ami na kod i konfigurację. Reaktory przechodzą na nowe projekcje, a dane tenantów migrują według spisanych planów z przekazaniem.

04

Dyżury i RCA

Triage incydentów w regionach produkcyjnych: alarmy, logi, redrive kolejek i zgłoszenia następcze. Każdy incydent zamyka krótkie RCA gotowe dla klienta: objaw, przyczyna, poprawka, status.

03 / Jak pracuję

Małe obietnice,
dotrzymane.

Te same zasady obowiązują w każdym repozytorium powyżej, od tekstów na stronach po historię commitów.

i

Prywatność domyślnie

Bez analityki, śledzenia, ciasteczek i zewnętrznych usług z fontami na stronach produktów. Dane logowania zostają w pęku kluczy albo w plikach użytkownika.

ii

Uczciwy status

Nic nie jest „dostępne”, dopóki naprawdę nie jest. Każde ograniczenie jest spisane: czego brak, co wymaga prawdziwego sprzętu, czego nie zrobi symulator.

iii

Jawnie zamiast magicznie

Zapis następuje wtedy, gdy go wybierzesz. Konflikty są wykrywane, zanim cokolwiek nadpiszą. Zapis wymaga potwierdzenia i jest odczytywany do sprawdzenia. Dostęp przyznaje się katalog po katalogu.

iv

Podgląd przed wdrożeniem

Zmiany infrastruktury zaczynają się od pulumi preview. Wdrożenia celują tylko w dev i dotykają jak najmniej. Migracje danych idą przez backup, restore i feature flagę, nigdy przez jednorazowe przełączenie.

v

Testy, bo to ważne

xUnit z jawnymi setupami Moq i FluentAssertions. Fixture'y LocalStack i EventStoreDB do testów integracyjnych, Cypress na froncie. Wersjonowanie semantyczne i wpis w changelogu przy każdej zmianie.

vi

AI wykonuje, ja sprawdzam

Agenci prowadzą pętlę od defektu do PR: red, green, verify, review. Pilnuję, by trzymali się istniejących konwencji repozytorium i najmniejszej działającej zmiany, żądam dowodów dla każdego twierdzenia i zatwierdzam wszystko, co zobaczą inni, zanim zostanie wysłane.

04 / Narzędzia

Po co
sięgam.

.NET i AWS na serwerze, Swift na urządzeniu, React tam, gdzie produkt go potrzebuje, i agent do powtarzalnej pracy.

Server C# / .NET 8

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

Cloud AWS · eu-west-1

  • DynamoDB PK/SK, GSIs, migrations
  • Step Functions · Lambda orkiestracja
  • SQS · SNS · EventBridge komunikacja
  • ECS Fargate · AppConfig runtime
  • Pulumi TypeScript IaC
  • CloudWatch Logs Insights szukanie przyczyn
  • LocalStack testy integracyjne

Apple Swift 6

  • SwiftUI & AppKit macOS, iOS, iPadOS
  • WidgetKit widgety na pulpit
  • SwiftData & CloudKit prywatna synchronizacja
  • Core NFC odczyt i zapis NDEF
  • Keychain & Sandbox minimalne uprawnienia

Wokół dostarczanie

  • React · TypeScript microfrontends
  • Cypress komponenty, hooki
  • Docker & Compose lokalne środowiska
  • Azure DevOps · GitHub CI, reviews
  • PagerDuty triage na dyżurze
  • Claude Code agents, skills, hooks
  • Rider · Ubuntu · Nginx na co dzień

05 / Kontakt

Masz problem, który potrzebuje konkretnego narzędzia?

Napisz do mnie contact [at] chrominsky [dot] dev
Napisz e-mail

Odpowiadam zwykle w ciągu dwóch dni roboczych, po polsku lub angielsku.

LinkedIn · in/chrominsky GitHub · @Chrominskyy Lokalizacja · Polska Języki · polski, angielski Zgłoszenia do aplikacji · przez issue tracker każdego produktu Po godzinach · odbudowa MX-5 z 1994, Home Assistant, ESP32