Archive for the ‘Beer’ Category

Beer IoT (Part 8)

Strike up the band, it’s time for the eighth, and final, installment of this fermentation instrumentation series. In part four, I placed several different sensors in several different carboys of beer beginning fermentation. In parts six and seven, I analyzed a week of data from two of the sensors. This post will cover the third sensor, a floating accelerometer.

screen-shot-2017-02-20-at-1-30-20-pm

The ADXL345 provides three readings for each sample: one for each axis in 3D space. I’m using the chip in “2g 10-bit” mode, which means each axis will report a number from -512 (2g negative acceleration) to +512 (2g positive acceleration). In this case, the only acceleration I want to measure is gravity, so I should see only values between -256 (1g negative acceleration; “this axis is pointing straight down”) and 256 (1g positive acceleration; “this axis is pointing straight up”). Using a bit of trigonometry, I should be able to figure out the angle at which the sensor is tilted.

My float is sort of a rounded rectangular prism. I’ve oriented the sensor such that the y-axis is in line with the long axis of the prism, with the positive end pointing toward the end I expect to float. The x-axis is horizontal across the short axis of the prism, and the z-axis is pointed “up”. The expectation is: y will start about zero, or slightly positive, as high buoyancy keeps the float “flat”; x will start about zero as well, because any dip should be along y; and z will start near max, almost straight up. As the beer ferments, reduced buoyancy should cause one end to dip, causing y to increase (because it will point upward more steeply), and z to decrease (because it will move off of straight upward), with x staying the same (because the rotation should be around that axis). So what actually happened?

screen-shot-2017-02-25-at-7-01-16-pm

Pictures may be worth a thousand words, but I’m pretty sure this one just says, “Not that.” We have both x and z increasing, and y is doing … I’m not even sure. Let’s see if there is anything to salvage.

Let’s check an assumption first. I’m expecting to only see acceleration from gravity here, so the total acceleration should always be 1g (plus or minus some measurement noise). We can check that with a bit of Pythagorus: the square root of the sum of the squares of the readings should be a constant 256.

screen-shot-2017-02-25-at-7-08-08-pm

Except for the sudden change in the middle, it’s a variance of about 1, which is 0.0039g for this chip. It’s interesting that it’s only 252 max, and I have no idea what that sudden shift is (it seems correlated with a sudden shift on the z axis, but nothing on the other axes), but it does look like we’re measuring approximately a constant 0.97-0.98g force.

The increasing x may a bit of a red-herring. It just means that the tube is “rolling” (turning around its long axis). This is why z is increasing as well: x returning to horizontal around the unchanging y axis means that z is returning to vertical. There is a chance that the float is rolling instead of tipping as buoyancy changes. This might be worth returning to later, but let’s see if we can save y first.

Despite the fact that our sanity check showed that we’re reading constant gravity as we expect, and therefor all axes agree, we could use Pythagorus again to compute what the value of the y reading should have been, given x, z, and our expected force:

screen-shot-2017-02-25-at-7-08-45-pm

The synthesized y reading is in blue, while the actual y reading is in red. This graph used 256 for the expected gravity. Let’s instead use the 253/250 mix we saw before, which will also account for that unexplained shift in z:

screen-shot-2017-02-25-at-7-09-50-pm

Many features are similar between these plots, but we appear to have exaggerated a somewhat steady descent in y during the period that x and z where steadily climbing (Feb 19 through 21). I expected y to start around zero and become more negative over time. Starting above zero, and decreasing anyway just means that the sensor was tilted away from the expected sinking angle to start. Interestingly, y moving from slightly up to closer to horizontal will also have the effect of bringing z up closer to vertical, just like x moving from negative toward zero did.

If the rolling is not the result of buoyancy change, then this change in y alone leaves us with a change from early Feb 19 mid afternoon Feb 21 of either 33-22 (computed, blue line) or 10-5 (observed, red line). asin(33/256) = 7.41º, asin(22/256) = 4.93º; asin(10/256) = 2.24º, asign(5/256) = 1.12º. Using 252 instead of 256 only alters the result by 0.1º. So, a change of at most 2.5º, and at least 1º. A bit of a narrow bad, if you ask me.

If the sensor shifted during placement, the x axis might be measuring pitch instead of roll. But if even if not, what if the fermentation primarily produced rolling instead if pitching? The x reading swings from -115 to -100. That’s 26.7º to 23º, meaning a change of 4.3º. That’s more, is about all that can be said about that.

If we take both roll and pitch together, we can just consider the change in z, but we also have to ignore the sudden shift near the end of the time range we were looking at. That gives 223 to 231, or 60.59º to 64.46º. Still just 4º change.

screen-shot-2017-03-04-at-6-37-33-pm

If I return to the design of the float, its weight of the float is 1.8oz. So, to float in fresh water, it will have to displace 1.8oz, or 3.24 cubic inches. The float is 4 inches long, by 1 3/16 inches wide, by 7/8 inches tall. A rough estimate places that at 4.15625 cubic inches. The rounded edges are tricky, though. Measuring via displacement shows it’s actually about 3.5 cubic inches. So, what I have is a float that is only just barely floating in water. That was the aim, and what was observed, but good to see the math line up.

If the float has to displace 3.24 cu.in. of water at specific gravity 1.000, then at our starting gravity of 1.040 it only has to displace 3.12 cu.in. of unfermented beer, and 3.22 cu.in. of beer at the finishing gravity of 1.0075. So we’re looking at a change of 0.1 cubic inches of displacement.

I found the center of mass to be about 3/8 inch closer to the end that is expected to sink. That’s not a huge margin of influence, but since the float will be almost entirely submerged anyway, it’s probably enough. The heavy end also happens to have less volume, due to the curvature, so it should have to sink more to displace the same amount.

Calculus is probably the correct way to solve this problem. 18.01 was a long time ago, though, so I’m hoping I can fudge it. Instead of trying to figure out how far this float should have tipped, let’s figure out if a 4º pitch could have changed the displacement 0.1 cu.in.

If we’re already mostly-submerged, we’re looking near an edge that is not 1 3/16 inches wide, but instead closer to 0.75 in (due to curvature). If the float were flat (which the y and z axis readings mostly suggest), 0.75 * 3.75 in would be above water 0.036 in. If we pitched that 4º, we would lose 0.12 cubic inches into the water:

Height lost at 4º over 3.75″: (sin(4/180)*3.75) = 0.08332647479 inches

Volume of 0.083 x 3.75 x 0.75 ” triangular prism: 0.75 * (0.083 * 3.75)/2 = 0.117 cubic inches

So 4º could actually the correct change for these parameters! This does require that the x and z axes were reading pitch, and not roll, though. A 4º roll with these parameters is only a change of about 0.02 cubic inches.

A final check: how well does the shape of this data match the shape of the BeerBug’s?

screen-shot-2017-03-04-at-6-03-56-pm

Comparing the Z axis, it looks like the story is similar to the pressure sensor: the change plateaus at about the same point as the BeerBug, signaling the end of primary fermentation. If the 4º change was measuring the correct thing, then math would have told me the correct final gravity, but it would have been much easier to have developed a calibration table with known angles of specific gravities beforehand.

That wraps up this experiment. I’ve added this data to the gist containing the other sensor data. What’s next for this beer sensing story … ?

For the BeerBug, it may be worth continuing to use their service. The device works when the service works, as shown in this data. If anything, I think I’d work on snooping its communication, so I could tee it off to my own storage, in case their service goes down again.

For the pressure sensor, it’s mostly about a new housing, and then calibration to that housing. It needs something that is both heavy enough to sink, and also flexible enough to compress. If both of those are taken care of, it seems like calibrating to known specific gravities may actually provide decent data.

For the tilt sensor, it’s also about a new housing. The weight distribution needs to be far more unbalanced, to ensure a larger change in angle. Something narrower, so that more sinking is required to balance displacement, would work to. If those can be taken care of, then calibration may make this as good as other options.

Both the pressure sensor and the tilt sensor would also benefit from getting the Helium Atom and battery onboard. Current results are probably affected by the cable running out of the carboy. For now, this would require fermenting in something with a wider neck, since the development board is too wide to fit in the carboy. That’s easy to do, and would avoid me having to design my own printed circuitry.

What was really amazing to me is how easy this sort of thing has become. A week after I got hardware, I put it into service. I2C is a nice standard communication protocol. Lua is a quick language to pick up. The Helium chip, library, and service work very smoothly. Between the dev kit and the sensors, I’m over $100, but less than $200 into this exploration. I can see why people are excited about IoT these days – it’s easy to get started, and fun to participate.

But for now, there are two cases of beer to sample in a couple of weeks, and they’re stacked under earlier brews, so I won’t have any more fermentation to measure for a while. I’m setting up one of my Atoms to monitor the temperature in the conditioning closet. I wonder what I should start measuring with the other.

Beer IoT (Part 6)

Welcome back for part six of the fermentation instrumentation series. In part four, I placed a few different sensors in some actively fermenting beer to gather data. A week has now passed, and I’ve bottled the beer. Time to look at the data. Let’s start with the device we know – the BeerBug.

screen-shot-2017-02-20-at-1-22-45-pm

We’re lucky this time. New owners have just taken over BeerBug operations, and they’re relaunching the product. Unfortunately, that means they’re going through a bumpy transition period. While I was brewing, I could see the latest reading from my beer, but none of the history. But, after a lengthy email exchange, they have pulled through, and I have the data for this batch.

As before, I’ve uploaded the data to Helium’s servers. This is mostly so I can use the same tools for processing the data for all three of the batches in this experiment. So, with out further ado, this is how the BeerBug thought the specific gravity of my English Mild changed over the week:

screen-shot-2017-03-02-at-9-28-47-pm

This is pretty typical. All the way at the left, we have the gravity that I specified as my starting point, what I read from my glass hydrometer: 1.039. The phenomenon that has been observed for every beer, but is as yet unexplained, comes next: the climb to a higher gravity. This probably has something to do with the initial yeast activity, as they rapidly reproduce throughout the beer, consuming the dissolved oxygen, and beginning to produce carbon dioxide. The gas exchange or cell proliferation may change the buoyancy observed by the BeerBug’s float.

After the initial climb late Saturday, we dive right into the expected steady decline in gravity over the next few days. By night time on Tuesday, the gravity has nearly leveled off. A much slower decline continues as the few yeast cells that haven’t starved continue to find some sugar to eat. By the time I bottled on Sunday, the BeerBug read 1.006. My regular glass hydrometer agreed ±0.001. That’s pretty impressive.

The other thing that seems impressive is that there is far less noise in this data than there was in the BeerBug data from part three of this series. I think the explanation for this begins with the fact that there are fewer points in this dataset. In part three, there was a reading every minute. In this dataset, there is sometimes a reading every minute, but sometimes a reading only every 3, 5, or 10 minutes. This might represent a new strategy in the BeerBug firmware – if the measurement variation was white noise, averaging over longer periods should reduce it. Or, it could be just missing data, which would make the error band (the light blue) close in on the average (the dark blue), because the average *is* the data if you remove enough.

The BeerBug also has a temperature sensor in the housing that sits above (outside) of the carboy. Here is its data, in blue, with the temperature data we looked at from one of the Helium boards in part five of this series, in red:

screen-shot-2017-03-02-at-11-03-53-pm

 

The readings begin only a degree and a half or so off, but the drop into Sunday morning is deeper for the BeerBug. Its readings also stay consistently nearly 3ºC cooler. This was unexpected, given the placements of these sensors. The Helium sensor was closer to an external door, and the BeerBug was just a few inches above active yeast. I’ll chalk it up to simple differences in the characteristics of the sensors, for now.

I’ve uploaded this data to a gist in CSV format, if you would like to examine it yourself. In the next post, we’ll look at the data from the pressure sensor, and see if we can find a shape similar to the BeerBug’s.

Update: part seven is live with pressure data.

Beer for Wine Lovers

As I sit here enjoying a home-brewed wine (!) that my parents made last fall (great, guys, by the way!), I’m reminded of a thought I had a few days ago, reinforced at yesterday’s NERAX North event. I was reading a piece in the New York Times about cask-conditioned ale, when I noticed that the piece was written by their wine reviewer.

As I was grumbling about a the Times sending their wine reviewer to do a beer review, it occured to me that the pairing was actually perfect: there is no beer that a wine-lover is more likely to enjoy than a properly-served cask-conditioned ale.

Think about it. What are the main differences between wine and your typical beer? Forget grapes vs. barley – those are inescapable. The three that come to my mind are: carbonation, serving temperature, and flavoring particles.

To start with, most wine is uncarbonated. Unless you’re specifically talking about champagne or sparkling wine, the assumption is that wine is still. Some people prefer their beverages this way. No sparkling on the tongue or in the nose, no unfortunate gaseous releases to deal with later.

What they don’t know is that most craft beer, especially true for cask-conditioned and “real ale”, has much less carbonation than macro-brewed beer. Artisanal brewers realize that large amounts of carbonation only hide the flavor of beer. The mild carbonation is intended only to keep the beer dancing on the tongue, and they stop before it goes all house-bouncing-rave style. Someone expecting a typical beer may even complain that what they got was flat. I think a wine-lover could truly appreciate the stillness and lack of distraction from the beer’s other flavors, though.

Most wine is also served only mildly chilled. Whites are often cool on the tongue, but reds are usually nearly room-temperature. Again, a certain amount of personal preference plays into the choice. Teeth are sensitive to temperature swings. There’s less pressure to finish a beverage before it gets warm, if it starts out at room temperature.

But, here again is a place where cask-conditioned ale stands apart. Casks live in, and are served from cellars. As such, the beer in them is served at “cellar temperature”, usually around 50ºF. At this temperature, the beer’s flavors are much more available to the tongue. Beers served colder, sometimes even “ice cold”, numb the tongue as they’re drunk. The tongue is so frigid, it can’t tell if it’s drinking beer or iced tea.

But what about the flavor? Even if you serve with less carbonation and a higher termperature to allow the tongue to taste more, what if you don’t like the taste of beer? Certainly, wine is made from grapes, and beer is made from barley, and they taste different. But, there is one flavor aspect that are extremely important to many wines: tannins.

Tannins come from woods, and that skins of fruit, leaves of plants, and hulls of grains (really just the “fruit” of grasses). Homebrewers are familiar with cautions not to heat grain too high lest they extract the tannins of the hulls. However, cask-beers do extract tannins from another source – the cask! Yes, the wood in the barrel, often the same wood used in wine barrels, contributes tannins to the beer contained within. Familiar flavors for the wine connoisseur, right there in cask-conditioned ale.

Wine, served still, at or just below room temperature, drawn from a wooden container. Beer, served only slightly sparkling, just below room temperature, drawn from a wooden container. Now you’re just down to grapes vs. barley and hops. I think there may be hope for converting the wine-lovers yet. 🙂

(And if you really want to push the grapes vs. barley and hops argument, I’ll offer two for comparison: mead (honey wine) and Brackett ale (honey and malt). Where’s the difference now?)

Why YOU Should Drink Green

Wait! Before you skip this post thinking that I’m just another “tree hugger” ranting about saving the planet, I want to tell you that I’m going to divide this post into two parts. The first part will be reasons you should drink green that only affect your enjoyment of the beer. Only the second part will be about why drinking in this manner also saves the planet. I’ll let you know before the switch.

Okay, well let’s get on with it!

First of all, there are several things you should be doing to ensure that you’re drinking green. In no particular order, here are my top several:

  • Drink from a glass.
  • Drink local beer.
  • Drink seasonal beer.
  • Drink ales.
  • Drink barley.
  • Enjoy cellar temperature.
  • Love yeast.

Some of those are going to need explaining. So, here are the reasons for each of them, in how they relate your your beer enjoyment.

Drink from a glass. If you’re drinking from a bottle, you’re severly limiting your ability to taste the beer. A large portion of a human’s taste sensation comes from smell. A glass allows your nose to get right down in the aroma.

Drink local beer. For all of its exploits, all around the world, beer is, at some level, a fragile, tempermental beverage. It needs to be stored in a dark place, at a proper temperature. Even then, it has a maximum shelf life of only a few months. Drinking locally means that you have the best chance of enjoying that beer before it has been subjected to terrible storage practices.

Drink seasonal beer. Same as above, beer has a maximal shelf life, and should be drunk as soon as it’s ready. Find out what’s in season and drink it in its prime.

Drink ales. The world of ales is vast. Pale, IPA, Brown, Strong, Stout, Porter, Wheat, Red – and that’s not even making a dent. If you’re looking for a particular flavor, there is an ale to match it.

Drink barley. If you’re a typical American, you get your daily fill of corn without even thinking about it. Demand that your beer supply you with something else. Barley has a complex flavor all its own, and nutrients to match. Seek the different roasts, and never be bored.

Enjoy cellar temperature. Ice-cold serving does one thing: numbs your taste buds. You’re drinking a fine beverage – why would you want to avoid its taste? Store and enjoy your beer at cellar temperature – you’ll find more flavor that way.

Love yeast. Yeast is a very simple organism that plays a very large role in beer’s flavor. Some beers (include real ale, unfiltered wheats, and bottle-fermented varieties) still have yeast (alive and/or dead) in the beer while you drink it. This adds yet another flavor for your tongue to ponder. Yeast is also a great source of vitamin B – so it’s good for more than just your tongue.

Alright, this is the point where I go all tree-hugger on you. Hopefully I’ve caught enough of your interest with the points above that you’d like to know why these things are important for more than just taste. If so, read on.

Drink from a glass. If you’re drinking from a glass, you most likely had your beer poured from a keg. That means no extra energy was wasted on making a bottle, cleaning a bottle, or transporting a bottle. Just make sure it’s a reusable glass.

Drink local beer. If your beer is made locally, much less energy has been used in getting it to you.

Drink seasonal beer. It takes extra energy to provide conditions in which to brew unseasonal beer out of season. Embrace the cycle.

Drink ales. Lagers must ferment (and be stored) at much lower temperatures than ales. If you know someone that still makes lagers by burying casks in caves, covering them with ice harvested from a lake in the winter, then good for you, and drink up. However, most lagers are brewed by refrigerating large warehouses, and delivered in refrigerated trucks.

Drink barley. Americans are practically made of corn. Barley is an excellent source of nutrition, and encouraging its growth means that our farms have other profitable crops to fall back on when weather ruins corn crops. It’s unhealthy for the planet to run farming monocultures.

Enjoy cellar temperature. Even if you’re not drinking a lager, if your ale is served ice-cold, it’s being refrigerated in a way that is completely unnecessary. Turn the thermostate up a few degrees, and save some watts.

Love yeast. Naturally-fermented beer requires no extra piping of CO2, no extra pump pressure to force beer through a filter, and no extra cooling. And, you get smaller bubbles (which make for thicker head) without bothering with a Guinness-style nitrogen “widget”.

So there you have it. Drinking green – good for both you and the Earth. If you’d like to read more about the benefits of drinking beer responsibly, I recommend Christopher Mark O’Brien’s Fermenting Revolution.

-Bryan

P.S. This post is part of Blog Action Day. Yes, I agree that actions speak louder than words, but I already act on the words I wrote above, so I figured adding the words couldn’t hurt.

P.P.S. I know it’s been a while since I posted here, and this post isn’t likely to be on the topic many of you were hoping. But, I assure you that there is BeerRiot development going on. I’ll be posting about it soon.

American Beer Fest Review

Night of the Lagers was awesome. There were quite a few beers there that really did break from the stereotype of Fizzy Yellow Water ™. In particular, I’d call attention to The Tap’s Pilsnaah – really a great example of what I think a pilsner-style beer should be.

There were also beers that didn’t appeal to me, of course, but the big news of the evening was Harpoon’s absence. The brewery sponsor, with their Official Beer of the fest, Pre-Prohibition Lager, didn’t even show up Friday night. The word is that the “Pre-Pro” turned out so bad that they refuse to serve it. Very sad, if not fitting that the recipe from the old days fell to the problems of the old days – you never knew what would come out of a barrel after months of storage.

Anyway, I’ve added the rest of the line up for Saturday’s sessions under the same tag. Please log in, rate, and comment if you’re going today. There are quite a number of beers on the list that I really wish I could be there to try myself!

American Beer Fest

Alas, BeerAdvocate’s American Beer Fest is upon us. If you haven’t bought your ticket yet, get out there and find one. I know a lot of people like to joke about the quality of American beer, but these fests really prove that the joke is only funny to those that don’t know anything about beer. We really produce some wicked good beer here.

I’ve gone ahead and added all of the beers that will be available Friday’s Night of the Lagers. That should make it easy for all of us to record our impressions Saturday morning.

Us?! Why yes, if you happen to be at Friday night’s session, we may bump into each other. You’ll recognize me. 😉 Don’t be afraid to say hi – I’d love to hear what you think of the site.

Don’t forget your pen – it’s almost impossible to remember which beer was which 12 hours later.

P.S. I’ll probably add the beer list for the Saturday sessions sometime Saturday morning, unless someone else beats me to it.

BeerRiot – Local

As some of you may have noticed, BeerRiot – Local is live. Thanks to Corey for planting the seed – it’s a mashup of Brewery locations and Google Maps. It’s not exactly what I had planned at the outset, but I think it may be even better. 🙂

I call it “Local”, but in reality, I just dump all of the breweries I know about onto the map. If you scroll away from wherever the map started, you’ll find all of the other breweries in the proper places.

This makes things a little slower – there’s over 100 pins on there. I checked out ACME’s “Clusterer”, but I just wasn’t happy with the interaction it gave. I’ll have to come up with some other solution soon, but for now, it looks like things actually run pretty decently as long as I’m not browsing with the G4 on which I’m also running my SQL server, web server, Safari with 10 other tabs, iTunes, emacs… You get the idea.

So, why Local as the next feature? Well, it has been one of the most requested features for one thing. For another, I really think it’s important to drink locally. Drinking locally immerses you in the culture of the location, supports the smaller-scale guys honing their craft, and saves energy. Try some homebrew for the ultimate in local, but barring that, seek out any professional in your area and find our what they’re pouring.

If you’re interested in more reasons that drinking locally (or even just drinking beer in general) is a good idea, I recommend finding a copy of Chris O’Brien’s Fermenting Revolution. Hey – and it looks like Chris has a wordpress blog too.

BeerAdvocate’s “Judging Beer”

BeerAdvocate Magazine’s Defending Beer article in the May 2007 issue, titled “Judging Beer”, speaks directly to the problem that we at BeerRiot are trying to solve.

“Beer, by its very nature is an inherently subjective commodity,” writes Andy Crouch. The rest of the article continues to list a number of the flaws in official contests and the fickle nature of popularity.

I couldn’t agree more. No expert can cover the tastes of every individual. Nor can any majority. It doesn’t matter how many people like a beer. If you like it, you like it – the fact that someone else dislikes it shouldn’t change that.

This is the aim of BeerRiot. Rather than bore you with the opinion of yet another expert, or confuse you with yet another popularity contest, we attempt to find those people that are actually more likely to have opinions you agree with. The scores you see here are based only on the opinions of those people.

We hope it will be just like learning about beers from your close friends. You know exactly which ones to trust and which ones to question. Here we hope to enable you to filter a much larger population automatically.

(By the way, if you are anywhere near Boston the weekend of June 16, you owe it to yourself to get tickets to BeerAdvocate’s American BeerFest. Nowhere will you find more beers to taste at one time.)

The Case Against Styles

It was one of my first decisions, and it resulted in one of the first feature requests submitted. BeerRiot does not acknowledge “style” as an intrinsic property of beer. Beers are not classified by any of the terms people toss about in relation to beer today.

Here’s why.

First off, what does it matter what style the beer is? If you like the beer, you like the beer. I want to try to help people not to pigeon-hole themselves. I’ve seen far too many people decline to try a beer because, “I don’t like stout.” (or whatever the style happened to be at the time)

What do you mean by “stout”? Terms are so overused these days. I’ve had stouts that are thick, thin, bitter, sweet, and different in many other ways. About all I can be assured of any more is that a beer labeled “stout” will be dark in color. That doesn’t help me in my beer selection. The same goes for other styles, but stout comes up often.

Is that stout really a porter? Not to harp on stout more, but it seems like a brewery will choose to call a beer either “stout” or “porter” depending on which way the wind is blowing that day. I’ve not heard a good explanation for the difference other than in official contest rules. Those rules seem not to apply outside the contests.

According to many beer afficionados, that which we call porter today has very little to do with the porter of yesterday. In fact, some say we don’t even know what made up the original porter. (Yes, I know those last two sentences can be contradictory – take them in the way that they are not so.) This seems to happen with more styles daily. Just a month ago I heard some pundit refer to “brown ale” as Altbier – a personal offense to one of my favorite styles.

Finally, what about those beers that really do span styles? Many, but by no means all, wheat beers contain fruit, which would make them fruit beers. But, there are fruit beers that are not wheat-based. Clearly a fruit-wheat beer fits in more than one style, and a separate fruit-wheat style seems like overkill.

So, given that styles don’t give much information, and that information is constantly changing, I chose to just leave the whole lot out.

However, I do recognize that more than wanting to know what kind of beer is being recommended to her, a rioter may want to explore a particular style of beer. For that purpose, I think tags fill the requirement nicely.

With tags, rioters can mark a beer “fruit” as well as “wheat”, “porter” as well as “stout”, or even just “dark-colored”. No endless debates about whether a beer should be moved to a different category. If the shoe fits, put it on. If no shoe fits, make another shoe.