<feed xmlns="http://www.w3.org/2005/Atom"> <id>https://adhamsalama.github.io/</id><title>Adham Salama</title><subtitle>A passionate backend software enginner who loves Python, TypeScript and Rust.</subtitle> <updated>2026-05-08T20:57:01+00:00</updated> <author> <name>Adham Salama</name> <uri>https://adhamsalama.github.io/</uri> </author><link rel="self" type="application/atom+xml" href="https://adhamsalama.github.io/feed.xml"/><link rel="alternate" type="text/html" hreflang="en" href="https://adhamsalama.github.io/"/> <generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator> <rights> © 2026 Adham Salama </rights> <icon>/assets/img/favicons/favicon.ico</icon> <logo>/assets/img/favicons/favicon-96x96.png</logo> <entry><title>Improve PostgreSQL query performance by utilizing an index-only scan</title><link href="https://adhamsalama.github.io/posts/index-only-scan/" rel="alternate" type="text/html" title="Improve PostgreSQL query performance by utilizing an index-only scan" /><published>2023-03-26T00:00:00+00:00</published> <updated>2023-03-26T00:00:00+00:00</updated> <id>https://adhamsalama.github.io/posts/index-only-scan/</id> <content src="https://adhamsalama.github.io/posts/index-only-scan/" /> <author> <name>adham</name> </author> <category term="Databases" /> <summary> Indexes in PostgreSQL All indexes in PostgreSQL are secondary indexes, meaning that each index is stored separately from the table’s main data area (the heap). This means that in an ordinary index scan, each row retrieval requires fetching data from both the index and the heap. To solve this performance problem, PostgreSQL supports index-only scans, which can answer queries from an index alon... </summary> </entry> <entry><title>Building a Task Runner In Python</title><link href="https://adhamsalama.github.io/posts/building-a-task-runner/" rel="alternate" type="text/html" title="Building a Task Runner In Python" /><published>2022-11-18T12:12:12+00:00</published> <updated>2022-11-18T12:12:12+00:00</updated> <id>https://adhamsalama.github.io/posts/building-a-task-runner/</id> <content src="https://adhamsalama.github.io/posts/building-a-task-runner/" /> <author> <name>adham</name> </author> <category term="Reinventing The Wheel" /> <category term="Python" /> <summary> In this article, I will talk about my most recent project, “Yasta”. Yasta is a modern task runner written in Python. 🚐 Yasta makes running and managing your tasks a breeze! 🌬️ Even though it’s written in Python, you can use it for any kind of project, or no projects at all! I use it to automate some non-programming-related tasks on my machine. For this project, I used Typer to build the CL... </summary> </entry> <entry><title>Code Execution: Single Threading vs Multithreading vs Multiprocessing</title><link href="https://adhamsalama.github.io/posts/concurrency/" rel="alternate" type="text/html" title="Code Execution: Single Threading vs Multithreading vs Multiprocessing" /><published>2022-10-21T12:12:12+00:00</published> <updated>2022-10-21T12:12:12+00:00</updated> <id>https://adhamsalama.github.io/posts/concurrency/</id> <content src="https://adhamsalama.github.io/posts/concurrency/" /> <author> <name>adham</name> </author> <summary> Introduction When we are first introduced to programming, we learn that the code we write is executed sequentially. For example, this code prints “A” first, then “B”. print("A") print("B") This is an example of single threading. This is a very simple and easy way to write code and understand code execution, but wait! While this is easy, there are some cases in which we might want our co... </summary> </entry> <entry><title>Statically type &amp; compile Python code</title><link href="https://adhamsalama.github.io/posts/statically-type-and-compile-python/" rel="alternate" type="text/html" title="Statically type &amp; compile Python code" /><published>2022-10-06T12:12:12+00:00</published> <updated>2022-10-06T12:12:12+00:00</updated> <id>https://adhamsalama.github.io/posts/statically-type-and-compile-python/</id> <content src="https://adhamsalama.github.io/posts/statically-type-and-compile-python/" /> <author> <name>adham</name> </author> <summary> Python is a dynamically typed, interpreted programming language, unlike statically typed, compiled languages like C++. But it can be! You can write Python code in a statically typed way using type hints, check for type errors using mypy, and you can compile any Python using Nuitka. So, if you mix them both, you get statically typed, compiled Python code! Let’s see how we can achieve this. ... </summary> </entry> </feed>
