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!


Tuesday, November 17, 2015

Refugees - Past, Present, and Future

I debated with myself about writing this post. I normally stick to technology, literature, and various constructive activities on my blog, and I avoid commenting on current affairs or political situations. I avoided the Canadian federal election, talking about who I supported and why, among various other noteworthy events.

This post is different. If you want to avoid my thoughts on refugees and their place in Canadian history, then go ahead and stop reading now.

This is from a post that I wrote and shared on Facebook.

Did you know: 21,000 Mennonites came to Canada as refugees between 1923 and 1930. These were German-speaking people from Russia. This was shortly after the Russian revolution deposed and assassinated most of their royal family who were close allies of the west. This was shortly after the most violent and bloody war the world had ever known, where Germans were the enemy. This was a time when Canada only had 10 million people and 21,000 refugees was a much bigger number for the population to support.
Mennonites said they were a religion of peace, they were pacifists, but to many Canadians they were the enemy. Sure some Mennonites already lived here, but those Mennonite had been living here for two generations and more than fifty years already.
But Canada welcomed them anyway, because that is what we do. Canada welcomed my great-grandparents to this country. My family were refugees fleeing war, fleeing persecution, fleeing the Soviet Gulag. They were the enemy in the eyes of many, but they were welcomed anyway.
Many people are questioning the wisdom of allowing 25,000 refugees into our country who come from circumstances my family knows all too well, as do many families in our nation. I ask you, when has welcoming refugees EVER been bad for this country? When have we ever welcomed in the desperate and persecuted and not been made better for it?
I would gladly open my arms to Syrian refugees and tell each and every one of them only one thing. "Welcome home."
In light of the attack on Paris, many people are questioning the wisdom of allowing Syrian refugees into their country, about the possibility of enemies sneaking into the country among them. An observation was also made in response to my post about having never heard of a Mennonite strapping on a suicide vest.

This is how I answer.

I am not calling for scrapping the vetting and selection process that normally takes place for refugees resettling in Canada. I'm not rejecting this: CBC - Syrian Refugee Screening
I am rejecting this: CNN - Syrian Refugee BacklashThe refusal to aid in a humanitarian crisis because of fear of a few. What is known of the attackers in Paris is that it was masterminded by a Belgian with a history of violence, and conducted by two Belgians, three Frenchmen, and one Syrian who registered as having crossed over in Greece, along with other unknowns.
Registered - as in unlikely to have gone through a checkpoint clutching an AK-47 and a suicide vest. The attack in Paris would have happened with or without this one person's participation - and it sounds to me like the French have more to fear from its own natural-born citizens.
You say you have never heard of a Mennonite with a suicide vest, and I agree with you there. But I would counter that I have heard of Mennonites who joined the SS, and entered the gates of the Stutthof concentration camp as guards. The Mennonite - Mennonites and the Holocaust
ISIS may be trying, but they do not yet hold a candle to the mid-century meat grinders that were Germany and Russia.
What is one or two extremists without resources or equipment in the grand scheme of things? We have exported far more Canadian extremists to Afghanistan, Iraq, and Syria over the past fifteen years. I would suggest perhaps that we might concern ourselves more with actions that we ourselves take that create homegrown extremists, people who feel they are desperate, disenfranchised, and have nothing to lose right here.
CBC - Mosque Arson is a Hate CrimeCTV - Ontario Youth UnemploymentCBC - Poverty In Canada
I am the product of refugees being welcomed into Canada. Refugees who were hated, and feared, and demonized for where they were from, for the language they spoke, and for the beliefs that they held. I understand there is fear here, and that to some people it is a very real fear.

Imagine being one of those refugees. Living in a country halfway around the world, a country where you do not speak the language, where you do not share their culture, or the religion of most. A place where people fear and distrust you because they associate you with an enemy. An enemy that kills unexpectedly, attacking with surprise, an enemy that wants to start a war.

Imagine a new war starting, worse than the last one, started by the same people that your new neighbours see you as being part of. A worse war, one more horrible than anyone could imagine, one where atrocities were committed that saw millions of innocent civilians murdered. And you, living in your new home country, refuse to fight.

In World War 2 military casualties on the Eastern Front exceeded 15 million soldiers with another 14 to 17 million civilians killed in a war between my family's ancestral homeland (Germany) and its former adopted homeland (Russia). The fall of one as an enemy of the west led directly into the rise of the other as an enemy of the west.

And all along, my family lived, grew, and prospered in their new land. They made friends, lived in peace, and grew to be an intrinsic part of their new home. Today there are nearly 200,000 of us in this country, and once again a new wave of refugees are fleeing terror, war, and persecution.

We have made the right choice in the past. We must have the courage and the fortitude to make the right choice again. It is frightening, risk, uncertainty, the unknown are frightening things. But it is the right thing to do. It is what we do.

Because this is what Canada is.