This commit is contained in:
Alexander 2025-06-10 13:15:24 -04:00
parent 864544624c
commit a3e82f34b5
246 changed files with 4433 additions and 2 deletions

View file

@ -0,0 +1,42 @@
# Amarettis (Chewy Almond Cookies)
These are genuinely excellent and surprisingly undemanding to make, particularly if you don't beat the egg whites by hand. From start to finish, the process should take less than an hour.
Keep in mind that the ideal crispy-outside chewy-inside texture forms over time while the cookies are cool. They _taste_ right immediately after coming out of the oven, but for the best texture, let them cool completely and rest in a sealed container for several hours before consuming.
Total caloric content of this recipe is 2840 kilocalories, or 109.6 kcal per cookie.
## Ingredients
- 1/2 cup white granulated sugar
- 1/2 cup demerara sugar (Florida Crystals or similar)
- 280 grams blanched almond flour
- 1/2 teaspoon kosher salt
- 3 extra large eggs
- 1/2 teaspoon vanilla extract
- 1 ounce (weight) Lazzaroni Amaretto
- 1 cup powdered sugar
- 25 whole, roasted almonds
## Equipment
- A medium mixing bowl (for dry ingredients)
- A small mixing bowl (for beating egg whites)
- A whisk or mixer
- A standard set of measuring spoons
- A kitchen scale
- A medium cookie sheet
- A silicone sheet-pan liner
## Process
1. Preheat the oven to 325°F.
2. Mix the flour and sugars into a medium bowl.
3. Separate three egg whites into another bowl and discard the yolks.
4. Beat the egg whites until peaks are stiff.
5. Add the vanilla extract and amaretto to the bowl of dry ingredients.
6. Add the beaten egg whites to the dries and fold gently until a paste forms.
7. Form small balls of the dough and coat them completely in powdered sugar.
8. Gently press the dough balls onto a sheet-pan with a silicone mat, flattening them slightly.
9. Press an almond into the top of each cookie so that the dough will hold it when baked.
10. Place the pan (with cookies) in the oven for 25 minutes then remove it and let them cool.

View file

@ -0,0 +1,17 @@
# Algorithm
During the implementation of my library "Aasam", based on the paper "Precedences in specifications and implementations of programming languages" by Annika Aasa, was the first time I fully read and understood an academic CS paper. It's a nice algorithm, and worth revisiting.
If you want to look at the implementation ahead-of-time, [Hackage](https://hackage.haskell.org/package/aasam) has got you covered. Frankly though, just keep reading; it was also the first time I wrote a Haskell program, and the code not terribly penetrable.
## Distfix Grammars
_Distfix grammars and notation are more commonly referred to as "mixfix", but the paper calls them "distfix" and that's what I'm sticking with._
The idea of distfix grammars is to provide a formalism for manipulating user-defined operators. The formalism is weaker than that of context-free grammars --- CFGs can describe far more languages then DFGs --- but it is because of this weakness that we can reason about DFGs with relative ease.
Let's look at a definition.
*STUFF HERE*
As we can see, ...

View file

@ -0,0 +1,29 @@
# Unassailable Slow-Cooker Chili
This is a simple recipe of beans, tomato, and ground beef, refined across generations into the local maximum you see before you.
## Ingredients
- A bit more than 1 lb of ground beef
- 2 14.5 oz cans of diced tomatoes
- 2 1.25 oz packets of chili powder spice mix (such as McCormick, etc)
- 4 cans of beans (typically one each of pinto, black, great-northern, and light kidney)
- 1 large bottle of tomato juice
- 1 medium or large onion
- Black pepper to taste
## Equipment
- A knife to cut the onion
- A skillet to cook the beef
- A large slow-cooker
- A heat-resistant spoon
## Process
1. Cook the ground beef until most of the fat has rendered, then drain most of the grease away.
2. Chop onion and add to skillet with beef, cooking just until color develops.
3. Add the beef and onion to the pot with tomatoes, beans, and spice mix.
5. Pour in tomato juice until it reaches a consistency too thick for soup but still suitable for consumption with a spoon more than with any other dining implement.
4. Cook on low until you're happy with the texture of your onions, as these usually take the longest.
5. Black pepper to taste shortly before serving.

View file

@ -0,0 +1,45 @@
# Typical Coronation Chicken
This recipe is adapted from the original recipe used for Queen Elizabeth's “Coronation Luncheon” in 1953 and faithfully incorporates elements of several variations served around London in 2023. Most of the changes I've made are to ratios, but I've also included more fruits, omitted watercress, and used a mayonnaise/milk combination in place of whipping cream.
## Ingredients
- 3 tbsp almond slivers
- 1/2 shallot
- 1 tbsp dried apricots
- 1 tbsp lemon juice (roughly 1/4 of a smooth lemon)
- 1 tbsp extra-virgin olive oil
- 3 tsp your favorite yellow curry powder
- 1 tsp tomato paste
- 90 ml dry red wine
- 30 ml water
- 1/4 tsp dark brown sugar
- 225 ml Duke's mayonnaise \*
- 100 ml 2% milk \*
- 4 tsp thompson raisins \*
- 1 tsp dried black currants \*
- 650 g shredded cooked chicken breast *
Values marked with \* have been estimated after-the-fact. I made visual judgments during preparation to decide actual amounts and neglected to record them. The combined volume of mayonnaise and milk was measured at 325 ml. The chicken was measured at 500 g, but was too little for the amount of dressing made.
## Equipment
- A wide skillet or frypan
- A knife and cutting surfaces
- A standard set of measuring spoons
- Two medium mixing bowls
## Process
1. Toast the almonds in your pan before setting them aside.
2. Chop the half shallot and apricots very finely.
3. Squeeze 1 tbsp of lemon juice and set it aside.
4. Add olive oil to the pan and place it on medium heat.
5. Add the shallot and curry powder then cook about two minutes or until the shallot begins to soften.
6. Add tomato paste, wine, and water, then bring the pan to a mild boil.
7. Once it boils, add lemon juice and brown sugar then simmer until the mixture is slightly reduced.
8. Remove from heat and let cool substantially.
9. Transfer to a bowl and mix in mayonnaise, milk, almonds, and all the fruit to complete the dressing.
10. Place shredded chicken in another bowl and add dressing until the desired consistency is reached.
11. Sample the mixture before adding salt and pepper to taste.
12. Let rest in the refrigerator until completely cooled.

View file

@ -0,0 +1,17 @@
# Reading Order of The Culture
I've generated a dependency graph for the Culture series reading order. The idea is that if there's an arrow from book A to book B, then to get the most possible enjoyment from either A or B, A should be read before B.
![A dependency graph diagram of what Culture books must eb read before what others.](/culture.dot.png) Above is the graph, and [right here](/culture.dot.txt) is the vizgraph description file that lists my rationale for each dependency.
- _Consider Phlebas_ before _Look to Windward_--- both are about the Idiran War.
- _Use of Weapons_ before _The State of the Art_--- these share a main character in Diziet Sma. SotA was actually released before UoW but is more satisfying if read after it, in my opinion (and the author's, for what that's worth).
- _Use of Weapons_ before _Inversions_--- UoW gives the best idea of any book about what Special Circumstances is, which must be understood to fully appreciate Inversions in all its subtlety.
- _Excession_ before _The Hydrogen Sonata_--- Hydrogen Sonata is dual to Excession in many ways that can't be explained here without abject spoilage. This one is not a hard rule, but HS is better if you know Excession.
- _Excession_ before _Matter_--- GSV Sleeper Service is mentioned in Matter as "The granddaddy, the exemplary hero figure, the very God...", referencing events in Excession.
- _Use of Weapons_ before _Surface Detail_--- you must know who Zakalwe is, the main character of UoW, to fully appreciate the ending of Surface Detail.
- _Look to Windward_ before _Surface Detail_--- These book deal with some common themes and subjects. Some will disagree with me here, but LtW is more impactful _without_ certain knowledge revealed in Surface Detail.
Assuming one agrees with the graph, the set of ideal reading orders (that is, the set such that for all orders it contains, no order exists which is strictly better) is the set of [topological sorts](https://en.wikipedia.org/wiki/Topological_sortinghttps://en.wikipedia.org/wiki/Topological_sorting) of the graph.
This gives the number of possible ideal orders as 63840. That's a lot of good ways to do it!

View file

@ -0,0 +1,3 @@
# Living Free with Monads
Explicit record passing makes OCaml feel _good_.