JSFiddle - React, Tailwind, and code Playground

HTML

<canvas width="1450" height="1450" id="canvas"></canvas>

JavaScript

var app = {};

~function(){
	function get16bits( data, pointer ){
		return ( ( data.charCodeAt( pointer ) || 0 ) << 8 ) + ( data.charCodeAt( pointer + 1 ) || 0 );
	}

	app.Hash = function( data ){
		var      len = data.length
		  ,     hash = len
		  , dPointer = 0
		  , tmp, rem
		  ;

	    if( len <= 0 || !data ){ return 0; }

	    rem = len & 3;
	    len >>= 2;

	    /* Main loop */
	    for( ;len > 0; len-- ){
	        hash     +=   get16bits( data, dPointer );
	        tmp       = ( get16bits( data, dPointer+2 ) << 11 ) ^ hash;
	        hash      = ( hash << 16 ) ^ tmp;
	        dPointer += 4; // 2*sizeof( uint16_t );
	        hash     += hash >> 11;
	    }

	    /* Handle end cases */
	    switch( rem ){
	        case 3: hash += get16bits( data, dPointer );
	                hash ^= hash << 16;
	                hash ^= ( data.charCodeAt( 2 ) || 0 ) << 18;
	                hash += hash >> 11;
	                break;
	        case 2: hash += get16bits( data, dPointer );
	                hash ^= hash << 11;
	                hash += hash >> 17;
	                break;
	        case 1: hash += dPointer;
	                hash ^= hash << 10;
	                hash += hash >> 1;
	                break;
	    }

	    /* Force "avalanching" of final 127 bits */
	    hash ^= hash << 3;
	    hash += hash >> 5;
	    hash ^= hash << 4;
	    hash += hash >> 17;
	    hash ^= hash << 25;
	    hash += hash >> 6;

	    return hash;
	}
}();


var  canvas = document.getElementById( 'canvas' )
  ,      ctx = canvas.getContext( '2d' )
  ,  letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  , nLetters = 26
  ,      min = 3
  ,      max = 20
  ;

ctx.fillStyle = 'RGBA( 0, 0, 0, .004 )';

function addHashes( n ){
    for( var i=0; i<n; i++ ){
        var word = '';
        for( var j=0, len=Math.random() * (max-min) + min; j<len; j++ ){
            word += letters[ 0|Math.random() * nLetters ];
        }
        
        var hash = app.Hash( word ) % ( 3499 )
          ,   b1 = 0|hash / 59
     ...