Amine Kaabachi
Data Consultant. Databricks Certified Associate Developer.

This story is about improving your code quality and ways to reduce boilerplate when working with python. There are multiple options like using namedtuples, data classes, and Attrs. In this article, I will help you choose one!

Image for post
Image for post
Photo by Magda Ehlers from Pexels

We All Love Python

Python is one of the programming languages I use the most. I started using it mostly for CTFs (for the fantastic pwntools framework) and ended up using it whenever possible.

We all love Python, but even Python got some pitfalls.

The main issues I see with Python are:

  • When doing OOP, separating logic into multiple subclasses is very tedious as you need to make classes and define dunder methods for each of them. …

Image for post
Image for post
Photo by Аnna Dyakova on Unsplash

Azure Function

Azure Functions is a serverless solution that allows you to write less code, maintain less infrastructure, and save on costs. Instead of worrying about deploying and maintaining servers, the cloud infrastructure provides all the up-to-date servers needed to keep your applications running.

Durable Function

Durable Functions is an extension of Azure Functions that lets you write stateful functions in a serverless compute environment. The extension lets you define stateful workflows by writing orchestrator functions and stateful entities by writing entity functions using the Azure Functions programming model. …

Every day, Linux users misuse the kill utility when trying to terminate a process. You go and type the famous kill -9, and all the problems are solved. But should you do that?

tl;dr Try to send a SIGTERM by using kill -15. After a few seconds, If It is not dead send a SIGINT (kill -2). Finally, If It persists send a SIGHUP (kill -1).

Image for post
Image for post
Author: Daniel StoriCC BY-NC-SA 4.0

The kill Command

kill is a shell builtin in most Bourne-derived shells such as Bash and Zsh. Let’s man it.

kill(1) - Linux man pageName
kill - terminate a process
kill [-s signal|-p] [ - ] pid…
kill -l [signal]
The command kill sends the specified signal to the specified process or process group. If no signal is specified, the TERM signal is sent. The TERM signal will kill processes which do not catch this signal. For other processes, it may be necessary to use the KILL (9) signal, since this signal cannot be caught.
Most modern shells have a builtin kill function, with a usage rather similar to that of the command described here. The '-a' and '-p' options, and the possibility to specify pids by command name is a local extension. …

When I was a kid, I spend most of my time playing with creative software. I made one game or two for some local competitions and built a website for a photographer (who was actually a friend of my big man and wanted to encourage me).

Here are the softwares I remember from that time. Some now have new epic versions. But I enjoyed the older version back at the time. Did you try any of these tools?

Image for post
Image for post
Photo by MARWA NAJJAR on Unsplash

Adobe Photoshop 7

Not need to introduce It. I had a lot of fun using the lasso tool to create awesome fake images of my favorite animes and making horrible designs. I spent hours using it. I even made a giant map of my home city.

This article presents a roadmap for those who want to become Data Engineers in 2021. It also serves as a reference to learn and improve the understanding of the different skills required for this position.

For each skill category, I cite the skill points that are recommended with links to video/text courses and some reference books at the end. I have no association with the author, and this is not a referral article. The goal is to provide an easy way for you to navigate and improve your skills :)!

Image for post
Image for post
Photo by Scott Webb on Unsplash

To become a skilled data engineer, you need to know computer science, dev, networking, and databases fundamentals.

CS Fundamentals

Reference Books
The Algorithm Design Manual
Computer Systems: A Programmer’s Perspective
How Linux Works: What Every Superuser Should…

Free brands and identities for startups or open-source projects with available domain names.

🎃 🎃 🎃

Spooky spooky! I know that a cool Logo and T-shirt can help you a lot with your motivation :). Not all of us are comfortable with colors and graphic design in general, and as this is something that I am passionate about, I wanted to gift some swag to help you guys start or complete your projects ideas.


Domain:, (both available 31/10/2020)
Keywords: compression, library, storage, data, big data, data processing.

Image for post
Image for post

Font: Ubuntu-B designed by Dalton Maag and licensed under Open Font License.

Icon: Icon Designed by Ben Davis.

Type hinting is an optional feature in Python that allows you to hint the type of the object(s) you’re using. As Python became the language of choice for many fields (e.g., scientific, data science, and data engineering), the need to improve the code quality and the coding workflow is becoming essential.

Image for post
Image for post
Photo by Museums Victoria on Unsplash


As for all dynamic languages, there are few challenges to write robust and high-quality code. To cite the main ones:

  • As there are no indications on Types of the objects that are passed around, programs usually end up with runtime issues. The developers gain time by writing typeless code but then lose it to write exhaustive tests to ensure that runtime issues are eliminated.
  • The development experience is usually limited. The fact that types are unknown forces IDEs (like PyCharm) to infer them, which generally causes performance issues, gives inaccurate autocompletes / recommendations and limits the debugging features.
  • As the code is typeless, the difficulty of understanding your code grows according to your project size. People usually need to run the code and debug to be able to comprehend the logic fully. …

Everyone around me continuously criticized Facebook et al. for ruining our family dinners, work meetings, and even weekend parties. Today, we praise them as the saviors of humanity in this pandemic age.

Covid-19 has pushed us into an anti-social life and work habits. Some argue that products like Facebook help us get over this crisis and make us experience their real value

Image for post
Image for post
Photo by Ilnur Kalimullin on Unsplash

As the use of these platforms increased during this period (Figure 1), We should seriously start thinking about their side-effects. They yield multiple flows that turn out to be dangerous to our societies. …

At some point or another in one’s career, you are going to work with people having difficult personalities. From research and personal experience, We know that many managers and business leaders suffer from some level of narcissism.

Image for post
Image for post
Photo by Artem Maltsev on Unsplash

This article is about developing the right strategy to manage those kinds of people. The strategy you opt for can become a key to your success or failure at one stage of your career, so. you have to craft it carefully.

Narcissistic Personality Disorder

NPD is as “a mental disorder in which people have an inflated sense of their own importance and a deep need for admiration. Those with narcissistic personality disorder believe that they’re superior to others and have little regard for other people’s feelings. But behind this mask of ultra-confidence lies a fragile self-esteem, vulnerable to the slightest criticism.” …

One of the most confusing parts when starting to learn Kubernetes is be able to access your apps externally. With all the hype around it (Service, ClusterIP, Load Balancer, Ingress, Ingress Controllers, etc) you can easily get lost and for beginners; choosing a solution is not always an easy task.

In this series of articles, we will try to understand the basic concepts of Kubernetes using analogies from widely known cartoons and animes like Pokemon ;)

Image for post
Image for post

Googling Kubernetes Services

Let’s look for good definitions of Kubernetes Services on the web. The first one is abstract:

A Service in Kubernetes is an abstraction which defines a logical set of Pods and a policy by which to access them. Services enable a loose coupling between dependent Pods and provide an interface to be able to access them.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store