Hello there!

I’m Łukasz and I'm a software engineer.

New year, new blog in Hugo

It’s a new year, so a perfect moment for a change, and what is maybe more important - for me to finally write a new blog post.

You may also have noticed the redesign. I’ve decided to migrate my blog from WordPress to Hugo.

Here is why:

Inbox Zero with Gmail

Too many times I’ve heard someone saying “Don’t send me any emails, I won’t read them anyway, my mailbox is a mess”.

That’s just sad. But it doesn’t have to be like this.

Right now, in my Gmail mailbox, there are zero messages. It’s empty. It’s not an anomaly, it’s usually like that because of a technique called Inbox Zero.

My journey through JVM languages

Java is not just a language. The real reason why it’s still so popular today is the mature and performant platform. And because the programs are compiled to the bytecode, the language’s deficiencies could be made up for by … creating other JVM languages.

To be honest, throughout my career, I’ve used more Groovy, Scala, or Kotlin than pure Java itself!

So how do those languages look like and how do they compare with each other?

Sorting by enum values in MongoDB (and Java Driver)

You could think that sorting by an enum value is a routine operation in MongoDB, but if we are interested in some custom order, suddenly it’s not so trivial anymore. In SQL databases, the information about how enum values compare to each other is stored in the schema. Since there are no schemas in MongoDB, we have to find other solutions.

What have I learned from speaking at 4Developers 2020 conference?

At this year’s edition of the 4Developers conference I gave a talk titled “Productivity for Ordinary Developers”. It wasn’t the first time I was speaking at an event, however, it was rich in new experiences for me anyway. Here are some insights I hope you’ll find interesting.

Obvious and not-so-obvious Bash/Zsh terminal shortcuts

For a very long time, I’ve been using just tab, ctrl-C, ctrl-D and ctrl-R shortcuts. However, there are more useful gems out there. In this post, I’m going to show you Bash/Zsh terminal shortcuts that I find useful.

Yet another try to explain RxJS operators – switchMap, mergeMap, concatMap and exhaustMap

I don’t know if it’s just me, but when I started to learn Angular and RxJS, it was hard for me to figure out which operator to use to do a certain thing. The switchMap, mergeMap, exhaustMap and concatMap all seem to be similar and the documentation uses very generic examples – transforming ‘1’ into ‘1A’ and it’s hard to translate it to the real-life use cases.

This is my try to explain those 4 operators, which seem to do the same action, but they have some differences and they should be used in different contexts.

The day that the technology disappeared?

The first thing I usually do at the airport is to turn off the offline mode on my Android smartphone and connect to the airport’s Wi-Fi. This time, however, something wasn’t right.

Why it is sometimes hard to connect to the public Wi-Fi network and what can we do about it?

Sometimes you connect to the Wi-Fi, but no website wants to load. You try to enter different website addresses, but all you get in the result is a blank page. It seems like it’s stuck in some void … and then for some website it miraculously did work and you were redirected to a page with some terms to accept, one click and the Internet is ours.

But why … ? What just happened ?

Server-Sent Events explained

Server-Sent Events are a great way to solve one particular shortage of HTTP protocol, which is an asynchronous server to client communication.

HTTP itself is a request-response protocol and this is great – until you need to implement notifications, direct messages, or a similar feature. A backend server cannot send a message if the client didn’t ask for it explicitly.

Of course, there are WebSockets, but are we aware of the alternatives? Server-Sent Events is a technology, which allows us to push messages from a server to a browser in an asynchronous way. This is possible only in that direction, but isn’t it exactly what we miss in HTTP?