Maciej Karczewski

I turn tangled business processes into backends that just work.

Maciej, senior software engineer. Ten years of building commercial software in Java, Kotlin and Spring, mostly on identity platforms, event-driven systems and e-commerce integrations.

topic: platform-events live
    since you arrived 0 events

    I choose the architecture for the business problem, not the other way round. My work starts well before the first line of code: understanding what the business really needs, questioning the requirements and designing a solution the team can build, run and evolve.

    • CurrentlySenior Software Engineer at Kingfisher, on the Screwfix Customer Account team
    • Before thatSeven years at Apollogic, as senior software developer and tech lead
    • Daily stackKotlin, Java, Spring Boot, PostgreSQL, Kafka
    • Beyond codeTechnical interviews, onboarding, internal talks. I worked at university before moving into industry.

    What I work on

    Three areas where most of my projects have landed, usually at the point where they meet each other.

    Identity and access

    Services that extend what an identity provider offers out of the box, and self-service tools for managing and monitoring them, built on OAuth2 and OpenID Connect.

    • OAuth2 / OIDC
    • Keycloak SPI
    • PingOne AIC
    • Microsoft Entra ID
    • CIAM

    Event-driven systems

    Kafka and RabbitMQ pipelines, domain-driven design, CQRS and event sourcing where they suit the domain, and the less glamorous parts that make them safe in production: idempotency, the outbox pattern, retries, ordering and race conditions.

    • Kafka
    • RabbitMQ
    • CQRS
    • Event Sourcing
    • DDD

    Commerce and integration

    Developing custom e-commerce systems and integrating them with SaaS providers, so that in-house code and third-party platforms work as one product.

    • E-commerce
    • SaaS integration
    • GraphQL
    • REST
    • B2B

    Career, as an event log

    My career so far, replayed from offset zero. Each entry is something that changed the state of what I can build.

    consumer at head, offset 3
    1. 0

      ScientificResearch 2015 to 2017

      Lecturer at Adam Mickiewicz University in Poznań, Poland, building computer simulations of social and economic systems. Where I first learned to treat a system as a stream of state changes.

      • Modelling
      • Simulation
      • Python
      • RStudio
    2. 1

      JoinedApollogic 2017 to 2024

      Seven years at Apollogic, a software house, growing into senior software developer and tech lead roles: owning architecture, guiding teams and working directly with clients.

      • Java
      • Spring Boot
      • Tech leadership
      substream: apollogic.projects5 events
      1. 1.0

        CommerceShipped

        Developed e-commerce platform modules for many clients, built a delivery monitoring and management platform for a large consumer electronics retail chain, and extended CMS systems with custom modules.

        • E-commerce
        • CMS
        • Java
        • Kotlin
        • Spring Boot
        • PostgreSQL
        • RabbitMQ
      2. 1.1

        DevicesMonitored

        A Java and Spring backend that managed and monitored a fleet of thousands of devices around the world, first on Azure and later on AWS, collecting sensor data and storing it for analysis.

        • IoT
        • Java
        • Spring Boot
        • NoSQL
        • Azure
        • AWS
      3. 1.2

        TestManagementBuilt

        A centralised test management system for the European Space Agency, built to standardise and speed up the testing done by the agency's subcontractors.

        • Java
        • Spring
        • RabbitMQ
      4. 1.3

        MigrationPlatformLed

        Led a self-service platform that sped up and partly automated moving nearly 600 applications from many custom CIAM systems to Microsoft Entra ID.

        • Entra ID
        • Microsoft Graph
        • Spring Cloud Gateway
        • Java
        • NoSQL
        • OIDC
        • OAuth2
      5. 1.4

        EInvoicingIntegrated

        A service integrating a large legacy CMS with KSeF, Poland's national e-invoicing system, automating how invoices are sent and received.

        • KSeF
        • E-invoicing
        • Legacy integration
    3. 2

      JoinedKingfisher 2024

      Senior Software Engineer on the Screwfix Customer Account team, working across customer accounts: developing the CIAM system and the microservices customers use to manage their account data.

      • Kotlin
      • Spring Boot
      • CIAM
      • PingOne AIC
      • Kafka
      • AWS
      • commercetools
    4. 3

      StillConsuming now

      Interviewing and onboarding engineers, giving internal talks, and writing about technical topics.

    Writing

    All articles on Medium

    Side projects

    • Event-sourced ticketing systemA ticketing system built on event sourcing and CQRS, with a Java and Spring Boot backend and a Vue.js front-end.
    • JPA ORM benchmarkJMH benchmarks comparing the performance of JPA implementations, Hibernate among them.
    • Agent-based simulationsSmall agent-based modelling experiments that show how simple rules for individual agents produce complex, emergent patterns.

    Toolbox

    What I reach for, roughly in order of how often. Go, Python and TypeScript are for tooling and glue, not the main product.

    Main languages
    Java (versions 8 to 21), Kotlin
    Supporting languages
    Go, Python, JavaScript and TypeScript, SQL
    Frameworks
    Spring Boot, Quarkus, JPA and Hibernate
    Data
    PostgreSQL, Microsoft SQL Server, MongoDB and other NoSQL stores
    Messaging
    Kafka, RabbitMQ
    Design
    Event-driven architecture, DDD, CQRS, event sourcing, data-oriented programming, functional programming
    Identity
    Keycloak, PingOne AIC, Entra ID, OAuth2, OIDC, JWT
    Cloud and runtime
    AWS, Azure, Docker, Kubernetes
    Delivery and observability
    GitLab CI/CD, Testcontainers, Datadog, Prometheus, Grafana