Christmas Routine (A Pseudocode Poem)

While (AwakeBeforeSun()) {
   Case ListenForKids(): {
      1: Hear(Giggling | WhispersInHallway): ChristmasMorning();
      2: Silence : LayAwakeEyesClosed(5 minutes);
   }
}

Function ChristmasMorning() {
   CheckSpouseSleepStatus(); //Spouse may be simultaneously checking your sleeping status
   SignalToKidsYouAreAwake(); //Note: Giggling noises likely to increase
   QuicklyGetDressed("pjs", "santa hat",);
   StageKidsAtTopOfStairs();

   Coffee();

   //Find best angle between tree and stairs
   Shout("Ok, you can come down now");
   EnjoyWatchingKidsFaces();

   RandomlyAssignSeating();
   Santa = RandomlyAssignSanta();
   PlayHolidayMusic(); //Optional Real Live Fire or Netflix Yule Log

   Shout("Merry Christmas!");
   PresentDistribution(Santa);

// Present Distribution likely to take a while

   AssessStateOfRoom();
   PileReusableBoxes();
   OverStuffWrappingPaperIntoRecyclableBag();
   Foreach (person) {
      StackGiftsUnderTree(person);
      SelectSomethingToFurtherInspect(person);
   }

   SecondBreakfast();
   OpenStockings(); //This routine could be placed before PresentDistribution in some households
   Nap();
}

Function PresentDistribution(Santa) {
   OwnGifts=0;
   Global Timer = 0;
   While (GiftsUnderTree > 0) {
      GrabNearestGift();
      If (GiftTag = "self", OwnGifts++, GiveGift(GiftTag)); //Be overly unselfish by delaying opening own gifts
      If (OwnGifts > 3, OpenGift(Santa), OpenGift(!Santa)); // 3:1 ratio seems to work well
      Timer = Timer + 3 minutes;
      If (Timer > 45 minutes && Coffee==0, Coffee());
      If (Timer > 90 minutes, Breakfast());
   }
}