This might sound really controversial, but I think developers should have some free time to experiment. To make it even more controversial, I believe that providing opportunities for paid experimentation is more beneficial than leaving developers to investigate tools and techniques exclusively during their leisure. Why should I pay my developers to do whatever they want? - Some Boss somewhere Developers It is generally acknowledged that developers need to stay up-to-date to be successful. For their career growth, they need to regularly sharpen their saw. Developers need to learn new things here and there, otherwise they could be in a... [Read More]
Kotlin Features that Java Developers love
Hey folks, over the last weeks, we had a discussion at work whether or not we should make Kotlin the default for our future Spring Boot application development. For now, we don’t have a decision but I think there are a lot of good arguments on both sides. Java is a battle-tested, multiple-decade old programming language. Kotlin is the new kid on the block. Let’s have a detailed look into what Kotlin really has to offer in comparison to Java. The following list is not by any means complete - these are just the things I found most important so... [Read More]
Implementing Retries using RabbitMQ and Spring Boot 2
This article is inspired by a solution we needed at work: We needed a way to retry asynchronous operations using Spring Boot and RabbitMQ. WHY? Sometimes it is necessary to execute certain operations decoupled from the rest of your business logic. We needed to send an update to an external system (e.g. an audit log). The update itself is not necessary for the operation of our own user flows. The user should not be aware of failures. This is why we decided to build it using messaging. Since the update is really important, we need to make sure that the... [Read More]
Spring Boot WebSocket Tutorial
Twitter WebSocket Stream with Spring Boot
Finally another technology tutorial! This time I want to talk about creating a WebSocket Service with Spring Boot 2 (without the usage of STOMP). If you don’t know about STOMP, nevermind - we will create a solution working with plain WebSockets supported by all modern browsers. In order to verify our setup, we also will create a minimal Web Frontend. This Frontend will consume the events sent via our WebSocket implementation. The full code can be found on GitHub, in case you need a quick reference or just want to copy parts over. What will we implement? When I first... [Read More]
You Are Not Your Kubernetes ...
... you're not how much code you have in repositories, you're not the follower count of your GitHub Profile, you're not the size of your Hadoop Cluster, you're not your fucking Tensorflow.
Best Java Books in 2019
Introduction to Java Programming and Data Structures Head First Java Think Java Clean Code Pragmatic Programmer Effective Java Refactoring Java Concurrency in Practice Test Driven Head First Design Patterns Release It! Kotlin in Action Spring in Action Spring Boot in Action Cloud Native Java Spring Microservices in Action Learning Spring Boot 2.0 Personally, I am always on the hunt for good programming books. Books are an opinionated topic, therefore I am quite sure some people would disagree with this selection. Nonetheless let’s have a look at my opinionated selection of the best Java books in 2019. You might realize that... [Read More]
Random Number Generation with Java
Random Numbers are really important. Without them there would be no Internet how we know it! This article will explain in detail how generating Random Numbers in Java works. It will introduce different technics to create Random Numbers and also cover different scenarios with ready-to-use code. Let’s first start with the basics. Generating Random Numbers with Java: Java provides at least fours ways of properly creating random numbers. 1. Using Math.random Method The most basic way of generating Random Numbers in Java is to use the Math.random() method. It doesn’t take any parameter and simply returns a number which is... [Read More]
Jumping Ship for Career Progression.
Having a look at my LinkedIn Network, I realized there are a few ways of growing your Software Engineering Career. I am trying to keep my personal opinion out of the middle part and only get involved in the end of the article. Working for a Single Company There are plenty of people who only have worked for a single company. Maybe my network is a bit biased, since it contains a lot of people who not have finished their first 5 years. Most of them stayed in the same role or added/removed a prefix from their title (e.g. Senior,... [Read More]
You are not Google. You are not Netflix.
You are also not Spotify, Amazon, Apple, Microsoft, Facebook or one of several other big tech companies I could mention here. If I have excluded anybody reading this - I am sorry.Maybe you will still enjoy the read. For everyone else: This article is probably for you. To give you all some context: I am a Backend Engineer on a team that is developing an iOS/Android App which is live in around 40 countries. Currently, we are only responsible for the EMEA (Europe, the Middle East, and Africa) region. Why am I even writing this? I am trying to digest... [Read More]
Monolith vs Microservices
Over the years I read a lot of articles and stories about the differences between Microservices Architectures and Monolithic Architecture (Monoliths). Today I am about to tell you my own version. What is a Monolith i.e. a monolithic architecture? A monolithic application, let’s call it a Monolith, is an application delivered via a single deployment unit. Examples could be an application delivered as single WAR or a Node application with a single entrypoint. Example: Let’s make an example: A classic online shop. Our business boundaries are ORDERS, ITEMS, CUSTOMERS, SHIPPING and PAYMENT. Provided ways of interacting with the service are:... [Read More]