Warming to PartyPoker.com

Writing Trying out PartyPoker.com I wasn’t too happy with the interface and a few other things about the way the game plays there

A day or two later writing In defence of PartyPoker.com I felt a bit better towards it.

Now, after only a few days of playing there, I’m starting to think that I’ll be making more use of it than I have of Pacific Poker. This may have something to do with doubling the money I put in in a few days, of course. But then, I site’s game being more suited to my style is as good a reason as any.

I do think it comes down to the slowness of the blinds increasing. It’s easier to wait for a good hand and there isn’t quite the rush that I find at Pacific Poker. Although, I have generally been playing at a slightly higher level on Party Poker so taht might have something to do with it as even the $5 tournament I entered there was bit random. e.g. losing with K K to 8 6 off because so many people called a 4x big blind raise.

The other advantage is being able to play more than one game at once, although keeping track of them all is another matter…

In defence of PartyPoker.com

Yesterday I tried out Party Poker, and honestly didn’t take to it as much as I have Pacific Poker. (My initial experiences are here.) Playing for longer last night I did notice some improvements, though. (Note that my experiences may be coloured by winning a 54 person satellite to get to a Poker Den satellite.)

The quality of the players seems higher, for one. Not so much initially where people were calling any bet with a weak top pair, but later in the game it became quite tight. The reason for that could be that Pacific Poker have been advertising so much recently that virtually everyone signs up to them first (like I did).

The other important improvement is that the blinds don’t go up so quickly. I think this promotes tighter play as there isn’t quite as much a landgrab for chips at the beginning of a tournament. As a result, I saw very few bad beats (and none were inflicted on me or by me) whereas over on Pacific I had a couple whilst I was playing during the same time. (This included being called with A Q off by A J spades, fair enough. The flop came Q J junk with two clubs, one spade. I bet, the other guy went all in and I had him covered and had top pair with the big ace kicker so called. The turn showed a spade, then the river, and I lost two those two running flush cards.) There have been discussions on other forums about there being a lot of bad beats on Pacific and I can’t honestly say whether it has more to do with the players, the rate the blinds increase, or the algorithm. It does seem odd, however, how often a pocket pair loses to a straight that was never really there for the drawing.

So maybe I will give Party Poker a bit more of a chance…

Try out Party Poker with a 25% first deposit bonus

Try out Pacific Poker

Trying out PartyPoker.com

I’ve been playing on Pacific Poker for a while now but, spurred on by a visit to the Poker Den today I thought I might see about trying to win myself entry to that. It looks a slightly bizarre tournament, to be honest, but does have the advantage of being less than 5 minutes walk from where I live.

So, I downloaded the Party Poker software and deposited some funds. Not wanting to go straight to a real money table I went into a no-limit pretend money one. No good cards came along, until I got pocket Kings. I raised a decent amount, just about everyone called. The flop came – all low cards, no flush draws, no straight draws, no pairs – so I reraised, and just about everyone called. This went on for the next two hands and then someone on the table won with an 8 6 off suit. My conclusion: the pretend money tables were even worse than the Pacific Poker ones for quality players.

The interface itself I didn’t really like. I don’t see the point of having little pictures of people around the table – it just takes up space that could be used for the cards. The chat window is also incredibly small and so much goes through you can’t really follow it. The other thing it could really do with is keyboard shortcuts. On Pacific, you can raise with the cursors and press ‘C’ for call or ‘F’ for fold (these keys are a bit close together for my liking…). Not so on Party Poker, it’s mouse control all the way, and it can get a bit tiresome. The only thing you can use the keyboard for is entering your bet in figures.

I decided I was familiar enough with the interface and joined a $10/$1 no limit tournament. There were ten players around the table. First hand was nothing, then second hand I was dealt poket queens. I raised a little over twice the blinds and had one caller. Perfect for that kind of hand. The flop came up: A Q 9. Even more perfect. I checked, he bet, I raised, he called. Excellent, so he has got an ace, and probably a strong one at that.

Time for the turn: another ace. Even better. He’s on a set, I’m on a full house. As long as the board doesn’t pair, or he doesn’t have a nine or a queen then I’m made. I made a smallish bet, he raised, I called. The river: junk. I bet again, he went all in, I called. Second hand and I’d doubled up and knocked my first player out. We were down to 9, with the first 3 places paying.

There wasn’t much else for a while. I bet a few hands, bluffed a few, and seemed to win every pot I was involved in (which were all small). Then, pocket kings. I raised the blinds, a decent raise, a short-ish stack re-raised, I put them all in. They called, and I saw I was up against aces. Bugger.

The game went on, I had a few cards, and somehow ended up down to the last two. We were on level terms after I called his all-in on the flop with some decent pot odds of a queen high flush that didn’t come off. A couple of hands later and I was ahead, then I looked down at pocket 10’s. Pretty good. I raised from the small blind, he went all in, I called and saw he had A K off. Luckily, my 10’s held up and I was the winner of the $50 first prize.

Winning my first money game should really make me feel warm towards Party Poker, and if I was the suspicious type I would be thinking there was a conspiracy in favour of me as a new player. The only thing that I liked about it that I don’t see on Pacific, though, is the way all-in’s are handled. On Pacific it’s shown in the same way as any other hand i.e. first round from the dealer, so you don’t see later mucked hands. On Party Poker, as soon as someone’s all-in and no more bets can be made the cards are turned over and the flop, river and, very dramatically, turn are dealt. Much better.

The other thing I didn’t like was that I couldn’t find out where I was in a tournament. First, it was hard enough to get into the next tournament. (It was a scheduled event, I was typing, something popped up, whatever key I was pressing at the time closed the window and I had to find my tournament again to get back in.) Then getting back to the lobby was hard enough, and once there although it shows the chip size of each player, I couldn’t find a way to rank them so I didn’t know where I was.

All in all, I can’t see Party Poker pulling me away from Pacific Poker. There are just too many things about the interface I don’t like, from the way you get into tournaments to the tables themselves.

Good players get more bad beats at the poker table

As I’ve become better at playing Texas Hold ’em, I’ve become increasingly aware of bad beats as they happen to me in tournaments. Occasionally you get someone at a table complaining about a bad beat, and sometimes it isn’t even that bad they’ve just bet against the wrong hand. Just because you have a flush and someone else has a full-house that isn’t a bad beat. If they have a 1 in 10 chance of making their full house and still bet over the pot odds and make it then yes, but often it’s just a player overplaying a good hand against a monster.

Anyway, the characteristic replies from people at that time is to say something like ‘We all suffer bad beats, just get over it.’ but something that I’ve come to realise is that good players really do suffer more bad beats. It’s a bit like the ‘buses always come in threes’ thing – when you think about it, it actually makes sense. (There’s an explanation of the bus problem here.)

Why I think this occurs is that good players (or shall we say better players, because there’s a long way to being good) make fewer bad calls. If you have a read on what your opponent has in their hand and they’ve bet a fair strength then the only reason for making a bad call is if you think you’re being bluffed. Often, on weak tables, the bets are just so random that it’s hard to tell and you can only really go on whether you do have a good hand or not.

So from there, if you never make a bad call, then you’ll never inflict a bad beat on someone because you’ll only ever bet when the pot odds are in your favour. On the other hand, a bad player will call you when you’re in front and although you may be a 3-1 favourite, that still means you’ll lose a quarter of the time. The situation is multiplied if there are more callers.

As a recent example: I was in a late position on a 10-handed table with a pair of tens. The first hand round from the big blind flat called, the hand went round until two players to my right who did about a 5 times blinds raise (it was early in the competition so the stacks could take it). That said to me ‘please fold because I have some mid-level pockets’. I reraised about 2.5 times more, which probably said about the same thing, but i thought my pair of tens were better than what he had as I’d rather make people pay for a flop in that situation and then be prepared to fold and walk away than just be content with winning a small pot. The first raiser should know he’s beat and fold then. Also, I wasn’t going to do what a lot of players seem to do on those cheap tables and go all in just in case I was up against bigger pockets. Somewhere else.

And I was right because there was other danger on the table. The blinds folded and then the first caller raised all in. I smelt a rat: at least queens, possibly kings or aces. The raiser called (duh!) and I folded my tens. The flop came up, didn’t change anything, the first caller turned over his pocket kings up against the raiser’s poket 8’s and he was out and I was glad I’d made a good call.

Some time later, in the same tournament, I made a similar play with pocket aces. Except I don’t slow play them very often, so I did a small big-blind size raise. Most people folded except one raiser who went up another couple of times over. Again, that looked like mid-level pockets to me. No-one else was in the hand. I re-raised putting him all in. Now if that had been me in that position I would have thought something was up, but he called. It turned out he had a pair of nines, but another nine came up and he doubled up.

Now I don’t know what the definition of a bad beat is, but that makes it to me. A few hands later, despite increasing his chips at my expense, the caller went out of the tournament. Okay, we all know better players win out over time, but that’s no consolation when it’s your chips being shared amongst all the other players. I had to play a few loose hands and clawed my way back into the money, but the lesson is still there.

PHP 5 Static class variable inheritence

PHP 5 doesn’t seem to attempt to implement any kind of inheritance for properties within static classes. This can be mean having to duplicate code within static subclasses. As an example, we would like to have a parent class (this is using the Singleton pattern) such as this:

abstract class DataTable
{
 protected static $instance;

 protected function __construct()
 {
  parent::__construct();
 }

 public static function getInstance()
 {
  if(!isset(self::$instance))
  {
   self::$instance = new self();
  }
  return self::$instance;
 }
}

And then to create a subclass to inherit from it:

class PageTable extends DataTable
{
}

And then creating an instance of PageTable could be done by running a line of php such as this:

$pageTable = PageTable::getInstance();

Which would then return an instance of PageTable.

Then we might want another subclass such as:

class ContentTable extends DataTable
{
}

And so be able to create an instance of ContentTable with:

$contentTable = ContentTable::getInstance();

However, what really happens is that first PageTable::getInstance() is called and since PageTable itself doesn’t have a method defined as getInstance() the parent method is called. This sets $instance as a reference to the newly created object. However, the $instance property belongs to DataTable and not to PageTable. Even declaring a $instance property local to PageTable has the same result as in this case self::$instance refers to the parent class (which is where the method is run from). Thus when ContentTable::getInstance() is called, the value of self::$instance is detected as being set and the original instance of PageTable is returned. This is obviously not the intention.

The only way around this is to duplicate code by adding an $instance property to each subclass, as well as a duplicate of the getInstance() method.

As an aside, the same is also true of class constants which are also referred to with the self:: caller. From this we can infer that self:: always refers to the context of the current code block not the class from which a method is called.

Technical solutions to web site visitor tracking

There are two main ways that the problem of identifying an individual when they visit a web site. This is assuming they are not willing to put their hand up and identify themselves by logging in. That may not always be likely to happen depending on the type of site or service on offer. So, assuming we can’t pursuade them to identify themselves so readily, the two technical methods we need to think about for getting this information could broadly be classed as what I’d call ‘intrusive’ and ‘non-intrusive’.

Intrusive methods have a lasting effect on the visitor’s computer, usually through depositing a file of some kind. The most common, and the most familiar, method for doing this is the browser cookie. There are a few other techniques, such as the recent uses of Flash Shared Objects, but only a handful and each with their own problems. These have the advantage that we can be certain of the identity of the computer that is visiting the site (although still not 100% sure that it’s the same individual using it) as only their computer will have that particular file on it. It doesn’t matter if they change ISP or otherwise play around their computer’s settings as long as they use the same browser, and changing browser is not too common an occurrence.

The disadvantage of these techniques is that some people don’t like the idea of a web site, let alone an ad banner server, putting something on their computer without them being asked about it. This has generated a market for tools which block or remove these intrusive files, generally sold as anti-spyware. There are also only a limited number of techniques we can exploit to get the file onto the user’s system and we’re restricted by what the browser, or other common plug-in (Flash and Java), manufacturers decide to give us. As is likely to happen with Flash Shared Objects, these are all easy to block either through the use of bespoke software or simply the user changing their browser preferences to explicitly deny certain technologies.

Non-intrusive methods are what we’re left with if users decide to actively combat the intrusive methods, and this is an area that no-one seems to have really cracked. Historically, this was how web analytics started by tracking people by IP address. It hasn’t really come a lot further and most analytics vendors talk about using the combination of IP address and user agent if it’s not possible to use a cookie. (The user agent is the way a web browser identifies itself to a web server, i.e. ‘Microsoft Internet Explorer version x.xxxxxx’). Although there are a huge number of sub-versions of each browser, that doesn’t really solve the problem of changing IP addresses for repeated sessions (as with dial-up users), changing IP address mid-session (as with AOL users and other proxies) or mass installations of the same browser behind the same proxy server (as with some corporate setups). There are techniques to improve accuracy, but none reach certainty by any means.

All of this information, such as IP address and user agent, is ‘volunteered’ by the web browser as a user surfs, and with the addition of some client-side JavaScript code we can find out a lot more such as screen size, colour depth, system time, plus some others. I call non-intrusive because although we are running some code on the user’s machine (as part of the page they are visiting) we’re not leaving any kind of mark on the user’s system, only reading information.

The aim of the non-intrusive methods is to identify a user by generating some kind of unique fingerprint based on what we can find out. As far as I’m aware, there is no sure-fire way of doing this, but it’s where a lot of the lateral thinking is going. There isn’t really anywhere else to go with the intrusive methods unless the browser and plug-in manufacturers come up with something new. (And then, following that, seeing if it become’s regularly blocked in the same way as cookies are now.) Areas that we’ve been looking at include what we can find out about the visitor’s browser setup (which, again, will often be identical across corporate installations) but also by looking at what they do, what they’ve seen and whether we can generate a fingerprint that way. These ideas often fall foul of the fact that we’re not dealing with a controlled set of variables but rather with side-effects i.e. the user may change something about their system not because they don’t want to be tracked, but for some other completely innocuous reason. Examples of this might be making use of the browsing history and cache (which regularly expires and often cleared out by users, hence losing all that data) or system time (changes over time so can’t be relied on to any real degree of accuracy).

The change in browser technology and the shift in market share are also playing a part in making it difficult to produce new solutions. As an example, research may be conducted into the way files are downloaded from the server to try and guage whether a particular visitor has seen a page or combination of files before, but the download methods for the main browsers differ enough to cause problems here. Firefox is easily configurable to open many more parallel requests than either IE or its own default setting. Given that a new version of IE is on the horizon any solution which made use of any kind of browsing technology side-effect could well become obselete, or possibly even give completely incorrect results.

These techniques do have some usefulness when it comes to tracking a user within a single session, and indeed we can do that very accurately without cookies. What is much harder is to identify repeat visits weeks or months after someone has first seen a piece of content. It is these kinds of timeframes within which people are more likely to clear out their cookies but even with this deletion the cookie (or other intrusive method) is still much more accurate than any of the non-intrusive ‘guesswork’ methods.

That doesn’t mean we’re going to give up on trying to find a better way to measure but unless either a) there is a revolution in browsing technology and the general consumer is willing to accept being identified (I’m not holding my breath – as a web user I’d have issues with giving up that kind of anonymity) or b) we pursuade people to identify themselves voluntarily, we are for the moment only working towards greater statistical accuracy rather than certainty, especially in the most valuable areas of repeat visits.

Dave’s barbeque

Dave Edwards decided to have a barbecue to ‘celebrate’ moving out. I believe it was probably the worst equipped barbecueing event I’ve ever attended as we were lacking in what I consider to be the key barbecue prerequisites:

  • A garden
  • Any furniture
  • A barbecue

The first was remedied by squatting in the patch of gravel down the side of the house (which is, so I was told, a public right of way. Someone certainly believed they had the right to dump a load of old furniture parts there in any case). The second, the lack of furniture, we addressed by rigging up a table by placing an old table top onto a wheelbarrow:

Table made from a wheelbarrow

The third, the lack of barbecue, was potentially more serious but something was constructed from a few bricks and a grill tray (I think). It didn’t prove to be the best way to draw air through and generally tried to suffocate both itself and us, as this smokey picture (featuring Dave himself) might illustrate:

Dave disappearing into smoke

Still, it was all good fun…