Pour the flour into a mixing bowl and add the salt and yeast on opposite sides. Stir each one in with your finger.
Mix in the sugar, cardamom, butter, and eggs until well combined.
Warm the milk to 115°F in the microwave or a small saucepan, then gradually add it to the flour mixture. Stir and crush the ingredients together with your hand and continue adding milk until a somewhat sticky dough forms.
Turn the dough onto a floured surface and knead until the dough is no longer sticky and passes the windowpane test, about 10-15 minutes. Do the windowpane test by pulling off a lump of dough and stretching it as thin as you can. If it stretches to be translucent without tearing, it's kneaded enough.
Shape the kneaded dough into a ball, place it in a buttered bowl, and cover tightly with plastic wrap. Let it rise in a warm place until at least doubled in size, about 1 ½ hours.
Punch down the dough, then turn it onto a lightly floured surface and pat the dough flat. Knead in about half of the raisins and citron until it's evenly distributed, then add the rest of the dried fruit.
Shape the dough into a large round loaf and pick off any pieces of dried fruit on the outside crust of the bread. This will prevent the fruit from burning in the oven.
Place the loaf on a parchment-covered cookie sheet and cover it with plastic wrap. Let the loaf rise in a warm place until it's springy to the touch, about 30 minutes.
Bake the julekake at 375°F for 40-45 minutes, covering it with foil halfway through the baking time if needed. The julekake is done when a digital thermometer registers 190-200°F inside.
Let the julekake cool for at least 1 hour on a wire rack, then slice and serve with butter, brunost (Norwegian goat cheese), and hot coffee.