Confitura 2023
“It’s Saturday, beautiful weather outside so… let’s code something fun” (loosely translated)
~ Krzysztof Kudryński
“It’s a model pulled out of an ass”
~ Jakub Nabrdalik
Today, I had the pleasure of attending Confitura 2023, and I want to share some insights from the discussions I participated in there.
Disrupting the Banking Industry
The keynote speaker, Paul Clark, CIO of Chase Bank, engaged us in a discussion on how technology disrupts different industries. He drew attention to the roles of Netflix and YouTube in revolutionizing content consumption, and how Uber has reshaped the taxi industry through technology.
Clark made an interesting claim that contrary to popular belief, Revolut did not really disrupt the banking industry, nor was it their goal. I was always under the opposite impression. After his speech, I inquired about how Chase is superior to Revolut. The response was that Chase focuses on establishing a legal banking presence worldwide, unlike Revolut, which has had difficulties expanding outside Europe. Chase prioritizes getting the formalities right over introducing fancy features like single-use cards, crypto, stocks etc., often touted by Revolut.
There weren’t many technological revelations from the presentation.
How to NOT get insane when working for 20 years as a dev - personal mental health tricks.
Jakub Nabrdalik covered issue of depression and burnout in our industry. He gave some tips how he was dealing with situations when we felt really bad because of his work.
I think it’s super important to talk about these things. Work in our industry seem to be fun and peaceful - we are sitting all the time in front of computers, drink coffee and just type some stuff into computers. The truth is that our work is burdened with high level of stress (i.e. company looses money or do some harm to people due to bug in software we made). And no matter how good you and your team is - mistakes just happen - you cannot eliminate them fully. Beside high stress there are also other aspects - feeling that we’re doing something not useful, not real or just dumb (depends on situation).
Some tips I liked the most:
- Track your emotions and react to them properly. It’s about being concious what make you frustrated, angry, sad, fearful and joyful. For each of those emotions there is appropriate action that should be done (sometimes it’s just quitting the job 😂). Most he elaborated about reaction to fear. Are you scare about deployments? So minimize it! Make CI/CD working well. Care about observability. Use TDD/BDD. Have FinDevOpsSec culture. Have microservices (so if something fails only part of functionality stops working). All those things reduce stress, so they are right answer for your emotion!
- Give space to all of yours Dialogical selfs . The idea is that everyone has few personalities inside our head - sometimes they can be very different. However, if one of them is ignored for long time it can pull the brake and… you are in the situation in which you don’t want to go out of the bed (something called depression)
- Escapism - sometimes it’s worth to just escape from the reality a bit. It’s just super unhealthy to think only about one thing (for example software engineering). You better have escaping under control - don’t just open a beer and watch TV after long day at work as it’s an easy way to become alcoholic. Find something that is not hurting your health and lets you charge the batteries.
It’s worth to say that speech was full of jokes and speaker claimed that many of his theories may be… well… “models pulled out of an ass” 😂 But they worked for him well, so why not get some inspiration?
JVM Under The Hood
We create Java code, run javac -jar and we get bytecode which can be understood by JVM. Cool, but what happens when JVM picks up this bytecode?
Interesting presentation about Java compilers (javac, C1 and C2). Bartłomiej Żyliński showed us how Just In Time compilation works, explained what HotSpots are and what Tired Compilation is.
Then talked a bit about GraalVM, Ahead of Time compilation and recommended looking into GraalVM code which is open source.
It was intresting one, but probably not so useful. And to understand it well a lot of time would be needed. Maybe someday when I decide to create my own compiler :)
Modularity: Expectation vs Reality
Great speech given by Sławomir Sobótka about software modularization.
Talking about Bounded Contexts and how should they communicate with each other. Exploring Open-Host and Published Language integration patterns.
The same talk but under different name (Tajniki Destylacji) is available on YT .
“It’s not moral to create distributed systems without reading Enterprise Integration Patterns first!” - I feel guilty here 😅
I hope to catch it up soon :)
Modern Java for decade-old problems
Mateusz “Serafin” Gajewski shared with us how migrations to newer Java versions went in Trino - what were benefits of migration and what were problems they encountered.
Java with its version 21 becomes even more civilized! I’m not gonna copy paste internet here and elaborating about new features, however it’s good to know that Java is doing well.
Also I was quite impressed how fast they were able to migrate - to Java 17 in 3 months after release (on prod!) and already exploring Java 21!
Od perceptronu do głębokiego uczenia na skalę przemysłową
Mind blowing presentation given by Krzysztof Kudryński!
He started speech with super cool experiment. He started playing music and asked us to raise the hand if we think it’s “1” and nod head if we think it’s “-1”. After few songs he learned us how to recognize reagge music 🤣
Beside during this speech he:
- Recorded three “songs” that he played on guitar
- Made some analysis of them and plotted waves using python
- Then live coded from scrach simple neural network that was able to learn which song is reagge
- Showed us with diagrams how this neural network is actually learning
- Explained us very well the backpropagation algorithms (with showing illustrations on neural network he just wrote)
- And then… removed whole package containing neural network he created and replaced it with pytorch which had exactly the same interface (to show, that frameworks are not any magic)
And then plugged .cuda()
method which switches from CPU to GPU (he works in NVIDIA) and showed us meme “YOUR MOTHER LEARNS NEURAL NETWORK ON CPU” 🤣
I was impressed how well he was prepared. There was no empty space in his presentation. It was full of great jokes. He did not make even single typo when coding and he was doing it incredibly fast. He was explaining everything super clearly even when coding. I’m not sure how did he do that (I think he was not using any live templates) but it was great.
Avoiding mistakes with events, an event at a time
Andrzej Grzesik and Wojtek Ptak shared with us what kind of mistakes about events they saw during their careers and gave some tips how to avoid them.
I liked the point they made that there is no Kafka or Rabit needed - it can be implemented anyway - db like Postgres is doing fine (actually it’s implemented in Revolut this way).
Another thing I liked was the idea of having traceId in events. I’m used to seeing traceId in http requests, but didn’t see it in events. The idea is, that single event can trigger actions in multiple services and it’s useful to see the whole path it travelled.
They talked also a lot aobut importance of ids in events and time (receivedAt, processedAt etc.).
Final thoughts
Was it worth to attend Confitura 2023? I think that definetely yes. And it’s not because I learned lot of new stuff and could network with people from the industry. It’s because such meetings inspire to actions. Like writing a blog post after almost 6 months of break :)