I thought this was a funny article to write. Ok, bear with me here. Making the perfect Carbonara isn’t easy at all. In fact, it took me years to perfect mine and it’s not that different from working in tech, mind you. I would equate making Carbonara to setting up a Reverse Proxy. There are a lot of things that come together to make it work, but it can always be better. Now, listen to me… I have been min-maxing Carbonara for a year and I can tell you the work involved is no different than trying to properly set up CSP for your virtual hosts. You make a slight adjustment to a policy and you end up with overcooked eggs. Or, after loads of errors, you might end up with an exquisite egg sauce. See, the differences aren’t many!

System Requirements

  1. 2 egg yolks per person + 1 full egg (I use a kind called pasta gialla which is has a very intense yellowy-orange yolk that gives off a nice colour)
  2. 80 grams (0.0125978 stones for the UK lads/lassies and approximately 45 football fields for the US dudes. I trust queer people to know what 80 grams are.) of pasta. I recommend either Elicoidali or Spaghetti. If you can find them, the squared kind of Spaghetti is the best
  3. Grated goat cheese (Pecorino) or if you don’t have it, use regular grated parmesan
  4. RAW bacon bits (or small cubes) this is what I use usually (Technically the original recipe uses guanciale, but we live on the edge today)
  5. A pot to boil water. I trust you know how to do this.
  6. A tall pan (called salta pasta (literally: pasta jumper) like this). A wok is perfect for this too. You must be able to put a lid on this thing, even if it doesn’t fully cover the whole thing. Keep in mind.
  7. Black pepper
  8. Olive oil
  9. Optionally some Tabasco (I use Habanero Tabasco)
  10. A lemon (or lemon juice)
  11. Paprika dust
  12. “Alexa, play Drum Beat by Charly Antolini” Spotify


Any and all non-specific measurements are left out on purpose. I never weigh bacon, or pepper, or paprika.


How to love and respect your egg

This requires a full chapter, yes. Eggs are the kings of the show. If you know how to love and respect it, your Carbonara skills are going to improve tenfold. There are quite a few simple rules, please follow them (I will also repeat them during the recipe).

Repeat after me:

  1. I will not blast my egg on a scalding hot pan
  2. I will not put my egg anywhere near a high flame
  3. I will not put any salt in my raw egg
  4. I will whisk (with a fork and not a whisker) my egg with large strokes and stop once it forms bubbles

Sexual innuendo at your discretion.



Forewarning: I am cooking with a gas stove. If you are cooking on an induction stove, make sure you be careful of the temperatures you use. Any mentions of temperatures in the recipe will be made with a gas stove in mind.

This recipe script is written under the assumption that you are cooking for two people.


You can read the GitHub Gists version, too.



while [ $music_is_on ]

1. Put your ${water} to boil(). Salt or oil in there is optional.
## CONSIDER THIS. If you put hot water in first, it will take less time to boil. So plan whether you want that, or cold water. It's all about timing.

2. While ${water} is going. Take() out your ${pan} put() a small == amount of olive oil in the ${pan} along with any and all ${bacon} bits you might have ready. Start() with a high == flame.

3. While the ${bacon} is cooking. Quickly pour() some == "paprika" dust on the bits, along with grating() some == "pepper" and optionally adding() a few == drops of "tabasco" on them. And salt. Stir to mix everything together.

## Reminder: the water is still on the fire

4. As soon as your ${bacon} looks like it is starting() to lighly ${cook}, lower() the flame to lowest != ((mid || high)). Put a lid on it and let it slow cook(). It will release all the juices.

## Remember to: stir it occasionally so it won't stick or burn sides.

5. While the water and the bacon are going, take out 5 ${eggs}. Prepare() two cups. Crack() the first ${egg} in one cup. Crack() the rest in the other cup. Reminder: you must be able to whisk() inside this cup.

6. With your ${fingers} fish() in the second cup with all the ${eggs} to take **CAREFULLY** take out the "yolks" and put them in the first cup.

## Tip: This is done to efficiently and sanitarily remove the yolks from the whites. If your white is stuck to your yolk and you can't get it to drop, simply clench your fingers like in one of those salutes those nazi 'people' like so much.

7. Start() an initial whisk. I prefer using a ${fork} for this. Stay as broad as possible to let "air" build up inside the eggs. After that, put() in some "pepper" and some of your available grated == "cheese". Not too much, you are not making dough.

8. Continue() whisking broadly, until you see that the egg is forming() "bubbles" while still.

## Reminder: the water is still on the fire and the bacon is still cooking.

9. Once the ${water} is boiling(), measure(80) grams of ${pasta} per person.
# International measurements in the system requirements

10. Take a good look at the pastas box. See what time-to-cook() it says, lower() it by ((1 || 2)) minutes depending on how 'al dente' you like it. And pour() the measured ${pasta} in the ${water}. SET! A! TIMER!

# Attention: we will not drain the pasta with a colander, so consider there will be a few seconds more of cooking the pasta in its water.

11. This is a good moment to rest() and check() up if you fucked() up anywhere. Once the timer is up. You must be ready for war. These will be the crucial moments. The part where micromanaging and min-maxing is going to turn your carbonara into the perfect dish.

12. Once the ${pasta} is cooked, !! IMPORTANT !! LOWER() the pots flame to the minimum. Swap the "bacon" pan with the ${pasta} pot and turn(off) the "bacons" flame.

13. With a ${skimmer} carefully pull the ${pasta} from the water and put() it in the "bacon" ${pan}. It does not matter how much water you pull in. The water is good. Just do not overdo it. DO NOT THROW AWAY THE WATER.

14. Gently mix() the ${pasta} and the ${bacon} and its ${juice} together, so the ${pasta} absorbs() the taste.

## This is the most important part. Read carefully


16. QUICKLY pour() in the ${eggs}.

17. From now on, you MUST() absolutely keep stirring() the whole thing. IF you see ${cooked} ${egg} in BITS around the ${pan}, you already fucked() up. Your ${pan} was probably already too hot.

18. While stirring(), add() a SMALL AMOUNT of ${pasta} cooking ${water} from the ${pot} to the ${pan}. Keep stirring().

19. IF the ${pans} temperature drops() too much, you can QUICKLY put() it on a medium-high == flame a few times, just enough to keep it up. This is a very $important_trick to master.

20. Add a ~ sizable amount of "parmesan" in the pan. This depends on you, I pour() quite a bit. If it becomes too "dense" or "sticky", keep adding pasta water. Do not overdo() the ${water} either.

21. You must repeat steps from 17 to 20 until you see that the egg has become $creamy enough. The trick here is how often and how fast or slow you put the pan away and to the fire.

# The objective here is to turn the egg into a creamy sauce. With the help of parmesan, water and bacon juices. The egg must not be runny and not fully cooked, just enough to look like a mildly dense cream.

22. Once you are satisfied() with the result -> add() a small == amount of ${lemon} juice to everything and do a final mix.

# The lemon juice helps contrast the extreme meaty and savoury flavour of the bacon and the egg. It will add a nice acidic contrasting flavour to your dish. I recommend it, but it is optional.


With some training, you should do be able to reach the same result I did:

I see you, tool-tip reader!

Keep at it, and you will master it in no time. And let me tell you, every single time you make it, it will taste better than the previous. Every. Time.

Want to support me?

Find all information right here

You can also support me here:


  • My mom
  • Homelabber

Check out The Hall of Fame

You can download the markdown version of this guide from here