237 karma · joined October 18, 2013
blog.michaelschmatz.com
BTW, I wonder if this is the oldest organization investing in blockchain technology.
He was extremely reasonable and very receptive to the needs of the tech community and small businesses. I came away from the meeting pleasantly surprised and have been happy with his actions during his tenure. Sad to see him go.
There is also something to be said for analyzing all of the new datasets coming online and trying to gather new insights (this is also the least capital-intensive option!)
Is there a particular workflow that you use?
We are eagerly waiting for Lambda VPC support!
I'm happy you're interested in this sort of stuff; shoot me an email, let's chat :) michael@segment.com
Instead, when we put a new object, we update a table in Aurora which tracks all of the relevant objects. That way, we can query information like "what objects were uploaded in a certain time range" very quickly.
Right now, there isn't a nice and well documented way to do this as we haven't ever had demand for an API like that. You can reverse engineer the POST for the code ranking to submit your code and the GET for the leaderboard information.
You can find the link to the main site in the middle of the top bar of the blog where it says "Click Here for the Main CodeCombat Site".
If people start doing that to mess up results, we have ways of remedying that situation. We haven't had to deal with any cheaters thus far as our users are pretty awesome (and there really is no reason to cheat).
We'd probably send each game out multiple times and require consensus or run all the simulations ourselves. I don't anticipate having to do anything of that nature, but it's interesting problem to think about!
Those simulations are used to calculate the public leaderboards during the competition. They aren't used for final rankings as the simulation results need to be validated. However, they provide a nice way for people to gauge their standing.
To perform the final ranking/validation, we'll play n of the top games on each team against each other and then sort by wins and losses. We're not quite sure of how large n will be, but I think it will be 150-250. It would be nice to calculate the public leaderboards this way, but as a O(n*m) calculation, it really doesn't scale in practice (we have to strike a balance between accuracy and responsiveness of the ranking system). The public leaderboards are calculated with a Bayesian algorithm.
If you have any other questions, feel free to ask! :)
On a somewhat related note, another interesting thing to note is that we found apparent discrepancies with GitHub's statistics for contributor counts.
For instance, take a look at this PR: https://github.com/codecombat/codecombat/pull/372
It was clearly merged. Now take a look at the two possible usernames GitHub could have used to tally his contribution: QelioX (his GitHub username) and Esh2349, the username he used on the commit. https://github.com/codecombat/codecombat/commits?author=Esh2... https://github.com/codecombat/codecombat/commits?author=Qeli...
I looked, and I couldn't find anything out of place with his profile. Our method for growth through unique contributors actually handles this case. We didn't have time to explore other properties of the GitHub data set which might throw our analysis off, but hopefully someone in the future will produce a nifty analysis which does account for them.
For projects like Linux, while it may have 3500+ contributors, it got that way over 23 years.
We also made the assumption that due to the social nature of GitHub, its meteoric growth, and the visibility that it brings open source projects, the fastest growing open source projects are on GitHub. We presume this assumption is correct, but don't have the data (or even know where we could get the data) to verify it.
It's not the ideal metric, but it's one that is realistic to compute with limited time and resources. To analyze that statistic using a growth metric like "largest 30 day average contributor gain" across such a gigantic dataset, consisting of hundreds of millions of rows and tens of millions of unique repositories, requires resources and engineer time which few people possess. We certainly don't want to divert too much of either of those things away from development of CodeCombat just for a fun data science experiment!