
The Backend Engineering Show with Hussein Nasser
Welcome to the Backend Engineering Show podcast with your host Hussein Nasser. If you like software engineering you’ve come to the right place. I discuss all sorts of software engineering technologies and news with specific focus on the backend. All opinions are my own.
Most of my content in the podcast is an audio version of videos I post on my youtube channel here http://www.youtube.com/c/HusseinNasser-software-engineering
Buy me a coffee
https://www.buymeacoffee.com/hnasr
🧑🏫 Courses I Teach
https://husseinnasser.com/courses
Latest episodes

Dec 15, 2021 • 36min
The Log4j vulnerability | The Backend Engineering Show
In this episode of the backend engineering show, I discuss the log4j vulnerability (CVE-2021-44228 also known as log4shell) that took the Internet by storm.
0:00 Intro
1:00 log4j
5:30 How the attack started
11:00 Attack with DNS
17:00 Remote Code Execution
23:00 Remedy
31:00 Scanning
References
https://nvd.nist.gov/vuln/detail/CVE-2021-44228
https://youtu.be/oC2PZB5D3Ys
🧑🏫 Courses I Teach
https://husseinnasser.com/courses
Become a Member on YouTube
https://www.youtube.com/channel/UC_ML5xP23TOWKUcc-oAE_Eg/join
🔥 Members Only Content
https://www.youtube.com/playlist?list=UUMO_ML5xP23TOWKUcc-oAE_Eg

Dec 3, 2021 • 25min
Postgres HOT Optimization | The Backend Engineering Show
In this episode of the backend engineering show taken from my udemy Q&A I discuss the reasons behind Postgres HOT Optimization or heap only tuple.

Nov 11, 2021 • 28min
Postgresql index bloat | The Backend Engineering Show
Postgresql database implements MVCC by creating a new row version for any update/delete/or insert. While this is a sound implementation to support concurrent transactions reading old version of the rows, it does have some side effects and this is what I want to discuss in this episode of the backend engineering show.
0:00 Intro
1:00 Postgres MVCC design
6:42 MVCC on other databases
11:15 Side-effects of Row-versioning
17:00 Postgres HOT optimization
19:50 How Index bloat affects Performance
24:20 How Postgres 14 Addresses index bloat
Cards:
14:12 b-tree https://www.youtube.com/watch?v=a1Z40OC553Y
Resources
https://www.postgresql.org/docs/14/btree-implementation.html#BTREE-DELETION

Nov 5, 2021 • 28min
What is the cost of Indexing too many columns - Udemy Q&A November 2021
Head to https://database.husseinnasser.com to get a discount coupon for my introduction to database engineering.
In this video, I answer some of your questions on the Introduction to Database Engineering Course.

Oct 30, 2021 • 27min
when indexes are useless | The Backend Engineering Show
head to https://database.husseinnasser.com to get a discount coupon for my Introduction to Database Engineering course
In this episode of the backend engineering show, I’ll discuss three instances where indexes can be useless and might add overhead to your operations. Let us discuss.
0:00 Intro
1:34 What is an Index?
4:00 The Cost of Indexes
6:40 Most values are the similar
13:00 WHERE UPPER(NAME)=‘RICK’
17:10 Composite Index
23:00 How do I know if I’m using an Index

Oct 21, 2021 • 9min
The cost rolling back transactions (postgres/mysql)
The cost of a long-running update transaction that eventually failed in Postgres (or any other database for that matter.
In Postgres, any DML transaction touching a row creates a new version of that row. if the row is referenced in indexes, those need to be updated with the new tuple id as well. There are exceptions with optimization such as heap only tuples (HOT) where the index doesn’t need to be updated but that doesn’t always happens.
If the transaction rolls back, then the new row versions created by this transaction (millions in my case) are now invalid and should NOT be read by any new transaction. You have two solutions to address this, do you clean all dead rows eagerly on transaction rollback? Or do you do it lazily as a post process?
Postgres does the lazy approach, a command called vacuum which is called periodically Postgres attempts to remove those dead rows and free up space in the page.
Whats the harm of leaving those dead rows in? Its not really correctness issues at all, in fact transactions know not to read those dead rows by checking the state of the transaction that created them. This is however expensive, the check to see of the transaction that created this row is committed or rolled-back. Also the fact that those dead rows live in disk pages with alive rows makes an IO not efficient as the database has to filter out dead rows. For example, a page may have contained 1000 rows, but only 1 live row and 999 dead rows, the database will make that IO but only will get a single row of it. Repeat that and you end up making more IOs. More IOs = slower performance.
Other databases do the eager approach and won’t let you even start the database before rolling back is successfully complete, using undo logs. Which one is right and which one is wrong? Here is the fun part! Nothing is wrong or right, its all decisions that we engineers make. Its all fundamentals. Its up to you to understand and pick. Anything can work. You can make anything work if you know what you are dealing with.
If you want to learn about the fundamentals of databases and demystify it check out my udemy course
https://database.husseinnasser.com

Oct 13, 2021 • 20min
TLS and HTTPS Options in Microsoft IIS
In this episode of the backend engineering show, I’ll discuss all HTTPS/TLS binding options in Microsoft IIS and also explain why every web server and reverse proxy should have some of these fine level control.
Chapters
0:00 Intro
1:00 Require Server Name Indication (SNI)
5:00 Disable TLS 1.3 Over TCP
8:30 Disable Legacy TLS
10:00 Disable OCSP Stapling
12:00 Disable QUIC
14:30 Disable HTTP/2
17:30 Certificate
Get my database course https://database.husseinnasser.com
Get my NGINX course https://nginx.husseinnasser.com
Get my Python on the Backend course https://python.husseinnasser.com

Oct 10, 2021 • 22min
On Graph Databases | The Backend Engineering Show
I get a lot of emails asking me to talk about graph databases, so I want to start researching them, but I wanted to give you guys the framework of how I think about any databases to defuse any “magic” that might be there.
In this video, I discuss what constrains a database and how the use cases try to work around them.
0:00 Intro
1:50 What constrains a database?
4:00 Indexing Techniques
5:30 Storage Engines - Row-Store
9:00 Columnar Databases
12:00 Graph use cases
16:00 Graph Storage Engines
Learn the fundamentals of databases, grab my my Introduction to Database Engineering udemy course here for a discount coupon https://database.husseinnasser.com 🧑🏫

Oct 8, 2021 • 28min
Certificates gone bad | The Backend Engineering Show
Certificates contain useful metadata including the public key, domain name, signature, etc. However, the private key can be leaked which causes the certificate to be invalid/dangerous to keep around. In that particular situation, we need a mechanism to revoke certificates and that is what I’m going to discuss in this show.
0:00 Intro
0:30 Why Certificates
12:00 Certificates can go bad
14:50 Certificate Revocation Lists (CRLs)
18:30 OCSP (Online Certificate Status Protocol)
20:40 OCSP Stapling
24:30 Best certificates are short
26:30 Summary
Become a Member on YouTube
https://www.youtube.com/channel/UC_ML5xP23TOWKUcc-oAE_Eg/join
🔥 Members Only Content
https://www.youtube.com/playlist?list=UUMO_ML5xP23TOWKUcc-oAE_Eg
Support my work on PayPal
https://bit.ly/33ENps4

Oct 6, 2021 • 44min
Detailed analysis on the facebook outage
In this episode, I go through the Facebook detailed article regarding their October 4th, 2021 outage and discuss it in length. enjoy
Facebook blog: https://engineering.fb.com/2021/10/05/networking-traffic/outage-details/
0:00 Introduction on Facebook Networking Architecture
12:00 The Cause of the Outage
17:00 What’s DNS
23:00 DNS Servers disabled BGP ads
27:00 Could the outage have been prevented?
32:00 Why did it take so long?
38:00 Why you can’t just flip everything on
41:30 Summary
🧑🏫 Courses I Teach
https://database.husseinnasser.com
https://nginx.husseinnasser.com
https://python.husseinnasser.com
Become a Member on YouTube
https://www.youtube.com/channel/UC_ML5xP23TOWKUcc-oAE_Eg/join
🔥 Members Only Content
https://www.youtube.com/playlist?list=UUMO_ML5xP23TOWKUcc-oAE_Eg
Support my work on PayPal
https://bit.ly/33ENps4
🏭 Backend Engineering Videos in Order
https://backend.husseinnasser.com
💾 Database Engineering Videos
https://www.youtube.com/playlist?list=PLQnljOFTspQXjD0HOzN7P2tgzu7scWpl2