Xbox 360 Embracing my Pirate Ways

November 27, 2006

I download a lot of poker torrents.  Australian television is so far behind the states with poker shows that I am forced to get them from torrent sites.  (thats my excuse and I’m sticking with it).  The big problem with this is I hate watching videos on my PC.  Mostly because I have a shitty desk at home with possibility the most uncomfortable chair ever….mostly.

So I have been  forced to burn the AVI’s to a DVD using Nero to watch on my DVD player.  This takes so long to do and really isn’t worth it as it wastes DVD-R’s.  Then I got an Xbox 360.  I had heard you could stream media to it from a PC over a network.  When I first looked into it there was a requirement to have the PC running Windows Media Center XP Edition.  I tried to upgrade my PC to this but didn’t have much success as I only had an OEM version of it.

After giving up I went back to watching the videos on my laptop which was a bit better then just watching them on my PC.  Oh how I longed to be able to download a file and be able to watch it on my couch once it had finished.

Then as I was screwing around with some settings in my Xbox console, I found out that in a recent software update release, Microsoft have included support for streaming only .WMV from a PC.  I already had setup streaming of photos and music from the PC so the Xbox discovered some videos automatically and I was ready to go straight away.  The only problem was most of the video’s I download are in .AVI format.  Oh ohhhhhhhhh.

So the search began to find a free video converting program.  I hunted around and could only find shareware type software that would only encode the first 20 minutes or something shit like that.

I was heartbroken.

Then I came across this article. It explains how to encode using VLC.  The author has also included a batch file which makes the process very easy.  VLC seemed to encode a lot quicker then anything else I had tried and worked perfectly every time.  Needless to say this isn’t what I expected as video conversion usually is a big fuck around with heaps of stupid errors.

Now look at me, I’m on easy street watching torrents on my TV and laughing at all you suckers.


Steep Re-Learning Curve

November 14, 2006

Over the last couple of nights I have been trying to resurrect my old Uni AI Assignment (Rar copy of files). The main problem I’ve had is just getting the thing to run! It’s been at least 4 years since I’ve use javac to compile a Java program and classpaths were my first hurdle. After figuring that out I could then attempt to compile which wasn’t pretty.

I had to make some changes, as the code was written for Java 1.1 and a lot has changed since then. After trawling through the latest API I found all the changes I needed.

The last thing to change for it to run (still a lot of code deprecated left) was the event handling for key strokes. This doesn’t sound like it would be too much trouble considering I was dealing with Threading issues before this.

Boy was I wrong, it took me about 5 hours last night to figure out the new structure of the java.awt.event.KeyEvent class. In the end I could not get any key events to fire when running the KeyListener on the Applet. I had to attached the KeyListener to a useless TextField and the events could then get passed on to the EventManager class which passes on the event to each object of interest.

Because there are more then one type of Agent in this system the EventManager object and EventHandler interface are a very good way of spreading out the workload of event handling between multiple objects (i.e fish and shark).

I didn’t write this code (or the majority of the game). When I first started to look at the code again it seemed very confusing. But once I start adding more agents with different abilities these classes should help me sort everything out in terms of events.

Its a good concept which involves objects registering to a central handler object all the events it would like to be told about. In the current version of the game these events are restricted to keyboard events.

But I was thinking of expanding this into a multiagent system where if an agent comes across something interesting, it could fire an event to a central control object which could inform other agents near by about it. The good thing about this is that each agent implements a EventHandler interface which has a method called handleEvent(Event e).

Therefore each agent can handle the event in different ways. The practical application of this would be a multiagent system in which there are 4 types of simliar robots exploring terrain let say….on Mars!

Each type of robot has different sensors in it. For example each robot has one function which might go something like this.

  1. Camera vision
  2. Chemical Analyzes
  3. Rock/Soil Sample Collecting
  4. Power Hub (A robot who’s main purpose is to refuel other robots)

So if a robot that analyzed some rock found something interesting it could inform (using a wireless LAN) other robots around it to have a look. After this has happened the original robot could then move on while others came over to inspect the site using there own instruments.The inspiration for this idea came from Dr. Steven Dubowsky who has been doing research for NASA in this area. By splitting up each ability for different robots you can build much smaller robots that can complete a task as a group. This is much more robust (IMO) and closely follows how nature has done this. For example how ant colonies have different types of ants for different jobs.

Most of my thinking in robotics comes from nature. AI through evolution of best practices for rewards is another area I think nature should be looked at.

So what is the next step in my “vision” for this program. The first thing is to implement a part of the program which I thought I had done but turned out not to be there. I thought I had got the remaining fish left to “mate” with each other and share attributes to create another fish. The other thing I plan to do is to make the “player” (or shark) autonomous as well. By getting it to see when a fish is on its own and to go and get it. Then I can run the program with “eating” as a positive outcome and see if the shark learns to do this on its own.


B…b..b…..b…..BOOYA

November 12, 2006

Tonight I played in the PokerNetwork Online League #11 ($20 buy in). As I mentioned last post I think Omaha is my best game so I was confident I could get another points cash.  I played very tight, solid poker which isn’t usually how I play Omaha.  Omaha is the type of game that you can play loose and win big pots.  But, if you play that way you have to be prepared to lay some fairly big hands down when you think your beat.

Throughout the tourney I kept up with the player average without taking to many risks until the final 2 tables.

There were 35 starters, but it took a long time to get down to those final 18. It was then I had to start making some big lay downs.  I laid low flushes down on at least 3 occasions, one of which I was shown I was beat.  I seemed to make a lot of straights on paired boards and laid a few of them down as well.  I think this was a turning point in my Omaha play as I wouldn’t have been laying many of those hands down previous to this game. By stealing a few pots now and then it enabled the blinds to not get out of control and I could wait to slow play a flopped boat when it came up.

I played really good poker all the way to getting my first cash of the League when we got down to 4 left.  I was the short stack at that stage with about 10,000 and the other 3 having 18,000 – 30,000.

I made a sick runner runner flush all in to get up in the top 2.  From there I slowed right down until I got heads up.  I started with a 3-1 chip disadvantage and got really lucky hitting at least one more runner runner flush and a huge pot which gave me the lead hitting a 2 outer on the river to make a full house over a made nut flush.

After this the blinds were 10% of both our stacks and rampant blind stealing between us started.  We swapped the lead around 4 times before I called his all in with a wrap around straight draw.  We both hit it and split the pot.  I got him down again and called his all in with a flush draw that never came.

I got a nice run of cards after that and stole a lot of blinds in a row.  When he got short stacked again (and the blinds went up) he pushed on a flop with a flush draw.  I had top pair (I think) and had a feeling I was above 50% if I made this call for the win.  I made the call and he missed his draw.

1st place got me $315 and a good chuck of points which should put me into the top 10 for the league.  The top 10 at the end of the season play for an Aussie Millions seat which would be an absolute dream for me.

Either way I’m free rolling for the rest of the league with my win so I’m stoked about that. The main thing is I know I’m playing good poker against good opponents and if I can get myself to those last 2 tables consistently I will get some results when the cards fall my way.


PokerNetwork.com League Game #10

November 8, 2006

After missing the last couple of League games over at PokerNetwork I saddled up tonight with a Hold’em game with 47 starters.

None of the bounties (Players if you knock out you get money for) started on my table. I didn’t catch any hands early and was watching one hyper aggressive player raising to 22xBB (Big Blind) pre flop. He was raising every other hand this way too. A normal sized raise for the first 5 levels is 2.5 – 4 BB at most. Any more then that and your in danger of getting pot committed with a medium strength hand right at the beginning of the tournament.

A few people were calling him to the flop and then folding to any bet. You see people play like this now and then and if you get the cards it doesn’t take a very complex play to get all their chips.

Luckily the cards I needed were dealt to me not long after this. Here (Hand History AA) is how I got the chips I needed to get play tight and super aggressive until the 1st break. He had K 10 (a bad play calling my initial raise).

Before the 1st break I got dealt AcQc and made a good call against a player all in for about 1/3 of my stack. He had AJ and got runner runner Q, 10 to make a straight on me.

I got to the first break with about 3500 in chips. I started with 2000.

After the break people started getting short stacked and not many hands weren’t raised and called by multiple people before the flop. I didn’t play many hands and stole a few pots to get up to 4500.

Then my internet connection started going in and out. Really frustrating and was making me play badly because I was always hurried to make a decision with no idea about what was going on.

Because of that I changed gears and started playing a lot slower and didn’t make as many steal plays. The blinds had gotten up there and just before we got down to the final two tables we were playing with a 25 ante as well.

I was just holding on with 3200 (I had been card dead since my high of 4500). The final two tables were 9 handed and to get points for the league I had to get in the top 13.

Short stacks were doubling up all around me as I had to fold my blinds and antes away with pathetic cards.

There were only 15 left and I had 1100. Blinds were at 200 – 400 with a 25 ante. I found pocket 6’s two from the BB and went all in. I was almost hoping for a call when I got one from the BB with 10,2 offsuit.

Boy I didn’t think I’d be in that good of shape! I was shocked that he called with that as he didn’t have many chips left either. The door card was a deuce which had me a little worried. The next two were an 8 and a 10. Another 10 on the turn and that was the end for me.

Two places off the points bubble. I had “points cashed” in the previous 3 events and was about 20th on the leader board.

The next league tournament on Sunday is Omaha. Which I consider my best game. Hopefully I can cash (both points and money) in this one so I can freeroll for the rest of the season.


Oh no, not another Blog

November 6, 2006

My first blog post. How super exciting. Lets get one thing straight right from the get go. I can’t spell, I don’t want to spell and I don’t care if bad spelling annoys the crap out of you.

Now we’ve got rid of the grammar police I can move on to the reasons I’ve decided to bless the Internet with my blogging presence.

  1. I’ve seen a lack of these so called blogs and I feel compelled to change that :|
  2. I’m about to start getting back into robotics and feel blogging my success/failures MIGHT actually help other people (which is what I understand the point of blogs to be)
  3. I really, really want to put links on random words in my blogs that point to funny things.

So I’ve been inspired to get back into robotics and AI programming after my super smart friend Glennzor showed me the “new” Lego Mindstorm robots that you can get. Basically its a programmable board sitting in a Lego Technic shell. It has some shit GUI programming for it, but can be (from what I understand) programmed using a higher language.

At $380 a pop for the setup its a little out of my price range at the moment because of a small cash flow problem I’m having with the ATO. Those crazy cats, gotta love’em.

But once I get my hands on one it will be a good refresh back into robots for me. I did an Engineering course at Uni where I made a robot using a Motorola Chip that could use IR sensors to follow a simple track and find its way back if lost.

While that doesn’t sound cool, believe me, it was. There were two things I didn’t like about the subject though. The first was that I had to code in assembly language. I hate assembly language. The second was that watching a robot car follow a track isn’t all that fulfilling. However, I did get to learn a lot about the basics of how to let a robot control its moments autonomously.

The second (and more important) thing I did in Uni was an AI subject. I think it was called “Intelligent Agents”. I did some really cool stuff in that which ended up being an assignment in Java that kinda used Evolutions theory of survival of the fittest on virtual fish. The fish basically had attributes like

  • Distance from another fish
  • Speed of swimming
  • Distance away from a virtual shark (which was your mice cursor)

So using your shark you could kill off fish that were out on there own (like what a shark would do in nature). As you killed off fish they were replaced by combining the Chromosome attributes of the remaining fish to form a new fish. Basically letting the surviving fish have a bit of a shagfest.

After a small amount of time you could see all the fish banding together and moving away from your little shark as a group just like in real life. Who’d have thought.

The professor that took this class was blind and was doing research in Robotic Vision which also sparked my interest.

So the past two weeks I’ve been busy thinking up crazy Robot challenges for me to work on. 99% of these I don’t see myself ever completing but here they are -

  • Using only normal video inputs from cameras, get a robot to have depth perception and internal local mapping using an array of techniques not restricted too
    • Bifocal Cameras
    • Auto Focus algorithms
    • Structure from motion
    • Cameras being able to pan/tilt independent of the main “head” i.e like our eyes do
  • Use machine learning to let a robot work out the quickest and safest way to navigate through a dynamic maze.
  • Get a robot to be able to recharge itself autonomously.
  • Work on doing something with a lot of small redundant robots that use Collective AI to communicate and solve a problem that one itself couldn’t solve.

Oh I have more but this will do for now. Some of us have to get up early in the morning. I’m luckily not one of them ;)