About Me
I am a 4th year CS student at the University of Waterloo.
I use my website to document things I’ve been thinking about or have been doing.
[firstName][at][this fqdn] | |
GitHub | sean01zhang |
in/sean01zhang |
Posts
- Make a New Homebrew Tap
The documentation from the homebrew docs is sufficient to creating a new tap. I will add a bit of commentary in addition to the above to discuss the design choices I made when making my homebrew tap & cask for window-switcher.
First of all, I chose to create a repository on GitHub, since that is where my code is stored. Some bikeshedding - what should I name my tap?
Note: [GitHub Only] The brew.sh docs recommended adding a prefix to your homebrew tap repo with
homebrew-
if you want users to take advantage of thebrew tap
comamnd. However, when others install or tap from your repo, they do not include the prefix. For example, the repogithub.com/sean01zhang/homebrew-formulae
can be accessed by executingbrew tap sean01zhang/formulae
. - Why I Built Window Switcher
Since finishing my last internship, I’ve missed having massive monitors at work. No longer could I have two windows in split view without sacrificing content space.
This meant that I had many apps occupying one desktop at once. However, as a certified non-minimalist^TM, I have too many windows open. For example, I have multiple instances of Firefox open (one for each profile), multiple instances of Finder with different folders open, and if I wasn’t a
vim
user, I would have many different instances of my favourite GUI-based code editor open (one for each repository I was working on). - Feeding Sourdough Starter
This playbook documents how you should feed your starter. It assumes you have a starter already.
State
Note
Using a transparent container to store your starter makes it easier to know how active your starter is.
There is a gradient of which how hungry/active your starter is, and it can usually be gauged by the volume that your starter takes up.
Not fed in a while: Not bubbly, and may have a clear fluid on top (referred to as hooch). This fluid smells like alcohol and is a byproduct of fermentation. A build-up of this fluid usually indicates that your starter needs to be fed. Pour it out before the next feeding. This will be the smallest in volume it can be.
- ππͺ΅ :: 2024-12-30
Bread making log, Dec 30. I made 2 loaves, so this will be two parts.
Loaf 1
- Fed starter 1:1:1 at 10pm, left at RT
- 200g ea
- Used starter around 11:30am
- starter more than doubled, overfilled
- Mixed in water and dough first
- Then incorporated the starter
- Then added salt
- Poor mixture, it was quite lumpy
- did not pass windowpane test, dough was not airy
- Dough still sticky after last stretch and fold, shaped into a ball
- waited 10-15 mins
- Put into banneton
- Fridge overnight
- Preheat both dutch ovens no lid
- Put in oven 10:40am
- Did not take out to score until preheated
- did not shape, boule was firm and skin was dry
- A lot more expansion
- Expansion potentially caused crusting to not be as burned
- This could also be conflated with 19 mins lid off
- Scoring went too far along the sides, reduce length of cross. Depth was slightly deep too.
Loaf 2
- 1:1:1 on stbl starter
- 120g
- Used starter around 7pm, last fed 10pm but in fridge. Taken out around 2/3pm (5 hour warm up)
- Mixed all together, started with 250g (1.5 cup) water β added another 1/4 as needed
- did not pass windowpane test, was a bit dry
- Left in oven to proof on βproofβ setting
- Stretch and fold focused on not ripping the dough
- Much more stretchy than earlier one after stretch and fold.
- Put in oven 10:40am
- Did not take out to score until preheated
- did not shape, boule was firm and skin was dry
- A lot more expansion
- Expansion potentially caused crusting to not be as burned
- This could also be conflated with 19 mins lid off
- Scoring went too far along the sides, reduce length of cross. Depth was slightly deep too.
- Fed starter 1:1:1 at 10pm, left at RT
- Added more buttons to my homepage!
Nice.
- New Sourdough Bread π
Reference Recipe: King Arthur no knead
Supplemental Videos Watched:
- Bake the Perfect Sourdough Bread: A Step-by-Step Guide (Natashas Kitchen)
- Make Beautiful Sourdough | NYTimes
This playbook documents the process needed to create a sourdough from your starter in as much detail as possible.
Prologue
- Make sure the sourdough starter is very active (it was fed recently)
- If refrigerated, feed it a bit and leave it up to 2 hours in room temperature.
Recipe
- 600g bread flour into bowl
- 18g salt (3% of flour weight) into bowl
- 227g (1 cup) sourdough starter into bowl
- 397g of lukewarm water
- Mix well
- Bulk Fermentation:
- Set dough in room temperature and wait for an hour
- Modification: Set dough in oven for warmer environment. If there is a “proof” setting, this can be used.
- Windowpane test: Dough should be stretchy enough allow you to create a windowpane
- Stretch and fold, wait for an hour
- You can use water to lubricate; Be gentle with the dough
- Stretch and fold, wait for an hour
- Stretch and fold;
- (experimental addition) This may lead to bigger air pockets.
- Bulk rise 3 hrs
- 30 mins relax
- Set dough in room temperature and wait for an hour
- Transfer dough to floured mat, and shape by folding it in
- Then also cup sides to get a round shape.
- Cold Fermentation
- Once shaped, flour bread basket (with cloth or without, optional) with bread flour, or rice flour if available
- Place dough seam side up into basket
- Cover with a lid and place in fridge for 8 hours, but we can maximize for more.
- Once dough is ready
- Place a tray at the bottom of the oven. This helps reduce intensity of heat on the bottom of the bread, leading to less browning.
- Put dutch oven (lid off) into oven.
- Lid can be put on during the preheat, but it is a bit easier to put the lid on afterwards (since you’ll have to take it off when you put the bread in).
- Preheat oven to 450 F.
- Once oven is preheated
- Take sourdough out of fridge.
- Score sourdough. Make sure to do enough such that it has room to expand.
- Take dutch oven out
- Sprinkle generous amounts of flour on the bottom
- Put dough in.
- Put dutch oven back in, wait for 35 mins @ 450 F
- Lid off 20 mins @ 450 F
- The oven I currently use runs a bit cooler, so I do 25 mins lid off.
- Once bread is baked, leave on cooling tray to cool, for approximately 1 hour.
Other Helpful Notes
- If the bottom of your bread is a bit dark, you can place a tray under your dutch oven when baking to help deflect some heat from the bottom.
- To achieve a softer crust, place some water in the oven when you take the lid off.
- The exact quantity was unknown, my sources say it was “a bit from the kettle”.
Metadata
Owner Last Update Version sean@ 2025-04-09 1.3 Changelog
- 2024-12-26: Initial Version
- 2024-12-30: Separated bulk fermentation and cold fermentation. Also removed experiment to bring dough temp up after cold fermentation.
- 2025-01-09: Updated instructions to recommend lid off when preheating the dutch oven.
- 2025-04-09: Added a section for some more modifications.
- ππͺ΅ :: 2024-12-27
Bread making log, Dec 27
- Starter successfully doubled in size 2 hours after feeding.
- Required amt. in recipe called for about half
- Fed around 60g of flour and water (Resultant wt: 500g). Split into two jars, approximately 250g each.
- Original in plastic container (nightly release), and new fork in glass jar (stable, weekly feeding)
- Plastic container will be placed in fridge due to production freeze lasting Sat - Sun (inclusive).
- Glass jar will be placed in fridge, to be fed around 1 January (6 days from now).
- Will attempt to not stretch too much to avoid breaking bubbles (in response to dough being a bit dense)
- Did not transfer to clean bowl after last stretch and fold
- Taken out 10 hours after resting
- shaped bread by stretching and folding a bit
- Placed into clean floured bowl and put in oven on βproofβ for 1:30, lid on
- Dough was more bubbly than last time
- Dough stuck to walls of the bowl, added flour to compensate
- Bake time good, think I needed more scoring
- AI: Make sure scores are long so they can expand
- Seasoned dutch oven with olive oil; Very smoky after preheat.
- AI: After preheat, make sure to take dutch oven lid off under range hood. Also, olive oil is not low smoke point.
- Puffier after baked
- Heap Escape Analysis in Go
Warning
This page is extremely rough and will contain incorrect code and lack of explanation.
I want to figure out if my go program is making any allocations to the heap.
go test -run none -bench . -benchtime 10s -benchmem
Output:
goos: darwin goarch: arm64 pkg: src.naesna.es/aoc/go/2024 cpu: Apple M1 Pro BenchmarkDay1Part1-10 56686 62211 ns/op 83192 B/op 26 allocs/op PASS ok src.naesna.es/aoc/go/2024 4.405s
You can also get a memory profile
-memprofile mem.out
Then use
go tool pprof
to check allocation space.
Widgets
88x31
A small pool of buttons (specifically 88px in width and 31px in height) that link to friends, in lexicographic order.
Tiger told me that https://eightyeightthirty.one/ crawls the entire web for buttons that link to other buttons. Really cool!
Web Rings
A circular linked-list of websites that share some interest in common. Below is the UWaterloo CS webring: