A_O.Structures = function()
{
    this.loadElements();
    this.setHandlers();
}

A_O.Structures.prototype.loadElements = function()
{
    var menu = document.getElementById("menu");
    this.options = menu.getElementsByTagName("a");
    this.structures = menu.getElementsByTagName("img");
}

A_O.Structures.prototype.setHandlers = function()
{
    var options = this.options;
    var limit = this.structures.length - 1;
    var current = this;
    var structure_index = 0;
    for (var ii = 0; ii < options.length; ii++)
    {
	options[ii].onmouseover =
	    (function(index) {
		return function() {
		    current.displayStructure(index);
		};
	    })(structure_index++)
	if (structure_index > limit)
	{
	    structure_index = 0;
	}
    }
}

A_O.Structures.prototype.displayStructure = function(index)
{
    var structures = this.structures;
    var display;
    for (var ii = 0; ii < structures.length; ii++)
    {
	if (ii == index)
	{
	    display = "";
	}
	else
	{
	    display = "none";
	}
	structures[ii].style.display = display;
    }
}
if (!window.console)
{
    console = {log: function() {}};
}

var SOURCE_PATH = "/v/src/";
var SYNTAX_SCROLL_STEP = 500;
var SYNTAX_SCROLL_INTERVAL = 1600;

A_O = function()
{
    console.log(SOURCE_PATH);
    this.syntax = new A_O.Syntax();
    this.structures = new A_O.Structures();
}

A_O.include = function(path)
{
    var element = document.createElement("script");
    element.type = "text/javascript";
    element.src = SOURCE_PATH + path;
    document.getElementsByTagName("head")[0].appendChild(element);
}

A_O.build_px = function(size)
{
    return size + "px";
}

A_O.include("Syntax.js");
A_O.include("Structures.js");

window.onload = function()
{
    new A_O();
}
<?php

function print_link_tag($path, $rel, $type=null)
{
   $path = resolve_uri_path($path);
   $tag = "<link rel=\"$rel\" ";
   if ($type)
   {
       $tag .= "type=\"$type\" ";
   }
   print_l($tag . "href=\"$path\"/>");
}

function resolve_uri_path($path)
{
   $path = str_replace($GLOBALS["system_root"] . "/", "/", $path);
   return join_paths($GLOBALS["uri_root"], $path);
}

function join_paths()
{
   return implode(DIRECTORY_SEPARATOR, func_get_args());
}

function print_l($string, $break=true)
{
   $end = $break ? "\n" : "";
   echo $string . $end;
}

function print_script_tag()
{
   $path = resolve_uri_path("src/A_O.js");
   print_l("<script src=\"$path\" type=\"text/javascript\"></script>");
}

function include_syntax()
{
   include choose_file("resource/syntax/index/*.html");
}

function choose_file($pattern)
{
   return random_element(glob(resolve_system_path($pattern)));
}

function resolve_system_path($path)
{
   return join_paths($GLOBALS["system_root"], $path);
}

function print_follow_buttons()
{
   echo "<a href=\"/feed.rss\">";
   print_image_tag("img/badges/rss.png", "", "rss", false);
   print_l("</a>");
   echo "<a href=\"http://twitter.com/Dometoerio/\">";
   print_image_tag("img/badges/twitter.png", "", "twitter", false);
   print_l("</a>");
}

function print_image_tag($path, $class="", $id="", $break=true, $style="",
                         $resolve=true, $alt="")
{
   if ($resolve)
   {
      $path = resolve_uri_path($path);
   }
   print_l("<img src=\"$path\" class=\"$class\" id=\"$id\" style=\"$style\" " .
           "alt=\"$alt\" />", $break);
}

function print_scanner_animation()
{
   $animation = resolve_uri_path(choose_file("img/scanner/animations/*.gif"));
   echo "<div style=\"background: url('$animation')\">&nbsp;</div>\n";
}

function random_element($list)
{
   return $list[rand(0, count($list) - 1)];
}

function build_random_ip_address()
{
   return rand(101, 199) . "." . rand(0, 255) . "." . rand(0, 255) . "." .
      rand(0, 255);
}

function get_visitors_ip_address()
{
   return $_SERVER["REMOTE_ADDR"];
}

function print_structures()
{
   $paths = glob(resolve_system_path("img/structures/*.png"));
   $visible = rand(0, count($paths) - 1);
   foreach ($paths as $ii => $path)
   {
      $style = ($ii == $visible) ? "" : "display: none";
      print_image_tag($path, "", "", true, $style);
   }
}

function print_divider()
{
   $animation = choose_file("img/scrollers/animations/192.gif");
   $path = resolve_uri_path($animation);
   echo "<div id=\"divider\" style=\"background: url('$path')\">" .
      "&nbsp;</div>\n";
}

function print_articles()
{
    $paths = get_article_paths();
    $journal_config = parse_ini_file(
        resolve_system_path("resource/journal/config"), true, INI_SCANNER_RAW);
    $date_field = $journal_config["header"]["date_field"];
    foreach ($paths as $path)
    {
        $printed_body_line = false;
        print_l("<div class=\"entry\">");
        print_l("<div class=\"info\">");
        foreach (file($path) as $line)
        {
            if (preg_match("/^<!--/", $line))
            {
                if (preg_match("/^<!--[[:space:]]*$date_field/", $line))
                {
                    print_l("<span class=\"time\">" . get_date($line) .
                            "</span><span class=\"permalink\"><a href=\"/" .
                            get_article_id_from_path($path) .
                            "\">&diams;</a></span>");
                }
            }
            else
            {
                if (!$printed_body_line)
                {
                    print_l("</div>");
                    print_l("<div class=\"body\">");
                    $printed_body_line = true;
                }
                echo $line;
            }
        }
        print_l("</div>\n</div>");
    }
}

function get_article_paths()
{
    preg_match("/^(\/v)*(\/draft)*\/([0-9]+)\/*$/", $_SERVER["REQUEST_URI"],
               $matches);
    $expression = ".*\.html";
    if (count($matches) > 2 and $matches[2])
    {
        $root = resolve_system_path("resource/journal/draft/");
    }
    else
    {
        $root = resolve_system_path("resource/journal/entries/");
    }
    if (count($matches) > 3 and ($id = $matches[3]))
    {
        $pattern = "/^0*${id}/";
    }
    else
    {
        $pattern = "/$expression/";
    }
    $paths = array();
    $directory = opendir($root);
    while (($path = readdir($directory)) !== false)
    {
        if (preg_match($pattern, $path))
        {
            $paths[] = $root . $path;
        }
    }
    closedir($directory);
    if (!$paths)
    {
        $paths = glob($root . "*.html");
    }
    rsort($paths);
    return $paths;
}

function get_date($line)
{
    preg_match("/^<!--\s*\S+:\s*(.*)\s*-->/", trim($line), $matches);
    return date("M. d, Y, g a", strtotime($matches[1]));
}

function get_article_id_from_path($path)
{
    preg_match("/\/([0-9]+)_[^\/]*$/", $path, $matches);
    return intval($matches[1]);
}

function print_rss_button_images()
{
    $paths = glob(resolve_system_path("img/stale-mile/*.png"));
    for ($ii = 0; $ii < 6; $ii++)
    {
        $index = rand(0, count($paths) - 1);
        print_image_tag($paths[$index], "", "", false);
        array_splice($paths, $index, 1);
        if ($ii == 2)
        {
            print_l("<br />", false);
        }
    }
}

?>
54.162.203.39
54.162.203.39
54.162.203.39
 
September 30, 2015


Edge of Life is a form I made with Babycastles and Mouth Arcade for an event in New York called Internet Yami-ichi, a flea market of internet-ish goods. We set up our table to look like a doctor's office and pharmacy and offered free examinations and medication prescriptions, a system described by one person as "a whole pharmacy and medical industrial complex".

Diagnoses were based on responses to the form and observations by our doctor during a short examination. The examination typically involved bizarre questions, toy torpedoes being thrown at people and a plastic bucket over the patient's head. The form combined ideas from Myers-Briggs Type Indicators, Codex Seraphinianus and chain-mail personality tests that tell you which TV show character you are. In our waiting room, we had Lake of Roaches installed in a stuffed bat (GIRP bat). It was really fun!

The icons for the food pyramid are from Maple Story and the gun icons are from the dingbat font Outgunned. I'm also using Outgunned to generate the items in Food Spring.


↠ RSS Feed ↞