Rust and software security
Rust - again
I have no idea what is causing that: I am starting to learn Rust for - I think - a third time. Perhaps it is the Youtube bubble in which I’m flowing that is suggesting Rust-related videos; perhaps it is my ADHD brain trying to find something “new” after it got bored with Kubernetes training which took me too long. Whatever the reason, here I am, read to dive in.
The stoic developer
The Stoic Developer: Delivering Value with Focus and Serenity
As software developer and contractor, I see the how fast the world changes:
- we’ve barely migrated our codebase from java 8 to java 17 whereas java 23 is going GA in two months time
- we’re constantly prioritizing the releases required to fix vulnerability issues
- other functionalities suffer from tight deadlines
- requirements are evolving “by default” in the “agile process”
- libraries are upgraded, new frameworks are created, software conference videos and podcasts are uploaded
- daily.dev, reddit and hackernews are dangerously pumping up my fomo levels In this whirlwind, it’s easy to feel overwhelmed - it is true for me and for my colleagues in the team: our work can suffer.
Here’s where ancient Stoic philosophy offers a surprisingly potent toolkit.
Is it burnout, or I'm just sick?
I have an issue
Staying focused on my job became so hard that I started exploring what is happening with me. What are the signs of my strange condition? Every few minutes I feel an inresistible urge to get up my chair ang go somewhere. Unfortunately, since I’m working from home, the “somewhere” means “to the fridge” so I’m constantly eating. Not good.
It looks like my level of stress or boredom is so high that all my mental systems nead a break and have to engage in something different. So I get up. Eat or drink. Clean the toilet. Set up the washing machine. And finally, chased by my conscience (whispering: “what the hell are you doing?”) I come back and sit at my desk, defeated, unmotivated, guilty. Not good.
How to explore a new codebase
How to start exploring a new codebase
Have you ever thought about a situation when you are dropped into the middle of a huge codebase and you need to somehow make your way through it? For example:
- you were assigned to a new project
- you switched teams
- you were hired as a contractor or maybe
- you want to start working on a free software project hosted in a public repo.
The question
How should you even start? What to look for? Sometimes the amount of related projects, the vast tooling or huge amount of documentation may seem just overwhelming.
Java, Go, Rust - comparison
2023 and 2024
World
A lot has been happening in the world when you look at 2023
- Ukraine - Russia war, Hamas - Israel war
- Finland joins NATO
- India exceeds China in population size
- India lands on the moon’s south pole (Chandrayaan-3)
- Banking crisis (buyout of Credit Suisse by UBS in Switzerland)
- First AI Safety Summit
Just go and look at 2023 in Wikipedia, it is a really fascinating summary.
Predictions
Near the begining of 2024, a lot of people and organizations on the web published its predictions related to most promising/important technologies or trends.
Docker exercise
No amount of Udemy courses is satisfactory unless you start to solve your problems. So yesterday I created myself a problem:
Write a commandline application, dockerize it, use it, push it to dockerhub.
It seems like a very humble endeavour, and I had a lot of fun anyway.
Golang app
I’ve learned that in order to write to a file I can use os.Open call which
takes flags and (hex) permissions:
Introduction to TLS, jks and keystores
Let’s face it: certifiates, key management, ssl/tls has never been any fun for any Java developer. That’s why I was also avoided this topic for as long as possible. And the time came to finally gather all I know , or rather: what I don’t know, just for reference.
Model ISO - OSI
What is ISO OSI model
ISO OSI = International Organization for Standardization Open Systems Interconnection
ISO OSI model is conceptual framework:
- used to standardize and understand how different networking protocols and functions interact within a networks
- consists of seven layers, each with a specific role and set of functions
Layers
Physical Layer (Layer 1):
- the lowest layer
- deals with the physical aspects of data transmission.
- defines the physical medium, such as cables, electrical voltages, or optical signals, and how data is transmitted over them.
- example: Ethernet cables, fiber optic connections, and wireless communication signals.
Data Link Layer (Layer 2):
- responsible for framing data for transmission and detecting and correcting errors in the data
- manages access to the physical medium
- resolves issues related to the physical addressing of devices on a local network.
- examples: Ethernet and Wi-Fi
Network Layer (Layer 3):
- focuses on routing and forwarding data between different networks or subnets.
- uses logical addressing (such as IP addresses) to determine the best path for data to travel from source to destination
- examples: routers operate at this layer
Transport Layer (Layer 4):
- manages end-to-end communication and data segmentation into smaller packets.
- provides error detection, flow control, and data integrity, ensuring that data is reliably and accurately delivered
- examples: Protocols like TCP (Transmission Control Protocol) and UDP (User Datagram Protocol)
Session Layer (Layer 5):
- establishes, maintains, and terminates connections between two devices or applications
- manages session synchronization and ensures that data is delivered in the correct order
- examples: NetBIOS and RPC (Remote Procedure Call)
Presentation Layer (Layer 6):
- responsible for data translation, encryption, and compression.
- ensures that data is in a format that both the sender and receiver can understand.
- can handle data compression and encryption as needed.
Application Layer (Layer 7):
- the topmost layer, the closest to end-users and applications
- provides network services directly to end-users and applications (usually through language or libraryAPI) and is where most user-facing software interacts with the network
- Common application layer protocols include HTTP (for web browsing), SMTP (for email), and FTP (for file transfer)









