In preparation for our trip to Oregon next week, my wife decided we needed a bottle of Oregon hard cider. Apples and Marion berries make for a beautifully refreshing adult beverage.
View attachment 14716 In preparation for our trip to Oregon next week, my wife decided we needed a bottle of Oregon hard cider. Apples and Marion berries make for a beautifully refreshing adult beverage.
2 Towns!! Hell yea, that's from my hometown I was spoiled by craft cider before moving to the east coast where all I could find was Angry Orchard and Woodchuck
Chinook pale ale and Oatmeal Stout for me (both need another weekish). Then I'm out of homebrew for a while. Modela Negra on deck in the fridge View attachment 14717View attachment 14718
Chinook pale ale and Oatmeal Stout for me (both need another weekish). Then I'm out of homebrew for a while. Modela Negra on deck in the fridge View attachment 14717View attachment 14718
2 Towns!! Hell yea, that's from my hometown I was spoiled by craft cider before moving to the east coast where all I could find was Angry Orchard and Woodchuck
Cool. Next week, my wife and I are driving to Eugene, with plans to have a look around Corvallis. Looking forward to some wet, after another disappointingly dry winter in SoCal.
Cool. Next week, my wife and I are driving to Eugene, with plans to have a look around Corvallis. Looking forward to some wet, after another disappointingly dry winter in SoCal.
Excellent, I grew up in Corvallis! My absolute favorite brewery closed last Spring, but I'm happy to send you recommendations on food/beverage/activities. Lots of great hikes around there
Also my homebrew consumption >>> than my supply chain haha
It is a sad moment, the moment when you take the last pull on the keg, we all know the feeling...
This was the last pull of Wayner's Pale Ale, I will brew this again
First pour of the Irish Stout. My opinion may change but this is the best iteration of it I’ve made. Used Nottingham, thanks @BOB357 , and treated my water. Neither of those I did before. Also my schools boys just won the district title In Basketball.
Defer( function () {
$(document).ready(function() {
if ( ! document.cookie.match(/^(.*;)?\s*bf_adfpv_v1\s*=\s*[^;]+(.*)?$/) ) {
var date = new Date();
var now = new Date();
date.setTime(date.getTime()+(10*365*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
document.cookie = "bf_adfpv_v1="+now.toGMTString()+expires+"; path=/";
}
else {
// Initialize AdSense
(adsbygoogle = window.adsbygoogle || []);
// Affiliate ad override configuration from PHP
var affiliateOverrides = {"top-leaderboard-ad":{"total_percentage":25,"options":[{"name":"House Ad","weight":1,"href":"\/homebrew\/signup","img":"\/homebrew\/images\/houseads_20211207\/take10_signup\/webp\/810X100.webp","width":810,"height":100}]},"inline-unit-ad":{"total_percentage":25,"options":[{"name":"House Ad","weight":1,"href":"\/homebrew\/signup","img":"\/homebrew\/images\/houseads_20211207\/take10_signup\/webp\/810X100.webp","width":810,"height":100}]},"sidebar-block-1-ad":{"total_percentage":25,"options":[{"name":"House Ad","weight":1,"href":"\/homebrew\/signup","img":"\/homebrew\/images\/houseads_20211207\/take10_signup\/webp\/300x250.webp","width":300,"height":250}]}};
// Process each potential ad override
if (affiliateOverrides && Object.keys(affiliateOverrides).length > 0) {
Object.keys(affiliateOverrides).forEach(function(adSlotId) {
var override = affiliateOverrides[adSlotId];
var adElement = document.getElementById(adSlotId);
// Check if ad exists and should be replaced based on total percentage
if (adElement && override.options && override.options.length > 0 && (Math.random() * 100 < override.total_percentage)) {
// Choose an option based on weights
var option = chooseWeightedOption(override.options);
// Build affiliate ad HTML
var style = option.style || '';
if (option.width && option.height) {
style += (style ? '; ' : '') + 'max-width:100%;';
}
var attributes = '';
if (option.target) attributes += ' target="' + option.target + '"';
if (option.rel) attributes += ' rel="' + option.rel + '"';
var affiliateAdHtml = '
';
// Replace the AdSense container with affiliate ad
$(adElement).closest('ins.adsbygoogle').replaceWith(affiliateAdHtml);
}
});
}
// Helper function to select a weighted random option
function chooseWeightedOption(options) {
if (!options || options.length === 0) {
// This case implies an issue with how options are passed or an empty configuration.
// Returning undefined is safer than the original's options[0] which would error.
return undefined;
}
var eligibleOptions = [];
var totalPositiveWeight = 0;
// First pass: Collect options with strictly positive weights and sum these weights.
for (var i = 0; i < options.length; i++) {
var option = options[i];
// Ensure weight is treated as a number; default undefined/non-numeric to 0.
var weight = (typeof option.weight === 'number') ? option.weight : 0;
if (weight > 0) {
eligibleOptions.push(option);
totalPositiveWeight += weight;
}
}
if (totalPositiveWeight > 0) {
// If there are options with positive weights, choose from them.
var randomValue = Math.random() * totalPositiveWeight;
var cumulativeWeight = 0;
for (var j = 0; j < eligibleOptions.length; j++) {
// eligibleOptions[j].weight is guaranteed to be > 0 here.
cumulativeWeight += eligibleOptions[j].weight;
if (randomValue <= cumulativeWeight) {
return eligibleOptions[j];
}
}
// Fallback for rare floating-point precision issues or if randomValue is exactly totalPositiveWeight.
// Returning the last eligible option is a robust choice here.
return eligibleOptions[eligibleOptions.length - 1];
} else {
// No options with positive weight were found.
// This means all original options had weights <= 0 (e.g., all zeros or empty list of positive weights).
// In this scenario, pick one randomly from the original 'options' list,
// giving all of them an equal chance.
return options[Math.floor(Math.random() * options.length)];
}
}
// Initialize all remaining AdSense ads
$("ins.adsbygoogle").each(function() {
$("(adsbygoogle = window.adsbygoogle || []).push({})").insertAfter($(this));
});
var js = document.createElement("script");
js.type = "text/javascript";
js.async = true;
js.src = "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js";
document.body.appendChild(js);
}
});
});