Consistency and Repeatability in Brewing

>> Thursday, April 09, 2026

I’ve been catching up on old episodes of The Brewing Network’s Brew Strong, and a recurring theme is consistency and repeatability. That got me thinking about my own process, so I decided to write this post and update my brew session template.

For anyone new to brewing who might come across this—don’t worry if your process looks different from mine. Very few systems are identical. For example, you may use a different mash thickness, and that’s perfectly fine. The key is to experiment and find what works best for your setup.

You also don’t need to rush out and buy more equipment to measure every possible variable. If you don’t have a sight glass or a pH meter, focus on what you can measure and document those things consistently from batch to batch. Even simple tools can be effective—for instance, if you’re using pH strips, you could take a photo under consistent lighting to compare results over time. If something seems off, your notes will give you a reliable reference point.

Brewing has countless variables that affect consistency, and even the pros struggle with this. Years ago, I did a Pro-Am Flanders Red with Uinta Brewing and saw firsthand how much variation can occur—30+ barrels of the same beer aged differently. Many were similar, but there were definitely differences from barrel to barrel. One in particular stood out with a completely unique and incredible acid profile. We even considered a single-barrel release before ultimately blending it.

There are also factors we simply can’t control: variability in malt and hops, differences in hop lots (which is why commercial breweries contract and select hops in person), and even how yeast is handled before it reaches your local homebrew shop. The goal isn’t to stress over these variables—but to be aware of them.
Instead, focus on what you can control. Good documentation is critical for consistency and repeatability, especially when a batch turns out significantly different—whether better or worse.

One change I made years ago was building my own grain mill to improve consistency. At the time, I was seeing significant variability in mash efficiency. If you’re relying on different shops to mill your grain, you’ll likely encounter inconsistencies—different mills, gap settings, number of passes, and even residual grain from previous batches can all affect your crush. I’ve seen cases where efficiency dropped 20% in a single batch due to a poor crush.

By milling my own grain—typically while filling the mash tun with strike water—I’ve been able to achieve much more consistent mash efficiency across batches.

In short: take good notes and standardize your process as much as possible. When you encounter outliers, your notes will help you identify what changed.

To support this, I’m updating my brew session template to capture more detail. While this likely won’t be the final version, it reflects my current setup and should help ensure I consistently record the most important variables. Below is the table I’ll be using going forward.

Session Readings
Equipment usedX
Strike water volumeX gal
Strike water tempX °F
Mash thicknessX qt/lbs
Beginning mash pHX
Ending mash pHX
1st running gravityX (1.0)
Volume into BKX gal
Pre-Boil gravityX (1.0)
Pre-Boil pHX
Post-Boil gravityX (1.0)
Post-Boil pHX
AerationX l/minute
Post ferm gravityX (1.0)
Post ferm pHX (1.0)

Read more...

Frozen Daiquiri

>> Friday, April 03, 2026


My youngest daughter and her friend are visiting from Utah. The temps are in the low 80s and we're hanging out by the pool, so I decided to mix up a batch of frozen Daiquiris. Here's the recipe as I made it and as usual, I froze it in the Ninja Slushi.

222ml lime juice
278ml of 2:1 "rich" simple syrup
222ml each of two different light (or lightesh rums). I used Member's Mark "Rum from the Caribbean" and Clement Blanc Rhum Agricole Maetinique
950ml water

Measure out the ingredients and throw it in your Slushi on Spiked Slush setting. 

I thought it was a little sweet and my wife thought it was a little tart, so it's probably a perfect balance, ha!

Read more...

Rum Barrel Imperial Stout

>> Sunday, March 22, 2026


Today I'm brewing a version of WeldWerks Achromatic Stout that I've brewed in the past. This is an Imperial Stout, and this will go into a recently acquired rum barrel I got from nearby Cotherman Distilling Co. in Dunedin, FL. This is a big beer, but still drinkable and I think it'll work really well in a rum barrel.

My new-to-me rum barrel is only 5 gallons, smaller than I usually like to use; I prefer 10 gallons at a minimum, but preferably 15 and 30 gallon barrels. Reason being, the well-documented fact that volume to surface ratio isn't ideal with smaller barrels. First, they tend to extract wood character much more quickly so over-oaking can be a concern. Second, you tend to have larger losses to Angel's Share, increasing headspace which can lead to oxidation issues with long-term aging. This barrel has already gone through a few fills, so the risk of over-oaking is reduced. To reduce the risk of oxidation and Angels' Share losses, I decided to wax the entire barrel (both heads and all staves) with beeswax. This will reduce micro-oxygenation via capillaries in the wood, so it should allow me to age the beer longer than if it wasn't waxed. I've used this method on other smaller barrels and it's worked great. 


My process for waxing a barrel is melting beeswax or paraffin in a double boiler, painting it onto the exterior of the barrel (spread it as thin as possible while coating the wood evenly), then hitting it with a heat gun. The heat gun will re-melt the wax allowing it to penetrate into the wood and excess wax to drip off the barrel. Oh, one note here, be sure to spread out a tarp, drop cloth, or something similar to protect surfaces from dripping wax. For a small barrel like this, I used a large piece of aluminum foil to catch dripping wax. 


Here's the recipe as I'm brewing it today, which is a slightly different version than the previous versions:


Target OG: 1.105
Target FG: 1.030
IBU: 45
ABV: 10.0%

13.625# Crisp Marris Otter
14oz Simpsons Chocolate Malt (*cold steeped)
14oz Weyermanns Chocolate Rye Malt (*cold steeped)
14oz Crisp Pale Chocolate Malt (*cold steeped)
14oz Simpsons DRC
11oz Simpsons Light Crystal
11oz Flaked Oats
3oz Crisp Roasted Barley (*cold steeped)
42g Magnum (FWH)
1g BrewTan B (Mash)
Whirlfloc (Flameout)
Wyeast Nutrient (10 min)
4.66g BCAA (10 min)
LalBrew® House Ale Yeast
Zinc Buddy




Cold steep roasted grains (1lbs/2qts RO/Distilled water) overnight. Last time I added the cold steeped liquor near the end of the boil and it diluted the wort quite a bit. This time I'm adding it at the beginning of the boil.

Mash at 153F, collect ~7-7.25 gallons pre-boil volume (including steeped dark grains), 120 minute boil. Start fermentation at 60F, ramping up to 65F over 5 days. Transfer to CO2-purged barrel once primary fermentation is complete (~2 weeks). I plan to start tasting samples at about the 2 month mark in the barrel. 

Note: This recipe is based on the Chocolate Achromatic Stout, but it works well without the chocolate additions. For the Chocolate version (5 gallons), add 8oz of roasted cacao nibs and one vanilla bean after fermentation is complete. Leave cacao in for 1-3 days (taste daily) and remove when desired character is achieved. Leave the vanilla bean in for 2-3 weeks then transfer for packaging. Or...do The Bomb Tincture method which simplifies the process and yields excellent results. 

Water Profile
Target Water Profile
Ca Mg Na SO4 Cl HCO3
50 5 33 35 45 140

The last time I brewed this was in Utah where the tap water is great for brewing dark beers. Florida has pretty hard water which is usually great for dark beers as well, but it can be a little sulfury. I'm going to use Beersmith's Black Full water profile for this beer. To 11 gallons of RO/Distilled water, add: 
  • 3.6g Epsom Salt
  • 3.8g Calcium Chloride
  • 5.6g Baking Soda
  • 2.9g Chalk

Brewing Notes

My first runnings gravity was much lower than in the previous batch. I suspect channeling through the grain bed may have occurred. I usually add rice hulls but skipped them this time, which is likely the cause of the unexpectedly large drop from target gravity. To compensate, I had some dark DME on hand in case the end-of-boil gravity fell short of my 1.105 target. With about 10 minutes left in the boil, I added 1.25 lb of Briess Traditional Dark DME. For future batches, I may switch to my 20-gallon mash tun, as the shallower grain bed should reduce compaction and the risk of channeling  

Starting volume in the kettle was about 7.25 gallons.

Session Readings
Beginning mash pH 5.27 
Ending mash pH 5.25 
1st running gravity 22.2 (1.090)  
Pre-Boil gravity* 15 (1.059)
Pre-Boil pH* 5.19 
Post-Boil gravity26 (1.106) 1.1059 per Tilt 
Post-Boil pH 4.96 
*After adding steeped grain liquor.

Update 3/23/2026
Per the Tilt, gravity has dropped about 5-7 points as of this morning and I'm seeing active signs of fermentation in the airlock. I had considered giving it another dose of oxygen this morning, but seeing the fermentation is quite active I decided to skip it.

Update 3/24/2026

Per the Tilt, the gravity is down around 1.085 this morning. I went to bump the temp up slightly and saw I had a mess to clean up due to the super active fermentation. Safe to say there are some happy yeast in there. I haven't had a messy blow-off like this since I got the domed lids and fabricating 1/2" stainless blow-offs for my fermenters. I've temporarily removed (and cleaned) my airlock setup. I'll probably reinstall it later today assuming it still isn't actively blowing krausen.

Update 3/25/2026
Krausen blow-off started slowing down late yesterday and seems to have stopped overnight, so I’ve cleaned and reinstalled my airlock setup. Per Tilt, gravity is down around 1.046 this morning. 

Update 4/6/2026
Gravity seemed to finish at about 1.036. I have left it in the fermenter and it's been slowly creeping down to about 1.033 and seems to be approaching 1.032. I'll probably look to transfer the beer to the barrel later this week.

Read more...

Blonde Ale 2026

>> Saturday, February 07, 2026

AI Representation of SRM

Today I'm brewing another style that I really haven't brewed before, a Blonde Ale. This style is an easy drinking, lightly hopped, lightly colored ale. I used to joke that a Blonde Ale is essentially an ale version of a Standard American Lager, and it kind of is. The BJCP guidelines describe the style as follows: 

Easy-drinking, approachable, malt-oriented American craft beer, often with interesting fruit, hop, or character malt notes. Well-balanced and clean, is a refreshing pint without aggressive flavors. 

With warm weather returning to Florida in the not too distant future, this should be an easy drinking and refreshing "lawnmower" beer. I'm also planning on entering this beer in some upcoming competitions.

One other note, equipment update today! I replaced my 12-ish gallon stainless mash tun with a newly acquired Blichmann G2 kettle/mash tun that also features a Blichmann Autosparge setup. I already had a 20 gallon Blichmann G1 kettle/mash tun that I got from my buddy Jerry back in Utah. I primarily use it for larger batches and high gravity batches. I love all the features on it like the sight gauge, the heavy duty false bottom, and easy to clean and adjust linear flow valve (I replaced the original ball valve with the linear flow valve). I'm excited to have these same features in a smaller format. The Autosparge is an added bonus and will help ensure the inflow of sparge water always matches the outflow of mash liquor from the mash tun. During the sparge, I try to shoot for about 1" of sparge water on top of the mash. This has always proved difficult to maintain as it required constant adjusting of the inflow and/or outflow to maintain the proper depth. The Autosparge should greatly simplify things.

Lastly, to give credit where credit is due, this recipe is based on the gold medal beer by Zachary Miller. I'm using Proximity Pale malt instead of Rahr Pale malt, and Solstice Pilsner malt instead of Weyermann Pilsner malt. I also didn't realize CaraHell wasn't available locally, so I'm substituting Rahr Dextrine and Crisp CaraMalt in place of 0.5# Weyermann Carahell. I'm using House yeast instead of Omega OLY-011 British Ale V. Here is the recipe as I'm brewing it today.

Target OG: 1.049
Target FG: 1.009
IBU: 17.2
ABV: 5.3

3.75# Proximity Pale Malt
2.75# Solstice Pilsner Malt
1.875# Weyermann Munich I
6oz Rahr Dextrine Malt
2oz Crisp CaraMalt
1g BrewTan B (Mash)
7g Citra (FWH)
7g Citra, (5 min)
28g Centennial (25-min hop stand @160F)
Whirlfloc (Flameout)
Wyeast Nutrient (10 min)
4.66g BCAA (10 min)
LalBrew® House Ale Yeast 
Zinc Buddy

Mash at 149F, acidify mash liquor to a pH of ~5.3. Chill to ~63F, then oxygenate well and pitch yeast, Zinc Buddy, and ferment at 65F for 2 weeks. 

Water Profile
Target Water Profile
Ca Mg Na SO4 Cl HCO3
69 0 8 38 97 10

To 11 gallons of RO/Distilled water, add:
  • 8.0g Calcium chloride 
  • 2.9g Gypsum
  • 0.4g Pickling salt
  • 0.6g Baking soda

Brewing Notes

No issues during this session. New mash tun (MT) is awesome. Being able to accurately measure strike water volume is great and makes hitting the desired mash temp a lot easier. My HLT has volume markings, so I was able to ballpark it with the old MT, but being able to see the volume on the MT itself is definitely better. I was shooting for a mash thickness of about 1.5 quarts per pound (3.32 gallons strike water into the MT). Given the volume that the pump, hoses, and RIMS hold, this was a little thick. Volume was showing about 2.25 gallons on the sight gauge after I started recirculating (didn't even reach the temp probe). Next time I'll probably shoot for 1.75-2 quarts per pound and see how that does. On my old HERMS configuration I usually did 1.75-ish quarts per pound and that worked well, but it also held less volume than the RIMS Rocket.

Everything else went great during the brew day. The Auto-sparge is a game changer when fly sparging. I know lots of people prefer to batch sparge (or even no sparge) but I've always done fly sparging and this Auto-sparge works exactly as I expected it would. If you fly sparge, I can't recommend the Auto-sparge highly enough. 

One other thing I forgot to mention, I shorted my mash time from 60 minutes to 40 minutes. I've seen lots of articles explaining most starch conversion is usually completed within 20-30 minutes. Additionally, I've read that conversion is typically faster when you do a recirculating mash like mine, so I decided to try taking it down to 40 minutes. 

Session Readings
Beginning mash pH 5.20 
Ending mash pH 5.21 
1st running gravity 20 (1.081) 
Pre-Boil gravity10.1 (1.039) 
Pre-Boil pH 5.28 
Post-Boil gravity13.8 (1.054) 
Post-Boil pH 5.19 

Update 2/9/2026
Fermentation is moving along nicely. Gravity is reading ~1.015 on the Tilt this evening, but it's read as low as 1.003, so it's been a pretty active fermentation. Assuming it fits the same timeline as the last batch with this yeast, gravity readings will likely start to stabilize tomorrow.

Update 2/20/2026
This beer went into the keg today with Biofine. Based on the sample I pulled off the fermenter, I think this is going to be a great warm weather beer. I'm currently planning on filing a few bottles and putting it into a couple comps once it's carbed.

Read more...

Rib Rub #1

>> Sunday, January 18, 2026

Today’s recipe is for a meat rub that’s intended to clone one we discovered years ago at Sam’s Club. It’s kind of funny, I enjoy Indian food every time we have it, but I never crave it. I love ramen, but my wife never craves it. She likes BBQ more than ramen, but she still doesn’t crave it, mostly because BBQ can be pretty filling and a bit fatty. But the first time we tried the rub from Sam’s, both of us agreed it was one of the better rubs we’d tried and we both really liked it. The rub was Durkee brand Chicken and Rib Rub. Fast forward a couple years and unfortunately Sam’s stopped carrying our favorite rub and then Durkee stopped making it. Fortunately, Weber started selling as Weber Chicken 'N Rib Seasoning. I’ve tried the Weber version and I think it’s the same or very close to the Durkee one, but my primary complaint with it is I can’t find it locally and the packaging is so small that I have to order it every few cooks. 

Long story short, with the help of ChatGPT I decided to try cloning the blend so I wasn’t having to order it from Amazon all the time. I’m not confident the first attempt will be a perfect clone, so my plan is to try it then tweak it until I get close to replicating the Durkee version or discover a recipe I like as well or better. 

I mixed a batch up this afternoon and rubbed it on some pork spare ribs that I plan on smoking tomorrow. It definitely smells very close to both the Weber and Durkee versions, but the color is definitely a little darker and more reddish compared to the more orange-ish commercial versions. I tasted the rub and I think does taste pretty close but I think I can get closer. Anyway, here’s the first attempt:

Batch size 100 grams, probably enough for at least three racks.

18g Maltodextrin - I used LD Carlson from my local homebrew shop. The maltodextrine will help prevent clumping and adds a light sweetness.
22g Light brown sugar, dried in the oven @175F for about 90 min. 
18g Sweet Paprika
6g Smoked Hot Paprika
12g Kosher salt
8g Garlic powder
7g Onion powder
4g Chili powder (mild, American style)
2g Mustard powder
2g Celery salt
1.5g Black pepper, finely ground
0.5g Cayenne pepper

Use a spoon or fork to blend until well mixed. Apply liberally and evenly to ribs, chicken, pork shoulder, etc. and rub in well. For pork, I like to apply it the night before I plan to smoke, then apply another light coat right before putting the meat in the smoker.

Update 2/3/2026
I wasn't able to provide an update before I had to head out of town for work. I used this on some pork spare ribs and they turned out well, but definitely not a cloned rub. I felt like it needed more salt, and likely more garlic. The paprika ratio also isn't right as this rub went on more reddish while the Weber version is more orange/salmon color. Regardless, I think it was a good starting point and I'll continue to play around with it.

Read more...