Thursday, 31 October 2013

T-9: Fighting Code Entropy: from Order to Chaos to Order Again

T - 9 days until I release SeeingStars: Real Time Odds for PokerStars on Mac OS X

Sign up here to be notified when we release AND get a 50% discount.

After so many years as a software developer, I still get surprised at how quickly one’s nice, clean, ordered code dissolves into a mess as one adds features, bug fixes, and optimisations. Software development is, to a large degree, a continuing battle against code entropy, or the gradual decline to disorder. And in less than one month this has already happened to SeeingStars. I spent a good part of day nine reintroducing some order to the code so I can keep making progress.

Out of that reordering, I now have successfully used SeeingStars to generate odds for me while I played some hands. It works; but only with PokerStars on a Retina display with the window size at max. This is good. Now to make sure all window sizes are supported.

 

Wednesday, 30 October 2013

T-10: But Retina is Different...

T - 10 days until I release SeeingStars: Real Time Odds for PokerStars on Mac OS X

Sign up here to be notified when we release AND get a 50% discount.

Most of my work on SeeingStars has been a MacBook Pro with a Retina display. Today I switched to an iMac. A non-Retina iMac. The layout of the PokerStars poker table seems the same, superficially. But actually there are significant differences in the relative placements of the cards on the table. Uh-oh. This doesn’t make me happy, because it means more work now, but also, more work to keep things working in the future whenever PokerStars changes their software.

Well, if it was easy, anyone could do it, and I couldn’t build a business around it. So I guess I need to just roll up my sleeves. I mean, roll up my sleeves even higher than they are already, and work around this problem.

Tuesday, 29 October 2013

T-11: Got a good-looking app icon

T - 11 days until I release SeeingStars: Real Time Odds for PokerStars on Mac OS X

Sign up here to be notified when we release AND get a 50% discount.

Despite the adage, most all of us do judge a book by its cover. Given little information to make a decision, we use what data we’ve got, even if it is close to irrelevant. Which, in marketing speak for a Mac application, means you need a good looking application icon, amongst other design elements.

Here’s what SeeingStars will look like in your dock:

Screen Shot 2013 10 29 at 2 06 58 pm


Here’s what SeeingStars will look like in Launchpad:

Screen Shot 2013 10 29 at 2 08 24 pm

While my designers have been working on these things, I’ve been bringing the SeeingStars app closer to completion. 

 

 

Monday, 28 October 2013

My new hero

Trainspotters, metrophiles, foamers, gricers, anoraks, railfans, track bashers, haulage geeks—there is something about the subway that brings them out. At the heroic extreme was a 16-year-old immigrant from Trinidad who in 1993 dressed himself in motorman clothes, slipped behind the controls of a train, and cruised the A line for 47 miles, nearly a full round-trip, making scheduled stops to allow passengers on and off. Apparently the experience satisfied him because he never repeated the trick and soon enough turned his attention to the complications of raising a family.


The whole article is here.

Saturday, 26 October 2013

T-14: Calculating Odds

14 days until I release SeeingStars: Real Time Odds for PokerStars on Mac OS X

Sign up here to be notified when we release AND get a 50% discount.

Today I got the component into SeeingStars that does the actual calculation of your chance of winning the hand. With the correct data, it will quickly and accurately give the odds. A somewhat important component…and it can handle Hold’em hands and Omaha hands.

A major step forward...

Thursday, 24 October 2013

T-15: What's worse than no data?

T - 15 days until I release SeeingStars: Real Time Odds for PokerStars on Mac OS X

Sign up here to be notified when we release AND get a 50% discount.

What’s worse than no data? Wrong data.

Today I took yesterday’s code that detects the number of players who haven’t yet folded in the current hand and beefed it up. I made sure that the numbers are correct no matter if you use a very small PokerStars window or a very large one. I don’t want SeeingStars to give you wrong data, nor to base its calculations on wrong data.

Writing code to crunch numbers and process images makes me thirsty. Enough work for today. It’s 7:41pm and friends await.

Wednesday, 23 October 2013

T-16: Detecting Number of Players in Hand

T - 16 days until I release SeeingStars: Real Time Odds for PokerStars on Mac OS X

Sign up here to be notified when we release AND get a 50% discount.

Today I devised a simple way to determine how many players are still in the hand. This is essential information for calculating the odds.

It turns out that when using a suitable theme and table layout in PokerStars, if you grab the screenshot and convert it to a two-colour black-and-white no-shades-of-grey image, you get a splash of easily-detectable white in well-defined locations for each player still in the hand.

Here’s an example screenshot of having this done:

NewImage

Now all I have to do is check certain pixel locations for white. Heads Up, 6-max, and 10-max tables all have the splashes of white at different places. So SeeingStars will check anywhere a player could be located, count the number of white dots and use that as the number of non-hero players still in the hand.

 

Tuesday, 22 October 2013

T-17: Outsourcing design tasks

T - 17 days until I release SeeingStars: Real Time Odds for PokerStars on Mac OS X

 
Have I got enough time to get SeeingStars ready by my self-appointed deadline? I don't know, and I'm beginning to stress about it. I'll do my best, but I'm aware that I'm now depending on getting multiple tasks completed, by myself or others, AND have left no contingency for unexpected problems. The heat is on...
 
Having rediscovered the power of outsourcing small tasks to others, I've outsourced the creation of a OS X application icon for Seeing Stars. I did this via oDesk. This is a well-thought website for connection businesses with self-employed translators, designers, coders, content writers, and so on. I used other similar websites, and they are okay, but I think oDesk has done a good job of using nudges and systems to keep the quality high, the communications good, and the expectations realistic.
 
I discovered today that SeeingStars won't run for on most Macs, because I forgot to do an esoteric but essential task called "code-signing". Without this, Mac apps won't run. I think I'm going to need to recruit a tester very soon to help catch these problems.

Monday, 21 October 2013

T-18: Automating some things

T - 18 days until I release SeeingStars: Real Time Odds for PokerStars on Mac OS X

Sign up here to be notified when we release AND get a 50% discount.

There was no report yesterday; it was Sunday, the weather was glorious, and I had guests, so I spent most of the day away from the computer.

Today I've been automating the process of turning my SeeingStars code into a Mac app, ready to be downloaded and run by you. Tedious stuff, and doing this is even more tedious than explaining it. But it is so important that I have a simple one-step task to do all this. Ideally the one-step task will create SeeingStars, upload it, and update a website with a link to the new update. I'm not there yet.

Today, I also met with and commissioned someone to create a simple 3-page website for SeeingStars.

Want to try out SeeingStars already? Download it here. But don't expect much - it won't yet tell you your odds!

Saturday, 19 October 2013

T-20: A Project Plan

T - 20 days until I release SeeingStars: Real Time Odds for PokerStars on Mac OS X

Sign up here to be notified when we release AND get a 50% discount.

Today was a day of getting organised. I wrote down all the tasks I could think of that I need to do, either by myself, or by outsourcing to someone else. For each task I have a date I aim to have it done. So far things seem feasible to get a usable version 1.0 in the hands of customers by my self-appointed deadline.

The app is now periodically grabbing a screenshot of the PokerStars poker room table window, and holding it in memory. The next step is to start collecting information about the poker room table from the screenshot.

 


Friday, 18 October 2013

T-21: SeeingStars now finding PokerStars tables

T - 21 days until I release SeeingStars: Real Time Odds for PokerStars on Mac OS X

Sign up here to be notified when we release AND get a 50% discount.

I made a good step forward with SeeingStars today. Now it can find individual PokerStars tables, and track their location and size. I added some console logging for use during development so I can easily check that things are going correctly. 

Screen Shot 2013 10 18 at 4 47 54 pm

SeeingStars is picking up the type of poker (Hold’em, Omaha, etc) too. Between the window size, location, and poker type, the next step forward will be to start determining what’s going on in the table.

 

 

Thursday, 17 October 2013

T-22: SeeingStars now detecting PokerStars

T - 22 days until I release SeeingStars: Real Time Odds for PokerStars on Mac OS X

Sign up here to be notified when we release AND get a 50% discount.

Finally, with barely three weeks to go until launch, I've started work on the actual functions of SeeingStars. Today I made SeeingStars continually monitor your computer for any instance of PokerStars. It detects the main PokerStars software, as well as the various country- or region-specific variants, such as PokerStarsES for Spain.

When it can't find PokerStars, it says so. When it can, it says so. It checks every half a second for a change in the situation.

Although this seems like a basic task that a human can perform without needing software to help, it is a good step forward. That's because it shows that PokerStars is now able to detect and interact with other applications.

Some rather basic screenshots. When PokerStars is not running:

Screen Shot 2013 10 17 at 7 35 44 PM

When PokerStars is running:

Screen Shot 2013 10 17 at 7 35 58 PM

 

I've learnt from a few years of developing Poker Copilot that it is important to make it easy to add or remove other poker rooms as they are created. So right from the start I've separated the information about various PokerStars clients from the main SeeingStars code. 

Download SeeingStars build #2 here.

Wednesday, 16 October 2013

T-23: Better Start Writing This Software Soon!

T - 23 days until I release SeeingStars: Real Time Odds for PokerStars on Mac OS X

Sign up here to be notified when we release AND get a 50% discount.

Today I re-did my "give me your email now, and get a 50% discount when SeeingStars is available" page. I used a too-cute web-based product called KickoffLabs to produce the sign-up page. I spammed all my Facebook friends with links to this blog and the sign-up page. I also put out the word on the Poker Copilot blog.

I guess I should now stop with the ancillary tasks of creating and launching SeeingStars, and get into the dirty programming tasks...

 

 

Tuesday, 15 October 2013

T-24: A Completely Featureless Product Now Available for Download

T - 24 days until I release SeeingStars: Real Time Odds for PokerStars on Mac OS X

I escaped from the yesterday’s circles and managed to produce a Mac application bundle that can be downloaded and run. It’s big, roughly 60 MB, and it is useless so far. But it is there, and I can recreate it on demand, as I start adding functionality.

Try it out: Download SeeingStars build 1 from the SeeingStars preview page. All things going well (and if you have Mac OS X 10.8+), it will run, and show you a simple screen:

Screen Shot 2013 10 15 at 6 20 36 pm

From this, hopefully, a good product will grow.

I contacted a graphic designer today to create a nice application icon. Currently I’m using the default for new applications made with Xcode:

Screen Shot 2013 10 15 at 6 21 57 pm

Let’s see what he can do.

T-25: Going Around in Circles

T - 25 days until I release SeeingStars: Real Time Odds for PokerStars on Mac OS X

I hope I don't have too many days like yesterday in the next 25 days. I was working on making the distributable SeeingStars app bundle. It didn't go well. I found myself switching computer languages and working with systems that give errors like "Something went wrong" without any more info. Ugh.

I expect to make more progress today.


Sunday, 13 October 2013

T-26: Break day

T - 26 days until I release SeeingStars: Real Time Odds for PokerStars on Mac OS X

Today is Sunday, so instead of working on SeeingStars I spent some time out in the sun. One must rest!

Saturday, 12 October 2013

T-27: Almost downloadable

T - 27 days until I release SeeingStars: Real Time Odds for PokerStars on Mac OS X

Today is Saturday…and I took it easy. I researched ways to bundle the application so you can download it and run it. It is partly done - I need to wrap it up a little bit nicer, so that you can download it in a DMG file. Hopefully I'll get that ready tomorrow.

You might ask: why make SeeingStars downloadable, purchasable, runnable, before it is actually a working product? It's because these things can be problematic if you leave them to the end. They may require significant rework. And yet they are essential for a product to be a viable business. Once these things are in place,  then I can add the important, working features that make people want to download, purchase, and run SeeingStars.


Friday, 11 October 2013

T-28: You can Now Buy and Register SeeingStars

T - 28 days until I release SeeingStars: Real Time Odds for PokerStars on Mac OS X

I created an empty application today and called it SeeingStars. So that's what I'll add bits to over the next month to make it a product. The first thing I added to the empty application was a registration system. You know, the thing that says, "This is a 30-day trial. Wanna register?"

Getting the basics of sales and registration into a new product is easier when you already have this in a mature product. Today I took the registration system from Poker Copilot and inserted it into SeeingStars. It works.

This means that although SeeingStars doesn't yet exist, it is possible to buy SeeingStars, receive a working license key, and - when the product is available - unlock the 30 day trial.

The empty window that will become SeeingStars:Screen Shot 2013 10 11 at 4 48 39 PM

 

The message at start-up that you'll see when first opening SeeingStars:Screen Shot 2013 10 11 at 4 48 37 PM

The working license key activation.

tScreen Shot 2013 10 11 at 4 49 05 PM

Thursday, 10 October 2013

T-29: Housekeeping

T - 29 days until I release SeeingStars: Real Time Odds for PokerStars on Mac OS X

 I took advantage today of my existing code and tools to do some housekeeping tasks for SeeingStars. I now have:

  • a new project in source control. I use GitHub, because I no longer want to maintain a server for this. I pay GitHub $7 a month.
  • a new project in my issue tracking software. I use FogBugz. Silly name, reasonable product, free for my usage level.
  • a new project in my code editor. I'm using Java 8, which is still not officially released. Why? Because I want to and I can! It is great having your own company.
  • a new product in online store. I use FastSpring. I love this company. For 5 years I've used them to handle Poker Copilot's online store. There's never been any major problem. They answer all my support queries quickly. They pay promptly. They've consistently improved their offering year after year.
Now it's actually possible to buy SeeingStars already; the online store is here. For now the store looks like Poker Copilot's store; I'll need to work out a better solution there. In the future however, as this is not critical for releasing version 1.0.

Wednesday, 9 October 2013

T-30: An Epiphany: Use Java

T - 30 days until I release SeeingStars: Real Time Odds for PokerStars on Mac OS X

I'm good at programming in Java. I've been doing it for 15 years. Java is about to release version 8; I've been using it since version 1.1.8. I can do most programming tasks in Java rapidly. I know its strengths. I know its weakness. I know its gotchas and how to work around them. But it's lousy for making desktop apps for Mac, which is what I currently do for a living. One is supposed to use Objective-C. But I don't like Objective-C and I'm not good at it. I'd need to use Objective-C daily for at least six months before I'd feel reasonably good and productive with it. I've tried a couple of times to do that, but my distaste for its programming style and its chaotic mixture of three  languages in one (C, C++, Objective-C) makes me lose interest quickly. Mastering Objective-C, however, is critical if I want to produce the best possible Mac desktop apps.

That's what I thought until two weeks ago. Then, for reasons I can't remember now, I realised that although Java isn't a great language for creating desktop Mac apps, it is good enough. I know how to solve the problems with this mismatch. I enjoy using Java. There's really no reason to shun it.

So now, the apps I've been trying to make, but for which my motivation drops off quickly, will not be written in Objective-C. They'll be in Java, starting with SeeingStars. SeeingStars is a Mac app for which I created a prototype in Objective-C a year ago. It is for online pokers who don't want or need the complexity of Poker Copilot. They just want to know - and learn - the odds in Poker in real time.

So starting today, I'll be aiming to resurrect SeeingStars, but this time in Java. My aim is to work on it for 2 hours, every day, for the next 30 days, at which point I hope to release a version 1.0 product. Read along in this blog every day for the next 30 days.

 

Tuesday, 8 October 2013

From Amazon's "Redefining Definitions" Department

Today when I tried to order from amazon.co.uk, for delivery to Spain.

NewImage

The slight problem is that they can't fulfil any of the products in my order because the reseller doesn't deliver to Spain.

 

Monday, 7 October 2013

Experimenting with Help Desk software

Until now, I’ve done all customer support using email. For the last month or so, I’ve had someone assisting with customer support for the first time in 5 years+ of running my software company. It quickly became apparent that plain old email might work for one, but with two people sharing customer support duties, it is not a great solution.

We’re trying a web application called Snappy. It’s been a couple of weeks, and so far, so good. It is clearly a new product as there are many slight tweaks that could be done, and some important features missing, most notably inline images in customer support responses. But over all it seems simple yet powerful. 

What I like most of all about Snappy is that their own customer support team are super-responsive. As in, I-find-and-report-a-problem-on-Sunday-and-they-rectify-it-on-the-live-website-on-Monday super-responsive. Can’t beat that.

Avoiding "This web page has disabled automatic filling for this form." messages in Chrome

Don't you hate it when you are trying to log in to your online banking and Google Chrome tells you  "This web page has disabled automatic filling for this form."? I do. It was really bothering me with a new bank account I have, because the username is a hard-to-remember long string of digits. I found a solution. There's a Google Chrome Extension called Autocomplete = on and it turns this 'feature' off. Now almost every login form will autofill for you, even if the web page has attempted to disable it.

Whoever you are who created this extension, I thank you.