Hi, I’m Mark Paluch.

Musician, producer, Spring Data.

  • Music

    Music 🎹 has been entangled with my existence for as long as I can recall, though to say it has always been a harmonious relationship would be a lie. My earliest memory of it, a pivotal one, emerges from the fog of youth. A birthday, its precise date lost to me now, when my aunt gifted me an album – Dune: Expedicion. This gift, innocuous in appearance, became a harbinger of something larger. It seeded a journey whose direction I could not foresee, though it loomed over me ever since.

    Fast forward a couple years within the 90s, I got hold of Magix Music Maker. It offered me an illusion of creation, a semblance of power through its prearranged loops and patterns. For a time, I was entranced, shaping fragments into something that felt like my own. Yet the act of gluing these loops together became tedious, the satisfaction fleeting. I abandoned it, and with it, a piece of myself.

    (more…)
  • Introducing Code to reduce Code

    How adding a functional utility helps to avoid code duplications and leads to more readable code.

    In Spring Data Redis, we support multiple Redis clients – Jedis and Lettuce.
    Commands can be invoked either directly, in a transaction, or using pipelining.

    Direct commands get invoked – as the name probably reveals – directly by calling a client method and returning the result. In some cases, results require post-processing because the Redis driver reports a Long while Spring Data Redis would like to return Boolean or the driver returns a driver-specific type that requires conversion in a Spring Data type.

    (more…)
  • Carrier Kernel Thread Pinning of Virtual Threads (Project Loom)

    In my previous blog post I started an experiment with using Project Loom. The post outlined the first steps to make use of virtual Threads on a best-effort basis (i.e., without rewriting the entire libraries involved, instead fixing issue by issue until it works™).

    (more…)

  • Experimenting with Project Loom EAP and Spring WebMVC

    This article walks you through a experiment that uses a Spring Boot application with Virtual Threads. Having access to early access builds is the perfect opportunity to take a look what it takes to use virtual threads as worker threads. With all customizations in place, we issue a few request to verify that our application is running. Finally, we put a bit of load onto the application to see how memory consumption and the number of kernel threads develop over time.

    Follow-up post: Carrier Kernel Thread Pinning of Virtual Threads (Project Loom).

    (more…)

  • Data Classes Considered Harmful

    This blog post explains the motivation behind removing Project Lombok from one of the projects to which I contribute. It reflects my personal opinion and is not discouraging particular technologies.

    About three years ago, I got to know Project Lombok, a library that spices up Java code. I liked it from the beginning as it contributes so much useful functionality. I work a lot with entities (data classes) and value objects, so it does not come as a surprise that @Data or Kotlins data class are very convenient. You get more bang for the buck – literally.
    I’m mentioning Kotlin here because it shares some of the properties that we also get from Lombok.

    (more…)

  • Reactive Relational Database Transactions

    Spring Framework announced recently to ship with support for reactive transaction management.
    Let’s take an in-depth look at how this works for R2DBC, the reactive specification for SQL database access.

    (more…)

  • R2DBC Tour: Mid- and North-Germany

    R2DBC Tour took place in Mid- and North-parts of Germany. R2DBC standardizes reactive integrations with SQL databases as Open Source initiative.

    Reactive Relational Database Connectivity (R2DBC) started out as idea to see what’s possible when thinking about reactive programming and SQL databases. Since the last months, R2DBC grew beyond that idea. It inspired driver maintainers and client library authors as common language: A specification for drivers and an interface for library authors so they can build client libraries on top of a vendor-independent SPI. Client libraries are tools that we as application developers need to keep productivity high and not to solve problems that are solved already.

    (more…)

  • R2DBC Tour has just begun

    Last year I announced the R2DBC Java User Group and recently I started the tour visiting various user groups and conferences. Reactive Relational Database Connectivity lifts a roadblock when integrating with SQL databases. It’s an Open Source standardized API across multiple database drivers and an ongoing specification effort hosted on GitHub.

    (more…)

  • Reactive Programming and Relational Databases

    Imperative code eats threads at the pace of incoming requests while Software is eating the world. This post discusses the assumptions for reactive programming on the JVM and what this means for integrations – in particular, relational databases.

    The motivation to come up with a post is the constant increase in reactive programming adoption while some major building blocks are not yet available – in particular, the question: What about relational databases?

    (more…)