Wednesday, August 17, 2016

Tricorn Games - Flipped Off!

I am excited to announce that I have embarked upon a new venture - Tricorn Games. Under this banner we will be developing and publishing tabletop and card games, with potential expansion into the realm of mobile and computer games.

Flipped Off!, our first product is currently in the final stages of development and playtesting. Flipped Off is a tactical card game where you play a plotting Mastermind aiming to defeat your rivals and seize control of the city for yourself. You must manage your Minions - the Pirates, Ninjas, and Robots that do your bidding, play actions that can improve your situation or wreak havoc with your enemies, and use your Minions to launch attacks and hope that your rivals can’t turn the cascade of results to their own advantage.

We are currently recruiting playtesters, if you would like an early look at this game and would like to help us refine it and have input into the final result - please sign up here and join us! Playtesters will receive a high-quality printable PDF of all the game components and instructions, access to the playtest forum, and active participants will receive public credit for their contributions when the final release has been completed.

In addition to Flipped Off!, we have several additional projects under development which will be announced when they are ready for release.

Remember - Play more games!

Wednesday, May 25, 2016

The Tragically Hip - Gord Downie

20 years ago when I was in my early-teens I took a trip across the country by myself. Looking back it doesn't seem like much - I flew from Winnipeg to Edmonton via Saskatoon, a 3-4 hour journey with layovers, but at the time it was a huge step towards independence for me. I was going to Edmonton to spend a month with my cousins during the summer. In truth, I was dropped off at one gate, shepherded by a flight attendant who was there to help underage passengers flying alone, and picked up by family on the other end. But for a kid who had never flown before, to do so alone when he was perfectly happy wiling away the hours on a computer screen in the basement, it felt like a huge, scary undertaking.

It was freedom, and it changed my life, though it took me another five years to realize it.

The flight was uneventful. Scary, thrilling, strange in the way that is common to airplanes and amusement rides. Funny how I became a fan of the former, and you couldn't pay me enough money to tolerate the latter. I wasn't the only unaccompanied minor on the plane, there was another kid seated with me as well who was a couple of years younger and it was his first flight too.

I guess I was visibly nervous, I was a shy kid to start with - not much for talking - and I expect I was probably white as a sheet, staring out the window at the tarmac as the rest of the plane boarded. As the plane began making its way to the takeoff strip, shuddering, pinging, whirring - all things unfamiliar to a novice traveler - a passenger in the row ahead of me turned to talk to us. I don't recall what he asked us, but I told him my name and that it was my first time flying, and we talked briefly in the way that strangers do while the plane was getting ready for takeoff.

As I said, the flight was uneventful for anyone who knew what to expect. Once we were in the air and on our way to Saskatoon, the nice guy in the row ahead of us asked us if we could give him a hand. He and his buddy were doing a crossword puzzle from the morning paper. I can't say that either of them were terribly adept at it, but I was a kid. I don't think I helped worth beans, but it was fun. My fellow underage passenger wasn't interested, but I remember poking my head over the top of the guy's seat and spent the better part of an hour working the puzzle with the two of them.

Before I knew it, we were descending into Saskatoon. At the gate, the two guys said goodbye and left with some other friends of theirs who were also on the flight, while I stayed aboard for the next leg of the journey to Edmonton.

After everyone who was getting off had done so, the flight attendant came back to check on us before more passengers got on. I gather she was a fan - she came over and asked us "Do you know who that was? That was the Tragically Hip!".

I was a kid, I didn't have any bloody idea who the Tragically Hip were. I had heard the name before, but I couldn't have named a single song they played. I was more amazed at my uncle's exclamation when I related the story to him that evening. He knew who The Hip were.

Fast-forward five years, I am 17 years old, just about to turn 18, sitting in my dorm room in Waterloo, Ontario - 2,000km from my home and family. I had just embarked upon the biggest, most exciting, most frightening journey of independence in my life since that flight to Edmonton... and I was feeling it pretty badly. That night, and more than a few nights after I would put on my headphones and turn on my favorite playlist, comforted by the familiar strains of songs I had listened to a thousand times before. Songs that spoke to me in some way, songs that sounded like home. I would fall asleep listening to Great Big Sea and The Tragically Hip, whose album I would never have picked up had it not been for an enthusiastic flight attendant.

This post was prompted by the news that Gord Downie of The Tragically Hip has cancer, treatable but terminal. My father-in-law was killed by the disease less than a year ago, so I can relate to some of the experiences his family is going through today. So I wanted to post this, my own personal experience with them.

So for Ahead by a Century, Membership, Thompson Girl, My Music at Work, and most importantly... Courage, thank you.

Monday, March 21, 2016

Gotcha #5 - Network Performance, CSS, and HTML5

Today's article comes courtesy of understanding your customer's environment, and that emphasizing style over substance can break the bank.

Our story starts with an urgent request for assistance from a system administrator, a minor application update has resulted in a nearly five-fold increase in total network traffic at a remote office. On Monday morning, when the morning shift arrived network traffic began to spike. It grew, and grew, far beyond normal traffic levels for the office and stayed there, night and day, until the last shift signed off on Friday evening.

Think about this for a moment.

The application's network traffic did not increase five-fold. The entire office's network traffic consumption increased from ~2Mbps (24-hour average) to nearly 9Mbps (24-hour average) with peaks topping out at 10Mbps.

The first stage is always denial.

How could a minor update to a server-based web application that mostly consisted of a couple minor bug fixes, one new summary screen, and some UI tweaks be the problem? It must be something else, there isn't anything new or unusual in the application update.


Step 1: Isolating the Problem
Easy enough to do, by using more detailed reports we could see the initial spike in unusual network activity began at 10am on the Friday before, the same time as the outage window when the application update was deployed.

Also, there were no other maintenance activities ongoing at that time, no file transfers, and no other system updates scheduled or otherwise.


Step 2: Reproducing the Issue
To confirm, we conducted a test where all instances of the application on every workstation on the site was closed, and by so doing network traffic returned to its normal (low) stable state.

One by one, each workstation re-loaded the application and by time the last workstation was reconnected the network traffic was back at its five-fold peak. It was during this process of re-loading that the system administrator noticed something unusual. A new UI feature had been added to some screens, when a specific piece of data was in a warning state - the text box would flash orange. And every time a new screen loaded that happened to display one of these flashing orange boxes, network traffic would spike sharply.

In the end, the system administrator noticed 10 out of more than 100 workstations happened to be displaying this flashing orange box. Returning to shut down just these 10 flashing displays suddenly dropped network traffic back to normal once more. When they were re-loaded, network traffic would spike once more.

Step 3: Cause and Solution
So how can a simple CSS and HTML5 flashing text box on 10 screen possibly start pushing 4 times the total network traffic of an office of more than 100? The technique to highlight a text box had been used elsewhere in the application already, and the style control was rendered entirely in-browser with no additional server requests being made.

How can a box no larger than 400px by 300px with a lovely fade-in/fade-out HTML5 animation possibly consume 800Kbps per screen?

The Epiphany

Animated. For the first time in this application, the developer (to satisfy a requested requirement) used a simple animation cycle to flash the control orange on a 4-second cycle. It was a lovely effect, understated, but unmistakable and was easily visible when displayed on a large screen from across the room.

What wasn't clear however, was that each workstation did not use a browser to view the application. Instead, each workstation used a Remote Desktop (RDP) session to a centralized (offsite) server which then connected to the application in a browser window.

Instead of being rendered in a local browser session and consuming no network resources at all, the beautifully animated flashing textbox was being rendered and streamed as uncompressed full-motion video over the network to the site office.

10 workstations streaming uncompressed video for 24-hours a day, 5 days a week.

Step 4: Resolution
In the end the problem was easy to solve. Rip out the animation, and using a simple steady-state orange highlight to communicate the information.

But it was an important lesson. You must be aware of how your customer is using the tools that you build, and how the simplest of design choices can cause a major impact under the wrong circumstances.

Tuesday, January 19, 2016

Research Study: Memory Test


Anyone who signs in with an email address and completes the test before Feb 28 will be entered into a drawing for one of the top 2015/2016 indie games from Steam or an equal value Amazon book order.

Participate Here!

I'm conducting a study on memory and the ability for people to memorize short sequences of numbers. In order to do this I've built a small web app to conduct memory tests. It tracks both correct answers and time spent and scores your performance - so speed is better but not at the expense of answering incorrectly.

The purpose of this study is to test your short term memory skills, numeric analysis ability, and speed. The test is divided in 5 levels of 5 questions that increase in difficulty. You may complete them in any order you choose and at any time if you would like to do some now and return later to do the rest, but you must complete them all before the results can be processed.

The test is randomly generated, so you can take it as many times as you'd like to try and do better, and it tracks your history so you can see you best score if you do it more than once. Each question presents you with a small set of numbers to memorize, then asks you to answer a question about the numbers.

It's very simple, and quick to do. Please give it a try, and share it around - compete against your friends!