Best resources about Software Engineering

The following list was assembled by Irina Stanescu

1/ The Pragmatic Engineer by Gergely Orosz –
Covers a variety of topics from in-depth analysis of how various companies do things to general solid advice on career growth and engineering management.

2/ Level Up Software Engineering by Caleb Mellas –
Empathetic career development tips for software engineers looking to develop both technical and interpersonal skills.

3/ Software Design: Tidy First? by Kent Beck –
Excellent mix of technical and non-technical advice from the author of Extreme Programming and TDD.

4/ Engineer’s Codex –
Case studies and practical lessons from Big Tech companies.

5/ ByteByteGo Newsletter by Alex Xu –
Weekly in-depth systems design newsletter, written by the author of “Systems Design” vol 1 and vol 2.

6/ High Growth Engineer by Jordan Cutler –
Practical actionable advice for ambitious engineers looking to grow in their careers.

7/ Engineering Leadership by Gregor Ojstersek –
Engineering/Engineering Leadership topics to help you become a great engineering leader.

8/ SeattleDataGuy’s Newsletter by Benjamin Rogojan –
The best data engineering newsletter, insightful even if you don’t work in data.

9/ Hybrid Hacker by Nicola Ballotta –
In-depth lessons on engineering management with excellent illustrations.

10/ Wes Kao’s Newsletter –
Excellent advice on navigating work dynamics and career growth from the co-founder of Maven.

11/ System Design Newsletter by Neo K. –
Easy-to-understand explanations of complex architectures.

12/ “The Caring Techie Newsletter” –
Focuses on soft skills, communication, and building caring leaders .

added by me and why not ?

13/ Chris Richardson’s feed about microservices

Surprised by Github; their RSA SSH host key has been updated in the last week of March

Trying to push some new code to github, I’ve received the following thing:

PS D:\projects\SimpleBank> git push -u origin main -v
Pushing to
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
Please contact your system administrator.
Add correct host key in /c/Users/en_ia/.ssh/known_hosts to get rid of this message.
Offending RSA key in /c/Users/en_ia/.ssh/known_hosts:1
RSA host key for has changed and you have requested strict checking.
Host key verification failed.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

It looks like things have changed:

To overpass this locally, the solution is simple (just to remove the old key):

ssh-keygen -R

Java BackPressure Example generated with ChatGPT

Trying to play with chatGPT I requested to generate a java code that uses backpressure when running high intensive tasks.

This is what I’ve received, and I find it a good start point

import java.util.concurrent.*;

public class BackPressureExample {

private static final int MAX_QUEUE_SIZE = 10;
private static final int MAX_CONCURRENT_TASKS = 4;
private static final int NUM_TASKS = 20;

public static void main(String[] args) {
// Create a bounded blocking queue with a capacity of MAX_QUEUE_SIZE
BlockingQueue<Runnable> queue = new ArrayBlockingQueue<>(MAX_QUEUE_SIZE);

// Create a new executor service with a fixed pool of MAX_CONCURRENT_TASKS threads
ExecutorService executor = new ThreadPoolExecutor(MAX_CONCURRENT_TASKS, MAX_CONCURRENT_TASKS,
0L, TimeUnit.MILLISECONDS, queue);

// Submit NUM_TASKS tasks to the executor, with backpressure
for (int i = 0; i < NUM_TASKS; i++) {
try {
// Wait until there is available space in the queue
queue.put(new Task(i));
} catch (InterruptedException e) {
System.err.println("Task submission interrupted: " + e.getMessage());

// Shutdown the executor and wait for all tasks to complete
try {
executor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
} catch (InterruptedException e) {
System.err.println("Tasks interrupted: " + e.getMessage());
System.out.println("All tasks completed");

private static class Task implements Runnable {
private int id;

public Task(int id) { = id;

public void run() {
System.out.println("Task " + id + " started by thread " + Thread.currentThread().getName());
try {
// Perform some work
} catch (InterruptedException e) {
System.err.println("Task " + id + " interrupted: " + e.getMessage());
System.out.println("Task " + id + " completed by thread " + Thread.currentThread().getName());

Rancher Desktop – Is the docker daemon running?

After I’ve uninstall Docker Desktop and installed Rancher Desktop, I had the following error:

ionut@home % docker ps -a
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

The way I’ve resolved this issue was to run the following command. Worked like a charm.

sudo ln -s ~$USER/.rd/docker.sock /var/run/docker.sock

How to Detect Memory Leaks in Java* +: Tips and Tricks

First thing: LOGS

JVM generates can generate 3 types of logs, to help you optimise the performance.

  1. GC log
  2. Thread Dump
  3. Heap Dump

Check GC algorithm

With Java 11+, G1 algorithm is the default one. For java8+ version, this new algorithm needs to be enabled explicitly.

Useful tools:

  • JConsole –
  • JFR
    Be aware that not all java versions 8+ are compatible with it.
  • – 5 Free Analysis/Month | No Credit Card Required – and it requires account
  • – this can be run on docker using the following command
    docker run -d -p 80:80 gcplot/gcplot
  • JVisualVM