Friday, March 27, 2009

The benefits of expressivity

This is the result of a chain of thought kicked off by reading "The fallacy of high level languages".

While I agree with many points made, it did start me thinking about how the debate about high and low level language is framed almost entirely in terms of the main developers. This is probably since most people in the debate are heavily involved in commercial software development. One of the great strengths of FLOSS development is the existence of the casual contributor, the person who submits a fix to an bug they find personally annoying or such. They often are more interested in using the program than developing it, but they have the skills to make the occasional contribution.

Consequently, ease of contribution is a factor that is worth considering, and, based on my personal experience, the easier it is to get up to speed on the code around the problem, the more likely I am to write and submit a patch. Expressive, compact code is easier for me to get my head around, and thus easier for me to contribute to.

Of course, expressive code is only partly function of language choice, often being more a matter of developer discipline (nothing can save one from writing crap code, after all).

Compactness is just as important though. When dealing with a new codebase, the less I have to keep in my head in trying to follow the logic flow of the path of interest, the better. Here, language and library choices are important, and this is where high level languages can really shine.

Indeed, pretty much all of the arguments for the maintainability of code written in a high level language are much more relevant for casual contributers, who can't fall back on the sort of overview somebody who's worked extensively with the code base will have, than it is for the major developers.

Tuesday, March 17, 2009

Today's social (16 Mar 2009)

Today's social featured arguablely the longest 4 player game I've ever been involved in. Phillip (playing old-school Ventrue Vote & Bleed, and starting) was bleeding Val (Guhuri Restricted Vitae & some vote) bleeding me (new school Ventrue vote and vote) bleeding Kevin (!Toreador sneak bleed).

The game started fairly slowly, since we were all bringing out fairly large minions. With all the Zillah's Valleys and one of the Information Highways in the bottom 10 cards, and not drawing many masters, I was slower to get going than I hoped. I was always going to be in trouble as I only drew 2 masters in the first 3rd of my deck, so later one I was jamming rather horribly on masters. I also erred in the balance of vote cards, and didn't have enough aggrssive votes to really pressurise Kevin when I needed to, and, with the number of big vampires around, calling Honour the Elders ended up helping the table fairly equally. Kevin, relying on the power bleed from the Palle Grande was able to oust Phillip, although Phillip did come close to ousting Val a couple of times, but Val's farming was just good enough to hold him off. I did eventually oust Kevin, after much to-ing and fro-ing, but eventually minion superiority meant Val was able to end oust me (Val had 8 vampires to my 6). Considering that my cheapest two minions were 6 and 7 caps, and Val vampires ranging from 4 up to 11 (Eze) says a lot of how the farming went through the course of the game.

The game had several unusual events - I had to yield two titles due to contests, and had to burn my protected resources to eventually bleed Kevin out, which was extremely annoying. Both Kevin and I decked ourselves, and, when Val ousted me, he was down to only a couple of cards left in his library.

The Ventrue deck does show promise (with the Ventrue headquarters and Gustav, I could towards the end generate 17 votes without modifers, despite the yielded titles), but I do need to add a few more aggressive votes, and work on the master balance a bit. Fitting in a couple of vessels will a) provide an additional pool gain option, and the trifle will also be useful to help cycle through the masters a bit faster.

After the marathon, Kevin left, and we played a three player with the intention of playing fast. I (Serpentis bleed deck, mildly tweaked) was bleeding Phillip (Brujah concept deck) bleeding Val (Lasombra combat & bleed), with Phillip starting. I got off to a fast start, with an early hunting ground and a path not to long thereafter, and, since the bleed deck is fast, was able to sweep the table in less than 30 minutes. The combination of the path & the eternal mask is truly scary. This deck will suffer against bounce, and can be run out of S:CE, it's probably the best of my attempts at a stealth bleed deck.

An interesting, and rather educational evening.

Wednesday, March 11, 2009

Notes from the VTES tournament

So, Sunday was the most recent VTES tournament, being held at the Tokai Library. Although I arrived somewhat late (due to a misjudgement with the traffic caused by the Argus), I was still in time to play, which was good from a "note wasting the trip" perspective. Regrettably (presumably because of the Argus clash), we didn't attract a larger representation from the Fishhoek crowd, but we still had 10 players, and Phillip judging.

In the tournament, I played the Anarch Vote deck. It successfully got to the final table, which is a much better showing than the previous tournament I played it, though it remains fragile due to it's many moving parts.

The tournament was for me somewhat frustrating, as the deck didn't flow as nicely as it had at Monday's social. The crypt probably needs tweaking. The original idea of bringing out a huge swarm of minions out and RC'ing for double digits is proving to hard to pull off - 4 minions out looks much more reasonable, and I frequently suffered from not having both PRE and OBF available.

So in the first round, we managed to screw up and get the seating wrong from the announced order, and ended up with Marc (Ventrue antribu dominate bleed) bleeding Brendan (Ahrimane precense bleed & wall) bleeding Nick (Lasombra dominate bleed and vote) bleeding me (anarch Revolutionary Council) bleeding Kevin (Toreador antitribu stealth presence bleed). I didn't really get going, but was able to whittle away at Kevin's pool with a few bleeds, and did get one Revolutionary Council off. I made a tactical error in using a Detect Authority in a failed attempt to intercept a vote, rather than holding it for the bleed reduction, which may have saved me long enough to oust Kevin. Scariest event on the table was Marc bleeding Brendan for 13 in one turn, but he ultimately wasn't able to push through fast enough.

In the second round, Simon (Malkavain combat) was bleeding Kevin, bleeding me, bleeding James (Ventrue dominate bleed) bleeding Nick. For most of the game, I had too few votes available to go forward. Between Nick, James and Kevin, there where 7 votes from titles on the table, and James had the Ventrue headquarters, and I only got two Fee Stakes into play, one of which got burnt by a vote.

However, after a turn when James called a Parity Shift, and had thus tapped his Ventrue Headquarters, I was able to combine a inferior bewitching and a rant to force a revolutionary council through and oust him. Being forced to use Seren Sukardi's pre did mean I could never Voter Cap, so my farming strategy, such as it is, failed completely, and I was quickly ousted by Kevin.

Simon's deck was never able to really get around Kevin's combat defense, although, with 3 hunting grounds in play, and a Pulse, Santaleous's standing 6 bleed did generate a lot of blocks. There was an amusing turn, after both James and I were ousted, when Sanelous's bleed was bounced back and forth between Kevin and Nick. Eventually, Kevin was able to go through both Nick and Simon.

The final saw Nick bleeding me bleeding Richard (Akunase wall'ish deck) bleeding Andrew (Ishtarri bleed) bleeding Kevin. This round went rather badly for me. Where I'd previously suffered from not drawing Fee Stakes, in this round, I almost only drew Fee Stakes and wasn't even close to drawing a single vote modifier. Given that Nick got a regent down on the table, as well as another title, I was never in a position to even attempt a vote. Richard also went backwards early in the game, which significantly slowed me down as well. Nick was able to oust me fairly quickly, and Andrew ousted Kevin fairly soon thereafter. When I left, Andrew had also ousted Nick, and with minion superiority, was looking likely to oust Richard, which eventually happened.

In between the first two tournament rounds, I was also able to get 2 social games in.

The first, when I tried the Anarch deck, didn't go well, and Phillip's experimental trophy deck was able to red-list and then burn my single baron, which didn't help me. James's Assamite bleed-farm deck worked efficiently and swept fairly quickly.

In the next game, I played my Serpentis bleed deck, bleeding Phillip's trophy deck, bleeding James's Assamites, bleeding Marc's Liabon presence bleed deck. I was able to work through Phillip quite quickly, although I did end up burning through most of my strike combat ends card after he made one of my minions redlist. James was able to get fairly setup, and bled Marc for 8 in one turn after I'd ousted Phillip. I got lucky, and drew a Path of the Typhon just in time for it to allow me to afford two "Truth of a Thousand Lies"s, allowing me to oust James. Thereafter, I was able to push through Marc, although it was tight as I had very little blood left on my minions, and Marc was bleeding me fairly quickly as well.

After being ousted in the final, I played one more social, trying the latest version of the Mass Reality deck. I bled Simon's Malk combat, bleeding Phillips Aabbt deck, bleeding James's Ventrue deck. The deck performed incredibly poorly. Poor card draws contributed. I didn't draw a Mass Reality at all, and given that there are only a handful of guns in the deck, having 3 .44 Magnums in my hand after two turns was rather annoying. It's hard to say what parts of the deck actually work as a result, and I'll have to try it again to see what happens.

Still, the day was good fun, and I got quite a lot of vampire in, and the Anarch deck got to a final, despite the difficulties it had on the day, so I'm fairly happy with the day. The library is a very pleasant venue (and has a complimentary cat), and, when the event doesn't clash with the Argus, not that hard to get to, so I'm certainly in favour of holding more events there. I'm less of a fan of playing on the Sunday, though.

Monday, March 2, 2009

Today's social

With the benefit of sharing the table with James in all the games, despite the cut-off being moved to 11, I managed to get in 4 and bit games in between arriving at just past 7 and the deadline, which is pretty good going. In addition, I managed to sweep all 4 games that completed, although, in a least a couple of the games, a more aggressive predator would have probably ousted me.

I played two and a bit games with the modified anarch vote deck. It still feels like it has too many moving parts, but the dropping the Veiled Sight's for Forgotten Labyrinth's and some Lost in Crowds makes a big difference to the deck. The Groundfighting are also a useful option, since it an additional option in combat, and remembering that one can Crimethinc in the middle of a vote is very useful for the Revolutionary Council. A serious vote deck will still lock this deck down, and a fast stealth bleed deck will almost surely toast it, and a bad library draw will screw me over, but that's true of many decks. Still, it is quite fun when I manage to pull off the RC.

I also played two games with the Settite Serpentis bleed deck. The addition of the Path's certainly helps that deck. Being able to bleed for 4 at +1 stealth for 1 blood with inferior Serpentis is pretty scary, and the small minions means the deck can move forward fairly quickly. The lack of PRE is a bit of a problem for the S:CE, but the deck is fairly effecient. A good POT combat deck will toast it (I was lucky in one game that Mark didn't draw any of his Immortal Grapples), and bleed bounce will also hurt the deck, but it's been surprisingly effective so far.