close
The Wayback Machine - https://web.archive.org/web/20201221204343/https://github.com/ethomson
Skip to content
Avatar

Highlights

Sponsoring

@verdaccio @carlogilmar
ethomson/README.md

My GitHub contributions as a Game of Life

GitHub Game of Life

(Be sure to click on it for the infinite scrolling version.)

What's this?

This takes my GitHub contribution graph and uses it as the initial state for Conway's Game of Life, a popular cellular automaton that is often built by beginning software developers as an easy-to-implement but interesting piece of software.

Conway's Game of Life only defines two initial states for cells, but there are multi-color variants. This is a variant of "Quad Life" (chosen because the GitHub contribution graph has four colors that represent the intensity of contributions for a given day): in the typical Game of Life rules, a graph with a lot of contribution would die out in the first iteration (because the cells would be overcrowded), which seems to punish those with a lot of contributions, giving them a boring Game of Life. Intead, this variant "decays" the level of contribution, so cells will fade away instead of dying immediately.

How does it work?

This uses a JavaScript library called contributions to create a data structure with a GitHub contribution graph, and uses that as the initial state for another JavaScript library called dat-life.

A simple Node.js application called github4life -- so named because it takes a GitHub contribution graph and turns it into a 4 color Game of Life -- renders this as an animated GIF. When talking to GitHub's image caching service (camo) it will render 20 frames and then stop (so that the resulting image can actually be cached) but when you hit it with your web browser, it will render the game of life on-demand - infinitely continuing to deliver you the next state as a new frame in the GIF, forever.

Pinned

  1. A cross-platform, linkable library implementation of Git that you can use in your application.

    C 7.7k 2k

  2. Git repository management; managed wrapper for libgit2

    C# 12 2

  3. git-recover: recover deleted files in your repository

    Shell 86 10

  4. A customizable dashboard for GitHub issues and pull requests, using GitHub Pages and GitHub Actions

    TypeScript 22 12

  5. A portable command-line argument parser

    C 15

  6. A POSIX implementation of NTLM2 client authentication. 😭

    C 3 4

2,353 contributions in the last year

Dec Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec Mon Wed Fri

Contribution activity

December 2020

Created 1 repository

Created a pull request in libgit2/libgit2 that received 8 comments

repository: use intptr_t's in the config map cache

Since we're using atomic primitives to read and write into the config map cache, we need to read/write something pointer-sized. Use an intptr_t for…

+9 −6 8 comments
Started 1 discussion in 1 repository
libgit2/libgit2
Answered 1 discussion in 1 repository
22 contributions in private repositories Dec 1 – Dec 20

Seeing something unexpected? Take a look at the GitHub profile guide.

You can’t perform that action at this time.