This is the third article the series about the Elo rating system.
In the first article we focused on understanding the math, the second article we wrote code to use the system and in this article we’ll be looking at testing the system.
As you may have seen in the code repository, we already have a set of unit tests that verify the basic functionality such as “given player A has EQUAL rating as player B, probability or expected score should be 0.5” and you might be asking “What is different about this additional type of testing?”
In these types of tests we are trying to look at the system as whole and analyze how it operates at scale over time. Essentially we want to build a simulator that allows us to create players and have them play games. We’ll be able to adjust how many players exists and how many games they play. We can then look at the results for unexpected behavior. Examples might be abnormally high or low ratings due to some incorrect calculations or players consistently having abnormal results like always trending towards the lower or higher rating. This testing will give us even stronger confidence that if the library is deployed it will be stable and won’t cause some catastrophic behavior that would require a data reset. …
In this article we’ll look at how to implement the Elo rating system in code.
This is part of a series of articles on the Elo Rating system.
I’ll be writing TypeScript since I plan to consume it as an NPM package in other TypeScript projects but as you can imagine in the first article the core of code is mostly writing math equations and could be done in any language you prefer. …
In this article we’ll learn about the Elo Rating system. We’ll look at what problems it can be applied to and use visuals to help understand the math behind the equations.
Before we go into the details about the algorithms behind the Elo Rating system let us take a step back and look at the problem we’re solving.
Imagine you are developing a game. In that game you have different players with different set of skills and experience who will compete against each other. Here are some goals for your game:
In this post we’ll look at how to combine multiple repositories into a single repository.
The common reason you might want to merge repos into a type of single repo (monorepo) is because you realize changes from one repo affect the other. It would be better to have single atomic commit with all the changes across different repos rather than separate commits for each repo. A single repo guarantees all the code across projects works together with guaranteed dependencies which reduces maintenance and makes tracking or reverting changes easier.
Usually a repo will start with a smaller scope but as time passes it grows and begins overlapping with responsibility from another repo. Perhaps there is a common piece of code you would want to move to a shared dependency or you simply want to keep related projects together and be managed more easily. …
In this post we’ll look at how to create an NPM package out of the build of a React application. Specifically, we’ll use the build output of a Create-React-App and create a package which exports the paths to the
build folder. The enables the static files to be served from a backend such as
express. Even though this example uses React, I believe the technique should apply to all front-end frameworks as they all eventually generate HTML, JS, and CSS to be rendered by browsers.
You might be asking:
Why would you want to create a package?
Good question! It’s true in most cases your app is deployed online and viewed as a website so the user simply visits a known URL rather than downloading a package. In my case the app acted as an interface to communicate with a server running on the local machine over HTTP. The API between them needed to be known and changes coupled. …
I recently published a new npm package
slate-entity-labeler which is React component built on Slate.js to facilitate labeling text. I mainly want to formally announce it here so I can get feedback and maybe other people who want to contribute and make it better. I will briefly go through design process. There is a demo video at the bottom of the article, but for now here’s a picture:
Only the text box at the top is provided by the package. The rest is just for demo display to aid understanding of state.
A while back I had been working on a way for users to label text. If your unfamiliar with what it means to label text here is example screenshot from Microsoft’s Language Understanding Service. …
Most of the articles I write on here are about my own personal work and exploration, but given this post is about company IP I have to say:
Disclaimer: I work at Microsoft on the Project Conversation Learner team
With that out of the way, I’m super excited to finally talk about this project publicly. Given Google I/O and Microsoft //Build happened during the same week you might have missed the announcement, but Project Conversation Learner was released at //Build 2018 as a private preview.
You can view the official docs here: https://labs.cognitive.microsoft.com/en-us/project-conversation-learner
Notice it is a Cognitive Service Lab as opposed to an official Cognitive Service. All of the labs have the prefix Project and say “experimental”. To quote the official marketing…
I recently finished up an app called SchultzTables which hopes to recreate an activity Ido Portal had us do at Movement Camp last year.
I searched online and didn’t find any existing apps I liked an though it would be simple enough to create on my own.
There is a 5 x 5 grid of symbols (usually numbers since they’re universal, although it can be alphabetical) and you must touch them in order as fast as possible. …
I recently started working on a React project and was looking to add authentication support to it. As a long time Ember developer I expected there to be a standard community solution similar to ember-simple-auth that I would be able to install and extend for my use cases. However, as I started searching on community areas, github, and npm and I didn’t find anything quite like what I was looking for. I ended up building my own solution based on the principles behind Ember-Simple-Auth hence the name of React-Simple-Auth. However, Ember-Simple-Auth is full fledged production ready ember-addon where as mine is just an example of what could be. It’s not exactly apples to apples here, but it’s a great name. If it turns out that it works well I imagine it could be separated out into an standalone npm package. In this article I’ll focus on explaining the details of the end-to-end solution and hope to provide a helpful resource since I saw gaps in the existing resources out there. …
Recently I worked a #OneWeek hackathon project which allows creating backlog items in Visual Studio Team Services using speech to text translation and wanted to share some thoughts and the development processes.
During a sprint retrospective we noticed our team was getting randomized by requests in emails from partner teams and I was trying to persuade people to be more diligent with using VSTS for work tracking to help stay focused and better be able to measure our progress. A co-worked mentioned that for simple small tasks, the act of having to open up VSTS UX, find the right view, write the task can be enough mental distraction, that he would often rather just start the task and finish it. Reflecting on this he said, “Wouldn’t it be nice if we could just say Alexa! Add this to the backlog!” …