anchor.diff:          _ -> Coords
       end.
   
  -% @doc Convert a Pid into an integer.
  --spec pid_to_integer(comm:mypid()) -> integer().
  -pid_to_integer(Pid) ->
  -    {A,B,C,D} = comm:get_ip(Pid),
  -    I = comm:get_port(Pid),
  -    A+B+C+D+I.
  -
   % @doc Choose a random color for a Pid
   -spec color(comm:mypid()) -> string().
   color(Pid) ->
  -    Hi = 255,
  -    Lo = 0,
  -    S1 = webhelpers:pid_to_integer(Pid),
  -    _ = random:seed(S1,S1,S1),
  -    C1 = randoms:uniform(Hi-Lo)+Lo-1,
  -    C2 = randoms:uniform(Hi-Lo)+Lo-1,
  -    C3 = randoms:uniform(Hi-Lo)+Lo-1,
  -    io_lib:format("rgb(~p,~p,~p)",[C1,C2,C3])
  -    .
  +    Hash = erlang:phash2(Pid, 256*256*256),
  +    R = Hash rem 256,
  +    G = (Hash div 256) rem 256,
  +    B = (Hash div (256*256)) rem 256,
  +    io_lib:format("rgb(~p,~p,~p)",[R,G,B]).
   
   % @doc Get a string representation for a vivaldi coordinate
   -spec format_coordinate([gossip_vivaldi:network_coordinate(),...]) -> string().
  
positive.code:     % order nodes according to their datacenter (designated by color)
      NodesTree = lists:foldl(
          fun({{NodeName, NodeHost}, Coords}, Acc) ->
              Key = webhelpers:color(NodeName),
              PriorValue = gb_trees:lookup(Key, Acc),
              V = case PriorValue of
                  none -> [];
  
negative.code:          getMonitorClientData/0, getMonitorRingData/0,
           lookup/1, set_key/2, delete_key/2, isPost/1,
           safe_html_string/1, safe_html_string/2, html_pre/2,
           format_nodes/1, format_centroids/1
       ]).
  
  