Wednesday, September 28, 2016

Average Scores Across Beer Advocate, Untappd and RateBeer

@BeerBrewin posed an interesting question:  What's the average score across Beer Advocate, Untappd and RateBeer?  So I dug into the data a little bit, and here's what I found:

For beers where a score was retrieved from all three sites the scores were as follows:

Total beers with scores from all three sites:  3,483

SiteAverage Score
Beer Advocate86.5(4.33)
Untappd74.8(3.74)
RateBeer79.4(3.97)

And if you account for all data, you can see it's pretty consistent:

SiteAverage ScoreTotal Number of Scores
Beer Advocate86.1(4.31)3808
Untappd74.2(3.71)6755
RateBeer77.5(3.88)5105



*** NOTE:  The above numbers only include beers that have been entered in beernumbeer, and are not even close to including the entirety of the above site's catalogs.




Sunday, May 15, 2016

Top 100 Most Searched For Beers

What beers are people searching for in a rating app?  The following is a table of the top searches on beernumbeer over the last few months.  It's a good mix of the well regarded (Heady, Pliny) and some of the common macros as well (Bud Light, PBR).  Out of over 6500 unique beers, here are the top 100:

Rank Beer Searches
1 Heady Topper (The Alchemist) 449
2 Pliny the Elder (Russian River Brewing Company) 378
3 Bud Light (Anheuser-Busch) 363
4 Pliny the Younger (Russian River Brewing Company) 223
5 Breakfast Stout (Founders Brewing Co.) 201
6 IPA (Lagunitas Brewing Company) 185
7 Grapefruit Sculpin (Ballast Point Brewing & Spirits) 181
8 Coors Light (Coors Brewing Company) 153
9 Zombie Dust (3 Floyds Brewing Company) 151
10 Pabst Blue Ribbon (Pabst Brewing Company) 141
11 Sculpin IPA (Ballast Point Brewing & Spirits) 140
12 Pale Ale (Sierra Nevada Brewing Co.) 140
13 Corona Extra (Coronita / Familiar / Mega) (Grupo Modelo S.A. de C.V.) 139
14 60 Minute IPA (Dogfish Head Craft Brewery) 134
15 Guinness Draught (Guinness) 132
16 Bourbon County Brand Stout (Goose Island Beer Co.) 123
17 Julius (Tree House Brewing Company) 118
18 Traditional Lager (Yuengling Brewery) 114
19 Fat Tire (New Belgium Brewing Company) 111
20 Saison Bernice (Sante Adairius Rustic Ales) 99
21 Heineken (Heineken) 96
22 Miller Lite (Miller Brewing Company) 94
23 Kentucky Breakfast Stout (KBS) (Founders Brewing Co.) 88
24 Old Rasputin (North Coast Brewing Company) 86
25 Stone IPA (Stone Brewing Co.) 84
26 Jai Alai IPA (Cigar City Brewing) 78
27 The Abyss (Deschutes Brewery) 76
28 Milk Stout Nitro (Left Hand Brewing Company) 75
29 Stella Artois (Stella Artois) 69
30 Lunch (Maine Beer Company) 67
31 90 Minute IPA (Dogfish Head Craft Brewery) 65
32 Fresh Squeezed IPA (Deschutes Brewery) 63
33 pseudo Sue (Toppling Goliath Brewing) 62
34 La Fin Du Monde (Unibroue) 60
35 Nugget Nectar (Tröegs Independent Brewing) 59
36 Torpedo Extra IPA (Sierra Nevada Brewing Co.) 58
37 West Coast IPA (2015) (Green Flash Brewing Co.) 58
38 Otra Vez (Sierra Nevada Brewing Co.) 57
39 All Day IPA (Founders Brewing Co.) 57
40 Shiner Bock (Spoetzl Brewery) 56
41 Samuel Adams Boston Lager (Boston Beer Company (Samuel Adams)) 53
42 Citradelic IPA (New Belgium Brewing Company) 53
43 Weihenstephaner Hefeweissbier (Bayerische Staatsbrauerei Weihenstephan) 53
44 Beer Camp Tropical IPA (2016) (Sierra Nevada Brewing Co.) 51
45 Bomb! (Prairie Artisan Ales) 46
46 Furious (Surly Brewing Company) 46
47 White (Allagash Brewing Company) 45
48 Tank 7 Farmhouse Ale (Boulevard Brewing Co.) 44
49 Premium Pilsner / Premium Lager (Koninklijke Grolsch) 44
50 Fort Point Pale Ale (Trillium Brewing Company) 43
51 Death By Coconut (Oskar Blues Brewery) 43
52 Natural Light (Anheuser-Busch) 43
53 Black Tuesday (The Bruery) 42
54 Azacca IPA (Founders Brewing Co.) 41
55 Edmund Fitzgerald (Great Lakes Brewing Company ) 41
56 120 Minute IPA (Dogfish Head Craft Brewery) 41
57 Harpoon IPA (Harpoon Brewery) 41
58 Pineapple Sculpin (Ballast Point Brewing & Spirits) 40
59 Red Chair NWPA (Deschutes Brewery) 40
60 Canadian Breakfast Stout (CBS) (Founders Brewing Co.) 40
61 Victory At Sea (Ballast Point Brewing & Spirits) 39
62 Focal Banger (The Alchemist) 38
63 Leffe Blonde / Blond (Abbaye de Leffe) 38
64 Rolling Rock Extra Pale (Latrobe Brewing Co.) 37
65 Duvel (Duvel Moortgat) 36
66 Bourbon Barrel Aged Dark Lord with Vanilla Beans (3 Floyds Brewing Company) 36
67 Narwhal Imperial Stout (Sierra Nevada Brewing Co.) 36
68 Chimay Bleue (Grande Réserve) (Bières de Chimay (Abbaye Notre Dame de Scourmont) ) 36
69 Ten FIDY (Oskar Blues Brewery) 35
70 Abt 12 (Brouwerij St. Bernardus) 35
71 Darkness (2015) (Surly Brewing Company) 34
72 Punk IPA (BrewDog) 34
73 Fat Tug IPA (Driftwood Brewery) 34
74 Good Morning (Tree House Brewing Company) 34
75 Spotted Cow (New Glarus Brewing Company) 33
76 Kentucky Brunch (Toppling Goliath Brewing) 33
77 Delirium Tremens (Brouwerij Huyghe) 33
78 Swish (Bissell Brothers ) 32
79 Tripel Karmeliet (Brouwerij Bosteels) 32
80 Union Jack IPA (Firestone Walker Brewing Company) 32
81 Miller High Life (Miller Brewing Company) 31
82 Truth (Rhinegeist Brewery) 30
83 La Folie (Lips of Faith) (New Belgium Brewing Company) 30
84 Coors Original (Coors Brewing Company) 30
85 Dark Lord (2015) (3 Floyds Brewing Company) 30
86 Gumballhead (3 Floyds Brewing Company) 30
87 Negra Modelo (Grupo Modelo S.A. de C.V.) 29
88 Abraxas (Perennial Artisan Ales) 29
89 Rare Bourbon County Brand Stout (2015) (Goose Island Beer Co.) 29
90 90 Shilling (Odell Brewing Co.) 28
91 Goose IPA (Goose Island Beer Co.) 27
92 Trappistes Rochefort 10 (Abbaye Notre-Dame de Saint-Rémy) 27
93 Anti-Hero IPA (Revolution Brewing Company) 27
94 Wilco Tango Foxtrot (WTF) (Lagunitas Brewing Company) 27
95 Black Butte Porter (Deschutes Brewery) 27
96 Porter (Founders Brewing Co.) 27
97 DirtWolf (Victory Brewing Company) 27
98 Samuel Adams OctoberFest (Boston Beer Company (Samuel Adams)) 27
99 Limbo IPA (Long Trail Brewing Company) 26
100 Centennial IPA (Founders Brewing Co.) 26

Tuesday, March 29, 2016

Apps!



So we released apps for Android and iOS earlier this month, seeing that many people are using their phones for the application, and an app seems to make sense.

Since 90% of the work is done in a service application, I figured it'd be easy enough to just put a new face on the app, and there are lots of cool frameworks out there to get you started.

I narrowed it down to three based on what I needed, which was a framework for building the app, packaging the app, and ultimately worked well in my development environment (Visual Studio 2015):
  • Cordova
  • PhoneGap
  • Ionic
Both PhoneGap and Ionic are built on top of Apache Cordova, which has great support in Visual Studio.  After playing with them all, I thought Ionic was a little easier to use, had some nice features I liked (e.g. their Javascript and CSS components), and seemed to fit nicely into my dev environment.

So I made the decision to use Ionic and got going.  The following blog was super helpful getting started:  https://taco.visualstudio.com/en-us/docs/tutorial-ionic/

About three weeks later I had the app working nicely in the Ripple emulator which was great!  

But packaging the apps took more work than I anticipated.  I could build Android packages in Visual Studio pretty easily, but you can't build iOS packages.

So in comes Ionic Package to save the day - it basically allows you to upload your security certificates, run a command from you command line, and it runs a build on their servers and delivers you an Android .apk or an iOS .ipa file.  It worked beautifully!

So now I could drop my file into iTunes and I had it running on my iPhone.  Awesome!

I wanted to make sure it work on a few different types of phones, so I found TestObject, where you upload your files and it loads it on actual devices for testing, which was sweet since I didn't have any Android phones of my own (and it's free!  http://www.testobject.com)

Next steps were to upload it to the respective stores.  Google makes it easy - everything is wonderfully automatic and I could upload and have my Android friends testing it immediately.

Apple on the other hand, even though I had the application all packaged up and working on my iPhone, still require you to upload it to the App Store via Xcode...on a Mac.  Grrrr. 

So had to borrow a Mac (thanks Z!), and finally after a little bit (read: a lot) of effort, finally got it to the app store...for review.

Four days later, a rejection letter.  I gotta admit while the wait time is annoying, Apple really does good QA on each app.  They found a bug where my links weren't setup to have a back button back to the app when Safari opens up.  So I fixed that and sent it back annnnnnd....rejection #2.  

I discover they must have been looking at the wrong build number, I email them and a few days later they agree and I'm officially in the App Store!!!  [two beers clinking emoji]

Overall, it was fun to go through the process -- definitely learned a ton, and happy with the results.  I think an app makes more sense for this tool, since it's often used on the phone, and next we can incorporate things which can make use of the camera (e.g. barcode scanner, etc.)




Monday, January 25, 2016

V2.2: Direct urls, more matching improvements and bug fixes

For Version 2.2 I've updated the application so that each search displays the search terms in the querystring so that you can have links directly to beers, for example:

http://www.beernumbeer.com/Default.aspx?beer=swish

I actually always had this functionality (to make sure to get indexed by search engines), but just reworked the app a bit so it's standard.

I also looked through the data that was coming in and made some improvements to the matching, specifically in cases where brewery names were throwing off results.

And I also fixed a bug where the Untappd scores were displaying incorrectly under heavy load (due to a misplaced static variable declaration).

Next up:  Mobile apps!

Monday, January 11, 2016

V2.1: Improved Matching

This release consisted of putting some thought about the best way to check if the beers I'm getting back from the various sites are the same, even with the different name variations.  For example, for CBS, you see the get the following names back:

Beer Advocate:  Founders CBS Imperial Stout
Untappd:  Canadian Breakfast Stout (CBS)
RateBeer:  Founders Backstage Series # 2: CBS (Canadian Breakfast Stout)
BreweryDB:  Canadian Breakfast Stout (CBS)

So I added some logic around checking the brewery and the name and playing with the weighting of the name until I got suitable results for all of my test cases.

Friday, January 8, 2016

V2: Mobile Friendly


I posted to the /CraftBeer subreddit, and got some great feedback.  I also could see how users were using the site, and immediately it showed that the majority (51%) used a mobile device.  Which makes sense.  So next step was to make the site more mobile friendly, so I've added detection that sends mobile devices to a mobile page.  This page is slimmed downed and tabbed, and at 320px should fit most screens.

I also took the advice of showing the Untappd score out of 100, so that all the ratings are the same scale.

V1: Initial Release


The layout is pretty straightforward:  search for a beer, autocomplete kicks in from a custom web service (built on top of BreweryDB data), and then I gather the ratings from Beer Advocate, Untappd, and RateBeer.  I average up the three scores (multiplying Untappd by 20), and display the average.  I then added the Beer Details (from BreweryDB), as well as the Did You Mean suggestions (also from my BreweryDB).

Thursday, January 7, 2016

Why build beernumbeer?

I like beer.  More so, I like good beer.  So when browsing the vast selection of beers at the liquor store, I'd always google beers, scroll to find the first Beer Advocate (or something similar) rating, and click to find the rating.  But I was always bothered that there wasn't one stop to go to find the ratings from all the big sites, Beer Advocate, Untappd, RateBeer, etc.  A site that was like google, but was suited for beer, that would naturally autocomplete for the arcane beers I was looking for.

That's where this site started from.  As a software developer, beernumbeer.com grew from my passions of beer and programming.  I hope to continually improve it, and my hopes are that this blog will help solicit feedback, share ideas, announce updated features, discuss technology, with the goal of making the site more useful to all of us.