## 17/04/2020

### Neo4j Cypher is great but sometimes strange

Home

My journey with Neo4j started a few months ago and I really think that it is a great database and I'm in love with its query language called Cypher. However, especially having SQL background, some things might be surprising (in this negative way). I will give you an example. Let's assume that we have a graph that among other stores movies. We may write such a query to retrieve all the movies:
```MATCH (m:Movie)
RETURN m
```
Here is a sample result:

If we slightly modify this query we can select movies that were released in 1999:
```MATCH (m:Movie)
WHERE m.released = 1999
RETURN m
```
This time we will get just 4 movies:

Now let's make something more complex i.e. additionally let's return information about producers of movies (if they exist):
```MATCH (m:Movie)<-[:PRODUCED]-(p:Person)
WHERE m.released = 1999
RETURN m, p
```
This query has one small bug. The problem is that it returns only 1 movie while we know that there are 4 movies released in 1999. To fix a problem we need to use an equivalent of LEFT/RIGHT JOIN from SQL which is called OPTIONAL MATCH:
```MATCH (m:Movie)
OPTIONAL MATCH (m)<-[:PRODUCED]-(p:Person)
WHERE m.released = 1999
RETURN m, p
```
Better but still something is wrong. Instead of getting 4 movies, we have dozens of them and if we analyze results we will notice something very strange. Movies returned by a query above were released in many different years e.g. in 1975 even though we have this condition WHERE m.released = 1999.

Does it mean that WHERE statement in Cypher does not work in some cases? Or maybe something is wrong with OPTIONAL MATCH. Well, everything is ok if we know how Cypher exactly works. What is not obvious is that:

OPTIONAL MATCH ... WHERE never removes rows from the result.

Yes, it is awkward but it is how Cypher works. Everything is also explained in this nice article from Neo4j. Any way to fix a problem we have 2 options. We can either change the order of statements in a query:
```MATCH (m:Movie)
WHERE m.released = 1999
OPTIONAL MATCH (m)<-[:PRODUCED]-(p:Person)
RETURN m, p
```
Or use WITH statement:
```MATCH (m:Movie)
OPTIONAL MATCH (m)<-[:PRODUCED]-(p:Person)
WITH m, p
WHERE m.released = 1999
RETURN m, p
```
And now results are perfect:

## 17/09/2019

Home

I'd like to invite you for my presentation (and not only mine) during this year edition of High Load Strategy conference. On 10th October, together with my colleague Artur Kordzik, we will talk about security in a high-load, distributed environment. Of course, it is not everything and we prepared much more. My colleagues will talk about Kafka, Docker, AI and other things Tiggers like the best.
• 15.30 – 16.00 Snacks & Networking
• 16.00 – 16.30 Keynote
• R. Jaworowski
• 16.30 -17.15 How we manage our Kafka clusters
• Robert Fabisiak & Tomasz Gintowt
• 17.15 – 18.00 What can go wrong during 1,14 ms?
• Marius Lozda & Wojciech Kromolicki & Arek Bazylewicz,
• 18.00 - 18.45 RTB Bid Landscape - survival models powered by bitmaps
• Łukasz Mączewski & Przemysław Piotrowski
• 18.45 – 19.30 How to make security in a high-load distributed environment
• Michał Komorowski & Artur Kordzik
• 19.30 – 20.15 High performance on Docker– adventure
• Krzysztof Stolarz & Dariusz Binkul
• 20.15 – 21.15 Beers & Networking
All presentations will be in Polish.

## 30/04/2019

### Event Storming workshops from the other side

Home

Some time ago I gave the presentation about DDD and Event Storming during Girls Do IT 2019 conference. I also had occasion to run workshops on the same topic during Programistok 2018 and facilitated a few Event Storming sessions in the past (here is one example). So I can say that I have experience with this very nice modeling and business domain exploration technique proposed by Alberto Brandolini.

However, when I realized that I can take part in Event Storming Workshops organized by Krzysztof Owsiany and Mikołaj Jakubowski I didn't hesitate much to sign in. The workshops had two parts i.e. EventStorming - Big Picture and EventStorming - Design Level. I take part only in the second one while it was more interesting from my perspective.

In the beginning, we finished the Big Picture part and made a quick summary of what was done during the first part of the workshops. Then Krzysztof made an introduction to Design Level Event Storming. To do so he drew such a nice diagram:

Then we divided into 3 teams and started designing a part of a system in more details. Below you can find results of my team.

In the end, we compared designs prepared by all 3 teams. In was interesting to observe the difference between our designs even though we were supposed to design the same functionality.

To sum up I really didn't regret taking part in the workshops! For sure, it was not lost time. It was very valuable to see Event Storming session from the other side and observer how it is facilitated by someone else.

Are you ready to give a chance to Event Storming?

*The pictures in this post comes from own resources and were taken during workshops

## 11/03/2019

### Girls Do IT 2019 - DDD and Event Storming

Home

English

At the end of March I will give a  presentation about DDD (Domain Driven Design) and Event Storming during Girls Do IT conference. Here is a short description:

DDD is a phenomenal approach to software development, which focuses on modeling and developing of a common language (a.k.a. ubiquitous language) used both by business and engineers.

Whereas Event Storming is a technique of modelling and gaining knowledge even of complex business domains, which is more and more popular especially among DDD practitioners. In 2018 it was even placed on the famous ThoughtWorks Technology Radar as the recommended modeling technique.

The aim of the presentation is to share experience and discuss the basics of Event Storming and DDD.

Polski

Pod koniec marca w czasie konferencji Girls Do IT przedstawię prezentację na temat DDD (Domain Driven Design) oraz Event Storming'u. Oto krótki opis:

DDD to fenomenalne podejścia do wytwarzania oprogramowania, które kładzie nacisk na modelowanie i wypracowanie wspólnego języka pomiędzy biznesem, a inżynierami.

Event Storming to natomiast technika modelowania i zdobywanie wiedzy nawet na temat bardzo złożonych domen biznesowych, która przebojem weszła na rynek IT, a szczególnie upodobali ją sobie właśnie praktycy DDD. Może wystarczyłoby powiedzieć, że w 2018 roku została umieszczona na słynnym Technology Radar firmy ThoughtWorks jako zalecana technika modelowania.

Celem prezentacji jest omówienie podstawowych zagadnień związanych z Event Storming'iem oraz DDD, a także podzielenie się ze słuchaczami praktycznymi doświadczeniami w tym obszarze.

## 14/01/2019

### 4Developers 2019: Rusza kolejna edycja największego Festiwalu Technologicznego w Polsce

Home

2000 uczestników i niemal 100 cenionych ekspertów z branży IT w jednym miejscu. Przed nami ogromne, interdyscyplinarne spotkanie polskiej społeczności programistycznej. W ciągu jednego dnia specjaliści i pasjonaci IT będą mogli uczestniczyć w niemal 100 praktycznych prelekcjach. Już 8 kwietnia 2019 w Warszawie odbędzie się kolejna edycja 4Developers 2019!

Interdyscyplinarność to domena Festiwalu

4Developers wyróżnia niezmienna od lat formuła - kilkanaście ścieżek zbudowanych wokół wybranych języków programowania. Różne technologie i najświeższe tematy z branży IT w jednym miejscu. Każdej ze ścieżek tematycznych towarzyszy grono ekspertów, którzy dbają o wysoki poziom merytoryczny przedstawianych w agendzie tematów. Na Festiwalu gromadzą się liczni przedstawiciele społeczności programistycznych z całej Polski – to niepowtarzalna okazja, by zawrzeć nowe znajomości i być na bieżąco z trendami ze środowiska IT.

Festiwalowy charakter 4Developers wynika przede wszystkim z otwartej atmosfery, która panuje podczas wydarzenia. Na tej konferencji eksperci chętnie dyskutują z uczestnikami, a prelegenci starają się odpowiadać na najbardziej skomplikowane pytania. Mnóstwo przestrzeni do chilloutu, niezapomniane i bogate w networking Before Party oraz festiwalowe atrakcje sprawiają, że nawiązywanie nowych znajomości staje się niesłychanie proste!

Cloud Computing i Data Science – nowości w agendzie

Nad wysokim poziomem wykładów, które pojawią się na 4Developers 2019, czuwa Rada Programowa, złożona z czołowych polskich ekspertów z branży IT. Każdy ekspert czuwa nad konkretną ścieżką tematyczną. Podczas tegorocznej edycji uczestnicy będą mogli udać się na wykłady i warsztaty w ramach 13 różnych ścieżek!

.NET, Architektury aplikacji, Bottega IT Minds,
Bottega Frontend, C++, Cloud Computing, Data science,
Java, JavaScript, PHP, Python, Mobile, Soft Skills & business relations

W Radzie Programowej 2019 pojawią się:

Maciej Aniserowicz, Bartek Glac,
Michał Bartyzel, Jakub Wasielak, Tomasz Ducin,
Joanna Lamch, Łukasz Łuczak, Mateusz Pusz, Mariusz Gil,
Jakub Pilimon, Janusz Kamieński, Sławomir Sobótka, Marcin Szeliga

Jakie nowości w tegorocznej agendzie?

Po raz pierwszy na Festiwalu 4Developers pojawią się ścieżki: Cloud Computing i Data Science . Natomiast swój wielki powrót będzie mieć ścieżka Mobile, którą przygotuje Joanna Lamch. To wyjątkowa edycja, ponieważ każda z przygotowanych dla Was ścieżek dotyczy odmiennej tematyki!

Od juniora do seniora: praktyczna wiedza i wymiana doświadczeń

Interdyscyplinarność 4Developers to nie tylko szerokie spektrum tematów do wyboru, ale również rozległa skala poziomu zaawansowania. Festiwal odwiedzają profesjonaliści, którzy chętnie wymieniają się doświadczeniami z uczestnikami stawiającymi pierwsze kroki w branży IT. Zarówno jedni, jak i drudzy, znajdą tu tematy dostosowane do ich potrzeb.

Trwa nabór prelegentów - Call for Papers już otwarte!

Niewiele wydarzeń daje możliwość wystąpienia przed tak różnorodną, otwartą publicznością. 4Developers jest doskonałym miejscem, by sprawdzić się na dużej scenie. Każdy, kto chce spróbować swoich sił i zaproponować temat, może wysłać swoje zgłoszenie przez formularz Call For Papers, dostępny na stronie Festiwalu: www.4developers.org.pl Organizatorzy czekają na zgłoszenia propozycji prezentacji do końca stycznia.