latest adventures

AWS RDS (Postgres): how to debug spilling to disk

Recently, I had to quickly learn how to debug excessive spilling to disk on a Postgres instance. Information online on this topic is mostly scattered. I have a feeling that, whenever query...

Java's synchronized explained

There's a ton of documentation and specifications describing the internal workings of the JVM. However, going through all of that to simply gain some understanding might be a bit too much. I've...

Postgres: notes from day-to-day engineering

As a software engineer, I learn something new every day simply by doing my job. This post contains three small tips that I thought were worth noting down and might be useful...

How JVM handles exceptions

It's interesting to know how the JVM runs bytecode instructions... But do you know what is going on when an exception is thrown? How does JVM handle the delegation of control? What...

First months at Azul: how is it going?

It's been over three months now since I started working at Azul. Everyone keeps telling me 'you're in the right place', and I can't agree more! I feel like I can use...

Java Integer Caching: why and how

As Java developers, we know that we shouldn't compare objects using the `==` operator because this way we compare the references and not the actual values. That would also apply to Integer...

I won’t let Java confuse you #5: let's talk lambdas

Lambdas are interesting structures. What are they exactly? And why can't we use non-final local variables in lambda bodies?

I won’t let Java confuse you #4: unreachable statements

Do you think Java consistently rejects all unreachable code? Well...Welcome back to the Java-unconfusing series! Usually here we take a look at the pieces of code which may look really innocent, but...

I won’t let Java confuse you #3: widening

Welcome to the fourth episode of our Java-unconfusing series, where we look at some basic concepts in Java (in fact, it applies to many other languages too) that result in confusing outcomes...

I won’t let Java confuse you #2: expressions

Welcome to the third episode of the Java-unconfusing series, where we talk about the things that look innocent, while the results seem confusing. Today I'm going to show you a simple numeric...

I won’t let Java confuse you #1: String concatenation operator +

Welcome to the second episode of this little Java-unconfusing series. Today I would like to talk briefly about String concatenation operator +...

I won’t let Java confuse you #0: increment

Sometimes the code that seems really clear can turn out to be quite deceiving, even in some really basic concepts. In these situations, it’s good to question whether that code doesn’t smell......

meanwhile, in the comics…