Set a large pot of water to boil for cooking the pasta.
Meanwhile, prepare the bechamel sauce. Set a 2.5 quart dutch oven or pot over medium heat and melt the butter.
2 tablespoons unsalted butter
Make the roux: Once the butter is melted, slowly add the flour, whisking vigorously to incorporate the flour into the butter and remove any dry clumps. Continue whisking, about 2 minutes, or until the flour no longer has a raw smell and the color transforms from white to blond.
2 tablespoons all-purpose flour
Add the liquids: Whisking constantly, slowly pour in the whole milk and heavy cream, adding just a little bit at a time. Don't be alarmed if the mixture seizes up and the roux clumps; it will smooth out again. Make sure to whisk around the edges of the pan to re-integrate any stuck clumps.
1 1/4 cups whole milk, 1/2 cup heavy cream
Simmer: Once all of the liquid has been added, continue whisking frequently and bring to a simmer. Reduce the heat to low. Continue whisking until the mixture is thick enough to coat the back of a spoon, about 3 minutes.
Cook the pasta: Once the water is boiling, salt generously and add the pasta. Cook according to instructions until al dente (or to your desired texture). Drain and set aside.
8 ounces dried, short pasta
Finish the bechamel: While the pasta cooks, finish the bechamel. Season with salt, pepper, garlic powder, and mustard powder.
Kosher salt, Black pepper, 1/2 teaspoon garlic powder, 1/8 teaspoon mustard powder
Add the cheese: Remove the pot from the heat, then slowly add in the cream cheese, pepper jack, and parmigiano-reggiano cheeses, whisking frequently until melted. Season again as needed. Serve hot, or proceed to the optional broiling step if desired. Note: If you plan on broiling the mac and cheese, set aside 1/8 of the grated pepper jack cheese for topping.
3 ounces cream cheese, 1 8-ounce package of pepper jack cheese, 1/2 cup parmigiano-reggiano cheese