Adam Warski

About

Hello!

I’m a programmer, starting with Quick Basic and Turbo Pascal in the ’90s, through Scheme, OCaml, Smalltalk, Prolog, C, and Java during my studies. All the way to more Java, Scala, and other JVM (and some non-JVM) languages during my professional career.

I completed a master’s degree in Computer Science at the University of Warsaw. After that, I’ve worked at JBoss/RedHat, where I was introduced to both remote work and open-source software. Both of these stayed with me: I’ve worked remotely ever since (our company is fully remote), and we’re heavy users (and developers) of OSS. Later, I did some Java consulting and development. In 2009, together with Tomek, Jan, and Paweł, we co-founded SoftwareMill. That’s where I work to this day, leading the research & development efforts. Since 2023, we’ve been part of the VirtusLab group.

I’ve been involved in creating and maintaining open-source projects for more than 16 years. I enjoy sharing what I learn through articles, videos and conferences. Not only is it great to see your work being useful to others, but the community is also a great gauge as to which ideas are worth pursuing and solve real problems, and which don’t.

My main interests always revolved around the back-end, lately gravitating towards “developer experience”. I highly value the elegance and code verification capabilities granted by statically typed functional programming. One of my goals is to expand the presence of FP in “everyday” programming toolkits. This means balancing practicality, conciseness, maintainability, abstraction, and safety. It also involves understanding the fundamental benefits and trade-offs that approaches such as functional or reactive programming bring.

Another axis of my interests is distributed systems and architectures, especially when it comes to understanding the fundamental value and limitations that each specific approach brings. My goal here is to be technically honest when choosing and recommending a specific approach: not based on personal preferences or fashions, but on sound technical arguments. That’s why a number of my articles explore architectures of systems like Kafka, their scaling and replication characteristics, and various approaches to messaging.

Finally, since IT stands for “Information Technology”, I believe there’s underappreciated value in ensuring that information doesn’t disappear. On one hand, this means data replication; on the other, it means not deleting the data in the first place. That is the focus of the Envers project, as well as my research into event sourcing, which might be implemented successfully not only through large-scale architectures like CQRS but also in smaller, relational systems.

Any questions?

Can’t find the answer you’re looking for?