Tuesday, November 10, 2015

Anno 1701

Recently I've colonized a whole lot of Caribbean islands. For this I primarily blame GOG.com.

For those not familiar with GOG, it stands for Good Old Games, and they sell all kinds of older games in packages easy to run on modern devices. They have some newer stuff, too, but I almost always go there for the older stuff. Recently they had a sale on the older Anno games, and I ended up with Anno 1503, 1602, and 1701 for less than $10. After reading a few things around the 'net about the three games, I decided that I only needed to play 1701, as the others are mostly just older versions of the same game.
Anno is a series of city-building games, with a significant emphasis on trading and economic activity. The series has been in the news recently with the release of Anno 2205, which very well may have been a factor in the GOG sale timing. I'm chronically behind on video game releases (often by years) so playing a 9-year-old game at the same time as the latest release in the series is pretty normal for me. A release from the mid-2000s is right about my sweet spot: old enough to be cheap, new enough to have reasonable graphics and other technical aspects, and I can easily get info about whether the game is worth playing from friends and the Internet at large.

Anno 1701 takes place in a colonization era, as you'd expect from the title, putting you in charge of building colonies for the Queen. You're expected to do the multi-tier approach to building up your colony that is common to these kind of simulation-builder games. Start with small buildings and cheap trade goods, work your way up to bigger/better/more expensive things, and try not to go bankrupt in the process.
I've played through most of the scenarios that came with the game, which were mildly entertaining in story, if a bit simplistic in execution. Each one is its own little story which brings to mind swashbuckling adventure novels - think Treasure Island or Pirates of the Caribbean. Rescue the doctor who is making a cure for the Queen's illness! Steal the ancient artifact from the temple of the monkey god! Of course, each of those scenarios returns to the same task of building up a little colony, but it's nice to have a different reason to be doing it each time.

The real meat of this sort of game is the open-ended gameplay mode, and Anno 1701 does a good job with it. You can play forever if you like, or set end-game goals. Play by yourself or with AI opponents. Run the risk of natural disasters, or be assured of smooth sailing. Lots of options are provided to make the game as easy/hard as you'd like. My personal style is to mostly avoid military conflict and build up a thriving economy, and Anno 1701 lets me do that without interference if I so choose.
I probably won't play Anno 1701 for too much longer, simply due to how many other games I have on my to-play list. It's been a fun diversion, though, and I'll keep it in mind for any time I happen to get the colonization urge.

Monday, November 9, 2015

Refill Time at the Cookie Jar

Every couple of weeks, I head to the cookie jar and am disappointed.
Poor thing, looks so lonely. Don't worry, it was eaten quickly.
My standard response is a trip to Meijer for some of the basic store-brand sandwich cookies. But occasionally, I'll feel the need for something slightly more interesting. Last time I went shopping, there was some peanut butter cookie mix on sale. Since all three things mentioned there (peanut butter, cookie, sale) are relevant to my interests, the mix came home with me. The empty cookie jar says today was its big day.
Cookie Components
One egg and half a stick of butter didn't seem like a lot of damp stuff to go with all that dry cookie mix. But the people who design these things usually know better than me, and that was the case here. It took a lot of mixing to work all the dry stuff into the dough, but eventually it looked good. Worked out to 29 dough balls for cooking, each of which ended up as a more-or-less-round cookie between 2 and 3 inches across.
On the way out of the oven
Considering these came from a mix, I'm very happy with the taste. A little on the dry side, perhaps, but no significant issues. Quite a bit less work than mixing up all the ingredients separately, mostly since I didn't have to deal with the sticky peanut butter.
27 > 1 (I had to try a couple to make sure they were good!)
The size of the batch is just about right for me; should keep me in cookies for a couple of weeks. All things considered, a successful cookie operation!

Sunday, November 8, 2015

Harmony Hall Brewpub

I took a trip downtown earlier this month to meet some friends for dinner and beers at Harmony Hall in Grand Rapids.
The downstairs bar area is fairly small, but as you can see it's got some interesting decorations. (I think there's more room upstairs, but I didn't check.) They have some interesting chairs, too - the back of the one I had was made from what looked like a fallen tree branch or maybe driftwood (nicely polished, of course). Nice little touch, and it wasn't any more uncomfortable than most bar chairs.

There were five beers on the menu on the day we went. I'm sure the list changes over time, as with most small brewpubs. I couldn't be bothered actually choosing one, so I got a sampler flight of everything.

All the beers. Left beer is the top of the list, moving down the list to the right, and the last one in the back.
I'm a dark beer person, so I expected to like the first and last one best, and that was mostly the case. The Brownson (front row, leftmost) had a coffee and chocolate taste which was good, but not something I wanted too much of, being a non-coffee person. The Albius (back row) was outstanding, though. The bourbon and vanilla flavors really came through. At 7% ABV, it's a sipping beer, which works well with the fairly strong flavors.

I wasn't a big fan of either the Fiddlestix or Grand-Daddy Rapids Lager, though IPA fans would probably like them just fine. I did enjoy the Grapefruit Moon more than I expected, as the grapefruit juice cut the flavor of the IPA just enough for my taste.

We got dinner, too, in the form of various types of sausages (in buns). Mine was a Polish sausage with sauerkraut, onions, and mustard. Good stuff, though it was huge. I managed the whole sausage, but some of the bun and the chips that came on the side had to be left in the basket.

Harmony Hall is definitely worth a visit if you're going to be near downtown GR. The parking lot is a bit small, but you can probably find space a bit down the street if necessary. Try the Albius and the sausage!

Saturday, November 7, 2015

Limp Lions

It is not a good time to be a Detroit Lions fan. Losing seven of the first eight games this year is awful, of course (and one could argue it should have been all eight, but the Chicago Bears wanted to lose even more than the Lions did a few weeks ago). Having your team in the news due to firings of the offensive coordinator, team president, and general manager is pretty bad, too. I'll be shocked if head coach Jim Caldwell is still in charge in 2016. The worst bit, though, is that it's hard to see things getting better any time soon.
Kinda says it all.
Bad Lions teams are nothing new. Most NFL fans know that the Lions are the only team to go 0-16, back in 2008. The 50th Super Bowl will be played at the end of this season, and the Lions have participated in none of them. Exactly one playoff game has been won by Detroit in the Super Bowl era.

A few years ago, things were looking up. The Lions had Matthew Stafford, Calvin Johnson, Ndamukong Suh, and a few other first-round picks playing well. The defense was great, and the offense was putting up pretty numbers. Detroit managed two playoff appearances, in 2011 and 2014, though neither was a win. But the opportunity window for that squad closed fast.

Now, in 2015, the defense is no longer dominant. Suh left in free agency. DeAndre Levy, arguably the best Lion's defensive player with Suh gone, has been injured. Free agent signings like Haloti Ngata haven't filled the gaps. And the offense isn't much better. Stafford has been wildly inconsistent, occasionally hitting a good stretch but mostly making poor decisions. Johnson has had all kinds of injuries in the past few years, and is clearly not the player he once was. And the offensive line...less said about their performance, the better.

While there are a few young players who show promise, like Ziggy Ansah and Ameer Abdullah, most of the Lions roster is old by NFL standards. A lot of money is tied up in some of those older players, which is going to have to go at some point. On the bright side, the 2016 draft could be a good one for Detroit, with a few extra picks from the loss of free agents last off-season, and presumably a high overall pick thanks to an awful 2015 season. Even if that happens, though, it'll be a few years before that new blood really settles into the NFL and starts to perform.

Whoever gets that general manager job in Detroit is going to have a rough road bringing the team back to a competitive level. Good luck to whoever it is, they'll need it!

Friday, November 6, 2015

SWTOR: The Greatest Bounty Hunter in the Galaxy!

Just about everyone my bounty hunter meets in Star Wars: The Old Republic (SWTOR) these days is either deathly afraid or excited to meet the greatest bounty hunter in the galaxy. Winner of the Grand Hunt! Survivor of innumerable ambushes! Rescued the Sith Lords known as the Dread Masters! A little ego-stroking is nice and all, but I think they may be laying it on a little thick. On the other hand, the greatest bounty hunter in the galaxy does get the interesting jobs.

Since my last SWTOR post, Eltaix has progressed to level 50. She's been to Hoth, which was cold and mostly empty; Belsavis, a prison planet; and Corellia, the corporation-dominated merchant world. The Empire needs help crushing someone everywhere, of course: Republic fighters, corporate merchant marines, escaped prisoners, local aliens, you name it. A bounty hunter more interested in profit than ethics can do very well.

Doing all this hasn't gotten much more difficult. I'm constantly being offered upgraded gear from mission completions, so I haven't had to go out of my way to find better equipment. None of the standard enemies pose any real challenge, to the point where I'll occasionally fight a couple of enemy groups at once just to add a little interest to the combat. I did learn the hard way what a world boss looks like, though; I'll be giving those a wide berth in the future.

My ship is started to feel a little crowded, because as I go through all these interesting adventures, I'm collecting companions. As you go through your character's story, you'll meet quite a few folks that want to tag along. I've collected four now (five if you count my ship's droid). Honestly, I haven't paid much attention to any of them except Mako, who was my bounty hunter's first companion. In some cases that's because they're kind of annoying (Gault Rennow, Skadge); in others, because I just haven't taken time to see what all they have to offer (Blizz). Once I take care of the story-lines for my own character and Mako, it might be interesting to go back and see what the others are up to.
Mako and Eltaix on Correlia. And some random Sith guards.
The free-to-play account credit limit is 200,000, which doesn't take long to reach. For a while I didn't really have anything to spend those credits on, but then I discovered the Legacy system screen. The game had shown me a tutorial pop-up about it a while back, but it mostly talked about how Legacy levels benefited multiple characters on your account, so I'd assumed it wasn't useful while I had only one character. It turns out, though, that once you've gained a few legacy levels (this happens same as normal character levels, just slower), you're able to buy various perks with credits (or real money, of course). That solved my credit glut, by spending it all unlocking things like increased companion favor and quick travel to my home world.

Speaking of free-to-play, yes, I'm still working my way along without subscribing. I actually intend to do so at some point - I've enjoyed this game enough that I'd like to support it. But I haven't done it yet for two reasons. First, I'm curious to see how far I can reasonably get without paying anything. I'm going to finish out Eltaix's class story-line before I subscribe. (Edit: Originally I thought I could get her to 60, but F2P caps at 50.) Second, I tend to avoid subscriptions until I can get the most out of the time I'm paying for. It's not strictly necessary, but I feel better if I'm maximizing the benefit I get out of the paid time. So I expect that eventually I'll subscribe for a month or two, maybe advance Eltaix to 65, and try out another class or two.

Thursday, November 5, 2015

Michigan Roads

It's pretty safe to assume that every Michigander you meet will have at least one thing in common: they're sick and tired of hearing about road repair. We've been hearing for years that there's not enough funding to do all the maintenance required for the roads in our state. Various groups put the cost between $1.2 and $2 billion per year, with the cost going up every year that the funding doesn't materialize.
Perfect condition! Not.
Yesterday, our state legislature finally passed a road funding plan, and the governor is expected to sign it. The fact that it has taken years might seem like a surprise, given that both the House and Senate have had solid Republican majorities ever since the 2010 elections. Republican Rick Snyder has been governor for that whole time, too. Having a majority doesn't mean much, though, when a good portion of your party refuses to face the fact that the money won't just appear from thin air. Any kind of new or increased taxes or fees cause a lot of Michigan legislators to hide under their desks.

The legislature did finally do something by passing the buck to voters, in the form of Proposal 1 put on the ballot early in 2015. It failed miserably, and while I obviously can't speak for everyone who voted against it, I'm pretty sure that's because it wasn't just about the roads. The ballot measure contained all kinds of additional measures that generated revenue for schools, cities, mass transit and the state's general fund. It even had some tax breaks included. While any or all of those might have been good things, they made for such a complex package that a lot of people didn't even try to understand it - they just voted no.

Now we do finally have a plan, even if it's a pretty poor one. The cost to the taxpayer is about $20 more per vehicle registration, and another 7.3 cents per gallon on the gas tax. There's also a large cut to the general fund, which provides education and public safety funding. And the road funding generated doesn't reach the $1.2 billion level until 2021. There are smaller increases each year until then, which means not all the necessary repairs will get done. By the time we get to 2021, that continued deterioration will mean we'll need even more money. And just in case you thought the plan couldn't be any less realistic, it also includes an income tax cut starting in eight years. As I heard Michigan Radio's Jack Lessenberry say: "To say this was a case of putting lipstick on a pig would be an insult to both lipstick and pigs."
Be paying a bit more here soon.
Having said that, I'm still glad that at least something was done. The worst thing that could have happened was a continued lack of action. This plan is horrible, but it's better than one thing: no plan at all.

Wednesday, November 4, 2015

Minor Hacking: MythTV, Kodi, Trakt.tv

I previously posted about getting Kodi, the Crunchyroll add-on, and the Trakt.tv add-on to play nicely together. In this post, I'm doing something similar with Kodi, the MythTV PVR add-on, and the Trakt.tv addon.
As I've mentioned before, I use MythTV to record over-the-air broadcast TV. I then use Kodi on my Fire TV to watch the recordings. My goal is to have my MythTV recordings that I watch in Kodi automatically update Trakt.tv.

The same basic principle applies as the last time I did this: Follow the data flow, track the information at each step, and fix whatever connections are missing. In this case, this is what ought to be happening:
  1. MythTV PVR add-on tells Kodi to play a recording
  2. Kodi notifies Trakt add-on that the video is playing
  3. Trakt add-on updates the Trakt.tv site
Looks very similar to the process from the Crunchyroll integration, which should make this pretty straightforward. Of course, there's always a hitch. In this case, that hitch is that the MythTV PVR add-on provides very little information about what is actually playing. All I could find was a single field called "label" of the form "Show Name - Episode Name." For example, "The Flash - The Darkness and the Light" for a recent Flash episode.

I spent a while poking around the MythTV PVR addon and the Kodi APIs looking for something more, but as far as I can tell, there's no other data about the recording available. The MythTV backend actually knows some more stuff, like the TVDB ID of the episode, which I know because it's accessible through MythWeb on my server. But the add-on doesn't seem to be translating that information through to Kodi. Trying to modify the add-on would be more than what I consider "minor hacking", I'm afraid - it's a large and complicated beast. (I did put in a request for the developer to consider adding more data about the recordings, though.)

So for now, we're stuck with the label as our only data source. I suppose it's possible that you might occasionally get lucky and the Trakt.tv search function would actually hit the right episode based on that label, but most of the time you'll get nothing. However, Trakt does provide an episode search function through the same text search API that I used in the Crunchyroll integration. Split that label into the show and episode name, and Trakt will be happy to search for just the episode name.

Turns out that Trakt is pretty good at fuzzy searching...too good. Searching for that example Flash episode "The Darkness and the Light" returns hundreds of episodes from all kinds of shows, using the words Darkness, Light, or both. I forced a stricter search by using quotation marks around the title, and that got things down to a more reasonable level. It's still likely that more than one show has episodes with the same title, so I also had to loop through all the results and compare the show names. Once I find a search result that also has a show name of "The Flash", I know I've got the right one.

Those search results conveniently include all kinds of information that Trakt knows about the episode, including the season number and episode number, and the internal Trakt ID for the show. That makes it easy to tell the scrobbler function which episode to update. Here's the code changes to implement this.

I'm not totally happy with this particular hack. It relies too heavily on that "label" field - if the MythTV PVR add-on changes the format, or stops setting it altogether, the whole thing falls apart. But it works for now, and if my request to the MythTV PVR add-on developer for more recording data comes through, I can change the Trakt.tv add-on accordingly.