AoS Reminders - 2019 in Review

31 Dec 2019

It’s the day before 2020 kicks in, and I’d like to take this opportunity to talk about the last 7 months of working on AoS Reminders.

I wrote the first iteration of AoS Reminders in May of 2019. I first developed it for my army (Seraphon), and then started to expand the tool to armies that my local gaming group played in order to get feedback.

Here’s the original thread on Lustria Online that kickstarted this whole adventure. Someone had posted looking for a Seraphon Cheat Sheet and I replied:

"I was also thinking of writing an online tool. I think it would be neat to input your list and have it spit out a checklist for every phase. Setup, post setup, start of hero phase first turn, etc

Remembering to roll constellations, when summoning occurs for Slann vs EOTG, when to place the blot toad, when to use certain command abilities... could be a fun weekend project!"

Fun weekend project - yeah right! Seven months, hundreds of thousands of lines of code, and 640 commits to the codebase later, I think it’s safe to say that this project got a little bigger than I initially expected.

Key Stats

  • Launch date: Friday, May 17, 2019
  • Over 100,000 pageviews since launching
  • Over 40,000 unique users from all over the globe
User Geo-Distribution
  • Over 300 subscribers!
    • Thank you to every single one of you for supporting me!
  • Over 265,000 individual selections have been tracked - everything from factions, units, endless spells, and more.
    • 181,000 of these data points have occurred in the last month due to our expanded tracking - this number will rise quickly!
  • 20 volunteer contributors to our codebase on Github
PDF/HTML Imports by Source
  • 3,500+ PDF/HTML file imports
  • 12,000+ Reminder PDFs generated/downloaded
  • 45,000+ faction selections

Key Lessons

  • You can’t do a project of this size solo
    • I don’t think this project would be successful without the valuable contributions of 20 hard-working volunteers
  • Error logging and error tracking is more valuable than tracking successes
  • I didn’t realize how beholden I would feel to subscribers once I introduced a payment model
    • Most of the pressure is in my own head, but I do feel intense pressure to make my subscribers happy.
  • My girlfriend, Amanda, is a saint for putting up with seven months of me focusing on this thing!

What would I do differently?

Tracking individual selections

I didn’t track individual selections until late November, and I think that’s probably my #1 regret.

I was tracking faction selections, which was cool and useful, but I had no idea what was being selected other than that.

Once I worked with AoS Coach on getting some advanced stats together, I realized that I needed to overhaul my reporting system to spit out individual selections. We now track pretty much everything that occurs on the site, which is great, but it means that we don’t have any significant user data before December 2019.

I should have written the verify script earlier

I wrote a script in December that goes through every rule in the codebase and checks for certain wording to see if we’ve got it classified correctly.

For example, if a rule contains the phrase "In your hero phase, [...]", and the rule is currently shown DURING_GAME, the script will say "Rule X should probably be in DURING_HERO_PHASE"

Once I wrote this script, I had to update about 60 rules that were misclassified. In retrospect, I should have focused on creating this script early on to help contributors double-check their submissions.

I should have handled errors better in the early days

When I first started, I emphasized collecting data that would be considered “successful” - for example, I track when users click certain buttons or select armies, etc.

As the codebase and feature count grew, I realized I needed more information on what wasn’t working for users.

Examples of this include:

  • When a user imports a PDF or HTML file to the tool, and there is an error parsing the file, I send a copy of the file to storage so that I can debug and fix the problem later.
  • I fire off failure events to Google Analytics to make sure I’m aware of errors as they happen
  • I provide numerous channels for users to get in touch with me in case of failure - Twitter, Discord, Github, a subreddit, and my email.

Things I did correctly

Tooling and tests

One thing I will credit myself with is our testing and tooling capabilities. Contributing to a new codebase can be very intimidating - I’ve tried my best to make it painless.

  • We currently have over 300 automated tests in the codebase.
  • We use linters and automated code stylers to enforce consistency in programming styles
  • Our Github repo automatically runs tests, builds, etc
  • We have an automated pipeline for deploying to production
  • I’ve written detailed and documents for newcomers to the codebase

Encouraging feedback

As I’ve mentioned above, I’ve given users plenty of chances to provide me with feedback. I’d like to think I’m pretty responsive to users who have suggestions or problems.

Out of the 353 issues opened on Github, we’ve closed 330

I’ve spent countless hours answering emails, Reddit posts, and questions in Discords. I am pretty proud of how responsive we are!

Supporting the competitive scene

I’ve handed out free subscriptions to a bunch of Age of Sigmar tournaments all around the world. I think it’s win-win - I come from an e-sports background, and I know how motivating any sort of prize can be. I think that the AoS scene is still fairly small (but growing!)

Throwing in a hundred bucks worth of subscriptions to any given tournament is (in my opinion) the least I can do. It brings exposure to AoS Reminders (which makes me and my contributors happy), it rewards people who are actually playing the game at a high level, and it helps tournament organizers hype up their events!

Working with content creators

I’ve messaged, cajoled, and outright begged a heck of a lot of people in the past few months. I’ve pushed myself out of my normal comfort zone to talk to strangers and advocate for my product.

I strongly believe that AoS Reminders is a must-use application for Warhammer players, and that gives me the confidence to message random people and say “Hey, would you mind helping get the word out about this?”

In particular, I’d really like to thank the Rolling Bad crew, Re-Rolling Ones (Hi Jack!), Doom and Darkness, AoS Coach, 2+ Tough, Mr. Mephisto, Garagehammer, Realm & Ruins, BWG Sean, The Honest Wargamer, LLV, and a bunch of other people!

Two of my favorite videos to come from content creators:

AoS Coach’s excellent Emerging Meta series, where he uses AoS Reminders data to examine the meta of the Age of Sigmar scene. Get excited for next month’s edition, where he’ll have a lot more data to work with.

And 2+ Tough’s Gittin Good at AoS Real Fast video, where he walks through the site and talks about how it can help newer players enter the game.

Random Thoughts

List building became easier

I started 2019 as a Seraphon player, but I’m going into 2020 as an Ogor Mawtribes player.

I am going to Adepticon in 2020, so I’ve been theory-crafting Ogor lists.

Let me tell you a secret about list building… when you have 250k+ data points sourced from the AoS community, picking strong lists becomes quite a bit easier :)

Ogor Mawtribes Artifact Selections

Whenever I’m trying to figure out artifacts, traits, or spells to bring with my armies, I sneak a quick peek at the AoS Reminders stats for the last month, and I totally steal the most popular suggestions.

React and Typescript is the correct tech stack

I’m passionate about React (I attended React Conf 2018 and 2019 in Las Vegas), and I obsessively try to convert everyone I know to using Typescript.

I use both technologies at work, so it was natural to bring them to AoS Reminders.

I think that this project really demonstrates how powerful Typescript is, especially when working with remote programmers who live all over the world. Typescript’s ability to solidify data structures and create a self-documenting codebase is invaluable.

React continues to be an absolute stud for working with web apps, enough said.

The books are getting better

I read a lot of battletomes, a lot of warscrolls, and a lot of rules.

I can unequivocally say that the quality of rules-writing has improved so much in the second half of 2019. Books written in 2017-2018 are definitely a different breed - they often have strange rules, useless rules, or badly-worded rules.

By contrast, the 2019 books have been mostly superb, with great synergies and strong, well-written rules.

Obviously, some books are a little too strong (Hi, Ossiarch Bonereapers!), but I still would like to commend the GW team for really upping their battletome game in the latest releases!

What does GW think?

I’d love to talk to Games Workshop about getting early access to battletomes and anything else that would affect rules. Ideally, I’d like to be able to update the website as soon as a new battletome is released. As it stands now, we have a 1-2 day period where we lag behind the GW release schedule.

I’d also love to hear their thoughts on the site as a whole!

What’s next?

Good question :)

As always, we will continue adding new battletomes, FAQs, erratas, etc. to the tool.

We will be knocking out a few features - including Game Mode, which will be released soon - once you’re ready to play, you’ll be able to hide all of the unit selections stuff and just see the reminders that you need!

Game Mode

I am traveling to Adepticon 2020 in March :) If you see me there, come talk to me - I’ll give you some sweet AoS Reminders swag, and you can tell me what I could be doing better.

My goal at Adepticon is to win one game with my newly built Ogors!

Most of all, I want to continue making AoS Reminders the best tool it can possibly be. I want to continue making friends and building relationships with this amazing AoS community.

I get emails once in a while that tell me how much someone loves the tool, or telling me how they got their son or wife into the game using it. It warms my heart everytime someone sincerely thanks me for taking the time and effort to keep this tool going.

That feeling of warmth and pride, above all, will power my efforts in 2020.

Have a great New Year :)

Got a great idea for AoS Reminders that you think I should be working on? Message me on Twitter or post on the subreddit