<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Home on Ezz | Backend Developer for SaaS</title><link>https://ezzeddinabdullah.com/</link><description>Recent content in Home on Ezz | Backend Developer for SaaS</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Tue, 27 Jan 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://ezzeddinabdullah.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Understanding Operating Systems - A Beginner's Guide to Computer Fundamentals</title><link>https://ezzeddinabdullah.com/post/understanding-operating-systems-beginners-guide/</link><pubDate>Tue, 27 Jan 2026 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/understanding-operating-systems-beginners-guide/</guid><description>If you&amp;rsquo;re just starting your journey into computer science or want to understand what&amp;rsquo;s happening under the hood of your computer, understanding operating systems is essential. This post breaks down the fundamentals of operating systems and computer architecture in simple terms.
What is an Operating System? An operating system (OS) is the software that manages all the hardware and software resources of your computer. Think of it as a restaurant manager - it coordinates the kitchen, waiters, and dining room to ensure everything runs smoothly and customers are served efficiently.</description></item><item><title>How AI Agents Evolved From Simple Bots to Your Best Customer Service Employee</title><link>https://ezzeddinabdullah.com/post/how-ai-agents-transform-customer-service/</link><pubDate>Sun, 10 Aug 2025 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/how-ai-agents-transform-customer-service/</guid><description>Here&amp;rsquo;s the real story: while companies like Amazon were using smart machine learning models for recommendations and Google was perfecting search algorithms in the 1990s, true AI agents - the kind that can actually think, plan, and have conversations - are a much more recent development.
The term &amp;ldquo;AI agent&amp;rdquo; started getting serious attention around 1995 in academic research, but it took decades for the technology to catch up with the concept.</description></item><item><title>From SEO Technical Writer to AI Agent Builder - My 2-Year Journey (And Why Your Business Needs What I Learned)</title><link>https://ezzeddinabdullah.com/post/ai-agent-developer-backend-services-2025/</link><pubDate>Sat, 09 Aug 2025 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/ai-agent-developer-backend-services-2025/</guid><description>Remember when ChatGPT first blew everyone&amp;rsquo;s minds? That was November 2022. I was busy writing SEO technical blog posts for tech companies, helping them get noticed on Google.
Fast forward to today, August 2025, and everything has changed.
I haven&amp;rsquo;t written a blog post since May 30, 2023. That&amp;rsquo;s over 2 years ago. And there&amp;rsquo;s a good reason for that shift.
What Happened During Those 2 Years? While everyone was still figuring out how to use ChatGPT for basic tasks, I dove headfirst into building something bigger: AI agents that actually solve real business problems.</description></item><item><title>Use ChatGPT API to Fix PostgreSQL Performance Problems with Datasentinel</title><link>https://ezzeddinabdullah.com/post/postgresql-alerting-chatgpt-api/</link><pubDate>Tue, 30 May 2023 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/postgresql-alerting-chatgpt-api/</guid><description>In today&amp;rsquo;s data-driven world, effective database performance monitoring is crucial for maintaining the smooth operation of critical systems.
Datasentinel is a PostgreSQL performance monitoring tool that helps you identify and fix performance problems. It does this by collecting data about your database and then analyzing that data to identify potential problems.
One key aspect of successful monitoring in Datasentinel is real-time alerting, which notifies you in case if there is a problem with your databases and instances.</description></item><item><title>7 Common SQL Mistakes You Should Avoid That Will Hinder Your PostgreSQL Performance</title><link>https://ezzeddinabdullah.com/post/common-sql-mistakes/</link><pubDate>Wed, 03 May 2023 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/common-sql-mistakes/</guid><description>SQL is a powerful tool that can help us to extract valuable insights from large datasets. However, writing SQL queries that run efficiently can be a challenging task, even for experienced developers.
When debugging slow running queries, you might be tempted to follow the first route that comes on your mind. However, most of the time, we come across bad advice that can lead to bigger problems and performance issues in the future.</description></item><item><title>Mastering Linux - A Comprehensive Guide to Getting Help with Man Pages, Type, Help, and Apropos</title><link>https://ezzeddinabdullah.com/post/linux-getting-help/</link><pubDate>Mon, 06 Mar 2023 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/linux-getting-help/</guid><description>As a DevOps engineer or a sys admin, it&amp;rsquo;s essential to master Linux. While the command-line interface (CLI) is a powerful tool, navigating it can be daunting, especially for new users. That&amp;rsquo;s why getting help in Linux is essential to efficiently and effectively using the CLI.
In this tutorial, we&amp;rsquo;ll explore four fundamental commands that can help you get the help you need: man pages, type, help, and apropos. These commands can provide helpful information about the usage, syntax, and options of other commands, making them indispensable tools for any Linux user.</description></item><item><title>How to Track PostgreSQL Execution Plans using `pg_store_plans` Extension</title><link>https://ezzeddinabdullah.com/post/pg_store_plans/</link><pubDate>Wed, 01 Mar 2023 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/pg_store_plans/</guid><description>Tracking PostgreSQL execution plans is an important metric for enhancing PostgreSQL performance. In an earlier tutorial discussing pg_stat_statements extension, we learned how to track PostgreSQL queries. In this tutorial, we will discuss how to track PostgreSQL execution plans run by the server optimizer with the pg_store_plans module, an extension created by the PostgreSQL community.
The pg_store_plans PostgreSQL extension is a PostgreSQL extension that allows users to store their query execution plans in an easily accessible form.</description></item><item><title>Mastering Python Lambdas - A Comprehensive Guide for Developers</title><link>https://ezzeddinabdullah.com/post/python-lambda/</link><pubDate>Mon, 20 Feb 2023 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/python-lambda/</guid><description>Python is a versatile and powerful programming language that is loved by developers worldwide. It&amp;rsquo;s easy to learn and use, and has a vast range of libraries and tools to help you get your job done quickly and efficiently. One of the language&amp;rsquo;s most useful and underused features is the Lambda function. With a little knowledge of Lambda functions, you can reduce the amount of code you write, increase the readability of your code, and create more elegant and efficient solutions to problems.</description></item><item><title>Python Boilerplate - How to use Tailwind CSS and SQLAlchemy in your FastAPI app</title><link>https://ezzeddinabdullah.com/post/fastapi-tailwind-sqlalchemy/</link><pubDate>Sun, 19 Feb 2023 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/fastapi-tailwind-sqlalchemy/</guid><description>FastAPI has been adapted for building modern Python applications. Today, you&amp;rsquo;re going to pair this lightweight performant framework with Jinja2 template engine and a modern CSS framework, Tailwind CSS. You will then use SQLAlchemy ORM for the database.
Tailwind CSS is a utility-first CSS framework which means it has a list of utility CSS classes that you can use to style your HTML elements. You can style the elements inside your HTML file by matching and mixing.</description></item><item><title>SQL Functions and Techniques Every Data Person Should Know</title><link>https://ezzeddinabdullah.com/post/sql-essential/</link><pubDate>Thu, 19 Jan 2023 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/sql-essential/</guid><description>Writing SQL queries that don’t utilize database features can cost developers a lot. The cost varies from spending more time writing tedious long queries or having a tech debt later on to debug the performance issue coming from the database server.
PostgreSQL has features that help you select data efficiently. These features can also help minimize the lines you write SQL queries.
In a previous tutorial, we discussed why and how to use window functions in PostgreSQL to aggregate data.</description></item><item><title>How to Interact with Databases using SQLAlchemy with PostgreSQL</title><link>https://ezzeddinabdullah.com/post/sqlalchemy-with-postgresql/</link><pubDate>Thu, 05 Jan 2023 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/sqlalchemy-with-postgresql/</guid><description>Databases can be accessed in Python through a database connector where you can write SQL queries as you do in a SQL client. Writing these queries can be complex and error-prone–especially when you are using a language like Python where all data you deal with are objects or relations between objects .
Writing queries just like you write objects makes connecting to databases really easy. You can do that by using an ORM (Object Relational Mapping) tool like SQLAlchemy ORM.</description></item><item><title>Why &amp; How to Use Window Functions to Aggregate Data in Postgres</title><link>https://ezzeddinabdullah.com/post/postgresql-window-functions/</link><pubDate>Sat, 31 Dec 2022 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/postgresql-window-functions/</guid><description>A window function is a feature developed in PostgreSQL — available since version 8.4 — to analyze data beyond the current row (hence the term “window”).
These windows can aggregate information to each row of your output. Apart from aggregate functions and groupings, window functions provide another way to perform calculations based on the values of several records.
Using window functions removes the hassle of using subqueries and JOINS to aggregate neighboring rows that can be related to the current row.</description></item><item><title>Monitoring PostgreSQL Performance with `pg_stat_statements` extension</title><link>https://ezzeddinabdullah.com/post/pg_stat_statements/</link><pubDate>Thu, 22 Dec 2022 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/pg_stat_statements/</guid><description>Monitoring PostgreSQL performance is essential if you want to have a highly-performant app. To do so, there are tools to leverage to be able to detect slow-running queries and take action.
In this tutorial, we will dig deep into the pg_stat_statements extension. You will not only detect slow-running queries, but also see other metrics like number of calls, standard deviation, cache-related metrics, and others that you can monitor to have a performant application.</description></item><item><title>How Database Design Matters in PostgreSQL Performance</title><link>https://ezzeddinabdullah.com/post/postgres-performance-db-design/</link><pubDate>Wed, 07 Dec 2022 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/postgres-performance-db-design/</guid><description>PostgreSQL performance starts right away at the data modeling phase. When you start designing your tables, PostgreSQL optimizer adapts to your changes and hence boost your database performance or hurt it.
In this PostgreSQL tutorial, you will learn how database design matters in PostgreSQL performance tuning. You&amp;rsquo;ll gain insights about primary keys benefit, when to do normalization, and when to do de-normalization.
Setting up the database Similar to the PostgreSQL Optimization Techniques article, we will set up the Stackexchange database.</description></item><item><title>A Tutorial on Python String replace() Method</title><link>https://ezzeddinabdullah.com/post/python-string-replace/</link><pubDate>Sun, 13 Nov 2022 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/python-string-replace/</guid><description>Replacing characters in strings using Python can be done with multiple ways. In this quick tutorial, you&amp;rsquo;ll learn how to use the replace method to manipulate strings.
You&amp;rsquo;ll learn through examples how to replace a character in a string, how to replace multiple characters in a string, and how to replace the last character in a string.
The replace(old, new, count) method takes three inputs:
old: the string you want to replace new: the string you want to replace with count: (optional) how many occurrences you want this replacement to occur How to replace a character in a string in Python Let&amp;rsquo;s start with replacing one character in string:</description></item><item><title>Kubernetes Metrics Server | How to Deploy k8s Metrics Server and use it for Monitoring</title><link>https://ezzeddinabdullah.com/post/kubernetes-metrics-server/</link><pubDate>Mon, 31 Oct 2022 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/kubernetes-metrics-server/</guid><description>Modern digital businesses have adopted cloud technology and distributed architectures to enable on-demand scaling of resources. Containerization technologies like Kubernetes and Docker have made it possible to handle customer demands at scale. However, orchestrating a complex microservices architecture with Kubernetes is challenging. Monitoring your Kubernetes cluster can give you insights to better manage your cluster.
In this blog post, I’ll assume you have orchestrated your microservices with Kubernetes, and you want to monitor those services with Kubernetes Metrics Server.</description></item><item><title>Celery Worker Tutorial with Flask &amp; Redis</title><link>https://ezzeddinabdullah.com/post/celery-worker/</link><pubDate>Sun, 30 Oct 2022 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/celery-worker/</guid><description>Celery is a simple, flexible, and reliable distributed system to process vast amounts of messages while providing operations with the tools required to maintain such a system. In this tutorial, we will learn how to implement Celery with Flask and Redis.
Before we deep dive into the tutorial, let’s have a brief overview of Celery workers.
What is a Celery worker? Celery is a task management system that you can use to distribute tasks across different machines or threads.</description></item><item><title>How to Get Metadata from PostgreSQL System Catalogs</title><link>https://ezzeddinabdullah.com/post/postgresql-system-catalogs/</link><pubDate>Sat, 29 Oct 2022 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/postgresql-system-catalogs/</guid><description>PostgreSQL is a well-known database engine that allows you to write performant SQL queries.
In this tutorial, you’ll learn about the internal building blocks of PostgreSQL – also known as system catalogs – to see how the PostgreSQL backend is structured.
This tutorial aims to give you insights into how PostgreSQL system catalogs can help you manage your schemas, databases, tables, and even table columns.
What is a PostgreSQL system catalog?</description></item><item><title>PostgreSQL Optimization Techniques</title><link>https://ezzeddinabdullah.com/post/postgres-optimization-techniques/</link><pubDate>Tue, 25 Oct 2022 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/postgres-optimization-techniques/</guid><description>PostgreSQL has features that you can utilize to speed up query execution. Learning about PostgreSQL performance tuning helps you solve the slowness issue with your database in the future. It&amp;rsquo;s important to tune your queries before you even start writing queries.
This post covers PostgreSQL techniques to optimize queries. You&amp;rsquo;re going to learn a few techniques like temporary tables, CTEs (Common Table Expressions), views, materialized views, and how you can leverage each technique depending on your case.</description></item><item><title>Deploying a Serverless Flask App with Zappa and Amazon RDS</title><link>https://ezzeddinabdullah.com/post/deploy_serverless_flask_zappa_amazon_rds/</link><pubDate>Tue, 23 Aug 2022 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/deploy_serverless_flask_zappa_amazon_rds/</guid><description>Deploying a serverless application has become easier with Zappa. If you have a Flask application and you want to ship it quickly and host it on a public URL so that it can be accessed from the Internet, Zappa can help you with that.
Zappa is a Python library that allows you to deploy serverless applications to AWS Lambda and API Gateway. It also has a CLI that allows you to manage your deployment with the configuration set up in your zappa_settings.</description></item><item><title>How to Embed a Tweet in a Blog Post using Twitter API and a Headless CMS</title><link>https://ezzeddinabdullah.com/post/embed-tweet-blog-flask-headless-cms/</link><pubDate>Wed, 06 Jul 2022 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/embed-tweet-blog-flask-headless-cms/</guid><description>Social media is a great way to engage your audience and drive traffic to your website. We can&amp;rsquo;t ignore the impact of social proof when it comes to business.
But how do you get the most out of your social media efforts into your blog posts that impact your business?
In this tutorial, I&amp;rsquo;ll show you how to embed a tweet in a blog post using the Twitter API and ButterCMS to get the most out of your Twitter marketing efforts.</description></item><item><title>How to Build a Complete CRUD app using Flask and Jinja2 in Python</title><link>https://ezzeddinabdullah.com/post/frontend-crud-flask-jinja-bootstrap/</link><pubDate>Mon, 04 Jul 2022 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/frontend-crud-flask-jinja-bootstrap/</guid><description>In a previous tutorial , we&amp;rsquo;ve seen how to build a backend of a CRUD app . In this tutorial, we will complete our full stack application by building the frontend of that app.
At the end of this tutorial, you will learn how to use Jinja2 template to render HTML templates and Bootstrap through Flask-Bootstrap extension by building a CRUD app which is a common task in web dev that allows you to create, read, update, and delete things.</description></item><item><title>How to Build a CRUD app with Flask and SQLAlchemy</title><link>https://ezzeddinabdullah.com/post/backend-crud-flask-sqlalchemy/</link><pubDate>Tue, 28 Jun 2022 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/backend-crud-flask-sqlalchemy/</guid><description>A CRUD app is a web app that allows you to create, read, update and delete things. It is a very common task in web development and very useful for learning how to build web apps.
In this tutorial, you will learn how to build a CRUD application in Flask , and the result will be a working backend for a bookshop web application. We will define services to handle the CRUD operations; GET, POST, PUT, and DELETE requests for the RESTful bookshop API.</description></item><item><title>Intro to Asynchronous Programming in Python with Async IO</title><link>https://ezzeddinabdullah.com/post/asynchronous-programming-python-intro/</link><pubDate>Sun, 22 May 2022 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/asynchronous-programming-python-intro/</guid><description>Writing sequential (or synchronous ) code is familiar to many programmers especially when they are getting started. It&amp;rsquo;s the kind of code that is executed one line at a time, one instruction at a time.
In the asynchronous world, the occurrence of events is independent of the main program flow. This means that actions are executed in the background, without waiting for the completion of the previous action.
In other words, the lines of code are executed concurrently.</description></item><item><title>How to Automate Creating Posts on LinkedIn</title><link>https://ezzeddinabdullah.com/post/linkedin-api-posts/</link><pubDate>Tue, 08 Mar 2022 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/linkedin-api-posts/</guid><description>LinkedIn API is not an easy API to use. I spent almost a whole day trying to figure out how to set up the access token to create articles on LinkedIn.
But&amp;hellip;
I ended up to the conclusion that the LinkedIn API can&amp;rsquo;t write articles. It rather shares an article. It can post a text on the profile of the authenticated user.
It was frustrating spending all that time on this in vain.</description></item><item><title>How to Quickly Extract Text From PDF Using Amazon Textract Python SDK</title><link>https://ezzeddinabdullah.com/post/amazon-textract-pdf-text/</link><pubDate>Sun, 06 Mar 2022 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/amazon-textract-pdf-text/</guid><description>Extracting text from PDFs is a common and repeatable task for many applications.
Repeatable in business means that the quicker you can do it, the better. Automation and AI are the future of this kind of work.
Data entry clerks are threatened by the prospect of losing their job.
If you are a data entry clerk or you know somebody, do prepare for the future of this job.
Many jobs are in the decline now because of automation and AI.</description></item><item><title>How to Scrape Amazon Best Seller Data in Python</title><link>https://ezzeddinabdullah.com/post/scrape-amazon-bestseller/</link><pubDate>Fri, 04 Mar 2022 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/scrape-amazon-bestseller/</guid><description>Reading is the fuel of so many skills you learn in life. You gain the most out of it by reading the best books.
The best-seller list is one of the best ways to get a sense of what is worth reading and buying on a certain topic.
Probably you used to copy and paste book data like the title, author, rating from the readers, and ranking. And copied data from the web and pasted it into a spreadsheet.</description></item><item><title>The Boilerplate for Logging in Python</title><link>https://ezzeddinabdullah.com/post/logging-python/</link><pubDate>Wed, 02 Mar 2022 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/logging-python/</guid><description>Finding bugs is a common problem in any programming project. To make it easier to find bugs, you probably want to write some print statements to help you debug.
Is it helpful? yes. Is it the right way to track events in your code, especially in a big project? no.
Python has a built-in logging module that you can use to log messages. Logging not only helps you debug the issues in your code.</description></item><item><title>How to Write Clean PYTHONIC Code With SOLID Principle</title><link>https://ezzeddinabdullah.com/post/pythonic-ocp/</link><pubDate>Mon, 28 Feb 2022 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/pythonic-ocp/</guid><description>In an earlier post, you&amp;rsquo;ve seen how to implement the Open-Closed Principle (OCP) in Python.
In this post, I&amp;rsquo;m trying to solve an issue introduced in the earlier post. You&amp;rsquo;ll see a simpler implementation of that SOLID principle to be a Pythonic solution .
Pythonic code is code that is simple, clean, and readable. That was not achieved in my last post, because it was close to Java.
The reason the code was not Pythonic is that I was literally translating the code from C# to Python.</description></item><item><title>How to Supercharge Python Classes With Property</title><link>https://ezzeddinabdullah.com/post/python-property/</link><pubDate>Fri, 25 Feb 2022 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/python-property/</guid><description>For a long time, I&amp;rsquo;ve not been able to use classes well enough in Python.
Rare resources on the web could help me write classes that are Pythonic. That&amp;rsquo;s because a lot of resources trying to overengineer Python classes.
I used to write methods starting with get_ and set_ to get and set attributes in Python. This practice was similar to the way Java developers write their getters and setters. Ugly and not Pythonic.</description></item><item><title>Switch Case Replacements for Python</title><link>https://ezzeddinabdullah.com/post/switch-for-python/</link><pubDate>Sun, 20 Feb 2022 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/switch-for-python/</guid><description>Many programming languages have switch-case statements.
Unlikely, there are no switch-case statements in Python for versions less than 3.10.
switch is useful especially if you want to return a lot of different values based on a specific input.
When I first started programming with C, switch statements made sense. After I switched to Python, I found there was no such thing. I needed to find a workaround or something to do many different things based on one value.</description></item><item><title>The Best To-Do List Planner That Made me Finish More Than 95% of my Sub Tasks (FINALLY)</title><link>https://ezzeddinabdullah.com/post/todo-list-planner/</link><pubDate>Sat, 12 Feb 2022 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/todo-list-planner/</guid><description>Life is getting bigger and bigger with tasks and responsibilities. Every. Single. Day.
At the same time, it&amp;rsquo;s very short and it&amp;rsquo;s too short to do nothing.
Since college, I was doing my To-Do List and I was always trying to get it done. But.
I was often frustrated because nothing got done as expected. Sometimes I wrote all my dreams on that to-do list for a single day. My to-do list would look like the following:</description></item><item><title>How to Write Clean Code (in Python) With SOLID Principles | Principle 5</title><link>https://ezzeddinabdullah.com/post/solid-principles-dip-py-copy/</link><pubDate>Mon, 07 Feb 2022 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/solid-principles-dip-py-copy/</guid><description>Today, I&amp;rsquo;ll discuss principle #5 of SOLID principles to help write clean code in Python.
If you missed the other principles, here are the first , second , third , and the fourth one.
Let&amp;rsquo;s dive into the fifth design principle; Dependency Inversion Principle (or DIP) (the &amp;lsquo;D&amp;rsquo; in SOLID).
Note: This series of articles are to demonstrate applying the SOLID principles in Python from a learning perspective. This does not mean that you should follow this approach in production code because Python has simpler capabilities that could be used.</description></item><item><title>How to Write Clean Code (in Python) With SOLID Principles | Principle 4</title><link>https://ezzeddinabdullah.com/post/solid-principles-isp-py/</link><pubDate>Sat, 05 Feb 2022 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/solid-principles-isp-py/</guid><description>Today, we discuss principle #4 of SOLID principles to help write clean code in Python.
Here are the first , second , and third principles if you missed them.
And let&amp;rsquo;s dive into the fourth design principle (the &amp;lsquo;I&amp;rsquo; in SOLID).
We will explain the concept with a real example implemented in Python and shown in a UML diagram to better illustrate the design of the classes and the relationships between them and have a visual understanding of what&amp;rsquo;s going on.</description></item><item><title>How to Get Trending Hashtags on Twitter in 2022 With Python</title><link>https://ezzeddinabdullah.com/post/get-trending-hashtags-python-tweepy/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/get-trending-hashtags-python-tweepy/</guid><description>We discussed before how to get trending topics on Twitter in Python using the Tweepy API wrapper.
Today, let&amp;rsquo;s discuss how to get trending hashtags in a specific country and get a list of those tweets in a specific language. The code is customized so that you can change the country to whatever you want. The snippet code is hosted on gist and you can find it at the end of this post.</description></item><item><title>Principle 3 | How to Write Clean Code (in Python) With SOLID Principles</title><link>https://ezzeddinabdullah.com/post/solid-principles-lsp-py/</link><pubDate>Sun, 02 Jan 2022 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/solid-principles-lsp-py/</guid><description>Today, we discuss principle #3 of SOLID principles to help write clean code in Python.
Here are the first and second principles if you missed them. Let me know in the comments in case you have any questions.
And let&amp;rsquo;s dive into the third design principle (the &amp;lsquo;L&amp;rsquo; in SOLID).
Here, we explain the concept with a real example implemented in Python and shown in a UML diagram to better illustrate the design of the classes and the relationships between them and have a visual understanding of what&amp;rsquo;s going on.</description></item><item><title>7 Tricky Negotiation Tactics to Become a Better Negotiator</title><link>https://ezzeddinabdullah.com/post/7-negotiation-tactics/</link><pubDate>Fri, 31 Dec 2021 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/7-negotiation-tactics/</guid><description>Negotiation happens in everything in our life.
The goal of every negotiation is to get what you need or want as quickly as possible so that you and your organization can move forward without delays. ~ Peter Sander, author of Negotiating 101
It&amp;rsquo;s at home when your little child negotiates with his mother to buy him the toy he saw.
Negotiation exists in small businesses when you make a deal with a client who has a lot of cash and willing to invest.</description></item><item><title>How to Write Clean Code (in Python) With SOLID Principles | Principle 2</title><link>https://ezzeddinabdullah.com/post/solid-principles-ocp-py/</link><pubDate>Sat, 25 Dec 2021 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/solid-principles-ocp-py/</guid><description>This is part 2 from the series of articles on the SOLID principles. If you missed the first part where we talked about the Single Responsibility Principle, please check it out and let me know in the comments if you have any questions.
So let&amp;rsquo;s dive into the second design principle: Open/Closed Principle (the &amp;lsquo;O&amp;rsquo; in SOLID).
With illustration of how we can identify the Open-Closed Principle (OCP) implemented in Python.</description></item><item><title>How to Write Clean Code (in Python) With SOLID Principles | Principle 1</title><link>https://ezzeddinabdullah.com/post/solid-principles-srp-py/</link><pubDate>Sat, 11 Dec 2021 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/solid-principles-srp-py/</guid><description>A major misunderstanding is to confuse clean code with something that can be called “beautiful code.”
Professional programmers are not paid to write pretty code.
They are hired by development companies as experts to create customer value.
So what is clean code? You might wonder what beautiful code looks like in the first place. Well, Your code can be pretty if it has few lines of code, or when it is in a good indented form instead of a long if-else chain, or when if there is a list comprehension instead of a long for loop.</description></item><item><title>How to Get Rid of Mosquitoes Quickly and Safely</title><link>https://ezzeddinabdullah.com/post/get-rid-of-mosquitoes/</link><pubDate>Sat, 23 Oct 2021 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/get-rid-of-mosquitoes/</guid><description>Almost everyone does have a problem with mosquitoes or big flies in their house or even small ones.
It&amp;rsquo;s always very annoying and a consumer of our productivity. Without exaggeration, it can diminish your energy and let your focus distract.
You&amp;rsquo;ve probably tried bug zapper, but you found it&amp;rsquo;s noisy or it doesn&amp;rsquo;t even work.
Maybe you tried a liquid insecticide or a chemical trap, but you found it has chemicals that have carbon dioxide that is bad for your health plus the bad smell it has.</description></item><item><title>Designing Classes with a Single Responsibility</title><link>https://ezzeddinabdullah.com/post/ch2-practical-oo-design-in-ruby/</link><pubDate>Thu, 21 Oct 2021 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/ch2-practical-oo-design-in-ruby/</guid><description>These notes discuss the second chapter of Sandi Metz&amp;rsquo;s book with the code snippets in Ruby. If you&amp;rsquo;re new to the Ruby language, you may want to check out this simple tutorial .
If you missed chapter 1, here it is .
I&amp;rsquo;ve included quotes from the book and important notes. All Ruby codes here are taken from the book or slightly changed.
Let&amp;rsquo;s start chapter 2 now&amp;hellip;
Your goal is to model your application, using classes, such that it does what it is supposed to do right now and it is also easy to change later .</description></item><item><title>3 Best Python Courses to Learn Web Scraping for Data Science</title><link>https://ezzeddinabdullah.com/post/3-best-py-webscraping-for-ds/</link><pubDate>Tue, 12 Oct 2021 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/3-best-py-webscraping-for-ds/</guid><description>Today let&amp;rsquo;s talk about the top 3 courses that you can take to become a stronger data scientist. Stay tuned to the end; a bonus is there already.
Now, there are so many web scraping courses on Udemy; so many courses teaching how to scrape data from the web using Python.
But.
I&amp;rsquo;m focusing here on the resources that will make you excel in the web scraping skills needed to get more data in the data collection phase and you probably will need this data in your data science project.</description></item><item><title>Why Web Scraping is Important?</title><link>https://ezzeddinabdullah.com/post/why-web-scraping-important/</link><pubDate>Sun, 03 Oct 2021 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/why-web-scraping-important/</guid><description>Web scraping (aka web harvesting, web data extraction, or data mining) is the process of extracting data from the web.
Basically, it&amp;rsquo;s a way to collect data from the web through an agent that visits a website, downloads the page, parses the content (or understands it), and organizes data in an automated manner.
In other words, instead of you, say, trying to copy interesting parts from a web page and paste them into a spreadsheet, web scraping takes this boring task off your shoulder and does it for you through a computer program that can execute it much faster and less error prune that a human can.</description></item><item><title>How to Scrape Free Stuff From Reddit</title><link>https://ezzeddinabdullah.com/post/scrape-reddit/</link><pubDate>Sat, 24 Jul 2021 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/scrape-reddit/</guid><description>Finding stuff from the web is fun especially when you scrape data with the command line.
In this tutorial, you&amp;rsquo;ll use your terminal to get data from Reddit especially free stuff from subreddits like Udemy to get the latest coupons posted by Reddit users. I&amp;rsquo;ve made it customized so that you can apply it on any other subreddit.
Minimal example Let&amp;rsquo;s take it step by step and see first how to scrape Reddit.</description></item><item><title>Givers vs Takers</title><link>https://ezzeddinabdullah.com/post/givers-vs-takers/</link><pubDate>Fri, 16 Jul 2021 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/givers-vs-takers/</guid><description>Adam Grant as an organizational psychologist, says that he spends a lot of time in workplaces, and he finds paranoia everywhere. You probably find that too.
Paranoia is caused by people that he calls &amp;ldquo;takers.&amp;rdquo;
Takers are serving nobody but themselves. &amp;ldquo;What can you do for me?&amp;rdquo; is their slogan.
The opposite is a giver. Givers approach a conversation with, &amp;ldquo;What can I do for you?&amp;rdquo;
Think about your own style.</description></item><item><title>6 Ways to Block Youtube Distractions</title><link>https://ezzeddinabdullah.com/post/block-youtube-distractions/</link><pubDate>Thu, 08 Jul 2021 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/block-youtube-distractions/</guid><description>Sometimes you can get lost in the rabbit hole of Youtube and random recommended videos. Then it steers you away from doing what you need to do and wastes even more time.
Here, I&amp;rsquo;ll share some tools you can use to help you be more productive and stay focused.
Download locally One of the easiest ways to be away from the Youtube dilemma is to download the videos in advance and use a video player like VLC which has some features like Youtube.</description></item><item><title>The Power of Object-Oriented Design</title><link>https://ezzeddinabdullah.com/post/ch1-practical-oo-design-in-ruby/</link><pubDate>Wed, 07 Jul 2021 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/ch1-practical-oo-design-in-ruby/</guid><description>While Ruby is an object-oriented language, little time is spent in the documentation on what OO truly means or how it should direct the way we build programs. Here Metz brings it to the fore, covering most of the key principles of OO development and design in an engaging, easy-to-understand manner. This is a must for any respectable Ruby bookshelf. ~ Peter Cooper, editor, Ruby Weekly
So good, I couldn&amp;rsquo;t put it down!</description></item><item><title>How to Cultivate a Reading Habit</title><link>https://ezzeddinabdullah.com/post/reading-habit/</link><pubDate>Tue, 06 Jul 2021 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/reading-habit/</guid><description>Change is something I believe anyone can accomplish if they&amp;rsquo;re willing to put the work in and if they&amp;rsquo;re willing to do what it takes to complete the change.
Many people have the preconceived notion that you are who you are, and who you are has been determined since you were young. But I know that isn&amp;rsquo;t true.
I decided I wanted to change. I realized that if you want to change or stop doing something, you have to stop completely.</description></item><item><title>Write Less Code — The Pythonic Way!</title><link>https://ezzeddinabdullah.com/post/pythonic-translate/</link><pubDate>Mon, 05 Jul 2021 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/pythonic-translate/</guid><description>I had a fruitful discussion with a friend of mine about solving a problem in Python.
The problem we have is like this. We need to convert Western numbers like 1, 2, 3 to their equivalent numbers in Eastern/Indian numbers ١,٢,٣ that we also use in Arabic.
We want a function arabnum to convert western numbers like 42 into their eastern equivalent one ٤٢ like this:
print(arabnum(&amp;quot;42&amp;quot;)) # =&amp;gt; ٤٢ print(arabnum(&amp;quot;953&amp;quot;)) # =&amp;gt; ٩٥٣ I’ll leave you to solve it.</description></item><item><title>I Left Communications Engineering for Data Engineering — Here is my Journey</title><link>https://ezzeddinabdullah.com/post/ece-to-data-engineering/</link><pubDate>Sat, 03 Jul 2021 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/ece-to-data-engineering/</guid><description>In late 2018, I wrote about my journey from Electronics and Communications Engineering to Data Science. That was during my first data science internship.
Guess what&amp;rsquo;s happened since then! Moved forward to the same track, right? Nope. It was another little shift.
I&amp;rsquo;m writing this piece during my first full-time data engineering position after spending more than a year in the field.
To be honest, I loved data science more than any other field when I first started the career shift.</description></item><item><title>Two Simple Hacks That Boosted my Productivity</title><link>https://ezzeddinabdullah.com/post/youtube-productivity/</link><pubDate>Fri, 02 Jul 2021 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/youtube-productivity/</guid><description>For a long time, I had consumed about 30 to over 60 minutes of recommended videos before what I really wanted to watch.
You might say I had about 60 minutes of a fun time.
While it could be true, but I had at least 30 minutes spent on something I was forced to do not something I wanted. That was completely wasted time.
And a repetition of that waste of time is absolutely a bad habit .</description></item><item><title>Learning Ruby Basics in &lt; 9 minutes</title><link>https://ezzeddinabdullah.com/post/ch2-design-patterns-in-ruby/</link><pubDate>Mon, 28 Jun 2021 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/ch2-design-patterns-in-ruby/</guid><description>Russ Olsen
in his book Design Patterns in Ruby
makes it easy for beginners in the language to view an excellent intro about Ruby to help build better software programs.
In this article, I&amp;rsquo;m distilling the notes I wrote about chapter 2.
Check out chapter 1 here
Getting Started with Ruby The easiest way to run Ruby language is to use the interactive Ruby shell, irb .
You can run interactively on the shell: $ irb irb(main):001:0&amp;gt; 2 + 2 =&amp;gt; 4 irb(main):002:0&amp;gt; You can run a ruby program with the ruby command (the Ruby interpreter): $ ruby hello.</description></item><item><title>Why I Quit Duolingo After 440 Day Streak</title><link>https://ezzeddinabdullah.com/post/i-quit-duolingo/</link><pubDate>Sat, 26 Jun 2021 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/i-quit-duolingo/</guid><description>I started using the Duolingo app consistently in December 2019.
And continued until 440 days something. I realized I was going to smash it till a 1000 day streak!
But one day I was very overwhelmed and couldn&amp;rsquo;t check Duolingo on my phone for two days straight. Unsurprisingly, I lost the streak that I kept for more than one year!!
Today, I&amp;rsquo;ll share why that happened so that it won&amp;rsquo;t happen from your side.</description></item><item><title>How to Stay Consistent Without the Need for Motivation</title><link>https://ezzeddinabdullah.com/post/consistent-without-motivation/</link><pubDate>Fri, 25 Jun 2021 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/consistent-without-motivation/</guid><description>In a world full of distractions and fears of missing out, it&amp;rsquo;s very hard to be consistent. And when you&amp;rsquo;ve got the feeling that you are, you can&amp;rsquo;t even keep that consistency claiming that you&amp;rsquo;ve lost motivation!
In this article, I talk about how to stay consistent without even being motivated.
Why Motivation not Necessary? Lacking motivation today and feeling like you want to watch youtube or see your Facebook newsfeed?</description></item><item><title>Chapter 1 Notes on Design Patterns in Ruby by Russ Olsen</title><link>https://ezzeddinabdullah.com/post/ch1-design-patterns-in-ruby/</link><pubDate>Wed, 23 Jun 2021 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/ch1-design-patterns-in-ruby/</guid><description>Part I: Patterns and Ruby Chapter 1: Building Better Programs with Patterns The first few times we see a problem we may improvise and invent a solution on the spot, but if that same problem keeps reappearing, we will come up with a standard operating procedure to cover it. Don&amp;rsquo;t, as the old saying goes, keep reinventing the wheel.
In 1995, Enrich Gamma, Richard Helm, Ralph Johnson, and John Vlissides set out to redirect all the effort going into building redundant software wheels into something more useful.</description></item><item><title>How Design Skills Improve Developers</title><link>https://ezzeddinabdullah.com/post/designer-vs-developer/</link><pubDate>Mon, 21 Jun 2021 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/designer-vs-developer/</guid><description>This article is an interview between Mustafa Kurtuldu; a Design Advocate at Google who speaks to Paul Lewis, a Developer Advocate on the Google Developer Relations Team, about if they are born with a natural ability to design &amp;amp; develop or whether life opportunities and their own environment that they grew up in dictate their successes.
MUSTAFA: I&amp;rsquo;m a designer, who amongst my design clique, has been known as the technical person.</description></item><item><title>121 Notes on The Psychology of Money (Review &amp; Quotes Included From the Book)</title><link>https://ezzeddinabdullah.com/post/the-psychology-of-money/</link><pubDate>Tue, 15 Jun 2021 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/the-psychology-of-money/</guid><description>Quick summary: The main message of The Psychology of Money is that doing well with money is not a hard science. It is a soft skill where how you behave matters more than what you know. Morgan Housel argues that controlling your emotions, knowing when you have enough, saving without a specific goal, and letting compounding run uninterrupted for decades beat intelligence and complex financial models.
The Psychology of Money was published in 2020 authored by Morgan Housel.</description></item><item><title>4 Books That Made Me More Disciplined</title><link>https://ezzeddinabdullah.com/post/4books-disciplined/</link><pubDate>Sun, 30 May 2021 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/4books-disciplined/</guid><description>Perseverance, grit, and willpower are essential to success. To improve them, you need to create a more disciplined environment.
And to have such an environment is to have a system ingrained in your brain and this is not an easy one.
Discipline comes from training your brain and body to have a regime that makes you committed to specific learning or practice.
I read 4 self-help books that made me more disciplined in life.</description></item><item><title>After Python2 Death, How to Convert Your Code Into Python3</title><link>https://ezzeddinabdullah.com/post/2to3/</link><pubDate>Wed, 26 May 2021 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/2to3/</guid><description>Since January 1, 2020 Python2 has been no longer supported nor maintained. This means no improvement to Python2 should happen after that day even if someone finds a security problem in it. If you still have projects/applications written in Python2, you should start converting them. In this tutorial, I’ll discuss how to do that with 2to3 .
2to3 (read like two to three ) is a Python2 to Python3 code translation library.</description></item><item><title>108 Notes on Deep Work (Review &amp; Quotes Included From the Book)</title><link>https://ezzeddinabdullah.com/post/deep-work/</link><pubDate>Fri, 21 May 2021 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/deep-work/</guid><description>Deep Work was published in 2016 authored by Cal Newport. He is an assistant professor of computer science at Georgetown University. He is the author of So Good They Can&amp;rsquo;t Ignore You and three other books giving advice to students.
The book is currently a best seller in Time Management, Personal Time Management, and Job Hunting &amp;amp; Career Guides.
This book provides rules and tactics to help you stay focused doing work deeply and avoid shallow work that distracts your productivity.</description></item><item><title>With AI - How to Colorize Old Photos From 1948</title><link>https://ezzeddinabdullah.com/post/colorize-1948/</link><pubDate>Thu, 20 May 2021 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/colorize-1948/</guid><description>In May 1948, an inhumane and tragic event occurred where more than 700,000 Palestinians were forced to migrate from their own land by the Zionists.
It was the Palestinian Nakba (an Arabic word meaning &amp;ldquo;disaster&amp;rdquo;, &amp;ldquo;catastrophe&amp;rdquo;, or &amp;ldquo;cataclysm&amp;rdquo;).
In the image below you can see how Palestinian land was divided into many parts by the Israeli occupation and the countries supporting Zionism. The start was way before 1947 and the last plan was in 2020.</description></item><item><title>57 Notes on The ONE Thing (Review &amp; Quotes Included From the Book)</title><link>https://ezzeddinabdullah.com/post/the-one-thing/</link><pubDate>Sat, 13 Feb 2021 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/the-one-thing/</guid><description>57 Notes on The ONE Thing (Review &amp;amp; Quotes Included From the Book) The Surprisingly Simple Truth Behind Extraordinary Results The ONE Thing was published in 2013 authored by Gary Keller with Jay Papasan and has appeared 500 times on national bestseller lists and more:
#1 Wall Street Journal, New York Times, and USA Today Won 12 book awards Translated into 35 languages Voted Top 100 Business Book of All Time on Goodreads This book’s value lies in ways to help you get distractions out of your life and stick to just one thing at a time to be more productive and get extraordinary results.</description></item><item><title>Book Notes &amp; Review - Atomic Habits by James Clear</title><link>https://ezzeddinabdullah.com/post/atomic-habits/</link><pubDate>Sat, 30 Jan 2021 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/atomic-habits/</guid><description>Atomic Habits is the #1 New York Times bestseller. Over 1 million copies already sold. Authored by James Clear and published in 2018.
This book distills so much value into forming new habits and is very practical and to the point when explaining the four laws of behavior change to better understand human behavior.
On a personal level, I&amp;rsquo;ve created a new good habit while reading this book being consistent in writing every single day.</description></item><item><title>Why Big Companies Buy Small Ones</title><link>https://ezzeddinabdullah.com/post/why-big-companies-buy-small-ones/</link><pubDate>Sun, 24 Jan 2021 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/why-big-companies-buy-small-ones/</guid><description>On January 14 this year, Google bought Fitbit (a wearables company) for 2.1 billion dollars!
The question is why a big name like Google buy a smaller company like Fitbit and such an acquisition is worth billions of dollars?!
The same question goes for many big names and another question comes up because these big companies have very talented engineers who are able to replicate what small ones can do. So what makes big companies think about buying more in the first place?</description></item><item><title>Book Notes &amp; Review - The Power of Habit by Charles Duhigg</title><link>https://ezzeddinabdullah.com/post/book-notes-review-the-power-of-habit-by-charles-duhigg/</link><pubDate>Sun, 17 Jan 2021 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/book-notes-review-the-power-of-habit-by-charles-duhigg/</guid><description>The Power of Habit is a best seller book for the New York Times, Amazon.com, and USA Today; authored by Charles Duhigg and first released in 2012.
This book explores the science of habit and how you can change your life by creating good habits and reforming your bad ones.
On a personal level, I created new good habits while reading this book being consistent in reading a book and learning a language every single day.</description></item><item><title>Baseball Game With Python and Rust</title><link>https://ezzeddinabdullah.com/post/baseball-game-with-python-and-rust/</link><pubDate>Sat, 09 Jan 2021 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/baseball-game-with-python-and-rust/</guid><description>What programmers do when they solve a problem is that they convert the logic to questions and then try to find answers to those questions.
We always do these steps in any programming problem:
Convert the business logic to questions Be able to find answers to these questions in code This article is for complete beginners in Python and/or Rust, we’ll see a case study and we’ll try to solve the problem involved by asking questions</description></item><item><title>Sort Integers by The Number of 1 Bits With Python and Rust</title><link>https://ezzeddinabdullah.com/post/sort-integers-by-the-number-of-1-bits-with-python-and-rust/</link><pubDate>Thu, 07 Jan 2021 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/sort-integers-by-the-number-of-1-bits-with-python-and-rust/</guid><description>When I was coding with Rust to solve this problem, I thought I was dealing with memory so harshly and also thought that time will not be very optimized.
Until I saw this:
Screenshot from leetcode by Ezz
it took 4 ms to run and 2.3 MB of memory. Comparing the same algorithm I did with Python means Rust in this problem is 22 times as fast as Python and takes space in memory less than 6ish times as Python takes.</description></item><item><title>Visit Siwa — the Most Relaxing (Yet Underrated) Destination</title><link>https://ezzeddinabdullah.com/post/visit-siwa-the-most-relaxing-yet-underrated-destination/</link><pubDate>Tue, 29 Dec 2020 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/visit-siwa-the-most-relaxing-yet-underrated-destination/</guid><description>At the end of last November, I spent the best journey I ever had. I went to Siwa, an oasis in the Western Desert of Egypt.
It’s been an underrated destination for many people (including Egyptians) and full of magical places to visit and relax in.
In this story, I’d like to share some places in Siwa that you can’t see anywhere else for medical tourism and breathtaking views, unusual drinks and foods to have, useful souvenirs to buy, and very generous people to meet.</description></item><item><title>How to Create Good Habits and Quit Bad Ones</title><link>https://ezzeddinabdullah.com/post/how-to-create-good-habits-and-quit-bad-ones/</link><pubDate>Sat, 26 Dec 2020 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/how-to-create-good-habits-and-quit-bad-ones/</guid><description>You’ve probably been asked a question before and your answer was
That’s what I’m used to
And that’s because there is already a habit formed, but what is a habit? And when to tell there is a habit involved? And how can you create a new habit and quit a bad one?
Before answering such questions, we need to know why a habit is important, and can anyone develop one?</description></item><item><title>Forget Reading a Whole Book - Thoughts on the Behavior Model</title><link>https://ezzeddinabdullah.com/post/forget-reading-a-whole-book-thoughts-on-the-behavior-model/</link><pubDate>Tue, 24 Nov 2020 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/forget-reading-a-whole-book-thoughts-on-the-behavior-model/</guid><description>Whenever you hear baby steps , it might seem trivial to you but it’s not. Baby steps (aka tiny habits) are super powerful and it’s a way to help people accomplish great things in the long run.
When you know how to create tiny habits, you can change your life forever. ~ BJ Fogg, PhD Stanford University BJ Fogg is the Director of the Stanford Persuasive Technology Lab and a social scientist who is currently a research scientist at Stanford University.</description></item><item><title>A Rising Library Beating Pandas in Performance</title><link>https://ezzeddinabdullah.com/post/a-rising-library-beating-pandas-in-performance/</link><pubDate>Tue, 17 Nov 2020 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/a-rising-library-beating-pandas-in-performance/</guid><description>pandas was initially released in 2008 written in Python, Cython, and C . Today, we’re comparing the performance of this well-known library with pypolars , a rising DataFrame library written in Rust. We compare the two while sorting and concatenating a 25Mil-record data and also when joining two CSVs.
Downloading Reddit Usernames data Let’s first download a CSV file that contains ~26 million reddit usernames from Kaggle: https://www.kaggle.com/colinmorris/reddit-usernames
And let’s form another CSV file that we will use, you can create it with your favorite text editor or through the command line:</description></item><item><title>How to Clean JSON Data at the Command Line</title><link>https://ezzeddinabdullah.com/post/how-to-clean-json-data-at-the-command-line/</link><pubDate>Sat, 14 Nov 2020 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/how-to-clean-json-data-at-the-command-line/</guid><description>jq is a lightweight command-line JSON processor written in C. It follows the Unix philosophy that it’s focused on one thing and it can do it very well. In this tutorial, we see how jq can be used to clean JSONs and retrieve some information or get rid of undesired ones.
There are some data that are more suitable to be in a JSON format than a CSV or any other format.</description></item><item><title>How to Clean CSV Data at the Command Line | Part 2</title><link>https://ezzeddinabdullah.com/post/how-to-clean-csv-data-at-the-command-line-part-2/</link><pubDate>Sat, 07 Nov 2020 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/how-to-clean-csv-data-at-the-command-line-part-2/</guid><description>In the last blog post, we proved that xsv is ~1882x faster than csvkit when joining two CSVs and saw how performant xsv is and when we can use xsv or csvkit when we are at the terminal.
Today, we&amp;rsquo;re talking about part 2 of cleaning CSV data at the command line investigating a large CSV file (from Kaggle) that contains ~26 million users and their number of comments posted from 2005 to 2017.</description></item><item><title>How to Clean CSV Data at the Command Line</title><link>https://ezzeddinabdullah.com/post/how-to-clean-csv-data-at-the-command-line/</link><pubDate>Sat, 24 Oct 2020 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/how-to-clean-csv-data-at-the-command-line/</guid><description>Have you ever dealt with a big-scary CSV file that has many columns that you don’t want and many records that slow down the process for you to filter and get the desired information?
This tutorial is about using two command-line programs that can solve these problems; csvkit and xsv . We will compare the two at the end and see how performant each and when we can use one and not the other in terms of speed especially if we’re processing a large CSV file.</description></item><item><title>Minimum Numbers of Function Calls to Make Target Array With Python and Javascript</title><link>https://ezzeddinabdullah.com/post/minimum-numbers-of-function-calls-to-make-target-array-with-python-and-javascript/</link><pubDate>Wed, 21 Oct 2020 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/minimum-numbers-of-function-calls-to-make-target-array-with-python-and-javascript/</guid><description>Understanding the Problem Minimum Numbers of Function Calls to Make Target Array is a medium problem at leetcode, I hope you have read the problem carefully and have tried solving it. This problem requires you to get the least number of operations that you can do in order to get to the desired array. The question now, how we can do such operations to count its numbers to reach the target array in the least possible way.</description></item><item><title>How to Clean Text Data at the Command Line</title><link>https://ezzeddinabdullah.com/post/how-to-clean-text-data-at-the-command-line/</link><pubDate>Wed, 14 Oct 2020 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/how-to-clean-text-data-at-the-command-line/</guid><description>Cleaning data is like cleaning the walls in your house, you clear any scribble, remove the dust, and filter out what is unnecessary that makes your walls ugly and get rid of it. The same thing happens when cleaning your data, it’s filtering what we want and removing what we don’t want to make the raw data useful and not raw anymore. You can do the cleaning with Python, R, or whatever language you prefer but in this tutorial, I’m going to explain how you can clean your text files at the command line files by giving insights from a paper researching clickbait and non-clickbait data.</description></item><item><title>Minimum Number of Vertices to Reach All Nodes by Graph Theory with Python and Javascript</title><link>https://ezzeddinabdullah.com/post/minimum-number-of-vertices-to-reach-all-nodes-by-graph-theory-with-python-and-javascript/</link><pubDate>Tue, 06 Oct 2020 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/minimum-number-of-vertices-to-reach-all-nodes-by-graph-theory-with-python-and-javascript/</guid><description>Understanding the Problem Minimum Number of Vertices to Reach All Nodes is a medium problem at leetcode, I hope you have read the problem carefully and have tried solving it. This problem requires you to get the least number of vertices that can make you pass all nodes you have for the graph of your problem. The question is what are these vertices?
Why graph theory? You’re given an array of arrays (or a list of lists in a pythonic way) and each subarray contains two numbers entailing the first one to be the node from which you can move and the other one is the node to which you reach.</description></item><item><title>Penguins in Docker - A Tutorial on Why We Use Docker</title><link>https://ezzeddinabdullah.com/post/penguins-in-docker-a-tutorial-on-why-we-use-docker/</link><pubDate>Sat, 03 Oct 2020 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/penguins-in-docker-a-tutorial-on-why-we-use-docker/</guid><description>I&amp;rsquo;ve been reading Data Science at the Command Line recently and I&amp;rsquo;ve noticed an important reason why we use docker when I faced a problem. When I find something in a practical way, it means a lot to me even if I&amp;rsquo;ve heard a lot about it theoretically so you&amp;rsquo;ve probably faced that problem before and you said:
It works on my machine&amp;hellip; from r/ProgrammerHumor
probably many times you said &amp;lsquo;it works on my machine!</description></item><item><title>Thousand Separator by Regular Expressions with Python and Javascript</title><link>https://ezzeddinabdullah.com/post/thousand-separator-by-regular-expressions-with-python-and-javascript/</link><pubDate>Tue, 29 Sep 2020 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/thousand-separator-by-regular-expressions-with-python-and-javascript/</guid><description>Understanding the Problem Thousand Separator is an easy problem at leetcode, I hope you have read the problem carefully and have tried solving it. This problem requires to put a thousand separator in its right position of the number. The question is how you can iterate on such a number to write a dot (.) in every possible position.
Why regular expression? You’re given an integer and the output should be a string with the thousand separators.</description></item><item><title>Colored Rectangles by Dynamic Programming with Python</title><link>https://ezzeddinabdullah.com/post/colored-rectangles-by-dynamic-programming-with-python/</link><pubDate>Fri, 25 Sep 2020 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/colored-rectangles-by-dynamic-programming-with-python/</guid><description>Understanding the Problem Colored Rectangles is an 1800-point problem at codeforces, I hope you have read the problem carefully and have tried solving it. This problem basically requires to get the largest area of colored rectangles. The question is how to get that large area and what givens we have in this problem.
You’re given pairs of colored sticks (red, green, and blue) and you know the length of each pair.</description></item><item><title>Good Subarrays with Python and Javascript</title><link>https://ezzeddinabdullah.com/post/good-subarrays-with-python-and-javascript/</link><pubDate>Thu, 17 Sep 2020 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/good-subarrays-with-python-and-javascript/</guid><description>Understanding the Problem Good Subarrays is a 1600-point problem at codeforces, I hope you have read the problem carefully and have tried solving it. This problem basically states as its name sounds to say, to get a good subarray. But what is good subarray?
Per each test case, you’re given a string of numbers and the length of this string, and what’s required is to get the good subarrays. A good subarray is a subarray whose length equals to the sum of its elements.</description></item><item><title>Substring Removal Game with Python and Javascript</title><link>https://ezzeddinabdullah.com/post/substring-removal-game-with-python-and-javascript/</link><pubDate>Sun, 13 Sep 2020 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/substring-removal-game-with-python-and-javascript/</guid><description>Understanding the Problem Substring Removal Game is an 800-point problem at codeforces, I hope you have read the problem carefully and have tried thinking about solving it. This problem basically states as its name sounds to say, to remove a substring.
Per each test, you&amp;rsquo;re given a string of binary characters (0&amp;rsquo;s and 1&amp;rsquo;s) and you&amp;rsquo;re required to remove each consecutive 1&amp;rsquo;s to make Alice win. Who is Alice? Alice and Bob are players in the game, and the winner is the one who removes the highest numbers of 1&amp;rsquo;s.</description></item><item><title>Bad Triangle with Python and Javascript</title><link>https://ezzeddinabdullah.com/post/bad-triangle-with-python-and-javascript/</link><pubDate>Mon, 07 Sep 2020 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/bad-triangle-with-python-and-javascript/</guid><description>Understanding the Problem Bad Triangle is an 800-point problem at codeforces, I hope you have read the problem carefully and have tried thinking about solving it. This problem basically states that you need to tell if a triangle is non-degenerate or not.
Simply put, non-degenerate triangle is a triangle that the sum of any two sides in it is bigger than the other side. To see if it&amp;rsquo;s a bad triangle we have to check whether the sum of the two sides of them is less or equal than the other.</description></item><item><title>How to Get Trending Tweets in any Country with Python and Tweepy</title><link>https://ezzeddinabdullah.com/post/get-trending-tweets-python-tweepy/</link><pubDate>Sat, 05 Sep 2020 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/get-trending-tweets-python-tweepy/</guid><description>Social Analytics companies have been massively using twitter to get insights about whatever data they are interested in for brands, celebrities, etc. and also trending topics. In this tutorial you&amp;rsquo;ll know how to get countries that have trends on Twitter and also get insights about what topics are trending the most and be able to retrieve the url of that tweet and its volume as well.
Here I&amp;rsquo;ll walk you through how you can do that with Python and Tweepy.</description></item><item><title>Happy Number with Python and Javascript</title><link>https://ezzeddinabdullah.com/post/happy-number-with-python-and-javascript/</link><pubDate>Sat, 29 Aug 2020 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/happy-number-with-python-and-javascript/</guid><description>Happy number is a medium leetcode problem, please invest some time in understanding the problem at leetcode.
How to Approach such Problem If we go for a recursive approach, we need a base case .. what if we have 10
$$1^2+0^2=1$$
so in this case, we will get 1 .. what if we have 13, well that means we need to sum the square of 1 and the square of 3 which will add up to 10 which can get us to the base case</description></item><item><title>How to Write a Book with Python and Sphinx</title><link>https://ezzeddinabdullah.com/post/how-to-write-a-book-with-python-and-sphinx/</link><pubDate>Sat, 29 Aug 2020 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/how-to-write-a-book-with-python-and-sphinx/</guid><description>Want to write a technical book or document your project?
Here I&amp;rsquo;ll walk you through how you can do that with python and sphinx. You can build content of tables that can contain sections to the chapters of your book. I will show you a case study to know how to insert images, hyperlinks, mathematical formulas, syntax highlighting for your favorite programming languages, and more.
Assuming you have some basic knowledge of python, let&amp;rsquo;s dive in and see what sphinx can do for us.</description></item><item><title>The Misleading Joy of Consistency</title><link>https://ezzeddinabdullah.com/post/the-misleading-joy-of-consistency/</link><pubDate>Thu, 27 Aug 2020 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/the-misleading-joy-of-consistency/</guid><description>The Downside of Consistency in Duolingo Yeah that&amp;rsquo;s right, yesterday was my 241st day streak at Duolingo.
Consistency has been a term widely used by productive people but it can be misleading to REALLY achieve your goals.
For example, I&amp;rsquo;ve realized that I misused Duolingo because all I was trying to do is to keep my day streak running and not to be even frozen one day.
Maybe that&amp;rsquo;s because my goal was not learning a language seriously but rather keep consistently doing something for a long period of time.</description></item><item><title>Watermelon with Python and Javascript</title><link>https://ezzeddinabdullah.com/post/watermelon-with-python-and-javascript/</link><pubDate>Tue, 25 Aug 2020 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/watermelon-with-python-and-javascript/</guid><description>Understanding the Problem Watermelon is an *800 problem at codeforces which is the easiest problem out there. This problem basically states that there are Pete and his friend Billy who wants to the find the possibility to divide number of kilos in even numbers which means for example if there is 8 kilos, one way of dividing that number would be that Pete would take 2 kilos and Billy would take 6.</description></item><item><title>Classicle - Smart Service to Tell You the Topic of an Article</title><link>https://ezzeddinabdullah.com/post/classicle-smart-service-to-tell-you-the-topic-of-an-article/</link><pubDate>Fri, 14 Aug 2020 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/classicle-smart-service-to-tell-you-the-topic-of-an-article/</guid><description>Sometimes the need of artificial intelligence can be more important than what the human is capable of. One of the main problems we have is interpreting the topic of a content. Here, classicle tries to solve this problem to make you capable of classifying the topic of the article you’re reading or writing or even exploring. Classicle is a combination between class in ‘classify’ and icle in ‘article’. It can classify your article among these classes: business, tech, entertainment, politics, or sport.</description></item><item><title>Reck - A Web Application to Detect Faces</title><link>https://ezzeddinabdullah.com/post/reck-a-web-application-to-detect-faces/</link><pubDate>Fri, 14 Aug 2020 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/reck-a-web-application-to-detect-faces/</guid><description>Whether there is a need to know how many people are in a certain area or an event or in a car, or in surveillance applications and more, Reck can help detect faces in a picture. Reck is capable of detecting one face or multiple faces and can also recognize if there are no faces at all. I’ve named it Reck because it means care and I do care about knowing people.</description></item><item><title>Shuffle String with Python and Javascript</title><link>https://ezzeddinabdullah.com/post/shuffle-string-with-python-and-javascript/</link><pubDate>Fri, 14 Aug 2020 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/shuffle-string-with-python-and-javascript/</guid><description>‍ Shuffle String is an easy leetcode problem, please invest some time in understanding and implementing at leetcode first and then come back here again to see how we can approach it.
How to Approach such Problem We need to pair each item in the indices list to each character in the string; we can do that by zipping indices to the string. Try to print zip(indices, s) in python which gives you an object pairing each element to the other.</description></item><item><title>Why I Don't Burnout</title><link>https://ezzeddinabdullah.com/post/why-i-dont-burnout/</link><pubDate>Thu, 13 Aug 2020 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/post/why-i-dont-burnout/</guid><description>Sometimes you don’t have energy to work on something, you may feel depressed or whatever negative feeling you’re having, maybe you&amp;rsquo;re lazy and you can&amp;rsquo;t stand any other thoughts coming by feeling like your mind is out of your body. Many say that this feeling is called &amp;lsquo;burnout&amp;rsquo;. We&amp;rsquo;ve all been there but here I’m writing this to let you know it is possible for humans not to burnout (for at least long period of time) and here are some tips to get this word behind you.</description></item><item><title>About Ezz</title><link>https://ezzeddinabdullah.com/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ezzeddinabdullah.com/about/</guid><description>I&amp;rsquo;m Ezz, a data platform engineer and AWS Certified Machine Learning Specialty. I help companies increase their developer leads while cutting down on costs. I do that by providing technical tutorials and blog posts tailored to the developer audience.
You can email me at ezzeddinabdullah at gmail.com</description></item></channel></rss>