[
programming
learning
talent
]
23 May 2023
The concept of talent can sometimes create the perception that certain abilities or domains are only accessible to a select few who are naturally gifted.
Read More
[
flow
programming
work
health
life
]
19 May 2023
Work disengagement can occur when there is a mismatch between a person's abilities and the demands of their work
Read More
[
learning
monitoring
devops
prometheus
alert
]
10 May 2023
Alertmanager is a component of the Prometheus ecosystem that manages and sends alerts based on the rules defined in Prometheus
Read More
[
software-development
programming
software-engineering
risk-management
]
2 May 2023
When introducing a change to a software system, it's essential to do so in a way that minimizes the risk of unintended consequences
Read More
[
books
psychology
learning
flow
life
]
25 April 2023
People often think that material possessions or external achievements will bring them happiness and fulfillment. This may include things like a high-paying job or social status. However, research has shown that these external factors are not necessarily the key to happiness.
Read More
[
linux
programming
learning
command-line
efficiency
]
20 March 2023
In this short post, I would like to present some tools that can be useful when working with command line terminals.
Read More
[
python
learning
monitoring
devops
prometheus
sre
]
3 March 2023
In this post, I would like to show how we can implement web application monitoring using Prometheus. We discuss how to choose some metrics as Service Level Indicators (SLIs) and also how to ensure system reliability by setting proper targets as System Level Objectives (SLOs)
Read More
[
efficiency
productivity
books
life
]
9 February 2023
Efficiency can be defined as doing things correctly, but also in a reasonable amount of time. We are trying to improve our work attitude and are ready to disturb our work-life balance to generate more output. To boost our efficiency we tend to eradicate activities that do not increase the amount of desired stuff done. Cannot make a break, need overtime, must finish X, can have a desk lunch, etc. Constant efficiency growth becomes the main goal. Something that should be instrumental is becoming essential.
Read More
[
software-engineering
software-development
kubernetes
devops
]
24 January 2023
A few days ago I started my journey with Kubernetes. I would like to share how you can take the first steps with this complex tool and not feel overwhelmed.
Read More
[
software-development
team
communication
]
18 December 2022
Building effective teams are one of the organization's primary concerns. People working in agile methodologies recognize the value of flexibility, continuous collaboration, and development process refinement. However, I would like to demonstrate that agility does not have to embrace change and fluidity in all aspects of software development. In this article, I will discuss several team traits (goal, autonomy, size, longevity, stability) and consider how these things affect team performance.
Read More
[
software-development
software-architecture
c4model
]
10 November 2022
As a software developer or system architect you often have a task to visualize your existing or potential application architecture for other people. Your audience can be software developers, but also business stakeholders (Customers, Product Owners, CEO, etc.). The architecture diagram should take on a distinctive look depending on whatever group you choose to present for your work.
Read More
[
learning
deep-work
communication
books
productivity
]
8 November 2022
Nowadays, we are getting accustomed to working in a continuously interrupting environment. Smartphone notifications, hundreds of e-mails, open spaces, and meetings slicing our workday. We are feeling busy, and overworked, but are we more productive?
Read More
[
learning
habits
books
]
11 September 2022
In the previous post about continuous improvement, I focused on the need for a system that can make our goals achievable. However, it is easier said than done. Now, I would like to move my attention from "what" to "how" and present a learning system implementation based on habits.
Read More
[
learning
software-development
]
12 August 2022
Software development is a field that demands continuous skill improvement. Technology advances rapidly and to be successful you must find a balance between a destructive attempt to be up-to-date at all costs and clinging to your comfort zone by taking the same repetitive tasks all the time. There is a huge difference between 5 years of experience doing the same, and 5 years of experience practicing new things and taking on challenges. Here I have some tips from my experience, on how to build your continuous improvement framework.
Read More
[
database
performance
postgresql
]
10 August 2022
In this micro post, I would like to share my experience in improving database query time by updating statistics estimates.
Read More
[
python
business-logic
business-rules
refactoring
software-development
]
4 July 2022
In this post I would like to show that business rules can fall into various categories and what implications it could have.
Read More
[
python
orm
sqlalchemy
database
]
15 May 2022
Object Relational Mappers (ORMs) are widely used in software development to abstract a database operations in our application code by providing a layer between object-oriented programming language and relational tables in a database. However we should be conscious that simple and inconspicuous expressions provided by our ORM can lead to heavy actions underhood. To present it I will take SQLAlchemy, one of the most popular ORM in Python world.
Read More
[
concurrency
postgresql
locking
database
]
22 April 2022
Concurrency control is one of the most challenging aspects of software development. Sometimes, we have a tendency to wishful thinking and naive beliefs that our advanced toolkit like a web framework, a database or an ORM solve all our issues seamlessly underhood. However, when we tackle non-trivial problem (like concurrent write), we have to demonstrate some understanding how these tools genuinely work (and maybe why they are configured in the specific way).
Read More
[
ddd
persistance
sqlalchemy
python
value-object
]
4 March 2022
Value objects are one of tactical building blocks for modeling business domain introduced and popularized by Domain Driven Design approach. However, we can exploit value objects even if we do not tackling complex domain problem.
Read More
[
postgresql
full-text-search
database
]
27 January 2022
In this short post I will show step by step how to establish full text search engine in PostgreSQL. Several options like `ilike`, trigrams search and tsearch will be presented.
Read More
[
rest
graphql
python
auth
]
5 January 2022
In this second post regarding GraphQL I would like to show how to manage authentication and authorization in GraphQL API. Authentication and authorization are often mixed each other but these concepts are responsible for different processes. The former determine user identity (whether user is logged in or 'recognized' by a system), while the latter refers to whether an authenticated user has access to a given resource. So usually authentication stage precede authorization one.
Read More
[
rest
graphql
python
]
22 December 2021
REST is probably the most popular way to expose your application to the external world (e.g. as a backend for frontend or to establish communication protocol with other application / service). However, GraphQL is now getting more and more popular, and have became a strong competitor for REST.
Read More
[
python
coupling
software-development
]
14 December 2021
Coupling is a concept used in software engineering to define how tight is a relationship between system components (classes, modules, subsystems). Coupling is strictly connected to cohesion concept ("togetherness" of a component) and there is a common heuristic for software developers that we should design components that have high cohesion and are loosely coupled.
Read More
[
software-architecture
port-and-adapters
hexagonal-architecture
python
nameko
]
2 December 2021
Port and adapters (or hexagonal) architecture is a software design concept introduced by Alistair Cockburn in 2005. The main goal of it is to provide a clear seperation between application logic and external dependencies like database, user interface, framework providing HTTP requests, etc.
Read More
[
python
sqlalchemy
domain-model
persistance-model
unit-tests
]
28 November 2021
You probably have heard about a test pyramid. It is the idea that tan application should have proper balance of automated tests on different layers. There should be a lot of unit tests, significantly less integration tests and a few UI tests (End2End, functional). The reasons for this are maintenence cost and speed of particular test type. Unit tests are usually fast and isolated from the rest of the code (so are easy to setup and maintain).
Read More
[
python
flask
mvt
mvc
service-layer
refactoring
]
26 November 2021
In this short post I would like to show how we can improve separation of concerns using Service Layer pattern within Model View Template approach.
Read More