Showing posts from June, 2019

Distributing AEM Content to a JAMstack Site

I just published "Distributing AEM Content to a JAMstack Site" to the ICF Next engineering blog. This is a follow up to my "CMS Integrations with JAMstack Sites" blog. This time around I focused in on Adobe Experience Manager.

Artistic Method of Tabletop Game Design

Designing tabletop games is an intriguing mixture of skillsets. Interesting themes and well crafted rules require creativity, careful planning, persistence even math which can help balance complex mechanics. Often I will have a spark of imagination for a game design that I want to capture. Very often this means typing up a document and trying to describe my vision. However recently I have been doing quite a bit of drawing and thought I would combine the two, and encapsulate my idea for a game in a picture of the setup. Along with a quick summary of the rules I can come back later and recapture my spark of imagination.

I called this one "Merchant Cube Mancala" because the cubes on the outside of the board are moved clockwise with "Mancala" moves. Then the merchants, represented by the circular tokens on the board, can exchange cubes based upon the sets that they are pointed to. Finally these cubes are turned in for the victory point cards at the top. Some of these v…

Irreversibility in Tabletop Game Design

Tabletop game mechanisms are "the rules that limit and govern when and how the components of the game can be manipulated" [Tabletop Game Design Theory]. These mechanisms can have many different features that make them either boring, dry, and broken or fun, engaging, and intricate. One important feature is called irreversibility. This means that an action taken by a player cannot be undone. To state it precisely:

A mechanism is irreversible if an action taken by a player according to the rules of the mechanism changes the state of the game such that the game can never go back to the previous state.

Irreversibility is a crucial aspect of many mechanisms and game designs. Abstract and euro style games heavily rely on irreversibility. One of the most straight forward examples of this is from the game Battle Sheep where each player begins the game with a stack of discs. The mechanism is that some but not all of the discs can be moved from one space to a new empty space. This means…

Signs That Your Unit Tests Are Not Helpful

Here are two metrics that you can look at with your unit tests:
Percentage of test failures that are only a problem with the unit test, not a problem with the code running in a real environment. This often happens when you are mocking interfaces.Percentage of times that a bug fix or otherwise non breaking change requires an update to a unit test.The goal would be to have both these percentages at 0%. This would indicate that every test failure represents a real issue in your code and that only feature changes require updates to the unit tests. As these percentages approach 100% the less helpful your unit tests become. However what percentage should act as the cut for when your unit tests are a net positive verse when they are a net negative? We can make two assumptions:
Every test failure that reflects a real code issue exactly out weighs every false positive.Every unit test update that comes from a non feature change is out weighed by the benefits of having a unit test that comes from…