JLife (Currently broken, I don't know why until I have time to investigate... sorry!)

(work in progress)
by James M. Pereira II

Animation
pattern.gif - This is generated manually every once in awhile due to processing time, and not shown on this page due to file size. There is not yet spacing between the frames so it may play through very fast for you. In this case, it may help to disable browser caching.

Step: 0, IP Address: 38.103.63.57 (00100110011001110011111100111001)


Step: -1, IP Address: 193.47.80.41 (11000001001011110101000000101001)


Step: -2, IP Address: 193.47.80.41 (11000001001011110101000000101001)


Step: -3, IP Address: 193.47.80.41 (11000001001011110101000000101001)


Click here to view more steps.
Visual map representing time distribution and visitor IP information: JLifeMap

JLife (name soon to change) is a simulation based on John Conway's "Game of Life". It is written in Python with a PHP front-end. Here's how it works:

  • Someone visits this page
  • The visitor's IPv4 address is converted into a string of 32 binary digits (bits) representing the IP address
  • The binary sequence is overlaid beginning with the first cell on a row specified as follows:
    y = (number of 1's in the binary sequence) modulus (height of grid)
    And a column, specified as follows:
    x = ((width of grid) / 2) - 16
    This is cell(x,y). Continuing to the right, where there is a one in the binary sequence, the corrosponding cell is filled in. Where there is a 0, there is no change to the cell. Parts of this process will (hopefully) keep the pattern somewhat asymmetrical.
  • The simulation steps forward to produce a new pattern. This is done according to the following rules:
    1. Any live cell with fewer than two live neighbors dies.
    2. Any live cell with more than three live neighbors dies.
    3. Any live cell with two or three live neighbors lives.
    4. Any dead cell with exactly three live neighbors comes to life.
  • A new image and animation is generated and displayed on this page. Purple cells represent currently active cells, and blue cells represent recently dead cells, with the shade of blue representing how many generations back they died (darker=older).

    The original 'seed' pattern was generated from Backspace Cafe's IP address, and then I ran the page through Google Translate and an anonymous web proxy to get it started. This is still a work in progress. If you have any comments or suggestions, email me at my dot name dot is dot james at gmail dot com.


  • 4/22: Current IP data is now shown in red. These cells are live in the current generation.
  • 4/21: Fixed redirect bug where code that followed the redirect was being executed before the redirect occurred.
  • 4/20: Fixed a bug in the step enumeration preceeding the images on this page.
  • 4/19: Began work on a jlife-to-whitespace (programming language) instruction set conversion utility.