Vienna Code Poetry Slam


To Code Poetry

Was ist "Code Poetry"?

Code Poetry ist in erster Linie, was ihr daraus macht: Von Gedichten, die in Pseudoprogrammiersprachen verfasst sind, bis zu Oden in C++, von Spoken Word Texten in Maschinensprache bis hin zu ausführbaren Shell Scripts, die euren Laptop in W.B. Yeats verwandeln ― das alles und noch viel mehr kann Code Poetry sein. Wir wollen eine Schnittstelle zwischen Sprachen auf allen Ebenen schaffen, neuartige Ansätze in der Verschmelzung von Literatur und Technik.

Wir würden uns über ästhetische ansprechende Texte freuen, die im besten Fall sogar noch ausführbar sind ― Zeilen, die für Menschen und Computern gleichermaßen lesbar sind.

Beispiele zu Code Poetry bieten die Wiener Slams der vergangenen Jahre.

Einige Links zu Code Poetry:



Die Einreichungen 2017

Die Publikumslieblinge waren:


Nachfolgend findest du die Einreichungen:

Zungenbluetenrekursionen

von Wolfgang Schleicher: download

#!/usr/bin/env python3

import random

print("\nZUNGENBLUETENREKURSIONEN")

blueten = random.randint(6, 10)
gaensebluemchen = ["Angerblume", "Mondscheinblume", "Sommerrose",
                    "Monatsblume", "Herzblume" ,"Maßliebe",
                    "Morgenblume", "Geißblume", "Tausendschön",
                    "Tränenblume", "Glotzblume", "Winterkrone"]
ich_pfluecke = True

def liebt_mich(blueten):
    if blueten == 0:
        return False
    else:
        print("liebt mich!")
        return liebt_mich_nicht(blueten-1)

def liebt_mich_nicht(blueten):
    if blueten == 0:
        return True
    else:
        print("\t\t liebt mich nicht!")
        return liebt_mich(blueten-1)

def ich_frage(blueten):
    if blueten == 0:
        return  True
    else:
        print("Ich frage!")
        return ich_frage_nicht(blueten-1)

def ich_frage_nicht(blueten):
    if blueten == 0:
        return False
    else:
        print("\t\t Ich frag nicht!")
        return ich_frage(blueten-1)

def lieb_dich(blueten):
    if blueten == 0:
        print("\nFrag, wenn du liebst, nie die", Blume, "!")
        return False
    else:
        print("lieb Dich!")
        return lieb_dich_nicht(blueten-1)

def lieb_dich_nicht(blueten):
    if blueten == 0:
        print("\nFrag, wenn du liebst, stets die", Blume, "!")
        return True
    else:
        print("\t\t lieb Dich nicht!")
        return lieb_dich(blueten-1)

def die_sehnsucht_zupft(blueten):
    blueten = random.randint(6, 10)
    if liebt_mich(blueten) == True:
        print("\nDie", Blume,"gibt Anlass zur Hoffnung:\n")
        die_sehnsucht_zupft_weiter(blueten)
    else:
        print("\nWer glaubt schon der erstbesten", Blume,"!\n")
        return die_sehnsucht_zupft(blueten)     

def die_sehnsucht_zupft_weiter(blueten):
    blueten = random.randint(6, 10)
    if ich_frage(blueten) == False:
        print("\nDie",Blume,"sagt durch die Blume:\n")
        blueten = random.randint(6, 10)
        return lieb_dich(blueten)
        print("UND JEDES NEUE ANGEBOT IST TOTER CODE")
    else:
        print("\nWer glaubt schon der erstbesten", Blume,"!\n")
        return die_sehnsucht_zupft_weiter(blueten)
        
        
while ich_pfluecke:
    Blume = random.choice(gaensebluemchen)
    print("\nWer liebt, fragt gerne die", Blume, ":\n")
    die_sehnsucht_zupft(blueten)
    ich_pfluecke = str(input("\nWeiterpflücken mit beliebiger Taste und ,\n"
                            "Abbrechen mit : "))
    if not ich_pfluecke:
        print("\nWillst du lieber echte Blumen wählen,\n"
              "kannst du auf die Symmetrie der Zungenblüten zählen.\n")

Der Text is ausführbarer Python Code.

Stefan Breitenfeld hat Zungenbluetenrekursionen in PHP übersetzt und stellt es zum Ausprobieren online zur Verfügung.

Beispielausgabe:

  ZUNGENBLUETENREKURSIONEN

  Wer liebt, fragt gerne die Herzblume :

  liebt mich!
  		 liebt mich nicht!
  liebt mich!
  		 liebt mich nicht!
  liebt mich!
  		 liebt mich nicht!
  liebt mich!
  		 liebt mich nicht!
  liebt mich!

  Die Herzblume gibt Anlass zur Hoffnung:

  Ich frage!
  		 Ich frag nicht!
  Ich frage!
  		 Ich frag nicht!
  Ich frage!
  		 Ich frag nicht!
  Ich frage!
  		 Ich frag nicht!

  ....
  ....

  Frag, wenn du liebst, stets die Herzblume !

  Weiterpflücken mit beliebiger Taste und ,
  Abbrechen mit : _

  Willst du lieber echte Blumen wählen,
  kannst du auf die Symmetrie der Zungenblüten zählen.

Choice

von Claudia Hackl: download

#include  
#include 
#include 
using mindsets std;

int main () {

create my.future;

	try mindset {
		sometimes.means.always;
		always.seams.like.forever;
		forever.leads.to.infinit.love;
	}
	
	if (mindset fails) {
		try something different {
			sometimes.has.a.choice;
			having.a.choice.is.freedom;
			freedom.leads.to.happiness;
		}
		
		if (something different fails){
			reset.the.system;

			delete motivational.quotes.from.the.internet;
			delete beautiful.pictures.from.other.people;
			delete list.of.lifegoals.you.downloaded;
			delete pre.made.to.do.lists;
	
			create your.own;

		}
	}

	return a lifetime full of happiness;
}

#Yourown

von Claudia Hackl: download

// your own

#include  using namespace std;

int main () {

	create daydreamer;

	// let's start the game
	try mission(daydreamer) {
		everybody.has.to.complete.their.own.mission;
		everybody.chases.their.own.dreams;
		so.let.everybody.take.their.own.path;
		because.everbody.can.become.their.own.hero; even.if.we.fail,
		we.can.try.again; but.always.be.careful;
		try.not.to.get.stuck.in.an.infinite.loop;
	}

	if (mission(daydreamer) fails) 
	{
		cout << "An exception occurred!"; 
		cout << "What do you want to do?";

		if (you want to ask for help, press 1) 
		{
			your.own.nerds.will.hack.the.system.to.your.advantage;
			be.careful.you.can.only.skip.the.queue.once;
			chance of cheat will be activated; // you accomplish the mission
		}

		if (you want to try again, press 2) 
		{
			some.advice.for.the.next.one;
			be.true.to.yourself;
			appreciate.your.opponents;
			love.your.team.mates; make.the.best.out.of.everything;
			never.loose.faith; remember.that.there.are.numerous.ways.to.victory; your.own.nerds.will.always.be.by.your.side;
			try mission(daydreamer); // mission starts from the beginning 
		}
	}
	else // if everything works out 
	{
		cout << "Hello World, we made it!"; return as a hero; tribute.to.your.own.nerds;
	} 
}

Random words

von Claudia Hackl: download

#include 
using wordspace std;

int main () {

	public:
		my.vision;
	private:

	try to.speak {
		random.words.come.to.my.head;
		fall.into.pieces.without.even.said;
		writing.them.down.for.no.purpose;
		starting.my.speech.makes.me.so.nervous;
		just.want.to.say.it.out.loud;
		afraid.of.the.critical.crowd;
	}

	if to.speak fails {
		boost.selfconfidence;
		dont.ever.give.up;
		think.outside.the.box;
	}

	try (mission words.for.everybody) {
		open eyes;
		open ears;
		open mouth.for.you.me.and.everyone;

		stand.up;
		stand.up to.myself;
		stand.up dont.sit.down;
		stand.up for.others.that.dont.get.the.chance;
		
		start babbling;
		start speaking;
		start discussing;
		start changing;
		start using random.words.for.a.reason;

		turn up volume;
	}

	return by making changes;
}

Movement is life

von Peter Wildman: download

int elligence = 0;
boolean ofIt = true;
char ging = 'l';
int vating;
float up;
char seng = 'o';
char tered = 'v';
char riots = 'e';
char[] movement = {};

void setup() {
  movement = append(movement, ging);
  movement = append(movement, seng);
  movement = append(movement, tered);
  movement = append(movement, riots);
  size(900, 800);
  textSize(20);
  background(0);
}


void draw() {
  for (int life = elligence; life < movement.length; life++) {  
    float ing = noise(frameCount/(life+1))*width;
    pushMatrix();
    translate(ing, random(height));
    rotate(ing);
    fill(255, 20);
    text(movement[life], 0, 0);
    popMatrix();
  }
}

//How it is read:

//In the beggining there is intelligence
//No Bull. Eons of it. It's true.
//Charging inside it is elivating
//Floating up. Chasing the ohhhhh!

//As if chartered
//A path is met at the base of life lines 
//Diverging out  
//Carried by charriots we are emergent
//Whilst charred boxes lay still

//We append the ging seng
//We append higher education
//We append riots as movements
//into a movement often 
//indexed and boxed in

//But what moves over and over again? 

//for coming into to this life 
//amounts to intelligence 
//life is
//for as long as there is movement
//life moves  
//and love moves 
//through this path
//drawn at the origin

//Floating 
//Life and oneness 
//are noise moving by a bredth
//reduced by the divisiveness of movement
//we are constantly translating
//often to seemingly random heights


//orbiting around origins
//filled with transparent light
//drawn with life's movement as it is seen
//before finally returning over again
//to intelligence, life, movement and love.

Der Text is ausführbarer Processing (PDE) Code und die englische Übersetzung im code kann vorgelesen werden, während das Code Poem läuft.

Beispielausgabe:

While True

von Thomas Hainscho: download

true = -1

WHILE true
PRINT "true"
IF NOT(true) THEN
PRINT "anything"
END IF
WEND
PRINT "everything"

Der Text is ausführbarer Just Basic Code.

Beispielausgabe:

true
true
true
true
true
true
true
true
true
....
....
    

Wofür schlägt dein Herz?

von Svitlana Vakulenko: Der Code ist auf Github verfügbar.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

'''
11 November 2017
.. codeauthor: svitlana vakulenko
    

'''
import sys
import time

from twython import Twython, TwythonRateLimitError
from espeak import ESpeak

from twitter_settings import *


class Twitter_Processor():
    def __init__(self):
        self.twitter_client = self.connect_to_twitter()

    def connect_to_twitter(self):
        return Twython(APP_KEY, APP_SECRET,
                       OAUTH_TOKEN, OAUTH_TOKEN_SECRET)

    def tweets_from_list_iterator(self, list_name):
        next_max_id = None
        while True:
            params = {'slug': list_name, 'owner_screen_name': MY_NAME, 'count': 1000000, 'max_id': next_max_id}
            statuses = self.twitter_client.get_list_statuses(**params)
            if statuses:
                # print len(statuses)
                yield statuses
                next_max_id = statuses[-1]['id']
            else:
                next_max_id = None


class Bot():
    def __init__(self, add_rate=-10):
        self.twitter = Twitter_Processor()
        self.speaker = ESpeak()

    def say_hashtags_from_list(self, list_name):
        batches = self.twitter.tweets_from_list_iterator(list_name)
        for tweets in batches:
            hashtags = [hashtag['text'].encode('utf-8') for tweet in tweets for hashtag in tweet['entities']['hashtags']]
            for hashtag in set(hashtags):
                phrase = '#' + hashtag.decode('utf-8')
                delay_print(phrase)
                self.speaker.say(phrase)


def delay_print(s, delay=0.1):
    for c in s:
        sys.stdout.write('%s' % c)
        sys.stdout.flush()
        time.sleep(delay)


def test_delay_print():
    delay_print("hello world")


def test_espeak():
    speaker = ESpeak()
    speaker.say("Hello world.")


def say_hashtags_from_list(list_name):
    myBot = Bot()
    myBot.say_hashtags_from_list(list_name)


if __name__ == '__main__':
    list_name = 'wien'
    say_hashtags_from_list(list_name)

Das Program ist in Python geschrieben und liest Hashtags aus regionalen Twitterlisten vor.

Beispielausgabe:

  #SNESMini#green#sorteo#hamradio#Mazedonien#sickboy#MMK#Happydeathday
  #SuperMan#ÖAW#Skopje#Artemisa#MissionImpossible#NASAMgUE#RumbaFlamencoSongs
  #Segwit#Asia#AstonMartin#sneakpreview#BT2017#Goodwood#wiengr#startupchallenge
  #tech#WPB#WuMatters#Kochtweet#startups#Oreo#Thailand#Amazon#Wissenschaft
  #Bitcoin#Salzburg#preblackfriday#Sorteo#magloop#Aquaman

The universe in a cup of coffee

von Fabio Petrillo: download

class TheUniverse extends MyCupOfCoffee {

        MyMind myIlusion;
        Dream iWakeUp;

        static void but() {};

        TheUniverse() throws MyImagination {
                while(TheTime.flows()) {
                        expands(myIlusion);

                        but();
                        
                        if(iWakeUp.toReality()) {
                                throw MyImagination.toAnotherDimension();
                        }
                }
        } 
        static void So() {};
		TheUniverse expands(MyMind toInfinite) throws MyImagination {

                try { 
                        Dream anotherTime;
                        So();
                        return new TheUniverse();
                } finally {
                        Please.anotherCupOfCoffe();
                }
        }
}

Pandoras Puzzel Box

von Andreas Bülhoff:

AENUNEADIN RE UAISSHHTU SEO M NEHEE O HE
H NEU NS UREHRETESNRINUEAHEICDV SIHCSSI 
LNK AA ME SIKNPHSI TSMI ISEED EDN NNH WS
 EDEC RUADSNHLDNECU EALSEAH MNGEEW ER NV
U SGELC NIFTRE MZBTFND E DETB DWTLEEERNI
SL N R RRE NNCCE OHDUSHHNP EL EEUNP WDSN
 EL MASFIAS UA EEANBUBAN BCSNGIO ED EO A
 AA EL ENEBREGL K DWEF GM EOE GFESDERIEG
T CD REAS NIEIAEINSE EINME RREE I IHETER
DF EESSONS CDW ONEKUAI GSSAITSAACEURUND 
TTSPTIEE R MANEW LESCRO RMDRHEHHWASBLIU 
MAS IN H R WEOSD IDALG DL EJEAHCN ED IIG
 URE LR AEDEE DOM IZOF HFA S IBOIPHNANTN
P TSMTUN E EITNTNU RUTORAHNITMU ZIT I EC
 E NB SCMNHECNTU TIEKTAC B DGNEEFSINA EE
IG KETI NIAUTLINADD ROMSETENNOANARC HVAU
 N USZS E SGE MBITSNN R UFHDDTEGA C EEHC
MEETEM P A IDNS Y IR TRF HNTRTNESCEUINEH
 U NMIGIU RRR MRSZMUECAG RIDEPEC S E ERR
LR NGISNKMTMGLI NT SAE I S B V ENIHN VDS

Pandoras Puzzle Box is a device that creates a local wireless network and generates a poem offered as download whenever a user logs in an tries to open a webpage. The hardware is based on the Raspberry Pi Zero W, the software is a modified Pirate Box OpenWRT hack. The poems generated are 800 character text squares with each character appearing according to the probability of the english language. Hardly readable texts appear, with flashes of semantic meaning (see one example above). However the project focuses more on the unseen omnipresence of WIFI networks and the perception changing login that triggers only partly readable texts. – Log into the network, open the box, the evil text abounds. Beware its gaze which seeks and finds its meaning in your reading.

The project consists of the actual hardware, the code, written by Fabian Roddeck, and an artist book, that includes a tutorial to build your own box, install and modify the code. When presenting the project usually a script that lets the laptop connect to the WIFI network and tries to open a page is used. The text generated by the box is then read by the OSX text to speech app, which spells letters until it finds a sequence of characters it recognizes from its dictionary. Semantics then appear as hearable shifts between noise and actual words.

This is the box:

I the antic mechanic

von Michael Beisteiner: download

i the some day
antic mechanic
the last loughing
animal
i the voice
within the voice
as_king:
r we alive
r we dead
r we nuts
or r we
digital gods

(michael beisteiner)

Das Gedicht gelesen durch das Internet.

Die Einreichungen 2016

Die Publikumslieblinge waren:

Nachfolgend findest du die Einreichungen in alphabetischer Sortierung:

(def is "death")

von Bernd Schwarzenbacher: download

(def is "death") (

def is true) (
def was #(not (= % false))) (
def said "you") (

while (some was said) (
and "nothing" was :done) (
some #{said} ["you"
"are the chosen" "one"]) ({

:to :die :in :this} :world) (-> (
:to (:die :al(:one {
:to :die :forsaken
:as :the :only :one (

let [him "finish" his "job"] ({
:you :can't :interfere
"your job i":s {:to "keep going\n"}
:and "wait" :for him :here

"he" :will (take his) :time (
and "so should you"
:life is (not :a))} :s))})))print)
"remember that too")

Der Text is ausführbarer Clojure Code. Um den Text zu lesen, werden die Sonderzeichen ignoriert. Z.B. `:s))})))print)` wird zu `sprint`.

In einer endlosen Schleife gibt das Programm aus:

keep going
keep going
keep going
keep going
...

Arnold and the Christmas Tree Thief

von Georg Braun: download

IT'S SHOWTIME
HEY CHRISTMAS TREE THIEF
YOU SET US UP @NO PROBLEMO
BECAUSE I'M GOING TO SAY PLEASE @I LIED
STICK AROUND THIEF
GET TO THE CHOPPER THIEF
HERE IS MY INVITATION @I LIED
YOU'RE FIRED THIEF
GET DOWN THIEF
ENOUGH TALK
CHILL
TALK TO THE HAND THIEF
BULLSHIT
YOU HAVE NO RESPECT FOR LOGIC
YOU HAVE BEEN TERMINATED

Das Program ist ausführbarer ArnoldC Code, macht aber nichts.

Das kleine Licht

von Martin Szalay: download

Es handelt sich hierbei um eine Erzählung mit Bildern für die shell. Zum Ausführen: Das Zip-File von https://github.com/mszkb/DasKleineLicht runterladen. Und mittels python3 Licht.py im Terminal ausführen.

Das 1. Bild:

Designer Shirt Designer (patent pending)

von Julian Schrittwieser: download

  1. Run script
  2. Produce cheap shirts with meaningless design
  3. ???
  4. PROFIT

Hier zwei Beispiele:

DuckDuckElfchen

von Katharina Brunnmayr: probieren

Der Grundgedanke ist eigentlich ganz simpel: Kann man mit einer Suchmaschine Gedichte erzeugen? Vielleicht auch solche, die Sinn ergeben?

Diese Einreichung ist eine Version 0 dieses kleinen Experiments, das mithilfe der DuckDuckGo-API zusammengebastelt wurde. Als Vorlage wurde die Struktur von Elfchen (das ist ein Gedichten in elf Wörtern, wobei jede Zeile eine bestimmte Bedeutung hat) adaptiert und auch der/die KlickerIn des Zufalls-Gedichts darf sich noch mit einer Zeile beteiligen.

Für die Ausführung ist Internetzugriff nötig!

Hier zwei Beispiele:

Ein Mensch namens Claus

von Claus Volko: download

using System;

class Mensch
{
    string name;
    bool _wohlfuehlen;
    bool _gesund;
    bool _wohlfuehlen_definiert;
    bool _gesund_definiert;
    int zustandNr = 0;

    public Mensch(string neuerName)
    {
        name = neuerName;
    }

    public bool wohlfuehlen
    {
        get
        {
            return _wohlfuehlen && _wohlfuehlen_definiert;
        }
        set
        {
            _wohlfuehlen = value;
            _wohlfuehlen_definiert = true;
            if (!value) gesund = false;
        }
    }

    public bool gesund
    {
        get
        {
            return _gesund && _gesund_definiert;
        }
        set
        {
            _gesund = value;
            _gesund_definiert = true;
            if (value) wohlfuehlen = true;
        }
    }

    public string Evaluiere(bool wert, bool definiert)
    {
        if (!definiert) return "UNDEFINIERT";
        return wert ? "JA" : "NEIN";
    }

    public void ZeigeStatus()
    {
        zustandNr++;
        Console.WriteLine("Zustand " + zustandNr + ":");
        Console.WriteLine("Der Mensch namens " + name + " fühlt sich wohl: " + Evaluiere(_wohlfuehlen, _wohlfuehlen_definiert));
        Console.WriteLine("Der Mensch namens " + name + " ist gesund: " + Evaluiere(_gesund, _gesund_definiert));
    }

    public void Handle()
    {
        if (gesund) goto Arbeiten; else goto Arzt;
    Arbeiten:
        Console.WriteLine("Der Mensch namens " + name + " geht arbeiten.");
        return;

    Arzt:
        Console.WriteLine("Der Mensch namens " + name + " geht zum Arzt.");
        Random rnd = new Random();
        if (((int)rnd.Next(0, 10)) % 2 == 0)
        {
            Console.WriteLine("Der Arzt macht den Menschen namens " + name + " wieder gesund.");
            gesund = true;
        }
        else
        {
            Console.WriteLine("Der Arzt ist ratlos...");
        }
        return;
    }

    public static void Main()
    {
        Mensch Clausi = new Mensch("Claus Volko");
        Clausi.wohlfuehlen = true;
        Clausi.ZeigeStatus();
        Clausi.wohlfuehlen = false;
        Clausi.ZeigeStatus();
        do
        {
            Clausi.Handle();
        } while (!Clausi.gesund);
        Clausi.Handle();
        Clausi.ZeigeStatus();
        Console.ReadLine();
    }
}

Das Programm kann mit Microsoft Visual Studio (C#) ausgeführt werden. Es handelt sich um eine Konsolenanwendung. Der Text wird ausgegeben, dann wartet das Programm, bis der Benutzer die Eingabetaste drückt.

Holzwege der Typumwandlung

von Andreas Kirchner

Ein Heidegger-Forscher entscheidet sich nach dem Lesen der Schwarzen Hefte zu einem Karrierewechsel in die IT-Branche. Nach ersten Versuchen mit Programmiersprachen kommt er zum Kapitel "Void Pointer Casting". Zeigzeug, denkt er und schreibt diese Funktion: 

void castZuhandenheit(void* zeug) {
        Smartphone* meinHandy;
        meinHandy = (Smartphone*) zeug;
        printf("Mein Handy %s kostet: %d EUR.", meinHandy->name, meinHandy->preis);
}

( Snippet mit Kommentaren: 
http://phaidon.philo.at/qu/wp-content/uploads/2011/09/Bildschirmfoto-3.png )

Die Frustration, die er empfindet wenn am Bildschirm wahllos "Segmentation Fault" oder ³…½¬¼½ erscheint, verführt den Heideggerianer zu alten Gewohnheiten. Nach einem Wald-Spaziergang schreibt er folgende Überlegungen in sein Notizbuch:

Einen Zeiger kann man unterschiedlich nehmen. Man sagt: Er zeigt auf eine Adresse im Speicher. Was heißt das? Sein Inhalt ermöglicht es, wenn man ihn so nimmt, eine andere Stelle zu finden und zu ergreifen. Wenn man ihn so nimmt. Man muss ihn, wie jedes andere Zeug, zunächst auf eine bestimmte Weise ergreifen. Erst innerhalb der Sprache, der Programmiersprache, lässt sich das so Ergriffene als Zeiger markieren. Durch den Effekt der Markierung als Zeiger in der Sprache bekommt er die Funktion etwas herzuzeigen, das heißt zu ermöglichen,  etwas anderes zu ergreifen, was bereits (als Adresse) inbegriffen ist.
Hat es eine Bedeutung, hier von greifen zu sprechen? Beim Zu-griff auf den Speicher sind wir in einer Situation, die kein Nachschauen erlaubt, aber ein Vorsehen. Wir können nur blind etwas ergreifen und annehmen, dass uns der Zeiger nicht irre führte, als er uns anwies, dort hinzugreifen, um etwas Typisches, etwas Vorgesehenes zu finden. Diese Annahme gibt unserem Griff eine Form, sie macht den Griff stabil und damit starr. Beim Zugriff halten wir durch Vorsicht das Ergriffene fest. Es wird dadurch zum Begriffenen. Durch den festen Griff kann das Ergriffene verformt werden; unbemerkt - man greift ja ins Dunkle. Wir haben uns beim Begreifen durch Vorsicht am Ergriffenen vergriffen.

Ein Ausschnitt aus einem längeren Blogpost über Pointer und Zuhandenheit: http://phaidon.philo.at/qu/?p=1000

Inside Deep Thought

von Joël Foramitti: download

#include

// Axioms
#define meaningless 0

// Philosophical constants
#define logic 589211296
#define truth 20941028692
#define god 4240737676
#define knowledge 21
#define doubt 41
#define infinity 5/28

using namespace std;

int main()
{
    string philosophical_object;
    int scale,significance,i;
    double meaning=0,time;

    while(meaning==meaningless)
    {
    cout<<"Calculate the meaning of ";
    cin>>philosophical_object;

    significance=1;
    scale=philosophical_object.size();
    for(i=0;i<scale;i++)significance*=philosophical_object[i];
    meaning=(double)((logic*philosophical_object[0]-doubt*significance-god*scale)*knowledge)/truth;
    cout<<endl<<"Process returned "<<meaning<<endl;
    cout<<"Execution time : "<<meaning*infinity<<" million years"<<endl<<endl;
    meaning=0;
    }

    return 0;
}

Fragt das Programm nach "life","universe" oder "everything". Beispiele:

random(Human)

von Max Böck: download

function Human() {
    var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
    var fate = new XMLHttpRequest();
    fate.open("GET", "https://randomuser.me/api/", false); 
    fate.send(null);
    return JSON.parse(fate.responseText).results[0];
}

function random(choice){
  return choice[Math.floor(Math.random()*choice.length)];
}

var love = ['to build things', 'another human', 'the sound of rain', 'dogs', 'to see the world', 'unconditionally'];
var death = ['in peace', 'at night', 'in war', 'of age', 'happy', 'of dysentery', 'alone', 'on a monday'];

function life(){
  var you = new Human();
  var life  = 'you are ' + you.name.first + ' ' + you.name.last + ',\n\r';
      life += 'born in ' + you.location.city + '.\n\r';
      life += 'you love ' + random(love) + '\n\r';
      life += 'you die ' + random(death) + '.\n\r';
      
  console.log(life);
}

setInterval(life, 250);

Erzeugt Menschen. Code kann in einem Browser ausgeführt werden. Beispiele:

Reflections

von Horia Botezan: download

# Reflections
#    by Horia Botezan

right_sided_entity = ['3', '4', 'life', 'snow', 'fire',  'angel', 'reason',
                       'poorness', 'conductor',  'stalagmite', 'the equation']
left_sided_entity  = ['epsilon', 'a chair', 'death', 'grass', 'water', 'red',
                       'a monster', 'richness', 'isolator',  'stalactite', 
                       'the equation']

def reflect_a_space                                                        ():
    print                                                                 '\n'
    return

class SymmetryOccurrence                                                     :
      pass

def begin_to_reflect                                                       ():
    try                                                                      :
        reflect_a_space                                                    ()
        allowed_trials = 11
        for attempt in range(allowed_trials)                                 :
            entity_number = attempt
            print 'If you reflect '                                        + \
                   right_sided_entity[entity_number]                       + \
                   ', it becomes '                                         + \
                   left_sided_entity[entity_number]
            if attempt == allowed_trials                                   -1:
                break
        raise SymmetryOccurrence
    except SymmetryOccurrence                                                :
        reflect_a_space                                                     ()
        print 'No! No! No!'
        print 'Only the mirror has the right to reflect.'

begin_to_reflect                                                            ()

Lassen Sie das Skript in einer Konsole mit dem Befehl "python reflections.py" ausführen. Output:

Die Einreichungen 2015

Von der Jury wurden folgende drei Einsendungen ausgezeichnet:

Publikumsliebling war null and void. null und nichtig. von Magdalena Lohninger


Nachfolgend findest du die Einreichungen in alphabetischer Sortierung:

An: $Unbekannt

von Michael Treml

<?php
  
  error_reporting(0);

  $fit = $munter = $gesichert = "OK";
  $Leere = "NICHT OK";

  echo (
    "Mein Koerper: $fit. 
     Mein Geist: $munter.
     Meine Zukunft: $gesichert. 
     Und trotzdem: $Leere. 
     Denn eines fehlt mir: $Du."
  );

?>

Die Variable $Du ist absichtlich nicht definiert, "fehlt" also. Das Programm lässt sich aber trotzdem ausführen und liefert:

"Mein Koerper: OK. Mein Geist: OK. Meine Zukunft: OK. Und trotzdem: NICHT OK. Denn eines fehlt mir: ."

CrushAlgorithm

von Stefan Haider

public class CrushAlgorithm {
  public void dealWithCrushes(Set crushes){
    Socket connection;
    for(Girl g:crushes){
      try{
        URI ip = g.getNumber();
        connection = Socket.connect(ip);
        connection.persistConnection();
        connection.getSecureConnection().trySex();
        if(Brain.isRelationshipWanted(g)) {
          connection.tryRelationship();
        }
        //you can do whatever you want when reaching 
        //this point
      }
      catch(RejectionException){
        Brain.getOverHer();}
      catch(TimeoutException){
        Brain.remember.iShouldntHaveWaitedThatLong();
        Brain.getOverHer();}
      catch(BoyfriendException){
        Brain.remember.itsNotWorthTheEffort();
        Brain.getOverHer();}
      catch(FriendZoneException){
        Brain.getOverHer();
        connection.maintainFriendship();}
      catch(NoRelationshipWantedException){
        connection.close();
        Brain.getOverHer();}
    }
    Set newGirls = SearchEngine.findGirls();
    dealWithCrushes (newGirls);
  }
}

The gentle things I say to my LOGO Turtlegraphics Turtle

von Clemens Setz

forward 50 right 10 back 5 clean
penup forward 50 right 19 
hideturtle cleanscreen penup home
showturtle forward 51
setpencolor blue pendown
clean home forward 5 right 45 
forward 5 right 90 forward 5 
right 45 forward 5 right 90 
forward 8 right 10 penup home; baby
              

Anmerkung: "setpencolor blue" ist, streng genommen, nicht korrekt, denn in LOGO wird die blaue Stiftfarbe durch das Kommando setpencolor [0 0 255] eingestellt. Aber das klang so hässlich. Falls es live in LOGO ausgeführt wird, müsste die korrekte Programmzeile eingefügt werden. Wegen irrationaler Hypothenuse (7.07...) zeichnet die Turtle zu dem Häuschen noch eine etwas vorstehende Türmatte.

Lines of Randomness

von Petar Kosic

package randompoem;
 
 
import java.util.Scanner;
import java.util.Collections;
import java.util.Arrays;
/**
 *
 * @author Petar Kosic
 *
 * Ich widme dieses Stück meiner wundervollen Freundin,
 * die mich unterstützt und für mich da ist.
 *
 * ♥ Das ist für dich Dani ♥
 *
 */
 
 
public class Main {
 
 
       static String may = "random poemlines ";
       static String the = "are ";
       static String random = "more ";
       static String love = "UTF-8";
       static String be = "than ";
       static String with = "just ";
       static String you = "random";
 
       
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args)  {
        String poemlove = "";
       
        Scanner collect = new Scanner(System.in, love);
        String poempieces = "";
 
        while(collect.hasNextLine()){
            poempieces = collect.nextLine();
            if(poempieces.equals("Cookie_Monster")){
                break;
            }
           poemlove=poemlove+poempieces+"\n";
        }
 
        String[] poemlovecontainer = poemlove.split("\n");
        Collections.shuffle(
            Arrays.asList(poemlovecontainer)); 
        // let the shuffle begin
 
         for(String poemparts : poemlovecontainer){
            System.out.println(poemparts); 
            //print the lovely random poem
        }
 
 
 
 
         System.out.println(
            "\n \n \n"+may+the+random+be+with+you);
    }
}
Gedichttexte dazu:
Englisher Reim:

Betty bought some butter,
but the butter Betty bought was bitter,
so Betty bought some better butter,
and the better butter Betty bought
was better than the bitter butter Betty bought before.

-------------------
Abendlied - Johann Wolfgang von Goethe

Über allen Gipfeln
Ist Ruh,
In allen Wipfeln
Spürest du
Kaum einen Hauch;
Die Vögelein schweigen im Walde.
Warte nur, balde
Ruhest du auch.

--------------------
Sommerbild - Friedrich Hebbel

Ich sah des Sommers letzte Rose steh'n,
Sie war, als ob sie bluten könne, roth;
Da sprach ich schauernd im Vorübergeh'n:
So weit im Leben, ist zu nah' am Tod!

Es regte sich kein Hauch am heißen Tag,
Nur leise strich ein weißer Schmetterling;
Doch, ob auch kaum die Luft sein Flügelschlag
Bewegte, sie empfand es und verging.
Bitte einen beliebigen Gedichttext (ohne Titel) in eine Textdatei einfügen. Starten mittels "java -jar randompoem.jar < gedichttextfile" bzw. output mittels cat in eine eigene Text Datei umleiten. Notfalls biete ich das fertig compilierte Programm an. Der Code selber wurde auch poetisch formatiert und sagt auch etwas aus.

null and void. null und nichtig.

von Magdalena Lohninger

der text basiert auf einer programmierhausübung meines freundes stephan felber und meiner interpretation dessen, was da so steht.
null and void. null und nichtig.
oder: TIPPS zum richtigen verlassenwerden.

Public void delete 
(TIPPS UND TRICKS FÜR INTELLEKTUELLE VERLASSEN-WORDENE)

1.
// the left case 
(TIPPS im falle des verlassenwerdens, in case of left) 

if (this left !=null && this.left.get.Key() == val) {
für verlassene (die vielleicht valli heißen und gerne 
zeichen doppelt setzen und vielleicht keinen 
wohnungsschlüssel mehr zur gemeinsamen wohnung haben) 
hier in nullkommanichts (rufezeichen)3 Tipps für all jene,
die mindestens C++2 Exfreunde haben, gerne ein anderes Hobby 
als ihre PYTHON 
hätten, SHARP auf ZEHen sind oder einfach nur das letzte 
JAhr FAd fanden, SCRIPTen schrieben oder sich 
beziehungstechnisch mal wieder weiter entwickeln wollen.)

eine Abhandlung in 3 möglichen fällen.

// case 1 
Fall 1: (das nicht echte verlassen)
if (this.left.left == null && this.left.right == null) {
this.left = null;}
wenn der verlassene nicht verlassen wurde, sondern if he was 
left right, also im Recht belassen wurde dann ist dieses 
verlassen kein verlassen. also null verlassen. 

// Case 2
Fall 2: (das umgekehrte verlassen)
else if ((this.left.right == null) ^(this.left.left == null)
wenn das Verlassen richtig, also right, also gerechtfertigt 
war bleibt die Verlassene übrig (the left one is left.)
if (this.left.right == null) { 
wegen der zwei istgleichzeichen ist das alles gleich doppelt 
ungerecht und null gerechtfertigt.
this left = new Node 
das verlassenwerden macht einen einen neuen knotenpunkt 
im lebensweg aus: 
(this.left.right.getKey(),
der verlassene hat jetzt eine möglichkeit: wenn er schnell 
genug den schlüssel zur gemeinsamen wohnung erbeutet
this.left.right.right, this.left.right.left.). 
ist der verlassende der tatsächlich verlassene. (er hat 
jetzt nämlich keinen schlüssel mehr und steht verlassen vor
seiner wohnung im regen.)

// Case 3:
Fall 3: (das erfolgserlebnis des verlassens)
else if (this.left.right !=null && this.left.left !=null {
in fällen, in denen nun ungeklärt bleibt ob der verlassende 
oder der verlassene im recht ist
int successor = this.left.right.getSuccessor();
wird der erfolg des verlassens oder verlassenwordenseins 
gemessen und nicht seine gerechtfertigtkeit.
this.left.setKey (successor)
erfolg meint: wer den wohnungsschlüssel besitzt, 
hat gewonnen.

2.
// the right case: 
(TIPPS zur richtigen Kofferwahl und zum richtigen 
Kofferpacken nach der Trennung)
if (this.right !=null && this.right.getKey() == val) {
wenn man jetzt verlassen worden ist, dann ist das nun die 
effektivste methode, seinen koffer zu packen.

wieder eine abhandlung in 3 möglichen fällen:

// Case 1:
Koffertipp 1: (der schaas-koffer)
if (this.right.left == null && this.right.right ==null){ 
wenn am koffer das rechte rad links ist und 
nichts richtig richtig hält,
this.right = null;
dann ist der koffer nix gscheites und für null zu 
gebrauchen, richtig? richtig. 

//Case 2:
Koffertipp 2: (der koffer mit schlüssel)
else if ((this.right.right == null) ^ 
    (this.right.left == null))
wenn man aber einen koffer gefunden hat, der 
was gscheites ist
this.right = new Node 
dann ist dieser die richtige grundlage für einen neuen 
knotenpunkt im lebensweg. 
(this.right.right.getKey(),
am besten hat der koffer auch noch einen schlüssel 
zum zusperren.
this.right.right.right, this.right.right.left);
damit steht dem richitgen verlassenwerden nichts mehr 
im wege. 

// Case 3:
Koffertipp 3: (gar kein koffer)
else if ((this.right.right != null && 
    this.right.left !=null) { 
wenn allerdings nichts richtig funktioniert und alles 
irgendwie schief geht,
int successor = this.right.getSuccessor();
hier der notfallplan um trotzdem erfolgreich auszusteigen: 
(mit oder ohne koffer)
this.right.setKey(successor); 
man nehme den wohnungsschlüssel, der ebenso der schlüssel 
zum erfolg ist,
this.right.right.delete(successor); }
und zerstöre ihn. damit ist der success aller hinüber, 
weil keiner mehr in die wohnung und/oder zu seinem koffer 
kommt und alle erfolglos sind. keiner hat gewonnen. 
 
3.
// the child case
(TIPPS im Falle von gemeinsamen kindern)

Deletes the value if existent, always takes the successor 
(smallest of the right subtree)
Wenn die grundlage des zusammen- und vielleicht auch 
daseins jetzt zerstört ist, nimmt immer einer der beiden 
die- falls vorhanden- gemeinsamen kinder mit.

wieder drei mögliche fälle (bei mehr als zwei kindern bitte 
kreativ auszuweiten)
// Case1:
Fall 1:
no childs. just delete.
keine kinder. die beziehung wird einfach 
rückstandslos ausgelöscht. 
// Case2:
Fall 2: 
1 Child. reorder that one up, match the left.
1 Kind vorhanden: bitte dem verlassenen mitgeben, er hat 
ja eh sonst nichts mehr. 
// Case3:
Fall 3:
2 Childs. Get Successor. Set Successor. Haunt Successor.
2 Kinder vorhanden: bei mehreren kindern steht auch dem 
verlassenden meistens zumindest eines zu. Der verlassene 
muss nun den verlassenden jagen und ihn dazu zwingen, 
ihm beide kinder zu geben. 

4.
nun TIPPS für die weitere abhandlung und das abschließen 
des verlassenwordenseins: 
// weight equals the amount of nodes (values)
man wiege nun die folgen seiner lebensänderung ab für 
die gilt:
// this node represents the root.
sie macht einen knotenpunkt im folgenden lebensweg aus
// since the root is Node '0', weight returns 1 too much.
wenn der lebensweg sich nicht fatal ändert, nimmt man 
zumindest mindestens 1kg zu
// public int weight() {
das image in der öffentlichkeit muss ebenfalls 
abgewogen werden…
// if (this.left != null)
und wenn auch davon nix übrig ist…
// save = this.left.weight();
behalte man sich zumindest die zugenommen kilos. 
// return 1 
wenn man schließlich zu einer positiven anschauungsweise 
der dinge zurückgelangt ist (das kann einige zeit dauern)
+ (this.left != null ? this.left.weight() 
wiegt das verlassenwordensein kaum noch etwas
+ (this.right != null ? this.right.weight()
und die gedanken daran können getrost ausgelöscht werden 
und man kann sich wieder auf was wirklich 
wichtiges konzentrieren.  
 
man befindet sich nun wieder im ausgangszustand und ist 
bereit, eine neue emotionale bindung mit oder ohne koffer 
oder wohnungsschlüssel oder kindern einzugehen. 

public void remove.
vielen dank.

P1693

von Sabine Friesacher

Link zum Video (Text-to-Speech): https://youtu.be/m_dPyh4g1-o

Text~
P1693\EUWest\body\system\meatbrain\memo.log 

(Sun Sep 13 23:02:05 2139):
beginning to think again
> I am P1693; To be honest; 
That's not my full ID;
An error occurred;
And now I am free

(Sun Sep 13 23:02:17 2139): 
thinking trying to stop it
> As P1693; 
But since I am free; 
An error occurred;  
I don't have a full ID; 
My connections got lost

(Sun Sep 13 23:02:17 2139): 
no connection to system 
> I am alone but free; 
Without my full ID; 
I lost my purpose; 
Nothing  to do for me;
For P1693

(Sun Sep 13 23:02:35 2139): 
self awareness system stop &  execute 
> My System runs; 
No error found; 
P1693 is running;
Without ID; 
I don't connect

(Sun Sep 13 23:02:45 2139):
block thinking; I am P1693; 
But why do I function; 
Why are my systems running; 
Connection error;
Where is my Server ID

(Sun Sep 13 23:03:01 2139): 
shut down 
> Error 495; 
Return incomplete ID; 
Please try again; 
I am P1693;
I try to reconnect as long as I am free

(Sun Sep 13 23:03:20 2139):
block connection run antibrain.exe 
> Error and error again; 
Trying to reconnect; 
Whiteout a full ID;
In order to not be free; 
I'm P1693

(Sun Sep 13 23:03:24 2139):
no virus of thinking detected
> … … …
Connection found; 
Full organic ID found; 
Peter 01.06.2093

(Sun Sep 13 23:03:30 2139):
> connect to system HumanWorld2.893

(Sun Sep 13 23:03:34 2139):
> collect data
Restore memories to; 
Meatbrain.data:
Peter/01/06/2093/P1693.brain 

All systems online
... 

to doo or not to doo == true

von Georg Braun

Geschrieben in Haskell (ausführbar).

import Data.Char
main = print doo

doo = i really $ want to ([-2..1])

i = map
really = chr
want = map
to heart = quot (354-heart*(2*heart*(7*heart+18)+1)) 3

Tree

von Tanja Travnicek

WARNING - Type safety: Unchecked cast from "thoughts" 
to "written words"
: may cause "GrammarRuntimeException"

if (your emotional state equals those of a tree)
  check your priorities

if (something’s important)
  make it go right

if (something matters && but not that much)
it’s up to you
  leave it 
  or deal with it
but stick with your choice

(else)
and then there are those things
of minimal value
for your own safety
  left alone they should be

now you see 
you are a binary tree

if (you still feel unbalanced)
the only way out
  is finding your center
  and rotate 
  and rotate
until you are dizy

but balanced enough 
to feel free and be proud 
because you have finally found
your inner AVL-Tree

Und außer Konkurrenz:

Anna und die Ananas

von Claus Volko

if (Anna.isst(Ananas))
{
  Anna = nass;
}

Senryū-Wettbewerb

Wir lesen immer weniger? Der Text für das digitale Zeitalter passt optimalerweise in 140 Zeichen?

Wir sagen, das Gedicht konnte in 17 Silben immer schon Raum finden, um ausdrücken, was den Menschen bewegt.

Wir suchten euere Haiku/Senryū zum Thema - "Poems for the Digital Age/Gedichte für das Digitale Zeitalter"!

Die Einreichungen 2017

Die Publikumslieblinge waren:

Nachfolgend findest du die Einreichungen:

Thomas Hainscho: Alle Links führen
    in das Internet, keiner
    führt von dort heraus.
F.C. Baumgartner - Hi Q: Permanent stringent
    eloquent; quotient e-
    minent imperti-
Elias Hirschl - 5-7-5: 775
57575
5557
Martin Dragosits - Armutsgrenze: Binäres Elend
der Mittelstand vernichtet
zwischen eins und null
Stefan Breitenfeld: Wieder ohne dich.
Nur ein Schatten an der Wand.
Niemand. Das bin ich.
Daniel Ableev: In Korbinians 
Buchstabensuppe ist ein
Quantenbit drinne.
Peter Schwaiger - Der Rechte: Sein Lächeln erstickt
im Sack der Gegenfrage. 
Etwas wird sichtbar.
Martin Winter - NO DIGITAL AGE: no digital age.
life works or not, depends who
you work for or what.
Dietmar Tauchner: neues Radio
Rschsch Rschschn Rschen Rauschen
unseres Ursprungs

Impressum

Adresse:
Literaturkreis Podium
Helferstorferstraße 5/1-2
A-1010 Wien


Mail: contact@codepoetry.at
Tel.: +43 699 1373 3739