Friday, 29 April 2011

Blog changes, job, my own tracker and more :)

Note

This post is very tl;dr and contains a lot of techy talk later on so feel free to skim over any bits that put you to sleep, but there is poker-related stuff throughout so keep an eye out for that :)

============

Blog Changes and Job Offer!

This blog was originally intended to be mainly about poker, but I feel it's a bit boring for my readers to read (and for me to write) the same old ramblings, so I think from now on I'm gonna start blogging about a wider variety of hobbies and life stuff. I've already made a few posts about photography and other random shit, and I think they break up the poker talk quite nicely, so you can expect to see some more photography, music and tech talk. Don't worry, I'm still going to post about poker - I'll try to figure out some way to categorise my posts a bit better in case you want to filter them by topic. I'll probably also start using headings to divide my posts up a bit and I'm hoping to give this blog a facelift some time in the near future.

Brizzzzzzzle

I've also realised that my posting frequency fluctuates a great deal... this depends on a lot of factors: mainly how enthusiastic I am about poker at the time, and how much coursework I have. Thankfully I've just finished all my coursework for the conceivable future and managed to land myself a graduate job as a software developer at a small IT company in Bristol, starting at the end of September. Honestly I can't wait to start, as it seems like an awesome place to work and one of my coursemates got offered the job too, so congrats to my future colleague! :)

============

Technology and my own poker tracking software

So speaking of technology, my course (computer science) has really opened my eyes to a lot of technology I'd never really bothered to try before (or had half-heartedly tried and given up on). One of these is Linux: after using Fedora 14 in the Linux labs at uni and seeing how atrocious the Windows XP machines were in comparison, I really took a shine to it and decided to dual-boot Ubuntu 10.10 on my laptop. Wasn't long before I ditched Windows and cannibalised its disk space, lol.

The only major downside I've seen so far is that it's difficult to play poker on Linux... using Wine I can get FTP and Stars to run, but FTP seems really unstable and you can forget about getting any kind of tracker to run. I've tried using FPDB but I really can't get used to it and it's still in alpha with a lot of bugs.

I'm actually working on my own tracking software, which I'm going to write as much in Java as possible (although inevitably for the HUD and window management I'm going to have to write some OS-specific stuff in C/C++, and X11 window management is an absolute nightmare).

Needs work imo

Obviously this is a huge task and I've started projects like this in the past then given up on them shortly afterwards, but lately I've become really focused on programming, especially now that I've got a programming job lined up. The name is still to be decided so feel free to leave suggestions (NitZilla is the working name atm). I don't know what the scope is going to be, or whether I'll end up releasing it to the poker community, but on my to-do list at the moment is:

- importing hands into a DB
- support for both Holdem and Omaha Hi
- equity calculator similar to PokerStove
- hand replayer
- graphs
- reports
- TableNinja-like functionality (for hotkeys and automation of common tasks)
- table management similar to PlaceMint
- HUD
- table scanning similar to TableScan Turbo

So it's more of a suite than just a tracker. I know FPDB is already out there as an open-source tracker, and buggy/incomplete as it may be at the moment, it looks very promising; however, this is kind of a pet project of mine so I'm gonna go ahead with it anyway.

My message to aspiring programmers out there is that if you find something interesting but you're not sure if you can do it, just go ahead and launch yourself head-first into it anyway. Misadventure is one of the best ways to learn, and in the past week or so I've learnt so many more things about Java (JNA, JNI, Xlib, SWT, concurrency, enums to name a few) than I have in two entire semesters of Java lectures. I guess this goes for more than just programming, so consider it a piece of general life advice.

============

Ubuntu 11.04 (Natty Narwhal) Mini-Review

One last thing I'd like to talk about in this post is Ubuntu 11.04. I dunno how much of my audience can relate to this, but I want to rant about it for a bit, so feel free to skip this if you're not a geek.

As I mentioned earlier, I'm running Ubuntu on my laptop. 10.10 (Maverick Meerkat) was one of the slickest things I've ever used, ever. Seriously, my mind was blown. I upgraded to 11.04 (Natty Narwhal) a couple of days ago and so far, I've been thoroughly disappointed. Something I must commend Canonical on is the upgrade process: click the upgrade button, 1 hour later you have 11.04 with no questions asked and just have to restart once.

Unfortunately, I don't have many other nice things to say about it. The main gripe I have with it, is that they've changed the default interface from GNOME Panel to Unity. Whilst I'm willing to give new things a try, I think this was a pretty terrible decision on their part.

Some of the features of Unity are great: I like the vertical launcher, which makes a lot of sense given most screens are widescreen nowadays. It works pretty well, although it took me a while to figure out how to switch the icons around (you have to pull them out first before dragging them). I also like the keyboard shortcuts on the launcher, using the Super key (when they work). I've never liked the default auto-hide feature, as I like my desktop to be a bit more static, but managed to lock it in Compiz Config Settings Manager (which I'll talk about below).

They've introduced global menus, which are a bit of a mixed bag. They make a lot of sense when an application is maximised, but honestly when an app is not maximised, I want my menus to be on the windows and not all the way at the top of the screen... I'm also not a huge fan of the Dash, which is definitely something that works a lot better on netbooks or tablets rather than laptops or desktops, although I can see how people may like it. What I hate about it most is the retardedly huge icons and wasted space, and as far as I can tell there's no way to change it.

Which brings me on to what I hate the most about Unity:

(a) It's difficult to configure... the only way to change Unity-related settings is to install Compiz Config Settings Manager, which isn't installed by default. Even then, there are many things you can't configure at all, and seeing as customisation is one of the main attractions of Linux, I'm very disappointed by this.

FFFFFFFUUUUUNITY

(b) It's buggy as fuck! Seriously, in my first 3 hours using Unity, I crashed it no fewer than 10 times. Notably, every time you change any setting (no matter how minor) in CCSM, Unity stops rendering the panel, and I managed to screw it up so badly that Unity wouldn't load at all, even after restarting my machine. Eventually I had to delete all my config folders, which is less than ideal. The Dash also glitches out a lot, and the global menus render pretty choppily.

Overall, I'm not impressed with Unity at all. I feel it's fine to include it with Ubuntu, but it's clearly not a mature technology (I'm not the only one having problems with it, 50% of Canonical's testers managed to crash it!) and it definitely shouldn't be the default interface. I think once they iron out the bugs it'll be a decent product, but until then I'm sticking with classic GNOME and might give KDE and GNOME shell another try.

If you made it this far, give yourself a pat on the back. Apparently this post is about 1500 words long, which is impressive considering it took me several days and a lot of misery to write a similar length essay about virtualization in data centres earlier this week :)

- HappyPixel

4 comments:

The Poker Meister said...

I was a java SW developer a few years back. I can always take a look at things for you, but I doubt I can actively help you.

I developed an auto note taker and color coder with Java to parse PT3's DB and generate notes of stats for players (was used before PT3 / HEM got back ahead of the curve when Rush poker came out and they weren't able to update their HUD quick enough).

Let me know if you're interested in that code base.

HappyPixel said...

Very nice :) I still have yet to implement any of the DB related stuff, although hopefully it won't be too bad

I've been working on the equity calculator which can now calculate preflop equities correctly but it takes almost a minute just to do AA vs KK! Looks like I can bring it down to about 3s but I have no idea how Stove does it so quickly... gonna blame the JVM for now :)

The Poker Meister said...

You can shut off the GC or give the VM more memory, but it sounds like that won't help. I'm pretty sure that Stove runs a monte carlo sim to figure out the equity, but there has to be an algorithm out there somewhere...
If they can offer it on a website, it's gotta be faster than a 3second execute time:
http://www.evplusplus.com/poker_tools/

HappyPixel said...

Yeah, Stove can do Monte Carlo sims although I think the standard option is exhaustive... would make a lot of sense if it had precomputed equities for preflop, at least for 2 players and no dead cards which is by far the most common scenario (that should even work for range vs range).

Gonna try testing Stove out with different settings if I can get it running on Wine