Friday, 27 December 2013

SeeingStars Second Beta Available

I managed to get a few hours over the Christmas period to work on SeeingStars. I’ve added a crash reporter, an issue reporter (accessible from the Help menu), and a “There’s a new update available” mechanism. Not much else has changed.

Download it here.

Saturday, 21 December 2013

SeeingStars 1.0 Beta Version Available

 A few days remain 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.

You can now download and use SeeingStars 1.0: Beta Test Version. I’m releasing this early version to help flush out issues, and to make sure things work on a range of computers.

Seeing stars screenshot version 1 pre alpha

Please send feedback to support@pokercopilot.com. Bug reports welcome.

Wednesday, 18 December 2013

SeeingStars: Coding yet Procrastinating

A few days remain 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 spent two hard day’s (well, two hard half-day’s) coding, and realised that I was no closer to releasing SeeingStars at the end of the day. I had avoided doing the dull work that needs to be done to make sure SeeingStars works at all window sizes, and instead decided that the screen-scraping engine underlying SeeingStars just HAD to be turned into an independent service that I can run and use from Terminal. “To make it easier to test and support”, I told myself. “To make the code better structured and aesthetically pleasing”, I imagined. The truth was, I was simply procrastinating.

Better-structured, aesthetically pleasing code satisfies my somewhat OCD nature. Spending time doing this gives me the illusion of progress. But actually, for version 1 of a product, I believe the most important thing is getting something usable running in the hands of real users. Nothing beats delivery. I should make that a mantra:

“Deliver the product. All else is secondary”.

Thursday, 12 December 2013

SeeingStars: Test test test

A few days remain 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.

This screen-scraping stuff is fickle. A small change to the layout of the screen, the window size, or colours, and the screen-scraping techniques can fail. A small change to one part of my screen-scraping code, and card recognition can fail. Like humans, my program doesn’t like change.

Therefore I’ve been creating lots of automated tests. So if problems do occur, they’ll be easier to isolate and fix.

I like automated tests. They make me feel more confident about my code. They allow me to fine-tune things and still expect existing code to work - or to find out quickly what broke.

Meanwhile, SeeingStars is soooo close to being ready for beta-release. Some more testing, some better results at various window sizes, and it’ll be beta-release time.

Wednesday, 11 December 2013

"Merry Christmas" EASILY outsells "Happy Holiday"

Should you write Merry Christmas or Happy Holidays on cards? That’s a personal choice, but if you are into selling, then ConversionVoodoo claims that their large A/B test results in “Merry Christmas” converting way better:

As you can clearly see, “Merry Christmas” killed it, nearly doubling the click through rate of the other subject lines. 5.47% vs 2.90% is a clear winner with statistical confidence.

Tuesday, 10 December 2013

Multithreading is easy? If only...

There’s a well-argued, thoughtful blog essay on blog.smart bear.com, arguing that multithreaded programming is easy:

Perhaps you’ve accepted the common fallacy that “Multithreading is hard.” It’s not. If a multithreaded program is unreliable it’s most likely due to the same reasons that single-threaded programs fail: The programmer didn’t follow basic, well known development practices. Multithreaded programs seem harder or more complex to write because two or more concurrent threads working incorrectly make a much bigger mess a whole lot faster than a single thread can.

Oh I wish that “multithreading is hard” were a fallacy.

Writing a background thread that performs a long-running calculation? easy. Especially the examples from the multithreading books, which are almost invariably Fibonacci calculations, a somewhat irrelevant example, because Fibonacci numbers can be calculated quickly without the need for multithreading.

Writing a background thread that can be cancelled immediately, that gives useful progress information, that doesn't leave other threads indefinitely blocked if cancelled, and that cleans up after itself if cancelled? hard.

For my single-threaded code I have great static analysis tools, IDE magic, and testing frameworks, all which help me write clean code. For my multi-threaded code, I'm on my own. Let one, just one, mutable variable escape from a thread, and suddenly I have non-deterministic error possibilities, delightfully difficult to reproduce, to find, and to fix. Perhaps I’m coding while tired, and I inadvertently make a mutable list escape from its thread. My programmer’s toolkit is not smart enough to detect this subtle error. Now I’ve got an error that may not occur today. It may not occur within the next month. It may not occur ever. Or just possibly I now have a new source of really subtle errors.

That reminds me of a war story. I joined a software team for version 2 of their project. My main task was making some slow things go much faster. I did that. And then really strange things started happening. I eventually found a mutable data structure shared between threads. When the system was slow, this bug was hidden and never had a chance to occur. By fixing other problems, suddenly this bug, that had been in the system for a year but had never caused a known problem, was causing crashes daily.

My main product, Poker Copilot, is heavily multi-threaded. To minimise the pain of multi-threaded bugs in Java, I follow these guidelines I created just now:

  • Use Java’s own excellent Executor framework. It was introduced in Java 5; before that we had to use horrible low-level multi-threading techniques.
  • Read, re-read, and re-re-read the canonical Java Concurrency in Practice. Readable, thorough, and written by Java deities.
  • Use immutable variables and classes fanatically. Returning a list? Don’t. Instead, return an immutable copy of the list. Creating a new class? Make it an immutable, final class. By default go for immutable options. Google’s Guava Java libraries have a comprehensive set of immutable data structures that make this easy.

Saturday, 7 December 2013

SeeingStars: Table Size Detection

One of the shortcomings in SeeingStars to date has been that you need to manually tell it whether you are sitting on a 6-max table, a 9-max table, or a heads-up table. This is because my initial attempt to make this automatic wasn’t reliable.

Today I tried a new approach for detecting the table size, and it seems to work reliably. My initial tests have passed 100%. Tomorrow I’ll try it with a much larger set of test data. 

Thursday, 5 December 2013

SeeingStars goes Fuzzy

A few days remain 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’ve now added a little bit of fuzzy logic to SeeingStars. SeeingStars (partly) works as follows when determining the rank of the cards (eg. Ace, King, Queen…) displayed:

  1. Grab screenshot of poker table window.
  2. Convert screenshot to a two-colour image.
  3. Extract a sub-image where the card rank is displayed.
  4. Convert the sub-image into a string of bits.
  5. Check that string of bits against a dictionary I prepared in the lab.

However that process can be upset by the nature of automatic image manipulation. Occasionally SeeingStars can’t tell what the card rank is. But there is a solution: by adding some fuzziness to the process, I can get pretty close to 100% accuracy for detecting. Using a core Computer Science concept called the Levenshtein distance, SeeingStars can detect close matches. It makes me content to use and relearn concepts I learnt in university years ago. It allows me to answer the question: “does that screenshot sub-image sort-of, kind-of look like a particular rank?"

 

Tuesday, 3 December 2013

SeeingStars: Where is it?

I aimed to release SeeingStars on November 9th. But it wasn’t ready. There is a product. It works, but not as well as I’d like. It has a website, a logo, an app icon. But the product itself needed a bit more work. Then I got distracted, by quick trips to Tunisia and Belgium, by a cold, and by an urgent problem with our flagship product Poker Copilot.

But I’m working on SeeingStars again. It will be here very soon. Within the next few days I hope to have an “Alpha testing” version available.

Stay tuned...

Thursday, 7 November 2013

SeeingStars: How It Looks

I’ve more or less settled on the user interface for SeeingStars. Here’s what you’ll see when you are playing at PokerStars with SeeingStars running:

Screen Shot 2013 11 07 at 8 45 39 pm

Notice the little icons in the bottom left; they switch quickly between the main screen, the config screen, and a troubleshooting console.

 

Monday, 4 November 2013

T-?: I'm losing track

A few days remain 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’ve spent recent days enjoying the three-day weekend we had here in Spain, and doing some essential things on my main product Poker Copilot. So I’ve fallen a little bit behind my self-imposed schedule for SeeingStars.

I hereby grant myself an extension to the SeeingStars schedule. Another week or will help me do things properly.

In the meantime, the draft SeeingStars website is ready. Take a look; keep in mind that it does still need some real content.

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.

Wednesday, 4 September 2013

Quote of the Day

My favorite part ... was his rant about "the myth that people want simple products"… what people actually want are products that seem simple, but which have the depth to meet more needs as the user gets further in. Shallow products don't win. Products win when they have power but hide it.

Read more here.

Tuesday, 20 August 2013

The Ultimate Cheat Sheet for Starting and Running a Business

Pure Quality.

6) Should you require venture capitalists to sign NDAs? No. Nobody is going to steal your idea.

and

16) What do you do when a customer rejects you in a B2B business? Stay in touch once a month. Never be angry.

and

51) What is the only effective email marketing? Highly targeted email  marketing written by professional copywriters and the email list is made  up of people who have bought similar services in past six months.

and

85) I have an idea for an app but don't know how to execute. What  should I do? Draw every screen and function. Then outsource someone to  make the drawings look like they come from a real app. Then outsource  the development of the app. Get a specific schedule. Micromanage the  schedule.

Read the whole thing here.

Tuesday, 30 July 2013

On Changes in Software and Reactions Thereto

I've found any change in the software I develop and sell can produce a "I don't like this change" response, whether it is removing features, changing features, or adding something.

As a software developer and producer, one needs to develop thick skin. If I make a change and one person complains, I need to remind myself that other people like it. However, if many people complain about a specific change, then I should listen, try to understand their perspective, and consider rolling back and/or adding an option to have things either the old way or the new way.

With the "add an option" approach, however, one must be careful not to gain lots and lots of UI-cluttering options in the Preferences.

The "add an option" approach can also result in more complicated customer support - users inadvertently turn off features/changes in the Preferences, and then wonder why things don't work. Support personnel have the added complication of working out whether the user has done this.

So there are a number of issues being balanced here: the customer's (or user's) dislike for change; the potentially real complaint that the change has worsened the software for some users; keeping the software flexible; but not drowning the user with too many unnecessary options; nor making customer support too complicated.
 

Sign of the Times: Book's Kindle version more expensive than hard cover version

Screen Shot 2013 07 30 at 2 30 05 PM

The Kindle version costs less - much less - to produce and to deliver to me. And yet I still bought it, so great to me are the advantages of the Kindle version.

 

Monday, 22 July 2013

Copy Clipboard between computers: A solved (for Macs) problem

For years, I've found it painful to copy a fragment of text, such as computer code, or config settings, from one computer to another. I've often wanted the clipboard contents to magically be shared between computers. I've tried many approaches - some manual, some using third-party software that had to be installed on each computer.

I believe this problem is now solved in Mountain Lion, via OS X's "Notes" application and iCloud. If you have note-sharing iCloud activated on your Mac, which I think is the default behaviour, then copying a fragment of text between computers - any two OS X computers goes like this:

  1. Using Spotlight on computer A, open Notes
  2. Paste into Notes
  3. Using Spotlight on computer B, open Notes
  4. Wait a couple of seconds for syncing to make the new note appear on computer B
  5. Select text and copy into clipboard

As an added bonus, the content is shared with the Notes app on iPads and iPhones.

Alas, Evernote, you were a pretty good solution, but you required me to download and install Evernote on each device I used.

Irony of the Day

From a Hacker News discussion:

"Our local police force has set up a site for 'anonymous' reports from rape victims, and it had GA tracking on every page (plus Google CDN content, another issue). I wrote them to explain why this wasn't the best idea..."

Wednesday, 10 July 2013

The Worst Video Game Ever

I can't tell if this is real or not.

The drive from Tucson, Arizona, to Las Vegas, Nevada, takes approximately eight hours when travelling in a vehicle whose top speed is forty-five miles per hour. In Desert Bus, an unreleased video game from 1995 conceived by the American illusionists and entertainers Penn Jillette and Teller, players must complete that journey in real time. Finishing a single leg of the trip requires considerable stamina and concentration in the face of arch boredom: the vehicle constantly lists to the right, so players cannot take their hands off the virtual wheel; swerving from the road will cause the bus’s engine to stall, forcing the player to be towed back to the beginning. The game cannot be paused. The bus carries no virtual passengers to add human interest, and there is no traffic to negotiate. The only scenery is the odd sand-pocked rock or road sign. Players earn a single point for each eight-hour trip completed between the two cities, making a Desert Bus high score perhaps the most costly in gaming.

Read more at DESERT BUS: THE VERY WORST VIDEO GAME EVER CREATED

 

NY Times Crossword has an error!

Crossword clue in today's NY Times crossword: "It runs on Macs".

Only answer that fits the grid: "iOS"

I'm stunned. I'm shattered. A mistake in the king of crosswords. I've been doing these crosswords for a long time, and it is the first error I ever noticed.

 

 

Monday, 10 June 2013

A simple public choice theory of universal surveillance

Tyler Cowen posits an interesting theory on how universal surveillance may be threatened:

Let’s say that everything is known about everybody, or can be known with some effort. The people who have the most to lose are powerful people who have committed some wrongdoing, or who have done something which can be presented as wrongdoing, whether or not it is. Derelicts with poor credit ratings should, in relative terms, flourish or at least hold steady at the margin.

It is not obvious that the President, Congress, and Supreme Court should welcome such an arrangement. Nor should top business elites. More power is given to the NSA, or to those who can access NSA and related sources, and how many interest groups favor that?

Therein lies a chance for reform.

A project the size of PRISM requires the knowledge and labour input of many people. I'm surprised that there isn't more whistle blowing. Surely there are more people than one new hire from a consulting firm who know what is happening, hate what is happening, and want to reveal what is happening.

Friday, 17 May 2013

The Shortest Scheduled Flight Route

It's 2.7 kilometres, run by Loganair, and runs between two of the Orkney Islands.

Monday, 13 May 2013

So WhatsApp isn't Secure from Government Snooping...

if you are in Saudi Arabia, and probably anyway else. And most other Internet communication technologies too, according to the rather good article.

 

Tuesday, 23 April 2013

"Run It Twice" on PokerStars; HeroBet added

Two things:

  1. A small request: if you have any hands where you used PokerStars' "Run It Twice" feature, I'd be grateful if you could send me the raw hand history files. I want to add support for "Run It Twice" to Poker Copilot. You can send the hands to steve@pokercopilot.com
  2. The latest PCP Dallas update adds support for HeroBet (an Ongame Network room).

Tuesday, 2 April 2013

You Too Can Have the Kidnapping Experience

As with any pricey upscale service, you have many choices for your Extreme Kidnapping. You can even select your kidnapper. Adam offered me the standard goons, or I could choose a team of Elite Girls—sexy girl kidnappers who wear stripper platforms and microskirts. I declined the Elite Girl squad because (a) I'm married, (b) getting kidnapped by sexy ladies isn't exactly realistic, and (c) I'm not an idiot. Clients probably hire the Elite Girls thinking it would be awesome, only to find out that the girl kidnappers are ten times more sadistic.

Read the full article.

Saturday, 19 January 2013

Protect yourself from military drones with the right clothing

Someone invented clothing that hides you from drones. And an arms race ensues...

The Island of Yap and Unmovable Currency

Today I learnt that the island of Yap (it's real - it is now part of the Federated States of Micronesia) used to have as currency carved stoned so big you couldn't move them. True story. I think.

Its coins, the rai, look like stone doughnuts. Some are fairly portable, the size of actual doughnuts, but others weigh as much as a couple of cars. The process of producing these things, 250 miles across the sea in the quarries of Palau, used to be a gigantic effort – a Victorian naturalist witnessed a tenth of Yap’s adult male population digging these things out of the ground and sailing them back to Yap.

Wednesday, 16 January 2013

If you read one article today...

...make it this one. Tech reporting gonzo style. By a man who confesses nothing about tech. But hands off the beverages while reading, or you will snort it out your nose.




Tuesday, 8 January 2013

Earnings max out at 40-ish

That's what I learnt today:

Whatever you earn at age 40 is likely to be the top of your earning potential. This is one of a gazillion things I've learned from talking with Al Lee, the director of quantitative analysis at PayScale.

Al’s data, which is based on the careers of college graduates, is basically that the salary curve for most people in their 20s is very steep. Then it starts to flatten in the 30s, and then you get into the land of the 3% raise. In real dollars, those 3% raises are not actually raises, they are just keeping up with inflation.

Monday, 7 January 2013

A New Way to Punish Children

From The BBC:

A man in China hired virtual "assassins" to hunt down his son in online video games and kill off his avatar, according to local media.