Erlang Observations

To those who are considering Erlang and Erlyweb as a framework for their website: just go for it.

A couple of days ago, there was yet another blog post on Reddit about the scalability of Erlang, with the same yaws-owning-apache graph we’ve all seen before. There was absolutely nothing new in the entire post.

In my opinion, there are many reasons to use Erlang that have nothing to do with server performance.

Those of you who found BeerRiot through the Ask Reddit thread about Erlang usage already know that it’s built on Erlang and Erlyweb. My experience with them will be different than others’, of course, but I felt the need to list a few of my [completely subjective] observations about this framework.

So, in no specific order:

  • I like the syntax. I got past the comma-semicolon-full-stop confusion that many complain about within the first few hours of coding. It’s different, refreshing, and not too hard to understand.
  • Development cycles go really fast. More than once, I’ve hashed out some new functionality on my subway commute, then polished it at home and posted it the same evening. Part of this is the pattern matching used in function calls and branches – it translates almost directly from my pseudocode.
  • Some complain about the lack of hierarchy and types – I love it. It makes evening coding feel very free-form after eight hours of Java.
  • Erlyweb and Yaws are both very powerful and useful, yet their codebases are small enough that the thought of digging through their code does not intimidate me.
  • Erlang doesn’t have all of the libraries of other languages yet, but they’re not hard to get to.
  • Hot code loading and the ability to open a shell connected to your webserver doesn’t get enough press. I never stop my webserver unless I’m making a huge change that I’m too lazy to plan the transition for.
  • I dislike typing underscore. I do think it’s a good visual representation for “don’t care”, but I just don’t like to type it. I often use camelCase to define my own functions, but it looks a bit messy in mixed code.

So, yeah, some of these are reasons to use Erlang, some are reasons to use any language with similar features, some are just things to note. I just felt like there needed to be some conversation about Erlang other than its scalability.

If anyone has any specific questions about my experience with Erlang, please post them in the comments. I’ll either answer here or write another post to cover them all in a few days.

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.

What’s My Google Rep?

Maybe sometimes it’s better you don’t know…

So, I run stats over my logs a couple of times a day (AWStats, if you’re interested). One of the things it tells me is what people have typed into search engines to find BeerRiot.

Last month, the search terms were pretty innocuous – mainly “beerriot” and the names of a few beers. This month, people have started searching for my name.

I don’t find this that strange, of course. I’ve Googled friends and new acquaintances more than once. What has me a little worried is that I am very few of the hits that either Google or Yahoo search returns.

I have to wonder who people think I am after clicking through a page or two of search results.

Just a few hints to get people closer to the right track:

  • I have no religious affiliations
  • I have never broken a Track & Field (or any other sport) record
  • As a general rule, I do not post pictures of my birthday parties on the web
  • I am not a country singer (or a music student)

Any other new webmasters dealing with similar paranoia?

…yeah, yeah, back to coding, I know…

New things *are* coming…

Fear not! I have not forgotten about BeerRiot. No new features have come online yet because this week has been rather busy for me.

Tomorrow is no exception. I’ve gathered the ingredients for a honey porter. 🙂 It’s an all-grain recipe, so I’ll be busy most of the day with that.

Sunday, though. Sunday should be BeerRiot Development Day.

As a teaser, here are a few of the things in the pipeline:

  • Localization (Btw, does anyone have a good source for world cities and their latitudes and longitudes? I’ve covered the US with data from the USGS, but my best link to world data is over ten times as large.)
  • Personalization
  • Discussion forums (for things other than talk about specific beers)

I can’t say which will come out first (or even if some of them will come out), but I thought you all would enjoy the teaser.

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.

BeerRiot – The Blog

Hello Rioters! I realized there was a lot more I wanted to say about developing BeerRiot, enjoying beer, and other things, none of which quite fit under the category “news.” So, I’ve set up this blog as an outlet for those things.

As suggested, here you’ll find my thoughts on beer, the reasoning behind some of the features on BeerRiot, geeky discussion of some of the technology used to make BeerRiot, and probably a host of other things. I may even use this as a space to poll you all when I can’t make a decision on new features.

So, if any of that interests you, stick around.

P.S. This is my first blog, so bear with me while I learn the ropes.