<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jan+Dropmann</id>
	<title>Medien Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jan+Dropmann"/>
	<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/Special:Contributions/Jan_Dropmann"/>
	<updated>2026-04-23T04:22:30Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.6</generator>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Jan_Dropmann&amp;diff=73868</id>
		<title>GMU:Bots &#039;n&#039; Plots/Jan Dropmann</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Jan_Dropmann&amp;diff=73868"/>
		<updated>2015-09-18T08:31:44Z</updated>

		<summary type="html">&lt;p&gt;Jan Dropmann: /* Little Bot with Processing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;Welcome to my new Wiki-Page&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;  &lt;br /&gt;
    -Name: Jan Dropmann &lt;br /&gt;
    -Bachelor: Media Studies &lt;br /&gt;
&#039;&#039;&lt;br /&gt;
==== Twitter Bot ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Takes an Image, process it and post it on Twitter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===== Screenshots =====&lt;br /&gt;
&lt;br /&gt;
[[File:Twitterbird.png|400px|thumb|left]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Metalrain.png|400px|thumb|left]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Link to the GitHub project =====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;https://github.com/JHDROP/TwitterImageBot.git&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===== Source Code =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;importing the librarys needed for image processing&amp;quot;&amp;quot;&amp;quot; &lt;br /&gt;
&lt;br /&gt;
from PIL import Image, ImageFilter, ImageColor, ImageOps #Python Image Libray: adds image processing capabilities to your Python interpreter&lt;br /&gt;
import numpy as np #nummerical python used for calculating huge arrays and matrices with numeric data &lt;br /&gt;
import colorsys #contains function for converting between different Colormodes as RGB and other &lt;br /&gt;
import random #contains different random number generators &lt;br /&gt;
&lt;br /&gt;
import sys 		#sys module offers constants, functions and methodes from the python interpreter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class ImageProcessor:&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;Using Image Module&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
	#just flips the image upsidedown &lt;br /&gt;
	def flip(self, img):&lt;br /&gt;
		return img.transpose(Image.FLIP_TOP_BOTTOM)&lt;br /&gt;
&lt;br /&gt;
	#rotates the image with a specific degree (e.g 90)&lt;br /&gt;
	def rotate(self, img):&lt;br /&gt;
		return img.transpose(Image.ROTATE_90)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;Using ImageOps Module&amp;quot;&amp;quot;&amp;quot; #Image Operations &lt;br /&gt;
	#turning the image into an one chanel (L) grayscale image &lt;br /&gt;
	def grayscale(self, img):&lt;br /&gt;
		return ImageOps.grayscale(img)&lt;br /&gt;
&lt;br /&gt;
	#substitute different colors to the white and black pixels. It expact a RGB tuple for each of them. (Only works with RGB colormode)&lt;br /&gt;
	def color_change(self, img):&lt;br /&gt;
		return ImageOps.colorize(img, (255, 0, 0),(0, 0, 255))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;Using ImageFilter Module&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
	#applying gaussian blur to the image. Changing the radius(intensity) of the blur &lt;br /&gt;
	def blur(self, img):&lt;br /&gt;
		return img.filter(ImageFilter.GaussianBlur(radius=4))&lt;br /&gt;
&lt;br /&gt;
	#applying contour to the image &lt;br /&gt;
	def contour(self, img):&lt;br /&gt;
		return img.filter(ImageFilter.CONTOUR)&lt;br /&gt;
	#applying a edge enhancement to the image &lt;br /&gt;
	def edge(self, img):&lt;br /&gt;
		return img.filter(ImageFilter.EDGE_ENHANCE_MORE)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	################################################################&lt;br /&gt;
	# some more advanced image processing                          #&lt;br /&gt;
	################################################################&lt;br /&gt;
&lt;br /&gt;
	# shifting pixels with a specific amount | rows or columns &lt;br /&gt;
	def shifting_pixels(self, img, fn=None, amount=10, horizontal=True):&lt;br /&gt;
		&lt;br /&gt;
		if fn is None:&lt;br /&gt;
			fn = shift_list&lt;br /&gt;
&lt;br /&gt;
		# getting the imagine demention &amp;gt; full image &lt;br /&gt;
		ymax, xmax = img.size &lt;br /&gt;
&lt;br /&gt;
		# converting the input (image) into an array with numpy &lt;br /&gt;
		a1 = np.asarray(img)&lt;br /&gt;
		a2 = np.zeros((xmax, ymax, 3))&lt;br /&gt;
&lt;br /&gt;
		# shifting columns of pixels&lt;br /&gt;
		if horizontal is True:&lt;br /&gt;
&lt;br /&gt;
			# iterate over half(xmax / 2) of the rows | any other array of the image could be selected full image would be xmax /1 &lt;br /&gt;
			for x in range(xmax / 2):&lt;br /&gt;
				#define the amount the pixels should be moved with a random selector in a number array(&amp;quot;amount&amp;quot; can be replaced by any number)&lt;br /&gt;
				d = random.randint(-amount, amount)&lt;br /&gt;
				row = a1[x,:,:] &lt;br /&gt;
				a2[x,:,:] = fn(row, d)&lt;br /&gt;
&lt;br /&gt;
			# iterate over the other half&lt;br /&gt;
			for x in range(xmax / 2, xmax):&lt;br /&gt;
				a2[x,:,:] = a1[x,:,:]&lt;br /&gt;
&lt;br /&gt;
		# sorting rows of pixels&lt;br /&gt;
		else:&lt;br /&gt;
&lt;br /&gt;
			# iterate over half(ymax / 2) of the columns&lt;br /&gt;
			for y in range(ymax / 2):&lt;br /&gt;
				d = random.randint(-amount, amount)&lt;br /&gt;
				col = a1[:,y,:]&lt;br /&gt;
				a2[:,y,:] = fn(col, d)&lt;br /&gt;
&lt;br /&gt;
			# iterate over the other half&lt;br /&gt;
			for y in range(ymax / 2, ymax):&lt;br /&gt;
				a2[:,y,:] = a1[:,y,:]&lt;br /&gt;
&lt;br /&gt;
	  &lt;br /&gt;
		# turn the numpy array back into an image&lt;br /&gt;
		a2 = np.uint8(a2)&lt;br /&gt;
		out = Image.fromarray(a2)&lt;br /&gt;
&lt;br /&gt;
		# return the result (image)&lt;br /&gt;
		return out&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	def shift_list(self, lst, amount):&lt;br /&gt;
&lt;br /&gt;
		# make sure we got lists&lt;br /&gt;
		lst = list(lst)&lt;br /&gt;
&lt;br /&gt;
		# combine slices&lt;br /&gt;
		lst = lst[amount:] + lst[:amount]&lt;br /&gt;
		return lst&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	#pixel sorting using numpy &lt;br /&gt;
	def sort(self, img, fn=None, horizontal=True, reverse=False):&lt;br /&gt;
		&lt;br /&gt;
		# get image dimensions &amp;gt; full image |other demensions are possible &lt;br /&gt;
		ymax, xmax = img.size&lt;br /&gt;
&lt;br /&gt;
		#you can apply brightness, redness, yellowness and hue to fn as they are defined below  &lt;br /&gt;
		if fn is None:&lt;br /&gt;
			fn = self.brightness&lt;br /&gt;
		else: &lt;br /&gt;
			fn = self.redness&lt;br /&gt;
&lt;br /&gt;
		# lets work with arrays and numpy (changing the image into numpy usable data)&lt;br /&gt;
		a1 = np.asarray(img)&lt;br /&gt;
		a2 = np.zeros((xmax, ymax, 3))&lt;br /&gt;
&lt;br /&gt;
		# sorting rows(x) of pixels&lt;br /&gt;
		if horizontal is True:&lt;br /&gt;
&lt;br /&gt;
			# iterate over all the rows(xmax) or any other amount of the image (e.g half (xmax / 2))&lt;br /&gt;
			for x in range(xmax / 1):&lt;br /&gt;
				row = a1[x,:,:]&lt;br /&gt;
				a2[x,:,:] = sorted(row, key=fn, reverse=reverse)&lt;br /&gt;
&lt;br /&gt;
			for x in range(xmax / 1, xmax):&lt;br /&gt;
				a2[x,:,:] = a1[x,:,:]&lt;br /&gt;
&lt;br /&gt;
		else:&lt;br /&gt;
&lt;br /&gt;
			# iterate over all columns(y) or any other amount of the image (e.g half (ymax / 2))&lt;br /&gt;
			for y in range(ymax / 1):&lt;br /&gt;
				col = a1[:,y,:]&lt;br /&gt;
				a2[:,y,:] = sorted(col, key=fn, reverse=reverse)&lt;br /&gt;
&lt;br /&gt;
			# iterate over the other half&lt;br /&gt;
			for y in range(ymax / 1, ymax):&lt;br /&gt;
				a2[:,y,:] = a1[:,y,:]&lt;br /&gt;
	  &lt;br /&gt;
		# turn the numpy array back into an image&lt;br /&gt;
		a2 = np.uint8(a2)&lt;br /&gt;
		out = Image.fromarray(a2)&lt;br /&gt;
&lt;br /&gt;
		# return the result (image)&lt;br /&gt;
		return out&lt;br /&gt;
&lt;br /&gt;
	################################################################&lt;br /&gt;
	#defining some further image processings which are colled above#&lt;br /&gt;
	#and will determine the order of colors  					   #&lt;br /&gt;
	################################################################&lt;br /&gt;
&lt;br /&gt;
	def brightness(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; assign a value to each color &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		return 0.01 * r + 0.587 * g + 0.114 * b&lt;br /&gt;
&lt;br /&gt;
	def redness(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; return the amount of red &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		return r&lt;br /&gt;
&lt;br /&gt;
	def yellowness(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; return the amount of yellow &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		return r * 0.5 + g * 0.5&lt;br /&gt;
&lt;br /&gt;
	def hue(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; return the hue of some color &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		h, s, v = colorsys.rgb_to_hsv(float(r), float(g), float(b))&lt;br /&gt;
		return h&lt;br /&gt;
&lt;br /&gt;
	################################################################&lt;br /&gt;
	# trying new stuff                   #&lt;br /&gt;
	################################################################&lt;br /&gt;
	# Sorts a given row of pixels&lt;br /&gt;
	def sort_interval(self, interval):&lt;br /&gt;
		if interval == []:&lt;br /&gt;
			return []&lt;br /&gt;
		else:&lt;br /&gt;
			return(sorted(interval, key = lambda x: x[0] + x[1] + x[2]))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Little Bot with Processing ====&lt;br /&gt;
&#039;&#039;&#039;Created a simple Bot and an animated GIF with Processing&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
===== Screenshots =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:First robot.png | 80 x80px| |left ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Robot.gif | 100 x100px| |left ]]&lt;/div&gt;</summary>
		<author><name>Jan Dropmann</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Jan_Dropmann&amp;diff=73867</id>
		<title>GMU:Bots &#039;n&#039; Plots/Jan Dropmann</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Jan_Dropmann&amp;diff=73867"/>
		<updated>2015-09-18T08:31:34Z</updated>

		<summary type="html">&lt;p&gt;Jan Dropmann: /* Little Bot with Processing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;Welcome to my new Wiki-Page&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;  &lt;br /&gt;
    -Name: Jan Dropmann &lt;br /&gt;
    -Bachelor: Media Studies &lt;br /&gt;
&#039;&#039;&lt;br /&gt;
==== Twitter Bot ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Takes an Image, process it and post it on Twitter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===== Screenshots =====&lt;br /&gt;
&lt;br /&gt;
[[File:Twitterbird.png|400px|thumb|left]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Metalrain.png|400px|thumb|left]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Link to the GitHub project =====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;https://github.com/JHDROP/TwitterImageBot.git&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===== Source Code =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;importing the librarys needed for image processing&amp;quot;&amp;quot;&amp;quot; &lt;br /&gt;
&lt;br /&gt;
from PIL import Image, ImageFilter, ImageColor, ImageOps #Python Image Libray: adds image processing capabilities to your Python interpreter&lt;br /&gt;
import numpy as np #nummerical python used for calculating huge arrays and matrices with numeric data &lt;br /&gt;
import colorsys #contains function for converting between different Colormodes as RGB and other &lt;br /&gt;
import random #contains different random number generators &lt;br /&gt;
&lt;br /&gt;
import sys 		#sys module offers constants, functions and methodes from the python interpreter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class ImageProcessor:&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;Using Image Module&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
	#just flips the image upsidedown &lt;br /&gt;
	def flip(self, img):&lt;br /&gt;
		return img.transpose(Image.FLIP_TOP_BOTTOM)&lt;br /&gt;
&lt;br /&gt;
	#rotates the image with a specific degree (e.g 90)&lt;br /&gt;
	def rotate(self, img):&lt;br /&gt;
		return img.transpose(Image.ROTATE_90)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;Using ImageOps Module&amp;quot;&amp;quot;&amp;quot; #Image Operations &lt;br /&gt;
	#turning the image into an one chanel (L) grayscale image &lt;br /&gt;
	def grayscale(self, img):&lt;br /&gt;
		return ImageOps.grayscale(img)&lt;br /&gt;
&lt;br /&gt;
	#substitute different colors to the white and black pixels. It expact a RGB tuple for each of them. (Only works with RGB colormode)&lt;br /&gt;
	def color_change(self, img):&lt;br /&gt;
		return ImageOps.colorize(img, (255, 0, 0),(0, 0, 255))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;Using ImageFilter Module&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
	#applying gaussian blur to the image. Changing the radius(intensity) of the blur &lt;br /&gt;
	def blur(self, img):&lt;br /&gt;
		return img.filter(ImageFilter.GaussianBlur(radius=4))&lt;br /&gt;
&lt;br /&gt;
	#applying contour to the image &lt;br /&gt;
	def contour(self, img):&lt;br /&gt;
		return img.filter(ImageFilter.CONTOUR)&lt;br /&gt;
	#applying a edge enhancement to the image &lt;br /&gt;
	def edge(self, img):&lt;br /&gt;
		return img.filter(ImageFilter.EDGE_ENHANCE_MORE)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	################################################################&lt;br /&gt;
	# some more advanced image processing                          #&lt;br /&gt;
	################################################################&lt;br /&gt;
&lt;br /&gt;
	# shifting pixels with a specific amount | rows or columns &lt;br /&gt;
	def shifting_pixels(self, img, fn=None, amount=10, horizontal=True):&lt;br /&gt;
		&lt;br /&gt;
		if fn is None:&lt;br /&gt;
			fn = shift_list&lt;br /&gt;
&lt;br /&gt;
		# getting the imagine demention &amp;gt; full image &lt;br /&gt;
		ymax, xmax = img.size &lt;br /&gt;
&lt;br /&gt;
		# converting the input (image) into an array with numpy &lt;br /&gt;
		a1 = np.asarray(img)&lt;br /&gt;
		a2 = np.zeros((xmax, ymax, 3))&lt;br /&gt;
&lt;br /&gt;
		# shifting columns of pixels&lt;br /&gt;
		if horizontal is True:&lt;br /&gt;
&lt;br /&gt;
			# iterate over half(xmax / 2) of the rows | any other array of the image could be selected full image would be xmax /1 &lt;br /&gt;
			for x in range(xmax / 2):&lt;br /&gt;
				#define the amount the pixels should be moved with a random selector in a number array(&amp;quot;amount&amp;quot; can be replaced by any number)&lt;br /&gt;
				d = random.randint(-amount, amount)&lt;br /&gt;
				row = a1[x,:,:] &lt;br /&gt;
				a2[x,:,:] = fn(row, d)&lt;br /&gt;
&lt;br /&gt;
			# iterate over the other half&lt;br /&gt;
			for x in range(xmax / 2, xmax):&lt;br /&gt;
				a2[x,:,:] = a1[x,:,:]&lt;br /&gt;
&lt;br /&gt;
		# sorting rows of pixels&lt;br /&gt;
		else:&lt;br /&gt;
&lt;br /&gt;
			# iterate over half(ymax / 2) of the columns&lt;br /&gt;
			for y in range(ymax / 2):&lt;br /&gt;
				d = random.randint(-amount, amount)&lt;br /&gt;
				col = a1[:,y,:]&lt;br /&gt;
				a2[:,y,:] = fn(col, d)&lt;br /&gt;
&lt;br /&gt;
			# iterate over the other half&lt;br /&gt;
			for y in range(ymax / 2, ymax):&lt;br /&gt;
				a2[:,y,:] = a1[:,y,:]&lt;br /&gt;
&lt;br /&gt;
	  &lt;br /&gt;
		# turn the numpy array back into an image&lt;br /&gt;
		a2 = np.uint8(a2)&lt;br /&gt;
		out = Image.fromarray(a2)&lt;br /&gt;
&lt;br /&gt;
		# return the result (image)&lt;br /&gt;
		return out&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	def shift_list(self, lst, amount):&lt;br /&gt;
&lt;br /&gt;
		# make sure we got lists&lt;br /&gt;
		lst = list(lst)&lt;br /&gt;
&lt;br /&gt;
		# combine slices&lt;br /&gt;
		lst = lst[amount:] + lst[:amount]&lt;br /&gt;
		return lst&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	#pixel sorting using numpy &lt;br /&gt;
	def sort(self, img, fn=None, horizontal=True, reverse=False):&lt;br /&gt;
		&lt;br /&gt;
		# get image dimensions &amp;gt; full image |other demensions are possible &lt;br /&gt;
		ymax, xmax = img.size&lt;br /&gt;
&lt;br /&gt;
		#you can apply brightness, redness, yellowness and hue to fn as they are defined below  &lt;br /&gt;
		if fn is None:&lt;br /&gt;
			fn = self.brightness&lt;br /&gt;
		else: &lt;br /&gt;
			fn = self.redness&lt;br /&gt;
&lt;br /&gt;
		# lets work with arrays and numpy (changing the image into numpy usable data)&lt;br /&gt;
		a1 = np.asarray(img)&lt;br /&gt;
		a2 = np.zeros((xmax, ymax, 3))&lt;br /&gt;
&lt;br /&gt;
		# sorting rows(x) of pixels&lt;br /&gt;
		if horizontal is True:&lt;br /&gt;
&lt;br /&gt;
			# iterate over all the rows(xmax) or any other amount of the image (e.g half (xmax / 2))&lt;br /&gt;
			for x in range(xmax / 1):&lt;br /&gt;
				row = a1[x,:,:]&lt;br /&gt;
				a2[x,:,:] = sorted(row, key=fn, reverse=reverse)&lt;br /&gt;
&lt;br /&gt;
			for x in range(xmax / 1, xmax):&lt;br /&gt;
				a2[x,:,:] = a1[x,:,:]&lt;br /&gt;
&lt;br /&gt;
		else:&lt;br /&gt;
&lt;br /&gt;
			# iterate over all columns(y) or any other amount of the image (e.g half (ymax / 2))&lt;br /&gt;
			for y in range(ymax / 1):&lt;br /&gt;
				col = a1[:,y,:]&lt;br /&gt;
				a2[:,y,:] = sorted(col, key=fn, reverse=reverse)&lt;br /&gt;
&lt;br /&gt;
			# iterate over the other half&lt;br /&gt;
			for y in range(ymax / 1, ymax):&lt;br /&gt;
				a2[:,y,:] = a1[:,y,:]&lt;br /&gt;
	  &lt;br /&gt;
		# turn the numpy array back into an image&lt;br /&gt;
		a2 = np.uint8(a2)&lt;br /&gt;
		out = Image.fromarray(a2)&lt;br /&gt;
&lt;br /&gt;
		# return the result (image)&lt;br /&gt;
		return out&lt;br /&gt;
&lt;br /&gt;
	################################################################&lt;br /&gt;
	#defining some further image processings which are colled above#&lt;br /&gt;
	#and will determine the order of colors  					   #&lt;br /&gt;
	################################################################&lt;br /&gt;
&lt;br /&gt;
	def brightness(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; assign a value to each color &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		return 0.01 * r + 0.587 * g + 0.114 * b&lt;br /&gt;
&lt;br /&gt;
	def redness(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; return the amount of red &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		return r&lt;br /&gt;
&lt;br /&gt;
	def yellowness(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; return the amount of yellow &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		return r * 0.5 + g * 0.5&lt;br /&gt;
&lt;br /&gt;
	def hue(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; return the hue of some color &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		h, s, v = colorsys.rgb_to_hsv(float(r), float(g), float(b))&lt;br /&gt;
		return h&lt;br /&gt;
&lt;br /&gt;
	################################################################&lt;br /&gt;
	# trying new stuff                   #&lt;br /&gt;
	################################################################&lt;br /&gt;
	# Sorts a given row of pixels&lt;br /&gt;
	def sort_interval(self, interval):&lt;br /&gt;
		if interval == []:&lt;br /&gt;
			return []&lt;br /&gt;
		else:&lt;br /&gt;
			return(sorted(interval, key = lambda x: x[0] + x[1] + x[2]))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Little Bot with Processing ====&lt;br /&gt;
&#039;&#039;&#039;Created a simple Bot and an animated GIF with processing&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
===== Screenshots =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:First robot.png | 80 x80px| |left ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Robot.gif | 100 x100px| |left ]]&lt;/div&gt;</summary>
		<author><name>Jan Dropmann</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Jan_Dropmann&amp;diff=73866</id>
		<title>GMU:Bots &#039;n&#039; Plots/Jan Dropmann</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Jan_Dropmann&amp;diff=73866"/>
		<updated>2015-09-18T08:31:02Z</updated>

		<summary type="html">&lt;p&gt;Jan Dropmann: /* Twitter Bot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;Welcome to my new Wiki-Page&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;  &lt;br /&gt;
    -Name: Jan Dropmann &lt;br /&gt;
    -Bachelor: Media Studies &lt;br /&gt;
&#039;&#039;&lt;br /&gt;
==== Twitter Bot ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Takes an Image, process it and post it on Twitter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===== Screenshots =====&lt;br /&gt;
&lt;br /&gt;
[[File:Twitterbird.png|400px|thumb|left]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Metalrain.png|400px|thumb|left]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Link to the GitHub project =====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;https://github.com/JHDROP/TwitterImageBot.git&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===== Source Code =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;importing the librarys needed for image processing&amp;quot;&amp;quot;&amp;quot; &lt;br /&gt;
&lt;br /&gt;
from PIL import Image, ImageFilter, ImageColor, ImageOps #Python Image Libray: adds image processing capabilities to your Python interpreter&lt;br /&gt;
import numpy as np #nummerical python used for calculating huge arrays and matrices with numeric data &lt;br /&gt;
import colorsys #contains function for converting between different Colormodes as RGB and other &lt;br /&gt;
import random #contains different random number generators &lt;br /&gt;
&lt;br /&gt;
import sys 		#sys module offers constants, functions and methodes from the python interpreter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class ImageProcessor:&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;Using Image Module&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
	#just flips the image upsidedown &lt;br /&gt;
	def flip(self, img):&lt;br /&gt;
		return img.transpose(Image.FLIP_TOP_BOTTOM)&lt;br /&gt;
&lt;br /&gt;
	#rotates the image with a specific degree (e.g 90)&lt;br /&gt;
	def rotate(self, img):&lt;br /&gt;
		return img.transpose(Image.ROTATE_90)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;Using ImageOps Module&amp;quot;&amp;quot;&amp;quot; #Image Operations &lt;br /&gt;
	#turning the image into an one chanel (L) grayscale image &lt;br /&gt;
	def grayscale(self, img):&lt;br /&gt;
		return ImageOps.grayscale(img)&lt;br /&gt;
&lt;br /&gt;
	#substitute different colors to the white and black pixels. It expact a RGB tuple for each of them. (Only works with RGB colormode)&lt;br /&gt;
	def color_change(self, img):&lt;br /&gt;
		return ImageOps.colorize(img, (255, 0, 0),(0, 0, 255))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;Using ImageFilter Module&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
	#applying gaussian blur to the image. Changing the radius(intensity) of the blur &lt;br /&gt;
	def blur(self, img):&lt;br /&gt;
		return img.filter(ImageFilter.GaussianBlur(radius=4))&lt;br /&gt;
&lt;br /&gt;
	#applying contour to the image &lt;br /&gt;
	def contour(self, img):&lt;br /&gt;
		return img.filter(ImageFilter.CONTOUR)&lt;br /&gt;
	#applying a edge enhancement to the image &lt;br /&gt;
	def edge(self, img):&lt;br /&gt;
		return img.filter(ImageFilter.EDGE_ENHANCE_MORE)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	################################################################&lt;br /&gt;
	# some more advanced image processing                          #&lt;br /&gt;
	################################################################&lt;br /&gt;
&lt;br /&gt;
	# shifting pixels with a specific amount | rows or columns &lt;br /&gt;
	def shifting_pixels(self, img, fn=None, amount=10, horizontal=True):&lt;br /&gt;
		&lt;br /&gt;
		if fn is None:&lt;br /&gt;
			fn = shift_list&lt;br /&gt;
&lt;br /&gt;
		# getting the imagine demention &amp;gt; full image &lt;br /&gt;
		ymax, xmax = img.size &lt;br /&gt;
&lt;br /&gt;
		# converting the input (image) into an array with numpy &lt;br /&gt;
		a1 = np.asarray(img)&lt;br /&gt;
		a2 = np.zeros((xmax, ymax, 3))&lt;br /&gt;
&lt;br /&gt;
		# shifting columns of pixels&lt;br /&gt;
		if horizontal is True:&lt;br /&gt;
&lt;br /&gt;
			# iterate over half(xmax / 2) of the rows | any other array of the image could be selected full image would be xmax /1 &lt;br /&gt;
			for x in range(xmax / 2):&lt;br /&gt;
				#define the amount the pixels should be moved with a random selector in a number array(&amp;quot;amount&amp;quot; can be replaced by any number)&lt;br /&gt;
				d = random.randint(-amount, amount)&lt;br /&gt;
				row = a1[x,:,:] &lt;br /&gt;
				a2[x,:,:] = fn(row, d)&lt;br /&gt;
&lt;br /&gt;
			# iterate over the other half&lt;br /&gt;
			for x in range(xmax / 2, xmax):&lt;br /&gt;
				a2[x,:,:] = a1[x,:,:]&lt;br /&gt;
&lt;br /&gt;
		# sorting rows of pixels&lt;br /&gt;
		else:&lt;br /&gt;
&lt;br /&gt;
			# iterate over half(ymax / 2) of the columns&lt;br /&gt;
			for y in range(ymax / 2):&lt;br /&gt;
				d = random.randint(-amount, amount)&lt;br /&gt;
				col = a1[:,y,:]&lt;br /&gt;
				a2[:,y,:] = fn(col, d)&lt;br /&gt;
&lt;br /&gt;
			# iterate over the other half&lt;br /&gt;
			for y in range(ymax / 2, ymax):&lt;br /&gt;
				a2[:,y,:] = a1[:,y,:]&lt;br /&gt;
&lt;br /&gt;
	  &lt;br /&gt;
		# turn the numpy array back into an image&lt;br /&gt;
		a2 = np.uint8(a2)&lt;br /&gt;
		out = Image.fromarray(a2)&lt;br /&gt;
&lt;br /&gt;
		# return the result (image)&lt;br /&gt;
		return out&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	def shift_list(self, lst, amount):&lt;br /&gt;
&lt;br /&gt;
		# make sure we got lists&lt;br /&gt;
		lst = list(lst)&lt;br /&gt;
&lt;br /&gt;
		# combine slices&lt;br /&gt;
		lst = lst[amount:] + lst[:amount]&lt;br /&gt;
		return lst&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	#pixel sorting using numpy &lt;br /&gt;
	def sort(self, img, fn=None, horizontal=True, reverse=False):&lt;br /&gt;
		&lt;br /&gt;
		# get image dimensions &amp;gt; full image |other demensions are possible &lt;br /&gt;
		ymax, xmax = img.size&lt;br /&gt;
&lt;br /&gt;
		#you can apply brightness, redness, yellowness and hue to fn as they are defined below  &lt;br /&gt;
		if fn is None:&lt;br /&gt;
			fn = self.brightness&lt;br /&gt;
		else: &lt;br /&gt;
			fn = self.redness&lt;br /&gt;
&lt;br /&gt;
		# lets work with arrays and numpy (changing the image into numpy usable data)&lt;br /&gt;
		a1 = np.asarray(img)&lt;br /&gt;
		a2 = np.zeros((xmax, ymax, 3))&lt;br /&gt;
&lt;br /&gt;
		# sorting rows(x) of pixels&lt;br /&gt;
		if horizontal is True:&lt;br /&gt;
&lt;br /&gt;
			# iterate over all the rows(xmax) or any other amount of the image (e.g half (xmax / 2))&lt;br /&gt;
			for x in range(xmax / 1):&lt;br /&gt;
				row = a1[x,:,:]&lt;br /&gt;
				a2[x,:,:] = sorted(row, key=fn, reverse=reverse)&lt;br /&gt;
&lt;br /&gt;
			for x in range(xmax / 1, xmax):&lt;br /&gt;
				a2[x,:,:] = a1[x,:,:]&lt;br /&gt;
&lt;br /&gt;
		else:&lt;br /&gt;
&lt;br /&gt;
			# iterate over all columns(y) or any other amount of the image (e.g half (ymax / 2))&lt;br /&gt;
			for y in range(ymax / 1):&lt;br /&gt;
				col = a1[:,y,:]&lt;br /&gt;
				a2[:,y,:] = sorted(col, key=fn, reverse=reverse)&lt;br /&gt;
&lt;br /&gt;
			# iterate over the other half&lt;br /&gt;
			for y in range(ymax / 1, ymax):&lt;br /&gt;
				a2[:,y,:] = a1[:,y,:]&lt;br /&gt;
	  &lt;br /&gt;
		# turn the numpy array back into an image&lt;br /&gt;
		a2 = np.uint8(a2)&lt;br /&gt;
		out = Image.fromarray(a2)&lt;br /&gt;
&lt;br /&gt;
		# return the result (image)&lt;br /&gt;
		return out&lt;br /&gt;
&lt;br /&gt;
	################################################################&lt;br /&gt;
	#defining some further image processings which are colled above#&lt;br /&gt;
	#and will determine the order of colors  					   #&lt;br /&gt;
	################################################################&lt;br /&gt;
&lt;br /&gt;
	def brightness(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; assign a value to each color &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		return 0.01 * r + 0.587 * g + 0.114 * b&lt;br /&gt;
&lt;br /&gt;
	def redness(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; return the amount of red &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		return r&lt;br /&gt;
&lt;br /&gt;
	def yellowness(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; return the amount of yellow &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		return r * 0.5 + g * 0.5&lt;br /&gt;
&lt;br /&gt;
	def hue(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; return the hue of some color &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		h, s, v = colorsys.rgb_to_hsv(float(r), float(g), float(b))&lt;br /&gt;
		return h&lt;br /&gt;
&lt;br /&gt;
	################################################################&lt;br /&gt;
	# trying new stuff                   #&lt;br /&gt;
	################################################################&lt;br /&gt;
	# Sorts a given row of pixels&lt;br /&gt;
	def sort_interval(self, interval):&lt;br /&gt;
		if interval == []:&lt;br /&gt;
			return []&lt;br /&gt;
		else:&lt;br /&gt;
			return(sorted(interval, key = lambda x: x[0] + x[1] + x[2]))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Little Bot with Processing ====&lt;br /&gt;
&#039;&#039;&#039;Created a simple Bot and an animated GIF&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
===== Screenshots =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:First robot.png | 80 x80px| |left ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Robot.gif | 100 x100px| |left ]]&lt;/div&gt;</summary>
		<author><name>Jan Dropmann</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Jan_Dropmann&amp;diff=73865</id>
		<title>GMU:Bots &#039;n&#039; Plots/Jan Dropmann</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Jan_Dropmann&amp;diff=73865"/>
		<updated>2015-09-18T08:30:47Z</updated>

		<summary type="html">&lt;p&gt;Jan Dropmann: /* Screenshots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;Welcome to my new Wiki-Page&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;  &lt;br /&gt;
    -Name: Jan Dropmann &lt;br /&gt;
    -Bachelor: Media Studies &lt;br /&gt;
&#039;&#039;&lt;br /&gt;
==== Twitter Bot ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Takes an Image, process it and post it on Twitter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===== Screenshots =====&lt;br /&gt;
&lt;br /&gt;
[[File:Twitterbird.png|400px|thumb|left]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Metalrain.png|400px|thumb|left]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ===== Link to the GitHub project =====&lt;br /&gt;
&lt;br /&gt;
===== Link to the GitHub project =====&lt;br /&gt;
&#039;&#039;&#039;https://github.com/JHDROP/TwitterImageBot.git&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===== Source Code =====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;importing the librarys needed for image processing&amp;quot;&amp;quot;&amp;quot; &lt;br /&gt;
&lt;br /&gt;
from PIL import Image, ImageFilter, ImageColor, ImageOps #Python Image Libray: adds image processing capabilities to your Python interpreter&lt;br /&gt;
import numpy as np #nummerical python used for calculating huge arrays and matrices with numeric data &lt;br /&gt;
import colorsys #contains function for converting between different Colormodes as RGB and other &lt;br /&gt;
import random #contains different random number generators &lt;br /&gt;
&lt;br /&gt;
import sys 		#sys module offers constants, functions and methodes from the python interpreter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class ImageProcessor:&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;Using Image Module&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
	#just flips the image upsidedown &lt;br /&gt;
	def flip(self, img):&lt;br /&gt;
		return img.transpose(Image.FLIP_TOP_BOTTOM)&lt;br /&gt;
&lt;br /&gt;
	#rotates the image with a specific degree (e.g 90)&lt;br /&gt;
	def rotate(self, img):&lt;br /&gt;
		return img.transpose(Image.ROTATE_90)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;Using ImageOps Module&amp;quot;&amp;quot;&amp;quot; #Image Operations &lt;br /&gt;
	#turning the image into an one chanel (L) grayscale image &lt;br /&gt;
	def grayscale(self, img):&lt;br /&gt;
		return ImageOps.grayscale(img)&lt;br /&gt;
&lt;br /&gt;
	#substitute different colors to the white and black pixels. It expact a RGB tuple for each of them. (Only works with RGB colormode)&lt;br /&gt;
	def color_change(self, img):&lt;br /&gt;
		return ImageOps.colorize(img, (255, 0, 0),(0, 0, 255))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;Using ImageFilter Module&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
	#applying gaussian blur to the image. Changing the radius(intensity) of the blur &lt;br /&gt;
	def blur(self, img):&lt;br /&gt;
		return img.filter(ImageFilter.GaussianBlur(radius=4))&lt;br /&gt;
&lt;br /&gt;
	#applying contour to the image &lt;br /&gt;
	def contour(self, img):&lt;br /&gt;
		return img.filter(ImageFilter.CONTOUR)&lt;br /&gt;
	#applying a edge enhancement to the image &lt;br /&gt;
	def edge(self, img):&lt;br /&gt;
		return img.filter(ImageFilter.EDGE_ENHANCE_MORE)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	################################################################&lt;br /&gt;
	# some more advanced image processing                          #&lt;br /&gt;
	################################################################&lt;br /&gt;
&lt;br /&gt;
	# shifting pixels with a specific amount | rows or columns &lt;br /&gt;
	def shifting_pixels(self, img, fn=None, amount=10, horizontal=True):&lt;br /&gt;
		&lt;br /&gt;
		if fn is None:&lt;br /&gt;
			fn = shift_list&lt;br /&gt;
&lt;br /&gt;
		# getting the imagine demention &amp;gt; full image &lt;br /&gt;
		ymax, xmax = img.size &lt;br /&gt;
&lt;br /&gt;
		# converting the input (image) into an array with numpy &lt;br /&gt;
		a1 = np.asarray(img)&lt;br /&gt;
		a2 = np.zeros((xmax, ymax, 3))&lt;br /&gt;
&lt;br /&gt;
		# shifting columns of pixels&lt;br /&gt;
		if horizontal is True:&lt;br /&gt;
&lt;br /&gt;
			# iterate over half(xmax / 2) of the rows | any other array of the image could be selected full image would be xmax /1 &lt;br /&gt;
			for x in range(xmax / 2):&lt;br /&gt;
				#define the amount the pixels should be moved with a random selector in a number array(&amp;quot;amount&amp;quot; can be replaced by any number)&lt;br /&gt;
				d = random.randint(-amount, amount)&lt;br /&gt;
				row = a1[x,:,:] &lt;br /&gt;
				a2[x,:,:] = fn(row, d)&lt;br /&gt;
&lt;br /&gt;
			# iterate over the other half&lt;br /&gt;
			for x in range(xmax / 2, xmax):&lt;br /&gt;
				a2[x,:,:] = a1[x,:,:]&lt;br /&gt;
&lt;br /&gt;
		# sorting rows of pixels&lt;br /&gt;
		else:&lt;br /&gt;
&lt;br /&gt;
			# iterate over half(ymax / 2) of the columns&lt;br /&gt;
			for y in range(ymax / 2):&lt;br /&gt;
				d = random.randint(-amount, amount)&lt;br /&gt;
				col = a1[:,y,:]&lt;br /&gt;
				a2[:,y,:] = fn(col, d)&lt;br /&gt;
&lt;br /&gt;
			# iterate over the other half&lt;br /&gt;
			for y in range(ymax / 2, ymax):&lt;br /&gt;
				a2[:,y,:] = a1[:,y,:]&lt;br /&gt;
&lt;br /&gt;
	  &lt;br /&gt;
		# turn the numpy array back into an image&lt;br /&gt;
		a2 = np.uint8(a2)&lt;br /&gt;
		out = Image.fromarray(a2)&lt;br /&gt;
&lt;br /&gt;
		# return the result (image)&lt;br /&gt;
		return out&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	def shift_list(self, lst, amount):&lt;br /&gt;
&lt;br /&gt;
		# make sure we got lists&lt;br /&gt;
		lst = list(lst)&lt;br /&gt;
&lt;br /&gt;
		# combine slices&lt;br /&gt;
		lst = lst[amount:] + lst[:amount]&lt;br /&gt;
		return lst&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	#pixel sorting using numpy &lt;br /&gt;
	def sort(self, img, fn=None, horizontal=True, reverse=False):&lt;br /&gt;
		&lt;br /&gt;
		# get image dimensions &amp;gt; full image |other demensions are possible &lt;br /&gt;
		ymax, xmax = img.size&lt;br /&gt;
&lt;br /&gt;
		#you can apply brightness, redness, yellowness and hue to fn as they are defined below  &lt;br /&gt;
		if fn is None:&lt;br /&gt;
			fn = self.brightness&lt;br /&gt;
		else: &lt;br /&gt;
			fn = self.redness&lt;br /&gt;
&lt;br /&gt;
		# lets work with arrays and numpy (changing the image into numpy usable data)&lt;br /&gt;
		a1 = np.asarray(img)&lt;br /&gt;
		a2 = np.zeros((xmax, ymax, 3))&lt;br /&gt;
&lt;br /&gt;
		# sorting rows(x) of pixels&lt;br /&gt;
		if horizontal is True:&lt;br /&gt;
&lt;br /&gt;
			# iterate over all the rows(xmax) or any other amount of the image (e.g half (xmax / 2))&lt;br /&gt;
			for x in range(xmax / 1):&lt;br /&gt;
				row = a1[x,:,:]&lt;br /&gt;
				a2[x,:,:] = sorted(row, key=fn, reverse=reverse)&lt;br /&gt;
&lt;br /&gt;
			for x in range(xmax / 1, xmax):&lt;br /&gt;
				a2[x,:,:] = a1[x,:,:]&lt;br /&gt;
&lt;br /&gt;
		else:&lt;br /&gt;
&lt;br /&gt;
			# iterate over all columns(y) or any other amount of the image (e.g half (ymax / 2))&lt;br /&gt;
			for y in range(ymax / 1):&lt;br /&gt;
				col = a1[:,y,:]&lt;br /&gt;
				a2[:,y,:] = sorted(col, key=fn, reverse=reverse)&lt;br /&gt;
&lt;br /&gt;
			# iterate over the other half&lt;br /&gt;
			for y in range(ymax / 1, ymax):&lt;br /&gt;
				a2[:,y,:] = a1[:,y,:]&lt;br /&gt;
	  &lt;br /&gt;
		# turn the numpy array back into an image&lt;br /&gt;
		a2 = np.uint8(a2)&lt;br /&gt;
		out = Image.fromarray(a2)&lt;br /&gt;
&lt;br /&gt;
		# return the result (image)&lt;br /&gt;
		return out&lt;br /&gt;
&lt;br /&gt;
	################################################################&lt;br /&gt;
	#defining some further image processings which are colled above#&lt;br /&gt;
	#and will determine the order of colors  					   #&lt;br /&gt;
	################################################################&lt;br /&gt;
&lt;br /&gt;
	def brightness(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; assign a value to each color &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		return 0.01 * r + 0.587 * g + 0.114 * b&lt;br /&gt;
&lt;br /&gt;
	def redness(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; return the amount of red &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		return r&lt;br /&gt;
&lt;br /&gt;
	def yellowness(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; return the amount of yellow &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		return r * 0.5 + g * 0.5&lt;br /&gt;
&lt;br /&gt;
	def hue(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; return the hue of some color &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		h, s, v = colorsys.rgb_to_hsv(float(r), float(g), float(b))&lt;br /&gt;
		return h&lt;br /&gt;
&lt;br /&gt;
	################################################################&lt;br /&gt;
	# trying new stuff                   #&lt;br /&gt;
	################################################################&lt;br /&gt;
	# Sorts a given row of pixels&lt;br /&gt;
	def sort_interval(self, interval):&lt;br /&gt;
		if interval == []:&lt;br /&gt;
			return []&lt;br /&gt;
		else:&lt;br /&gt;
			return(sorted(interval, key = lambda x: x[0] + x[1] + x[2]))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Little Bot with Processing ====&lt;br /&gt;
&#039;&#039;&#039;Created a simple Bot and an animated GIF&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
===== Screenshots =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:First robot.png | 80 x80px| |left ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Robot.gif | 100 x100px| |left ]]&lt;/div&gt;</summary>
		<author><name>Jan Dropmann</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Jan_Dropmann&amp;diff=73864</id>
		<title>GMU:Bots &#039;n&#039; Plots/Jan Dropmann</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Jan_Dropmann&amp;diff=73864"/>
		<updated>2015-09-18T08:30:36Z</updated>

		<summary type="html">&lt;p&gt;Jan Dropmann: /* Screenshots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;Welcome to my new Wiki-Page&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;  &lt;br /&gt;
    -Name: Jan Dropmann &lt;br /&gt;
    -Bachelor: Media Studies &lt;br /&gt;
&#039;&#039;&lt;br /&gt;
==== Twitter Bot ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Takes an Image, process it and post it on Twitter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===== Screenshots =====&lt;br /&gt;
&lt;br /&gt;
[[File:Twitterbird.png|400px|thumb|left]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Metalrain.png|400px|thumb|left]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ===== Link to the GitHub project =====&lt;br /&gt;
===== Link to the GitHub project =====&lt;br /&gt;
&#039;&#039;&#039;https://github.com/JHDROP/TwitterImageBot.git&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===== Source Code =====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;importing the librarys needed for image processing&amp;quot;&amp;quot;&amp;quot; &lt;br /&gt;
&lt;br /&gt;
from PIL import Image, ImageFilter, ImageColor, ImageOps #Python Image Libray: adds image processing capabilities to your Python interpreter&lt;br /&gt;
import numpy as np #nummerical python used for calculating huge arrays and matrices with numeric data &lt;br /&gt;
import colorsys #contains function for converting between different Colormodes as RGB and other &lt;br /&gt;
import random #contains different random number generators &lt;br /&gt;
&lt;br /&gt;
import sys 		#sys module offers constants, functions and methodes from the python interpreter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class ImageProcessor:&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;Using Image Module&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
	#just flips the image upsidedown &lt;br /&gt;
	def flip(self, img):&lt;br /&gt;
		return img.transpose(Image.FLIP_TOP_BOTTOM)&lt;br /&gt;
&lt;br /&gt;
	#rotates the image with a specific degree (e.g 90)&lt;br /&gt;
	def rotate(self, img):&lt;br /&gt;
		return img.transpose(Image.ROTATE_90)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;Using ImageOps Module&amp;quot;&amp;quot;&amp;quot; #Image Operations &lt;br /&gt;
	#turning the image into an one chanel (L) grayscale image &lt;br /&gt;
	def grayscale(self, img):&lt;br /&gt;
		return ImageOps.grayscale(img)&lt;br /&gt;
&lt;br /&gt;
	#substitute different colors to the white and black pixels. It expact a RGB tuple for each of them. (Only works with RGB colormode)&lt;br /&gt;
	def color_change(self, img):&lt;br /&gt;
		return ImageOps.colorize(img, (255, 0, 0),(0, 0, 255))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;Using ImageFilter Module&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
	#applying gaussian blur to the image. Changing the radius(intensity) of the blur &lt;br /&gt;
	def blur(self, img):&lt;br /&gt;
		return img.filter(ImageFilter.GaussianBlur(radius=4))&lt;br /&gt;
&lt;br /&gt;
	#applying contour to the image &lt;br /&gt;
	def contour(self, img):&lt;br /&gt;
		return img.filter(ImageFilter.CONTOUR)&lt;br /&gt;
	#applying a edge enhancement to the image &lt;br /&gt;
	def edge(self, img):&lt;br /&gt;
		return img.filter(ImageFilter.EDGE_ENHANCE_MORE)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	################################################################&lt;br /&gt;
	# some more advanced image processing                          #&lt;br /&gt;
	################################################################&lt;br /&gt;
&lt;br /&gt;
	# shifting pixels with a specific amount | rows or columns &lt;br /&gt;
	def shifting_pixels(self, img, fn=None, amount=10, horizontal=True):&lt;br /&gt;
		&lt;br /&gt;
		if fn is None:&lt;br /&gt;
			fn = shift_list&lt;br /&gt;
&lt;br /&gt;
		# getting the imagine demention &amp;gt; full image &lt;br /&gt;
		ymax, xmax = img.size &lt;br /&gt;
&lt;br /&gt;
		# converting the input (image) into an array with numpy &lt;br /&gt;
		a1 = np.asarray(img)&lt;br /&gt;
		a2 = np.zeros((xmax, ymax, 3))&lt;br /&gt;
&lt;br /&gt;
		# shifting columns of pixels&lt;br /&gt;
		if horizontal is True:&lt;br /&gt;
&lt;br /&gt;
			# iterate over half(xmax / 2) of the rows | any other array of the image could be selected full image would be xmax /1 &lt;br /&gt;
			for x in range(xmax / 2):&lt;br /&gt;
				#define the amount the pixels should be moved with a random selector in a number array(&amp;quot;amount&amp;quot; can be replaced by any number)&lt;br /&gt;
				d = random.randint(-amount, amount)&lt;br /&gt;
				row = a1[x,:,:] &lt;br /&gt;
				a2[x,:,:] = fn(row, d)&lt;br /&gt;
&lt;br /&gt;
			# iterate over the other half&lt;br /&gt;
			for x in range(xmax / 2, xmax):&lt;br /&gt;
				a2[x,:,:] = a1[x,:,:]&lt;br /&gt;
&lt;br /&gt;
		# sorting rows of pixels&lt;br /&gt;
		else:&lt;br /&gt;
&lt;br /&gt;
			# iterate over half(ymax / 2) of the columns&lt;br /&gt;
			for y in range(ymax / 2):&lt;br /&gt;
				d = random.randint(-amount, amount)&lt;br /&gt;
				col = a1[:,y,:]&lt;br /&gt;
				a2[:,y,:] = fn(col, d)&lt;br /&gt;
&lt;br /&gt;
			# iterate over the other half&lt;br /&gt;
			for y in range(ymax / 2, ymax):&lt;br /&gt;
				a2[:,y,:] = a1[:,y,:]&lt;br /&gt;
&lt;br /&gt;
	  &lt;br /&gt;
		# turn the numpy array back into an image&lt;br /&gt;
		a2 = np.uint8(a2)&lt;br /&gt;
		out = Image.fromarray(a2)&lt;br /&gt;
&lt;br /&gt;
		# return the result (image)&lt;br /&gt;
		return out&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	def shift_list(self, lst, amount):&lt;br /&gt;
&lt;br /&gt;
		# make sure we got lists&lt;br /&gt;
		lst = list(lst)&lt;br /&gt;
&lt;br /&gt;
		# combine slices&lt;br /&gt;
		lst = lst[amount:] + lst[:amount]&lt;br /&gt;
		return lst&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	#pixel sorting using numpy &lt;br /&gt;
	def sort(self, img, fn=None, horizontal=True, reverse=False):&lt;br /&gt;
		&lt;br /&gt;
		# get image dimensions &amp;gt; full image |other demensions are possible &lt;br /&gt;
		ymax, xmax = img.size&lt;br /&gt;
&lt;br /&gt;
		#you can apply brightness, redness, yellowness and hue to fn as they are defined below  &lt;br /&gt;
		if fn is None:&lt;br /&gt;
			fn = self.brightness&lt;br /&gt;
		else: &lt;br /&gt;
			fn = self.redness&lt;br /&gt;
&lt;br /&gt;
		# lets work with arrays and numpy (changing the image into numpy usable data)&lt;br /&gt;
		a1 = np.asarray(img)&lt;br /&gt;
		a2 = np.zeros((xmax, ymax, 3))&lt;br /&gt;
&lt;br /&gt;
		# sorting rows(x) of pixels&lt;br /&gt;
		if horizontal is True:&lt;br /&gt;
&lt;br /&gt;
			# iterate over all the rows(xmax) or any other amount of the image (e.g half (xmax / 2))&lt;br /&gt;
			for x in range(xmax / 1):&lt;br /&gt;
				row = a1[x,:,:]&lt;br /&gt;
				a2[x,:,:] = sorted(row, key=fn, reverse=reverse)&lt;br /&gt;
&lt;br /&gt;
			for x in range(xmax / 1, xmax):&lt;br /&gt;
				a2[x,:,:] = a1[x,:,:]&lt;br /&gt;
&lt;br /&gt;
		else:&lt;br /&gt;
&lt;br /&gt;
			# iterate over all columns(y) or any other amount of the image (e.g half (ymax / 2))&lt;br /&gt;
			for y in range(ymax / 1):&lt;br /&gt;
				col = a1[:,y,:]&lt;br /&gt;
				a2[:,y,:] = sorted(col, key=fn, reverse=reverse)&lt;br /&gt;
&lt;br /&gt;
			# iterate over the other half&lt;br /&gt;
			for y in range(ymax / 1, ymax):&lt;br /&gt;
				a2[:,y,:] = a1[:,y,:]&lt;br /&gt;
	  &lt;br /&gt;
		# turn the numpy array back into an image&lt;br /&gt;
		a2 = np.uint8(a2)&lt;br /&gt;
		out = Image.fromarray(a2)&lt;br /&gt;
&lt;br /&gt;
		# return the result (image)&lt;br /&gt;
		return out&lt;br /&gt;
&lt;br /&gt;
	################################################################&lt;br /&gt;
	#defining some further image processings which are colled above#&lt;br /&gt;
	#and will determine the order of colors  					   #&lt;br /&gt;
	################################################################&lt;br /&gt;
&lt;br /&gt;
	def brightness(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; assign a value to each color &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		return 0.01 * r + 0.587 * g + 0.114 * b&lt;br /&gt;
&lt;br /&gt;
	def redness(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; return the amount of red &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		return r&lt;br /&gt;
&lt;br /&gt;
	def yellowness(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; return the amount of yellow &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		return r * 0.5 + g * 0.5&lt;br /&gt;
&lt;br /&gt;
	def hue(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; return the hue of some color &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		h, s, v = colorsys.rgb_to_hsv(float(r), float(g), float(b))&lt;br /&gt;
		return h&lt;br /&gt;
&lt;br /&gt;
	################################################################&lt;br /&gt;
	# trying new stuff                   #&lt;br /&gt;
	################################################################&lt;br /&gt;
	# Sorts a given row of pixels&lt;br /&gt;
	def sort_interval(self, interval):&lt;br /&gt;
		if interval == []:&lt;br /&gt;
			return []&lt;br /&gt;
		else:&lt;br /&gt;
			return(sorted(interval, key = lambda x: x[0] + x[1] + x[2]))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Little Bot with Processing ====&lt;br /&gt;
&#039;&#039;&#039;Created a simple Bot and an animated GIF&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
===== Screenshots =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:First robot.png | 80 x80px| |left ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Robot.gif | 100 x100px| |left ]]&lt;/div&gt;</summary>
		<author><name>Jan Dropmann</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Jan_Dropmann&amp;diff=73863</id>
		<title>GMU:Bots &#039;n&#039; Plots/Jan Dropmann</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Jan_Dropmann&amp;diff=73863"/>
		<updated>2015-09-18T08:29:53Z</updated>

		<summary type="html">&lt;p&gt;Jan Dropmann: /* Screenshots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;Welcome to my new Wiki-Page&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;  &lt;br /&gt;
    -Name: Jan Dropmann &lt;br /&gt;
    -Bachelor: Media Studies &lt;br /&gt;
&#039;&#039;&lt;br /&gt;
==== Twitter Bot ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Takes an Image, process it and post it on Twitter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===== Screenshots =====&lt;br /&gt;
&lt;br /&gt;
[[File:Twitterbird.png|400px|thumb|left]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Metalrain.png|400px|thumb|left]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ===== Link to the GitHub project =====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;https://github.com/JHDROP/TwitterImageBot.git&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===== Source Code =====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;importing the librarys needed for image processing&amp;quot;&amp;quot;&amp;quot; &lt;br /&gt;
&lt;br /&gt;
from PIL import Image, ImageFilter, ImageColor, ImageOps #Python Image Libray: adds image processing capabilities to your Python interpreter&lt;br /&gt;
import numpy as np #nummerical python used for calculating huge arrays and matrices with numeric data &lt;br /&gt;
import colorsys #contains function for converting between different Colormodes as RGB and other &lt;br /&gt;
import random #contains different random number generators &lt;br /&gt;
&lt;br /&gt;
import sys 		#sys module offers constants, functions and methodes from the python interpreter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class ImageProcessor:&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;Using Image Module&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
	#just flips the image upsidedown &lt;br /&gt;
	def flip(self, img):&lt;br /&gt;
		return img.transpose(Image.FLIP_TOP_BOTTOM)&lt;br /&gt;
&lt;br /&gt;
	#rotates the image with a specific degree (e.g 90)&lt;br /&gt;
	def rotate(self, img):&lt;br /&gt;
		return img.transpose(Image.ROTATE_90)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;Using ImageOps Module&amp;quot;&amp;quot;&amp;quot; #Image Operations &lt;br /&gt;
	#turning the image into an one chanel (L) grayscale image &lt;br /&gt;
	def grayscale(self, img):&lt;br /&gt;
		return ImageOps.grayscale(img)&lt;br /&gt;
&lt;br /&gt;
	#substitute different colors to the white and black pixels. It expact a RGB tuple for each of them. (Only works with RGB colormode)&lt;br /&gt;
	def color_change(self, img):&lt;br /&gt;
		return ImageOps.colorize(img, (255, 0, 0),(0, 0, 255))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;Using ImageFilter Module&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
	#applying gaussian blur to the image. Changing the radius(intensity) of the blur &lt;br /&gt;
	def blur(self, img):&lt;br /&gt;
		return img.filter(ImageFilter.GaussianBlur(radius=4))&lt;br /&gt;
&lt;br /&gt;
	#applying contour to the image &lt;br /&gt;
	def contour(self, img):&lt;br /&gt;
		return img.filter(ImageFilter.CONTOUR)&lt;br /&gt;
	#applying a edge enhancement to the image &lt;br /&gt;
	def edge(self, img):&lt;br /&gt;
		return img.filter(ImageFilter.EDGE_ENHANCE_MORE)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	################################################################&lt;br /&gt;
	# some more advanced image processing                          #&lt;br /&gt;
	################################################################&lt;br /&gt;
&lt;br /&gt;
	# shifting pixels with a specific amount | rows or columns &lt;br /&gt;
	def shifting_pixels(self, img, fn=None, amount=10, horizontal=True):&lt;br /&gt;
		&lt;br /&gt;
		if fn is None:&lt;br /&gt;
			fn = shift_list&lt;br /&gt;
&lt;br /&gt;
		# getting the imagine demention &amp;gt; full image &lt;br /&gt;
		ymax, xmax = img.size &lt;br /&gt;
&lt;br /&gt;
		# converting the input (image) into an array with numpy &lt;br /&gt;
		a1 = np.asarray(img)&lt;br /&gt;
		a2 = np.zeros((xmax, ymax, 3))&lt;br /&gt;
&lt;br /&gt;
		# shifting columns of pixels&lt;br /&gt;
		if horizontal is True:&lt;br /&gt;
&lt;br /&gt;
			# iterate over half(xmax / 2) of the rows | any other array of the image could be selected full image would be xmax /1 &lt;br /&gt;
			for x in range(xmax / 2):&lt;br /&gt;
				#define the amount the pixels should be moved with a random selector in a number array(&amp;quot;amount&amp;quot; can be replaced by any number)&lt;br /&gt;
				d = random.randint(-amount, amount)&lt;br /&gt;
				row = a1[x,:,:] &lt;br /&gt;
				a2[x,:,:] = fn(row, d)&lt;br /&gt;
&lt;br /&gt;
			# iterate over the other half&lt;br /&gt;
			for x in range(xmax / 2, xmax):&lt;br /&gt;
				a2[x,:,:] = a1[x,:,:]&lt;br /&gt;
&lt;br /&gt;
		# sorting rows of pixels&lt;br /&gt;
		else:&lt;br /&gt;
&lt;br /&gt;
			# iterate over half(ymax / 2) of the columns&lt;br /&gt;
			for y in range(ymax / 2):&lt;br /&gt;
				d = random.randint(-amount, amount)&lt;br /&gt;
				col = a1[:,y,:]&lt;br /&gt;
				a2[:,y,:] = fn(col, d)&lt;br /&gt;
&lt;br /&gt;
			# iterate over the other half&lt;br /&gt;
			for y in range(ymax / 2, ymax):&lt;br /&gt;
				a2[:,y,:] = a1[:,y,:]&lt;br /&gt;
&lt;br /&gt;
	  &lt;br /&gt;
		# turn the numpy array back into an image&lt;br /&gt;
		a2 = np.uint8(a2)&lt;br /&gt;
		out = Image.fromarray(a2)&lt;br /&gt;
&lt;br /&gt;
		# return the result (image)&lt;br /&gt;
		return out&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	def shift_list(self, lst, amount):&lt;br /&gt;
&lt;br /&gt;
		# make sure we got lists&lt;br /&gt;
		lst = list(lst)&lt;br /&gt;
&lt;br /&gt;
		# combine slices&lt;br /&gt;
		lst = lst[amount:] + lst[:amount]&lt;br /&gt;
		return lst&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	#pixel sorting using numpy &lt;br /&gt;
	def sort(self, img, fn=None, horizontal=True, reverse=False):&lt;br /&gt;
		&lt;br /&gt;
		# get image dimensions &amp;gt; full image |other demensions are possible &lt;br /&gt;
		ymax, xmax = img.size&lt;br /&gt;
&lt;br /&gt;
		#you can apply brightness, redness, yellowness and hue to fn as they are defined below  &lt;br /&gt;
		if fn is None:&lt;br /&gt;
			fn = self.brightness&lt;br /&gt;
		else: &lt;br /&gt;
			fn = self.redness&lt;br /&gt;
&lt;br /&gt;
		# lets work with arrays and numpy (changing the image into numpy usable data)&lt;br /&gt;
		a1 = np.asarray(img)&lt;br /&gt;
		a2 = np.zeros((xmax, ymax, 3))&lt;br /&gt;
&lt;br /&gt;
		# sorting rows(x) of pixels&lt;br /&gt;
		if horizontal is True:&lt;br /&gt;
&lt;br /&gt;
			# iterate over all the rows(xmax) or any other amount of the image (e.g half (xmax / 2))&lt;br /&gt;
			for x in range(xmax / 1):&lt;br /&gt;
				row = a1[x,:,:]&lt;br /&gt;
				a2[x,:,:] = sorted(row, key=fn, reverse=reverse)&lt;br /&gt;
&lt;br /&gt;
			for x in range(xmax / 1, xmax):&lt;br /&gt;
				a2[x,:,:] = a1[x,:,:]&lt;br /&gt;
&lt;br /&gt;
		else:&lt;br /&gt;
&lt;br /&gt;
			# iterate over all columns(y) or any other amount of the image (e.g half (ymax / 2))&lt;br /&gt;
			for y in range(ymax / 1):&lt;br /&gt;
				col = a1[:,y,:]&lt;br /&gt;
				a2[:,y,:] = sorted(col, key=fn, reverse=reverse)&lt;br /&gt;
&lt;br /&gt;
			# iterate over the other half&lt;br /&gt;
			for y in range(ymax / 1, ymax):&lt;br /&gt;
				a2[:,y,:] = a1[:,y,:]&lt;br /&gt;
	  &lt;br /&gt;
		# turn the numpy array back into an image&lt;br /&gt;
		a2 = np.uint8(a2)&lt;br /&gt;
		out = Image.fromarray(a2)&lt;br /&gt;
&lt;br /&gt;
		# return the result (image)&lt;br /&gt;
		return out&lt;br /&gt;
&lt;br /&gt;
	################################################################&lt;br /&gt;
	#defining some further image processings which are colled above#&lt;br /&gt;
	#and will determine the order of colors  					   #&lt;br /&gt;
	################################################################&lt;br /&gt;
&lt;br /&gt;
	def brightness(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; assign a value to each color &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		return 0.01 * r + 0.587 * g + 0.114 * b&lt;br /&gt;
&lt;br /&gt;
	def redness(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; return the amount of red &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		return r&lt;br /&gt;
&lt;br /&gt;
	def yellowness(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; return the amount of yellow &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		return r * 0.5 + g * 0.5&lt;br /&gt;
&lt;br /&gt;
	def hue(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; return the hue of some color &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		h, s, v = colorsys.rgb_to_hsv(float(r), float(g), float(b))&lt;br /&gt;
		return h&lt;br /&gt;
&lt;br /&gt;
	################################################################&lt;br /&gt;
	# trying new stuff                   #&lt;br /&gt;
	################################################################&lt;br /&gt;
	# Sorts a given row of pixels&lt;br /&gt;
	def sort_interval(self, interval):&lt;br /&gt;
		if interval == []:&lt;br /&gt;
			return []&lt;br /&gt;
		else:&lt;br /&gt;
			return(sorted(interval, key = lambda x: x[0] + x[1] + x[2]))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Little Bot with Processing ====&lt;br /&gt;
&#039;&#039;&#039;Created a simple Bot and an animated GIF&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
===== Screenshots =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:First robot.png | 80 x80px| |left ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Robot.gif | 100 x100px| |left ]]&lt;/div&gt;</summary>
		<author><name>Jan Dropmann</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Jan_Dropmann&amp;diff=73862</id>
		<title>GMU:Bots &#039;n&#039; Plots/Jan Dropmann</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Jan_Dropmann&amp;diff=73862"/>
		<updated>2015-09-18T08:29:31Z</updated>

		<summary type="html">&lt;p&gt;Jan Dropmann: /* Screenshots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;Welcome to my new Wiki-Page&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;  &lt;br /&gt;
    -Name: Jan Dropmann &lt;br /&gt;
    -Bachelor: Media Studies &lt;br /&gt;
&#039;&#039;&lt;br /&gt;
==== Twitter Bot ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Takes an Image, process it and post it on Twitter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===== Screenshots =====&lt;br /&gt;
&lt;br /&gt;
[[File:Twitterbird.png|400px|thumb|left]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Metalrain.png|400px|thumb|left]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 =====Link to the GitHub project=====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;https://github.com/JHDROP/TwitterImageBot.git&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===== Source Code =====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;importing the librarys needed for image processing&amp;quot;&amp;quot;&amp;quot; &lt;br /&gt;
&lt;br /&gt;
from PIL import Image, ImageFilter, ImageColor, ImageOps #Python Image Libray: adds image processing capabilities to your Python interpreter&lt;br /&gt;
import numpy as np #nummerical python used for calculating huge arrays and matrices with numeric data &lt;br /&gt;
import colorsys #contains function for converting between different Colormodes as RGB and other &lt;br /&gt;
import random #contains different random number generators &lt;br /&gt;
&lt;br /&gt;
import sys 		#sys module offers constants, functions and methodes from the python interpreter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class ImageProcessor:&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;Using Image Module&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
	#just flips the image upsidedown &lt;br /&gt;
	def flip(self, img):&lt;br /&gt;
		return img.transpose(Image.FLIP_TOP_BOTTOM)&lt;br /&gt;
&lt;br /&gt;
	#rotates the image with a specific degree (e.g 90)&lt;br /&gt;
	def rotate(self, img):&lt;br /&gt;
		return img.transpose(Image.ROTATE_90)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;Using ImageOps Module&amp;quot;&amp;quot;&amp;quot; #Image Operations &lt;br /&gt;
	#turning the image into an one chanel (L) grayscale image &lt;br /&gt;
	def grayscale(self, img):&lt;br /&gt;
		return ImageOps.grayscale(img)&lt;br /&gt;
&lt;br /&gt;
	#substitute different colors to the white and black pixels. It expact a RGB tuple for each of them. (Only works with RGB colormode)&lt;br /&gt;
	def color_change(self, img):&lt;br /&gt;
		return ImageOps.colorize(img, (255, 0, 0),(0, 0, 255))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;Using ImageFilter Module&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
	#applying gaussian blur to the image. Changing the radius(intensity) of the blur &lt;br /&gt;
	def blur(self, img):&lt;br /&gt;
		return img.filter(ImageFilter.GaussianBlur(radius=4))&lt;br /&gt;
&lt;br /&gt;
	#applying contour to the image &lt;br /&gt;
	def contour(self, img):&lt;br /&gt;
		return img.filter(ImageFilter.CONTOUR)&lt;br /&gt;
	#applying a edge enhancement to the image &lt;br /&gt;
	def edge(self, img):&lt;br /&gt;
		return img.filter(ImageFilter.EDGE_ENHANCE_MORE)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	################################################################&lt;br /&gt;
	# some more advanced image processing                          #&lt;br /&gt;
	################################################################&lt;br /&gt;
&lt;br /&gt;
	# shifting pixels with a specific amount | rows or columns &lt;br /&gt;
	def shifting_pixels(self, img, fn=None, amount=10, horizontal=True):&lt;br /&gt;
		&lt;br /&gt;
		if fn is None:&lt;br /&gt;
			fn = shift_list&lt;br /&gt;
&lt;br /&gt;
		# getting the imagine demention &amp;gt; full image &lt;br /&gt;
		ymax, xmax = img.size &lt;br /&gt;
&lt;br /&gt;
		# converting the input (image) into an array with numpy &lt;br /&gt;
		a1 = np.asarray(img)&lt;br /&gt;
		a2 = np.zeros((xmax, ymax, 3))&lt;br /&gt;
&lt;br /&gt;
		# shifting columns of pixels&lt;br /&gt;
		if horizontal is True:&lt;br /&gt;
&lt;br /&gt;
			# iterate over half(xmax / 2) of the rows | any other array of the image could be selected full image would be xmax /1 &lt;br /&gt;
			for x in range(xmax / 2):&lt;br /&gt;
				#define the amount the pixels should be moved with a random selector in a number array(&amp;quot;amount&amp;quot; can be replaced by any number)&lt;br /&gt;
				d = random.randint(-amount, amount)&lt;br /&gt;
				row = a1[x,:,:] &lt;br /&gt;
				a2[x,:,:] = fn(row, d)&lt;br /&gt;
&lt;br /&gt;
			# iterate over the other half&lt;br /&gt;
			for x in range(xmax / 2, xmax):&lt;br /&gt;
				a2[x,:,:] = a1[x,:,:]&lt;br /&gt;
&lt;br /&gt;
		# sorting rows of pixels&lt;br /&gt;
		else:&lt;br /&gt;
&lt;br /&gt;
			# iterate over half(ymax / 2) of the columns&lt;br /&gt;
			for y in range(ymax / 2):&lt;br /&gt;
				d = random.randint(-amount, amount)&lt;br /&gt;
				col = a1[:,y,:]&lt;br /&gt;
				a2[:,y,:] = fn(col, d)&lt;br /&gt;
&lt;br /&gt;
			# iterate over the other half&lt;br /&gt;
			for y in range(ymax / 2, ymax):&lt;br /&gt;
				a2[:,y,:] = a1[:,y,:]&lt;br /&gt;
&lt;br /&gt;
	  &lt;br /&gt;
		# turn the numpy array back into an image&lt;br /&gt;
		a2 = np.uint8(a2)&lt;br /&gt;
		out = Image.fromarray(a2)&lt;br /&gt;
&lt;br /&gt;
		# return the result (image)&lt;br /&gt;
		return out&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	def shift_list(self, lst, amount):&lt;br /&gt;
&lt;br /&gt;
		# make sure we got lists&lt;br /&gt;
		lst = list(lst)&lt;br /&gt;
&lt;br /&gt;
		# combine slices&lt;br /&gt;
		lst = lst[amount:] + lst[:amount]&lt;br /&gt;
		return lst&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	#pixel sorting using numpy &lt;br /&gt;
	def sort(self, img, fn=None, horizontal=True, reverse=False):&lt;br /&gt;
		&lt;br /&gt;
		# get image dimensions &amp;gt; full image |other demensions are possible &lt;br /&gt;
		ymax, xmax = img.size&lt;br /&gt;
&lt;br /&gt;
		#you can apply brightness, redness, yellowness and hue to fn as they are defined below  &lt;br /&gt;
		if fn is None:&lt;br /&gt;
			fn = self.brightness&lt;br /&gt;
		else: &lt;br /&gt;
			fn = self.redness&lt;br /&gt;
&lt;br /&gt;
		# lets work with arrays and numpy (changing the image into numpy usable data)&lt;br /&gt;
		a1 = np.asarray(img)&lt;br /&gt;
		a2 = np.zeros((xmax, ymax, 3))&lt;br /&gt;
&lt;br /&gt;
		# sorting rows(x) of pixels&lt;br /&gt;
		if horizontal is True:&lt;br /&gt;
&lt;br /&gt;
			# iterate over all the rows(xmax) or any other amount of the image (e.g half (xmax / 2))&lt;br /&gt;
			for x in range(xmax / 1):&lt;br /&gt;
				row = a1[x,:,:]&lt;br /&gt;
				a2[x,:,:] = sorted(row, key=fn, reverse=reverse)&lt;br /&gt;
&lt;br /&gt;
			for x in range(xmax / 1, xmax):&lt;br /&gt;
				a2[x,:,:] = a1[x,:,:]&lt;br /&gt;
&lt;br /&gt;
		else:&lt;br /&gt;
&lt;br /&gt;
			# iterate over all columns(y) or any other amount of the image (e.g half (ymax / 2))&lt;br /&gt;
			for y in range(ymax / 1):&lt;br /&gt;
				col = a1[:,y,:]&lt;br /&gt;
				a2[:,y,:] = sorted(col, key=fn, reverse=reverse)&lt;br /&gt;
&lt;br /&gt;
			# iterate over the other half&lt;br /&gt;
			for y in range(ymax / 1, ymax):&lt;br /&gt;
				a2[:,y,:] = a1[:,y,:]&lt;br /&gt;
	  &lt;br /&gt;
		# turn the numpy array back into an image&lt;br /&gt;
		a2 = np.uint8(a2)&lt;br /&gt;
		out = Image.fromarray(a2)&lt;br /&gt;
&lt;br /&gt;
		# return the result (image)&lt;br /&gt;
		return out&lt;br /&gt;
&lt;br /&gt;
	################################################################&lt;br /&gt;
	#defining some further image processings which are colled above#&lt;br /&gt;
	#and will determine the order of colors  					   #&lt;br /&gt;
	################################################################&lt;br /&gt;
&lt;br /&gt;
	def brightness(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; assign a value to each color &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		return 0.01 * r + 0.587 * g + 0.114 * b&lt;br /&gt;
&lt;br /&gt;
	def redness(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; return the amount of red &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		return r&lt;br /&gt;
&lt;br /&gt;
	def yellowness(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; return the amount of yellow &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		return r * 0.5 + g * 0.5&lt;br /&gt;
&lt;br /&gt;
	def hue(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; return the hue of some color &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		h, s, v = colorsys.rgb_to_hsv(float(r), float(g), float(b))&lt;br /&gt;
		return h&lt;br /&gt;
&lt;br /&gt;
	################################################################&lt;br /&gt;
	# trying new stuff                   #&lt;br /&gt;
	################################################################&lt;br /&gt;
	# Sorts a given row of pixels&lt;br /&gt;
	def sort_interval(self, interval):&lt;br /&gt;
		if interval == []:&lt;br /&gt;
			return []&lt;br /&gt;
		else:&lt;br /&gt;
			return(sorted(interval, key = lambda x: x[0] + x[1] + x[2]))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Little Bot with Processing ====&lt;br /&gt;
&#039;&#039;&#039;Created a simple Bot and an animated GIF&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
===== Screenshots =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:First robot.png | 80 x80px| |left ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Robot.gif | 100 x100px| |left ]]&lt;/div&gt;</summary>
		<author><name>Jan Dropmann</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Jan_Dropmann&amp;diff=73861</id>
		<title>GMU:Bots &#039;n&#039; Plots/Jan Dropmann</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Jan_Dropmann&amp;diff=73861"/>
		<updated>2015-09-18T08:29:08Z</updated>

		<summary type="html">&lt;p&gt;Jan Dropmann: /* Link to the GitHub project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;Welcome to my new Wiki-Page&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;  &lt;br /&gt;
    -Name: Jan Dropmann &lt;br /&gt;
    -Bachelor: Media Studies &lt;br /&gt;
&#039;&#039;&lt;br /&gt;
==== Twitter Bot ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Takes an Image, process it and post it on Twitter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===== Screenshots =====&lt;br /&gt;
&lt;br /&gt;
[[File:Twitterbird.png|400px|thumb|left]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Metalrain.png|400px|thumb|left]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 =====Link to the GitHub project =====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;https://github.com/JHDROP/TwitterImageBot.git&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===== Source Code =====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;importing the librarys needed for image processing&amp;quot;&amp;quot;&amp;quot; &lt;br /&gt;
&lt;br /&gt;
from PIL import Image, ImageFilter, ImageColor, ImageOps #Python Image Libray: adds image processing capabilities to your Python interpreter&lt;br /&gt;
import numpy as np #nummerical python used for calculating huge arrays and matrices with numeric data &lt;br /&gt;
import colorsys #contains function for converting between different Colormodes as RGB and other &lt;br /&gt;
import random #contains different random number generators &lt;br /&gt;
&lt;br /&gt;
import sys 		#sys module offers constants, functions and methodes from the python interpreter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class ImageProcessor:&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;Using Image Module&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
	#just flips the image upsidedown &lt;br /&gt;
	def flip(self, img):&lt;br /&gt;
		return img.transpose(Image.FLIP_TOP_BOTTOM)&lt;br /&gt;
&lt;br /&gt;
	#rotates the image with a specific degree (e.g 90)&lt;br /&gt;
	def rotate(self, img):&lt;br /&gt;
		return img.transpose(Image.ROTATE_90)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;Using ImageOps Module&amp;quot;&amp;quot;&amp;quot; #Image Operations &lt;br /&gt;
	#turning the image into an one chanel (L) grayscale image &lt;br /&gt;
	def grayscale(self, img):&lt;br /&gt;
		return ImageOps.grayscale(img)&lt;br /&gt;
&lt;br /&gt;
	#substitute different colors to the white and black pixels. It expact a RGB tuple for each of them. (Only works with RGB colormode)&lt;br /&gt;
	def color_change(self, img):&lt;br /&gt;
		return ImageOps.colorize(img, (255, 0, 0),(0, 0, 255))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;Using ImageFilter Module&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
	#applying gaussian blur to the image. Changing the radius(intensity) of the blur &lt;br /&gt;
	def blur(self, img):&lt;br /&gt;
		return img.filter(ImageFilter.GaussianBlur(radius=4))&lt;br /&gt;
&lt;br /&gt;
	#applying contour to the image &lt;br /&gt;
	def contour(self, img):&lt;br /&gt;
		return img.filter(ImageFilter.CONTOUR)&lt;br /&gt;
	#applying a edge enhancement to the image &lt;br /&gt;
	def edge(self, img):&lt;br /&gt;
		return img.filter(ImageFilter.EDGE_ENHANCE_MORE)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	################################################################&lt;br /&gt;
	# some more advanced image processing                          #&lt;br /&gt;
	################################################################&lt;br /&gt;
&lt;br /&gt;
	# shifting pixels with a specific amount | rows or columns &lt;br /&gt;
	def shifting_pixels(self, img, fn=None, amount=10, horizontal=True):&lt;br /&gt;
		&lt;br /&gt;
		if fn is None:&lt;br /&gt;
			fn = shift_list&lt;br /&gt;
&lt;br /&gt;
		# getting the imagine demention &amp;gt; full image &lt;br /&gt;
		ymax, xmax = img.size &lt;br /&gt;
&lt;br /&gt;
		# converting the input (image) into an array with numpy &lt;br /&gt;
		a1 = np.asarray(img)&lt;br /&gt;
		a2 = np.zeros((xmax, ymax, 3))&lt;br /&gt;
&lt;br /&gt;
		# shifting columns of pixels&lt;br /&gt;
		if horizontal is True:&lt;br /&gt;
&lt;br /&gt;
			# iterate over half(xmax / 2) of the rows | any other array of the image could be selected full image would be xmax /1 &lt;br /&gt;
			for x in range(xmax / 2):&lt;br /&gt;
				#define the amount the pixels should be moved with a random selector in a number array(&amp;quot;amount&amp;quot; can be replaced by any number)&lt;br /&gt;
				d = random.randint(-amount, amount)&lt;br /&gt;
				row = a1[x,:,:] &lt;br /&gt;
				a2[x,:,:] = fn(row, d)&lt;br /&gt;
&lt;br /&gt;
			# iterate over the other half&lt;br /&gt;
			for x in range(xmax / 2, xmax):&lt;br /&gt;
				a2[x,:,:] = a1[x,:,:]&lt;br /&gt;
&lt;br /&gt;
		# sorting rows of pixels&lt;br /&gt;
		else:&lt;br /&gt;
&lt;br /&gt;
			# iterate over half(ymax / 2) of the columns&lt;br /&gt;
			for y in range(ymax / 2):&lt;br /&gt;
				d = random.randint(-amount, amount)&lt;br /&gt;
				col = a1[:,y,:]&lt;br /&gt;
				a2[:,y,:] = fn(col, d)&lt;br /&gt;
&lt;br /&gt;
			# iterate over the other half&lt;br /&gt;
			for y in range(ymax / 2, ymax):&lt;br /&gt;
				a2[:,y,:] = a1[:,y,:]&lt;br /&gt;
&lt;br /&gt;
	  &lt;br /&gt;
		# turn the numpy array back into an image&lt;br /&gt;
		a2 = np.uint8(a2)&lt;br /&gt;
		out = Image.fromarray(a2)&lt;br /&gt;
&lt;br /&gt;
		# return the result (image)&lt;br /&gt;
		return out&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	def shift_list(self, lst, amount):&lt;br /&gt;
&lt;br /&gt;
		# make sure we got lists&lt;br /&gt;
		lst = list(lst)&lt;br /&gt;
&lt;br /&gt;
		# combine slices&lt;br /&gt;
		lst = lst[amount:] + lst[:amount]&lt;br /&gt;
		return lst&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	#pixel sorting using numpy &lt;br /&gt;
	def sort(self, img, fn=None, horizontal=True, reverse=False):&lt;br /&gt;
		&lt;br /&gt;
		# get image dimensions &amp;gt; full image |other demensions are possible &lt;br /&gt;
		ymax, xmax = img.size&lt;br /&gt;
&lt;br /&gt;
		#you can apply brightness, redness, yellowness and hue to fn as they are defined below  &lt;br /&gt;
		if fn is None:&lt;br /&gt;
			fn = self.brightness&lt;br /&gt;
		else: &lt;br /&gt;
			fn = self.redness&lt;br /&gt;
&lt;br /&gt;
		# lets work with arrays and numpy (changing the image into numpy usable data)&lt;br /&gt;
		a1 = np.asarray(img)&lt;br /&gt;
		a2 = np.zeros((xmax, ymax, 3))&lt;br /&gt;
&lt;br /&gt;
		# sorting rows(x) of pixels&lt;br /&gt;
		if horizontal is True:&lt;br /&gt;
&lt;br /&gt;
			# iterate over all the rows(xmax) or any other amount of the image (e.g half (xmax / 2))&lt;br /&gt;
			for x in range(xmax / 1):&lt;br /&gt;
				row = a1[x,:,:]&lt;br /&gt;
				a2[x,:,:] = sorted(row, key=fn, reverse=reverse)&lt;br /&gt;
&lt;br /&gt;
			for x in range(xmax / 1, xmax):&lt;br /&gt;
				a2[x,:,:] = a1[x,:,:]&lt;br /&gt;
&lt;br /&gt;
		else:&lt;br /&gt;
&lt;br /&gt;
			# iterate over all columns(y) or any other amount of the image (e.g half (ymax / 2))&lt;br /&gt;
			for y in range(ymax / 1):&lt;br /&gt;
				col = a1[:,y,:]&lt;br /&gt;
				a2[:,y,:] = sorted(col, key=fn, reverse=reverse)&lt;br /&gt;
&lt;br /&gt;
			# iterate over the other half&lt;br /&gt;
			for y in range(ymax / 1, ymax):&lt;br /&gt;
				a2[:,y,:] = a1[:,y,:]&lt;br /&gt;
	  &lt;br /&gt;
		# turn the numpy array back into an image&lt;br /&gt;
		a2 = np.uint8(a2)&lt;br /&gt;
		out = Image.fromarray(a2)&lt;br /&gt;
&lt;br /&gt;
		# return the result (image)&lt;br /&gt;
		return out&lt;br /&gt;
&lt;br /&gt;
	################################################################&lt;br /&gt;
	#defining some further image processings which are colled above#&lt;br /&gt;
	#and will determine the order of colors  					   #&lt;br /&gt;
	################################################################&lt;br /&gt;
&lt;br /&gt;
	def brightness(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; assign a value to each color &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		return 0.01 * r + 0.587 * g + 0.114 * b&lt;br /&gt;
&lt;br /&gt;
	def redness(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; return the amount of red &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		return r&lt;br /&gt;
&lt;br /&gt;
	def yellowness(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; return the amount of yellow &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		return r * 0.5 + g * 0.5&lt;br /&gt;
&lt;br /&gt;
	def hue(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; return the hue of some color &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		h, s, v = colorsys.rgb_to_hsv(float(r), float(g), float(b))&lt;br /&gt;
		return h&lt;br /&gt;
&lt;br /&gt;
	################################################################&lt;br /&gt;
	# trying new stuff                   #&lt;br /&gt;
	################################################################&lt;br /&gt;
	# Sorts a given row of pixels&lt;br /&gt;
	def sort_interval(self, interval):&lt;br /&gt;
		if interval == []:&lt;br /&gt;
			return []&lt;br /&gt;
		else:&lt;br /&gt;
			return(sorted(interval, key = lambda x: x[0] + x[1] + x[2]))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Little Bot with Processing ====&lt;br /&gt;
&#039;&#039;&#039;Created a simple Bot and an animated GIF&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
===== Screenshots =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:First robot.png | 80 x80px| |left ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Robot.gif | 100 x100px| |left ]]&lt;/div&gt;</summary>
		<author><name>Jan Dropmann</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Jan_Dropmann&amp;diff=73860</id>
		<title>GMU:Bots &#039;n&#039; Plots/Jan Dropmann</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Jan_Dropmann&amp;diff=73860"/>
		<updated>2015-09-18T08:28:30Z</updated>

		<summary type="html">&lt;p&gt;Jan Dropmann: /* =Link to the GitHub project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;Welcome to my new Wiki-Page&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;  &lt;br /&gt;
    -Name: Jan Dropmann &lt;br /&gt;
    -Bachelor: Media Studies &lt;br /&gt;
&#039;&#039;&lt;br /&gt;
==== Twitter Bot ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Takes an Image, process it and post it on Twitter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===== Screenshots =====&lt;br /&gt;
&lt;br /&gt;
[[File:Twitterbird.png|400px|thumb|left]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Metalrain.png|400px|thumb|left]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Link to the GitHub project====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;https://github.com/JHDROP/TwitterImageBot.git&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===== Source Code =====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;importing the librarys needed for image processing&amp;quot;&amp;quot;&amp;quot; &lt;br /&gt;
&lt;br /&gt;
from PIL import Image, ImageFilter, ImageColor, ImageOps #Python Image Libray: adds image processing capabilities to your Python interpreter&lt;br /&gt;
import numpy as np #nummerical python used for calculating huge arrays and matrices with numeric data &lt;br /&gt;
import colorsys #contains function for converting between different Colormodes as RGB and other &lt;br /&gt;
import random #contains different random number generators &lt;br /&gt;
&lt;br /&gt;
import sys 		#sys module offers constants, functions and methodes from the python interpreter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class ImageProcessor:&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;Using Image Module&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
	#just flips the image upsidedown &lt;br /&gt;
	def flip(self, img):&lt;br /&gt;
		return img.transpose(Image.FLIP_TOP_BOTTOM)&lt;br /&gt;
&lt;br /&gt;
	#rotates the image with a specific degree (e.g 90)&lt;br /&gt;
	def rotate(self, img):&lt;br /&gt;
		return img.transpose(Image.ROTATE_90)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;Using ImageOps Module&amp;quot;&amp;quot;&amp;quot; #Image Operations &lt;br /&gt;
	#turning the image into an one chanel (L) grayscale image &lt;br /&gt;
	def grayscale(self, img):&lt;br /&gt;
		return ImageOps.grayscale(img)&lt;br /&gt;
&lt;br /&gt;
	#substitute different colors to the white and black pixels. It expact a RGB tuple for each of them. (Only works with RGB colormode)&lt;br /&gt;
	def color_change(self, img):&lt;br /&gt;
		return ImageOps.colorize(img, (255, 0, 0),(0, 0, 255))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;Using ImageFilter Module&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
	#applying gaussian blur to the image. Changing the radius(intensity) of the blur &lt;br /&gt;
	def blur(self, img):&lt;br /&gt;
		return img.filter(ImageFilter.GaussianBlur(radius=4))&lt;br /&gt;
&lt;br /&gt;
	#applying contour to the image &lt;br /&gt;
	def contour(self, img):&lt;br /&gt;
		return img.filter(ImageFilter.CONTOUR)&lt;br /&gt;
	#applying a edge enhancement to the image &lt;br /&gt;
	def edge(self, img):&lt;br /&gt;
		return img.filter(ImageFilter.EDGE_ENHANCE_MORE)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	################################################################&lt;br /&gt;
	# some more advanced image processing                          #&lt;br /&gt;
	################################################################&lt;br /&gt;
&lt;br /&gt;
	# shifting pixels with a specific amount | rows or columns &lt;br /&gt;
	def shifting_pixels(self, img, fn=None, amount=10, horizontal=True):&lt;br /&gt;
		&lt;br /&gt;
		if fn is None:&lt;br /&gt;
			fn = shift_list&lt;br /&gt;
&lt;br /&gt;
		# getting the imagine demention &amp;gt; full image &lt;br /&gt;
		ymax, xmax = img.size &lt;br /&gt;
&lt;br /&gt;
		# converting the input (image) into an array with numpy &lt;br /&gt;
		a1 = np.asarray(img)&lt;br /&gt;
		a2 = np.zeros((xmax, ymax, 3))&lt;br /&gt;
&lt;br /&gt;
		# shifting columns of pixels&lt;br /&gt;
		if horizontal is True:&lt;br /&gt;
&lt;br /&gt;
			# iterate over half(xmax / 2) of the rows | any other array of the image could be selected full image would be xmax /1 &lt;br /&gt;
			for x in range(xmax / 2):&lt;br /&gt;
				#define the amount the pixels should be moved with a random selector in a number array(&amp;quot;amount&amp;quot; can be replaced by any number)&lt;br /&gt;
				d = random.randint(-amount, amount)&lt;br /&gt;
				row = a1[x,:,:] &lt;br /&gt;
				a2[x,:,:] = fn(row, d)&lt;br /&gt;
&lt;br /&gt;
			# iterate over the other half&lt;br /&gt;
			for x in range(xmax / 2, xmax):&lt;br /&gt;
				a2[x,:,:] = a1[x,:,:]&lt;br /&gt;
&lt;br /&gt;
		# sorting rows of pixels&lt;br /&gt;
		else:&lt;br /&gt;
&lt;br /&gt;
			# iterate over half(ymax / 2) of the columns&lt;br /&gt;
			for y in range(ymax / 2):&lt;br /&gt;
				d = random.randint(-amount, amount)&lt;br /&gt;
				col = a1[:,y,:]&lt;br /&gt;
				a2[:,y,:] = fn(col, d)&lt;br /&gt;
&lt;br /&gt;
			# iterate over the other half&lt;br /&gt;
			for y in range(ymax / 2, ymax):&lt;br /&gt;
				a2[:,y,:] = a1[:,y,:]&lt;br /&gt;
&lt;br /&gt;
	  &lt;br /&gt;
		# turn the numpy array back into an image&lt;br /&gt;
		a2 = np.uint8(a2)&lt;br /&gt;
		out = Image.fromarray(a2)&lt;br /&gt;
&lt;br /&gt;
		# return the result (image)&lt;br /&gt;
		return out&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	def shift_list(self, lst, amount):&lt;br /&gt;
&lt;br /&gt;
		# make sure we got lists&lt;br /&gt;
		lst = list(lst)&lt;br /&gt;
&lt;br /&gt;
		# combine slices&lt;br /&gt;
		lst = lst[amount:] + lst[:amount]&lt;br /&gt;
		return lst&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	#pixel sorting using numpy &lt;br /&gt;
	def sort(self, img, fn=None, horizontal=True, reverse=False):&lt;br /&gt;
		&lt;br /&gt;
		# get image dimensions &amp;gt; full image |other demensions are possible &lt;br /&gt;
		ymax, xmax = img.size&lt;br /&gt;
&lt;br /&gt;
		#you can apply brightness, redness, yellowness and hue to fn as they are defined below  &lt;br /&gt;
		if fn is None:&lt;br /&gt;
			fn = self.brightness&lt;br /&gt;
		else: &lt;br /&gt;
			fn = self.redness&lt;br /&gt;
&lt;br /&gt;
		# lets work with arrays and numpy (changing the image into numpy usable data)&lt;br /&gt;
		a1 = np.asarray(img)&lt;br /&gt;
		a2 = np.zeros((xmax, ymax, 3))&lt;br /&gt;
&lt;br /&gt;
		# sorting rows(x) of pixels&lt;br /&gt;
		if horizontal is True:&lt;br /&gt;
&lt;br /&gt;
			# iterate over all the rows(xmax) or any other amount of the image (e.g half (xmax / 2))&lt;br /&gt;
			for x in range(xmax / 1):&lt;br /&gt;
				row = a1[x,:,:]&lt;br /&gt;
				a2[x,:,:] = sorted(row, key=fn, reverse=reverse)&lt;br /&gt;
&lt;br /&gt;
			for x in range(xmax / 1, xmax):&lt;br /&gt;
				a2[x,:,:] = a1[x,:,:]&lt;br /&gt;
&lt;br /&gt;
		else:&lt;br /&gt;
&lt;br /&gt;
			# iterate over all columns(y) or any other amount of the image (e.g half (ymax / 2))&lt;br /&gt;
			for y in range(ymax / 1):&lt;br /&gt;
				col = a1[:,y,:]&lt;br /&gt;
				a2[:,y,:] = sorted(col, key=fn, reverse=reverse)&lt;br /&gt;
&lt;br /&gt;
			# iterate over the other half&lt;br /&gt;
			for y in range(ymax / 1, ymax):&lt;br /&gt;
				a2[:,y,:] = a1[:,y,:]&lt;br /&gt;
	  &lt;br /&gt;
		# turn the numpy array back into an image&lt;br /&gt;
		a2 = np.uint8(a2)&lt;br /&gt;
		out = Image.fromarray(a2)&lt;br /&gt;
&lt;br /&gt;
		# return the result (image)&lt;br /&gt;
		return out&lt;br /&gt;
&lt;br /&gt;
	################################################################&lt;br /&gt;
	#defining some further image processings which are colled above#&lt;br /&gt;
	#and will determine the order of colors  					   #&lt;br /&gt;
	################################################################&lt;br /&gt;
&lt;br /&gt;
	def brightness(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; assign a value to each color &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		return 0.01 * r + 0.587 * g + 0.114 * b&lt;br /&gt;
&lt;br /&gt;
	def redness(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; return the amount of red &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		return r&lt;br /&gt;
&lt;br /&gt;
	def yellowness(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; return the amount of yellow &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		return r * 0.5 + g * 0.5&lt;br /&gt;
&lt;br /&gt;
	def hue(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; return the hue of some color &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		h, s, v = colorsys.rgb_to_hsv(float(r), float(g), float(b))&lt;br /&gt;
		return h&lt;br /&gt;
&lt;br /&gt;
	################################################################&lt;br /&gt;
	# trying new stuff                   #&lt;br /&gt;
	################################################################&lt;br /&gt;
	# Sorts a given row of pixels&lt;br /&gt;
	def sort_interval(self, interval):&lt;br /&gt;
		if interval == []:&lt;br /&gt;
			return []&lt;br /&gt;
		else:&lt;br /&gt;
			return(sorted(interval, key = lambda x: x[0] + x[1] + x[2]))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Little Bot with Processing ====&lt;br /&gt;
&#039;&#039;&#039;Created a simple Bot and an animated GIF&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
===== Screenshots =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:First robot.png | 80 x80px| |left ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Robot.gif | 100 x100px| |left ]]&lt;/div&gt;</summary>
		<author><name>Jan Dropmann</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Jan_Dropmann&amp;diff=73859</id>
		<title>GMU:Bots &#039;n&#039; Plots/Jan Dropmann</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Jan_Dropmann&amp;diff=73859"/>
		<updated>2015-09-18T08:27:54Z</updated>

		<summary type="html">&lt;p&gt;Jan Dropmann: /* Twitter Bot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;Welcome to my new Wiki-Page&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;  &lt;br /&gt;
    -Name: Jan Dropmann &lt;br /&gt;
    -Bachelor: Media Studies &lt;br /&gt;
&#039;&#039;&lt;br /&gt;
==== Twitter Bot ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Takes an Image, process it and post it on Twitter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===== Screenshots =====&lt;br /&gt;
&lt;br /&gt;
[[File:Twitterbird.png|400px|thumb|left]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Metalrain.png|400px|thumb|left]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Link to the GitHub project====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;https://github.com/JHDROP/TwitterImageBot.git&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===== Source Code =====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;importing the librarys needed for image processing&amp;quot;&amp;quot;&amp;quot; &lt;br /&gt;
&lt;br /&gt;
from PIL import Image, ImageFilter, ImageColor, ImageOps #Python Image Libray: adds image processing capabilities to your Python interpreter&lt;br /&gt;
import numpy as np #nummerical python used for calculating huge arrays and matrices with numeric data &lt;br /&gt;
import colorsys #contains function for converting between different Colormodes as RGB and other &lt;br /&gt;
import random #contains different random number generators &lt;br /&gt;
&lt;br /&gt;
import sys 		#sys module offers constants, functions and methodes from the python interpreter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class ImageProcessor:&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;Using Image Module&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
	#just flips the image upsidedown &lt;br /&gt;
	def flip(self, img):&lt;br /&gt;
		return img.transpose(Image.FLIP_TOP_BOTTOM)&lt;br /&gt;
&lt;br /&gt;
	#rotates the image with a specific degree (e.g 90)&lt;br /&gt;
	def rotate(self, img):&lt;br /&gt;
		return img.transpose(Image.ROTATE_90)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;Using ImageOps Module&amp;quot;&amp;quot;&amp;quot; #Image Operations &lt;br /&gt;
	#turning the image into an one chanel (L) grayscale image &lt;br /&gt;
	def grayscale(self, img):&lt;br /&gt;
		return ImageOps.grayscale(img)&lt;br /&gt;
&lt;br /&gt;
	#substitute different colors to the white and black pixels. It expact a RGB tuple for each of them. (Only works with RGB colormode)&lt;br /&gt;
	def color_change(self, img):&lt;br /&gt;
		return ImageOps.colorize(img, (255, 0, 0),(0, 0, 255))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;Using ImageFilter Module&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
	#applying gaussian blur to the image. Changing the radius(intensity) of the blur &lt;br /&gt;
	def blur(self, img):&lt;br /&gt;
		return img.filter(ImageFilter.GaussianBlur(radius=4))&lt;br /&gt;
&lt;br /&gt;
	#applying contour to the image &lt;br /&gt;
	def contour(self, img):&lt;br /&gt;
		return img.filter(ImageFilter.CONTOUR)&lt;br /&gt;
	#applying a edge enhancement to the image &lt;br /&gt;
	def edge(self, img):&lt;br /&gt;
		return img.filter(ImageFilter.EDGE_ENHANCE_MORE)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	################################################################&lt;br /&gt;
	# some more advanced image processing                          #&lt;br /&gt;
	################################################################&lt;br /&gt;
&lt;br /&gt;
	# shifting pixels with a specific amount | rows or columns &lt;br /&gt;
	def shifting_pixels(self, img, fn=None, amount=10, horizontal=True):&lt;br /&gt;
		&lt;br /&gt;
		if fn is None:&lt;br /&gt;
			fn = shift_list&lt;br /&gt;
&lt;br /&gt;
		# getting the imagine demention &amp;gt; full image &lt;br /&gt;
		ymax, xmax = img.size &lt;br /&gt;
&lt;br /&gt;
		# converting the input (image) into an array with numpy &lt;br /&gt;
		a1 = np.asarray(img)&lt;br /&gt;
		a2 = np.zeros((xmax, ymax, 3))&lt;br /&gt;
&lt;br /&gt;
		# shifting columns of pixels&lt;br /&gt;
		if horizontal is True:&lt;br /&gt;
&lt;br /&gt;
			# iterate over half(xmax / 2) of the rows | any other array of the image could be selected full image would be xmax /1 &lt;br /&gt;
			for x in range(xmax / 2):&lt;br /&gt;
				#define the amount the pixels should be moved with a random selector in a number array(&amp;quot;amount&amp;quot; can be replaced by any number)&lt;br /&gt;
				d = random.randint(-amount, amount)&lt;br /&gt;
				row = a1[x,:,:] &lt;br /&gt;
				a2[x,:,:] = fn(row, d)&lt;br /&gt;
&lt;br /&gt;
			# iterate over the other half&lt;br /&gt;
			for x in range(xmax / 2, xmax):&lt;br /&gt;
				a2[x,:,:] = a1[x,:,:]&lt;br /&gt;
&lt;br /&gt;
		# sorting rows of pixels&lt;br /&gt;
		else:&lt;br /&gt;
&lt;br /&gt;
			# iterate over half(ymax / 2) of the columns&lt;br /&gt;
			for y in range(ymax / 2):&lt;br /&gt;
				d = random.randint(-amount, amount)&lt;br /&gt;
				col = a1[:,y,:]&lt;br /&gt;
				a2[:,y,:] = fn(col, d)&lt;br /&gt;
&lt;br /&gt;
			# iterate over the other half&lt;br /&gt;
			for y in range(ymax / 2, ymax):&lt;br /&gt;
				a2[:,y,:] = a1[:,y,:]&lt;br /&gt;
&lt;br /&gt;
	  &lt;br /&gt;
		# turn the numpy array back into an image&lt;br /&gt;
		a2 = np.uint8(a2)&lt;br /&gt;
		out = Image.fromarray(a2)&lt;br /&gt;
&lt;br /&gt;
		# return the result (image)&lt;br /&gt;
		return out&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	def shift_list(self, lst, amount):&lt;br /&gt;
&lt;br /&gt;
		# make sure we got lists&lt;br /&gt;
		lst = list(lst)&lt;br /&gt;
&lt;br /&gt;
		# combine slices&lt;br /&gt;
		lst = lst[amount:] + lst[:amount]&lt;br /&gt;
		return lst&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	#pixel sorting using numpy &lt;br /&gt;
	def sort(self, img, fn=None, horizontal=True, reverse=False):&lt;br /&gt;
		&lt;br /&gt;
		# get image dimensions &amp;gt; full image |other demensions are possible &lt;br /&gt;
		ymax, xmax = img.size&lt;br /&gt;
&lt;br /&gt;
		#you can apply brightness, redness, yellowness and hue to fn as they are defined below  &lt;br /&gt;
		if fn is None:&lt;br /&gt;
			fn = self.brightness&lt;br /&gt;
		else: &lt;br /&gt;
			fn = self.redness&lt;br /&gt;
&lt;br /&gt;
		# lets work with arrays and numpy (changing the image into numpy usable data)&lt;br /&gt;
		a1 = np.asarray(img)&lt;br /&gt;
		a2 = np.zeros((xmax, ymax, 3))&lt;br /&gt;
&lt;br /&gt;
		# sorting rows(x) of pixels&lt;br /&gt;
		if horizontal is True:&lt;br /&gt;
&lt;br /&gt;
			# iterate over all the rows(xmax) or any other amount of the image (e.g half (xmax / 2))&lt;br /&gt;
			for x in range(xmax / 1):&lt;br /&gt;
				row = a1[x,:,:]&lt;br /&gt;
				a2[x,:,:] = sorted(row, key=fn, reverse=reverse)&lt;br /&gt;
&lt;br /&gt;
			for x in range(xmax / 1, xmax):&lt;br /&gt;
				a2[x,:,:] = a1[x,:,:]&lt;br /&gt;
&lt;br /&gt;
		else:&lt;br /&gt;
&lt;br /&gt;
			# iterate over all columns(y) or any other amount of the image (e.g half (ymax / 2))&lt;br /&gt;
			for y in range(ymax / 1):&lt;br /&gt;
				col = a1[:,y,:]&lt;br /&gt;
				a2[:,y,:] = sorted(col, key=fn, reverse=reverse)&lt;br /&gt;
&lt;br /&gt;
			# iterate over the other half&lt;br /&gt;
			for y in range(ymax / 1, ymax):&lt;br /&gt;
				a2[:,y,:] = a1[:,y,:]&lt;br /&gt;
	  &lt;br /&gt;
		# turn the numpy array back into an image&lt;br /&gt;
		a2 = np.uint8(a2)&lt;br /&gt;
		out = Image.fromarray(a2)&lt;br /&gt;
&lt;br /&gt;
		# return the result (image)&lt;br /&gt;
		return out&lt;br /&gt;
&lt;br /&gt;
	################################################################&lt;br /&gt;
	#defining some further image processings which are colled above#&lt;br /&gt;
	#and will determine the order of colors  					   #&lt;br /&gt;
	################################################################&lt;br /&gt;
&lt;br /&gt;
	def brightness(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; assign a value to each color &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		return 0.01 * r + 0.587 * g + 0.114 * b&lt;br /&gt;
&lt;br /&gt;
	def redness(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; return the amount of red &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		return r&lt;br /&gt;
&lt;br /&gt;
	def yellowness(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; return the amount of yellow &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		return r * 0.5 + g * 0.5&lt;br /&gt;
&lt;br /&gt;
	def hue(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; return the hue of some color &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		h, s, v = colorsys.rgb_to_hsv(float(r), float(g), float(b))&lt;br /&gt;
		return h&lt;br /&gt;
&lt;br /&gt;
	################################################################&lt;br /&gt;
	# trying new stuff                   #&lt;br /&gt;
	################################################################&lt;br /&gt;
	# Sorts a given row of pixels&lt;br /&gt;
	def sort_interval(self, interval):&lt;br /&gt;
		if interval == []:&lt;br /&gt;
			return []&lt;br /&gt;
		else:&lt;br /&gt;
			return(sorted(interval, key = lambda x: x[0] + x[1] + x[2]))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Little Bot with Processing ====&lt;br /&gt;
&#039;&#039;&#039;Created a simple Bot and an animated GIF&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
===== Screenshots =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:First robot.png | 80 x80px| |left ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Robot.gif | 100 x100px| |left ]]&lt;/div&gt;</summary>
		<author><name>Jan Dropmann</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Jan_Dropmann&amp;diff=72911</id>
		<title>GMU:Bots &#039;n&#039; Plots/Jan Dropmann</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Jan_Dropmann&amp;diff=72911"/>
		<updated>2015-06-28T12:47:59Z</updated>

		<summary type="html">&lt;p&gt;Jan Dropmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;Welcome to my new Wiki-Page&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;  &lt;br /&gt;
    -Name: Jan Dropmann &lt;br /&gt;
    -Bachelor: Media Studies &lt;br /&gt;
&#039;&#039;&lt;br /&gt;
==== Twitter Bot ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Takes an Image, process it and post it on Twitter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===== Screenshots =====&lt;br /&gt;
&lt;br /&gt;
[[File:Twitterbird.png|400px|thumb|left]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Metalrain.png|400px|thumb|left]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Source Code =====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;importing the librarys needed for image processing&amp;quot;&amp;quot;&amp;quot; &lt;br /&gt;
&lt;br /&gt;
from PIL import Image, ImageFilter, ImageColor, ImageOps #Python Image Libray: adds image processing capabilities to your Python interpreter&lt;br /&gt;
import numpy as np #nummerical python used for calculating huge arrays and matrices with numeric data &lt;br /&gt;
import colorsys #contains function for converting between different Colormodes as RGB and other &lt;br /&gt;
import random #contains different random number generators &lt;br /&gt;
&lt;br /&gt;
import sys 		#sys module offers constants, functions and methodes from the python interpreter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class ImageProcessor:&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;Using Image Module&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
	#just flips the image upsidedown &lt;br /&gt;
	def flip(self, img):&lt;br /&gt;
		return img.transpose(Image.FLIP_TOP_BOTTOM)&lt;br /&gt;
&lt;br /&gt;
	#rotates the image with a specific degree (e.g 90)&lt;br /&gt;
	def rotate(self, img):&lt;br /&gt;
		return img.transpose(Image.ROTATE_90)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;Using ImageOps Module&amp;quot;&amp;quot;&amp;quot; #Image Operations &lt;br /&gt;
	#turning the image into an one chanel (L) grayscale image &lt;br /&gt;
	def grayscale(self, img):&lt;br /&gt;
		return ImageOps.grayscale(img)&lt;br /&gt;
&lt;br /&gt;
	#substitute different colors to the white and black pixels. It expact a RGB tuple for each of them. (Only works with RGB colormode)&lt;br /&gt;
	def color_change(self, img):&lt;br /&gt;
		return ImageOps.colorize(img, (255, 0, 0),(0, 0, 255))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;Using ImageFilter Module&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
	#applying gaussian blur to the image. Changing the radius(intensity) of the blur &lt;br /&gt;
	def blur(self, img):&lt;br /&gt;
		return img.filter(ImageFilter.GaussianBlur(radius=4))&lt;br /&gt;
&lt;br /&gt;
	#applying contour to the image &lt;br /&gt;
	def contour(self, img):&lt;br /&gt;
		return img.filter(ImageFilter.CONTOUR)&lt;br /&gt;
	#applying a edge enhancement to the image &lt;br /&gt;
	def edge(self, img):&lt;br /&gt;
		return img.filter(ImageFilter.EDGE_ENHANCE_MORE)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	################################################################&lt;br /&gt;
	# some more advanced image processing                          #&lt;br /&gt;
	################################################################&lt;br /&gt;
&lt;br /&gt;
	# shifting pixels with a specific amount | rows or columns &lt;br /&gt;
	def shifting_pixels(self, img, fn=None, amount=10, horizontal=True):&lt;br /&gt;
		&lt;br /&gt;
		if fn is None:&lt;br /&gt;
			fn = shift_list&lt;br /&gt;
&lt;br /&gt;
		# getting the imagine demention &amp;gt; full image &lt;br /&gt;
		ymax, xmax = img.size &lt;br /&gt;
&lt;br /&gt;
		# converting the input (image) into an array with numpy &lt;br /&gt;
		a1 = np.asarray(img)&lt;br /&gt;
		a2 = np.zeros((xmax, ymax, 3))&lt;br /&gt;
&lt;br /&gt;
		# shifting columns of pixels&lt;br /&gt;
		if horizontal is True:&lt;br /&gt;
&lt;br /&gt;
			# iterate over half(xmax / 2) of the rows | any other array of the image could be selected full image would be xmax /1 &lt;br /&gt;
			for x in range(xmax / 2):&lt;br /&gt;
				#define the amount the pixels should be moved with a random selector in a number array(&amp;quot;amount&amp;quot; can be replaced by any number)&lt;br /&gt;
				d = random.randint(-amount, amount)&lt;br /&gt;
				row = a1[x,:,:] &lt;br /&gt;
				a2[x,:,:] = fn(row, d)&lt;br /&gt;
&lt;br /&gt;
			# iterate over the other half&lt;br /&gt;
			for x in range(xmax / 2, xmax):&lt;br /&gt;
				a2[x,:,:] = a1[x,:,:]&lt;br /&gt;
&lt;br /&gt;
		# sorting rows of pixels&lt;br /&gt;
		else:&lt;br /&gt;
&lt;br /&gt;
			# iterate over half(ymax / 2) of the columns&lt;br /&gt;
			for y in range(ymax / 2):&lt;br /&gt;
				d = random.randint(-amount, amount)&lt;br /&gt;
				col = a1[:,y,:]&lt;br /&gt;
				a2[:,y,:] = fn(col, d)&lt;br /&gt;
&lt;br /&gt;
			# iterate over the other half&lt;br /&gt;
			for y in range(ymax / 2, ymax):&lt;br /&gt;
				a2[:,y,:] = a1[:,y,:]&lt;br /&gt;
&lt;br /&gt;
	  &lt;br /&gt;
		# turn the numpy array back into an image&lt;br /&gt;
		a2 = np.uint8(a2)&lt;br /&gt;
		out = Image.fromarray(a2)&lt;br /&gt;
&lt;br /&gt;
		# return the result (image)&lt;br /&gt;
		return out&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	def shift_list(self, lst, amount):&lt;br /&gt;
&lt;br /&gt;
		# make sure we got lists&lt;br /&gt;
		lst = list(lst)&lt;br /&gt;
&lt;br /&gt;
		# combine slices&lt;br /&gt;
		lst = lst[amount:] + lst[:amount]&lt;br /&gt;
		return lst&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	#pixel sorting using numpy &lt;br /&gt;
	def sort(self, img, fn=None, horizontal=True, reverse=False):&lt;br /&gt;
		&lt;br /&gt;
		# get image dimensions &amp;gt; full image |other demensions are possible &lt;br /&gt;
		ymax, xmax = img.size&lt;br /&gt;
&lt;br /&gt;
		#you can apply brightness, redness, yellowness and hue to fn as they are defined below  &lt;br /&gt;
		if fn is None:&lt;br /&gt;
			fn = self.brightness&lt;br /&gt;
		else: &lt;br /&gt;
			fn = self.redness&lt;br /&gt;
&lt;br /&gt;
		# lets work with arrays and numpy (changing the image into numpy usable data)&lt;br /&gt;
		a1 = np.asarray(img)&lt;br /&gt;
		a2 = np.zeros((xmax, ymax, 3))&lt;br /&gt;
&lt;br /&gt;
		# sorting rows(x) of pixels&lt;br /&gt;
		if horizontal is True:&lt;br /&gt;
&lt;br /&gt;
			# iterate over all the rows(xmax) or any other amount of the image (e.g half (xmax / 2))&lt;br /&gt;
			for x in range(xmax / 1):&lt;br /&gt;
				row = a1[x,:,:]&lt;br /&gt;
				a2[x,:,:] = sorted(row, key=fn, reverse=reverse)&lt;br /&gt;
&lt;br /&gt;
			for x in range(xmax / 1, xmax):&lt;br /&gt;
				a2[x,:,:] = a1[x,:,:]&lt;br /&gt;
&lt;br /&gt;
		else:&lt;br /&gt;
&lt;br /&gt;
			# iterate over all columns(y) or any other amount of the image (e.g half (ymax / 2))&lt;br /&gt;
			for y in range(ymax / 1):&lt;br /&gt;
				col = a1[:,y,:]&lt;br /&gt;
				a2[:,y,:] = sorted(col, key=fn, reverse=reverse)&lt;br /&gt;
&lt;br /&gt;
			# iterate over the other half&lt;br /&gt;
			for y in range(ymax / 1, ymax):&lt;br /&gt;
				a2[:,y,:] = a1[:,y,:]&lt;br /&gt;
	  &lt;br /&gt;
		# turn the numpy array back into an image&lt;br /&gt;
		a2 = np.uint8(a2)&lt;br /&gt;
		out = Image.fromarray(a2)&lt;br /&gt;
&lt;br /&gt;
		# return the result (image)&lt;br /&gt;
		return out&lt;br /&gt;
&lt;br /&gt;
	################################################################&lt;br /&gt;
	#defining some further image processings which are colled above#&lt;br /&gt;
	#and will determine the order of colors  					   #&lt;br /&gt;
	################################################################&lt;br /&gt;
&lt;br /&gt;
	def brightness(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; assign a value to each color &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		return 0.01 * r + 0.587 * g + 0.114 * b&lt;br /&gt;
&lt;br /&gt;
	def redness(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; return the amount of red &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		return r&lt;br /&gt;
&lt;br /&gt;
	def yellowness(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; return the amount of yellow &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		return r * 0.5 + g * 0.5&lt;br /&gt;
&lt;br /&gt;
	def hue(self, c):&lt;br /&gt;
		&amp;quot;&amp;quot;&amp;quot; return the hue of some color &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
		r, g, b = c&lt;br /&gt;
		h, s, v = colorsys.rgb_to_hsv(float(r), float(g), float(b))&lt;br /&gt;
		return h&lt;br /&gt;
&lt;br /&gt;
	################################################################&lt;br /&gt;
	# trying new stuff                   #&lt;br /&gt;
	################################################################&lt;br /&gt;
	# Sorts a given row of pixels&lt;br /&gt;
	def sort_interval(self, interval):&lt;br /&gt;
		if interval == []:&lt;br /&gt;
			return []&lt;br /&gt;
		else:&lt;br /&gt;
			return(sorted(interval, key = lambda x: x[0] + x[1] + x[2]))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Little Bot with Processing ====&lt;br /&gt;
&#039;&#039;&#039;Created a simple Bot and an animated GIF&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
===== Screenshots =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:First robot.png | 80 x80px| |left ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Robot.gif | 100 x100px| |left ]]&lt;/div&gt;</summary>
		<author><name>Jan Dropmann</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Jan_Dropmann&amp;diff=72910</id>
		<title>GMU:Bots &#039;n&#039; Plots/Jan Dropmann</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Jan_Dropmann&amp;diff=72910"/>
		<updated>2015-06-28T12:37:35Z</updated>

		<summary type="html">&lt;p&gt;Jan Dropmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;Welcome to my new Wiki-Page&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;  &lt;br /&gt;
    -Name: Jan Dropmann &lt;br /&gt;
    -Bachelor: Media Studies &lt;br /&gt;
&#039;&#039;&lt;br /&gt;
==== Twitter Bot ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Takes an Image, process it and post it on Twitter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===== Screenshots =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:First robot.png | 100 x100px| thumb|left ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Robot.gif | 100 x100px| thumb|left ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Twitterbird.png | 100 x100px| thumb|left ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Metalrain.png | 100 x100px| thumb|left ]]&lt;/div&gt;</summary>
		<author><name>Jan Dropmann</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Jan_Dropmann&amp;diff=72909</id>
		<title>GMU:Bots &#039;n&#039; Plots/Jan Dropmann</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Jan_Dropmann&amp;diff=72909"/>
		<updated>2015-06-28T12:36:03Z</updated>

		<summary type="html">&lt;p&gt;Jan Dropmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;Welcome to my new Wiki-Page&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;-Name: Jan Dropmann &lt;br /&gt;
  -Bachelor: Media Studies &lt;br /&gt;
&#039;&#039;&lt;br /&gt;
==== Twitter Bot ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Takes an Image, process it and post it on Twitter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===== Screenshots =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:First robot.png | 100 x100px| thumb|left ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Robot.gif | 100 x100px| thumb|left ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Twitterbird.png | 100 x100px| thumb|left ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Metalrain.png | 100 x100px| thumb|left ]]&lt;/div&gt;</summary>
		<author><name>Jan Dropmann</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Jan_Dropmann&amp;diff=72737</id>
		<title>GMU:Bots &#039;n&#039; Plots/Jan Dropmann</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Jan_Dropmann&amp;diff=72737"/>
		<updated>2015-06-16T17:46:05Z</updated>

		<summary type="html">&lt;p&gt;Jan Dropmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;Welcome to my new Wiki-Page&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:First robot.png | 100 x100px| thumb|left ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Robot.gif | 100 x100px| thumb|left ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Twitterbird.png | 100 x100px| thumb|left ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Metalrain.png | 100 x100px| thumb|left ]]&lt;/div&gt;</summary>
		<author><name>Jan Dropmann</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=File:Metalrain.png&amp;diff=72735</id>
		<title>File:Metalrain.png</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=File:Metalrain.png&amp;diff=72735"/>
		<updated>2015-06-16T17:45:04Z</updated>

		<summary type="html">&lt;p&gt;Jan Dropmann: This is a Image processed image by first using a pixel sort function. This function sorts each pixel related to his color and hue. Then these pixels get shifted vertical by a huge amount.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
This is a Image processed image by first using a pixel sort function. This function sorts each pixel related to his color and hue. Then these pixels get shifted vertical by a huge amount. &lt;br /&gt;
== Copyright status: ==&lt;br /&gt;
&lt;br /&gt;
== Source: ==&lt;/div&gt;</summary>
		<author><name>Jan Dropmann</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Jan_Dropmann&amp;diff=72733</id>
		<title>GMU:Bots &#039;n&#039; Plots/Jan Dropmann</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Jan_Dropmann&amp;diff=72733"/>
		<updated>2015-06-16T17:42:24Z</updated>

		<summary type="html">&lt;p&gt;Jan Dropmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;Welcome to my new Wiki-Page&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:First robot.png | 100 x100px| thumb|left ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Robot.gif | 100 x100px| thumb|left ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Twitterbird.png | 100 x100px| thumb|left ]]&lt;/div&gt;</summary>
		<author><name>Jan Dropmann</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=File:Twitterbird.png&amp;diff=72730</id>
		<title>File:Twitterbird.png</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=File:Twitterbird.png&amp;diff=72730"/>
		<updated>2015-06-16T17:36:22Z</updated>

		<summary type="html">&lt;p&gt;Jan Dropmann: Using Image processing with numpy array.  
The Function shift the pixels of a defined array with a defined amount.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Using Image processing with numpy array.  &lt;br /&gt;
The Function shift the pixels of a defined array with a defined amount. &lt;br /&gt;
== Copyright status: ==&lt;br /&gt;
&lt;br /&gt;
== Source: ==&lt;/div&gt;</summary>
		<author><name>Jan Dropmann</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Jan_Dropmann&amp;diff=71834</id>
		<title>GMU:Bots &#039;n&#039; Plots/Jan Dropmann</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Jan_Dropmann&amp;diff=71834"/>
		<updated>2015-04-29T13:10:27Z</updated>

		<summary type="html">&lt;p&gt;Jan Dropmann: robot animation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;Welcome to my new Wiki-Page&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:First robot.png | 100 x100px| thumb|left ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Robot.gif | 100 x100px ]]&lt;/div&gt;</summary>
		<author><name>Jan Dropmann</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=File:Robot.gif&amp;diff=71833</id>
		<title>File:Robot.gif</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=File:Robot.gif&amp;diff=71833"/>
		<updated>2015-04-29T13:08:58Z</updated>

		<summary type="html">&lt;p&gt;Jan Dropmann: uploaded a new version of &amp;amp;quot;File:Robot.gif&amp;amp;quot;: robotgif&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
My new robot animation &lt;br /&gt;
== Copyright status: ==&lt;br /&gt;
&lt;br /&gt;
== Source: ==&lt;/div&gt;</summary>
		<author><name>Jan Dropmann</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=File:Robot.gif&amp;diff=71830</id>
		<title>File:Robot.gif</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=File:Robot.gif&amp;diff=71830"/>
		<updated>2015-04-29T13:01:21Z</updated>

		<summary type="html">&lt;p&gt;Jan Dropmann: My new robot animation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
My new robot animation &lt;br /&gt;
== Copyright status: ==&lt;br /&gt;
&lt;br /&gt;
== Source: ==&lt;/div&gt;</summary>
		<author><name>Jan Dropmann</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Jan_Dropmann&amp;diff=71628</id>
		<title>GMU:Bots &#039;n&#039; Plots/Jan Dropmann</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Jan_Dropmann&amp;diff=71628"/>
		<updated>2015-04-22T17:38:02Z</updated>

		<summary type="html">&lt;p&gt;Jan Dropmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;Welcome to my new Wiki-Page&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:First robot.png | 100 x100px| thumb|left ]]&lt;/div&gt;</summary>
		<author><name>Jan Dropmann</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Jan_Dropmann&amp;diff=71606</id>
		<title>GMU:Bots &#039;n&#039; Plots/Jan Dropmann</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Jan_Dropmann&amp;diff=71606"/>
		<updated>2015-04-22T16:52:29Z</updated>

		<summary type="html">&lt;p&gt;Jan Dropmann: first_robot: on wiki&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;Welcome to my new Wiki-Page&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:First robot.png ]]&lt;/div&gt;</summary>
		<author><name>Jan Dropmann</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=File:First_robot.png&amp;diff=71599</id>
		<title>File:First robot.png</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=File:First_robot.png&amp;diff=71599"/>
		<updated>2015-04-22T16:43:31Z</updated>

		<summary type="html">&lt;p&gt;Jan Dropmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
&lt;br /&gt;
== Copyright status: ==&lt;br /&gt;
&lt;br /&gt;
== Source: ==&lt;/div&gt;</summary>
		<author><name>Jan Dropmann</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Part1&amp;diff=71528</id>
		<title>GMU:Bots &#039;n&#039; Plots/Part1</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Part1&amp;diff=71528"/>
		<updated>2015-04-18T12:05:16Z</updated>

		<summary type="html">&lt;p&gt;Jan Dropmann: /* Bots on Twitter */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Python ==&lt;br /&gt;
&lt;br /&gt;
 Part I of [[GMU:Bots &#039;n&#039; Plots]].&lt;br /&gt;
&lt;br /&gt;
=== Homework ===&lt;br /&gt;
&lt;br /&gt;
* Create your Twitter Account&lt;br /&gt;
* Follow @botsnplots&lt;br /&gt;
* Create Participant Page&lt;br /&gt;
* Play on the [[Playground]]&lt;br /&gt;
* Look at the [[Help:Editing|Help Page]]&lt;br /&gt;
* Add 1 Bot to each category&lt;br /&gt;
* Download Processing!&lt;br /&gt;
* Play with Python Mode&lt;br /&gt;
&lt;br /&gt;
== Introduction to Social Bots ==&lt;br /&gt;
=== How do you spot a bot? ===&lt;br /&gt;
* [[wikipedia:Turing Test|Turing Test]]&lt;br /&gt;
&lt;br /&gt;
=== A little history of chatter bots ===&lt;br /&gt;
* [http://loebner.net/Prizef/loebner-prize.html Loebner Prize]&lt;br /&gt;
* From [[wikipedia:ELIZA|ELIZA]] to [[wikipedia:Siri|SIRI]] to [[wikipedia:Her (film)|HER]]&lt;br /&gt;
&lt;br /&gt;
=== A little history of plotter bots ===&lt;br /&gt;
* [http://www.kurzweilcyberart.com/aaron/ AARON]&lt;br /&gt;
* 1960s Computer Art &lt;br /&gt;
** [http://dada.compart-bremen.de/item/agent/15 Georg Nees]&lt;br /&gt;
** [http://dada.compart-bremen.de/item/agent/68 Frieder Nake]&lt;br /&gt;
** [http://dada.compart-bremen.de/item/agent/13 Manfred Mohr]&lt;br /&gt;
** [http://dada.compart-bremen.de/item/agent/14 Vera Molnar]&lt;br /&gt;
* [http://doc.gold.ac.uk/creativemachine/artworks/ Creative Machine Exhibition] at Goldsmiths&lt;br /&gt;
&lt;br /&gt;
=== A little history of computer poetry ===&lt;br /&gt;
* Vocal Art&lt;br /&gt;
** [http://www.ubu.com/sound/ursonate.html Ursonate] (Kurt Schwitters)&lt;br /&gt;
** [http://www.flong.com/projects/ursonography/ Ursonography] (Golan Levin)&lt;br /&gt;
** [https://vimeo.com/38471196 Konsonant] (Jörg Piringer)&lt;br /&gt;
* Narrative&lt;br /&gt;
** Morphology of the Folktale (Vladimir Propp)&lt;br /&gt;
** The Great Automatic Grammatizator (Roald Dahl)&lt;br /&gt;
** Data-Driven Journalism&lt;br /&gt;
&lt;br /&gt;
=== Creativity ===&lt;br /&gt;
* [[wikipedia:Computational creativity|Computational Creativity]]&lt;br /&gt;
* Jon McCormack: Computers and Creativity, ISBN 9781283631525&lt;br /&gt;
&lt;br /&gt;
=== Bots on Twitter ===&lt;br /&gt;
* Systema Naturae of Bots&lt;br /&gt;
* [http://www.gamesbyangelina.org/talks/codecamp.pdf A Brief History of the Future of Twitter Bots] (Michael Cook)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
** Feeds&lt;br /&gt;
*** [http://www.twitter.com/big_ben_clock Big Ben Clock]&lt;br /&gt;
*** [https://twitter.com/metaphorminute Metaphor a Minute]&lt;br /&gt;
*** [http://twitter.com/kinbot Lake Kinneret Bot]&lt;br /&gt;
*** [http://www.twitter.com/everyword everyword]&lt;br /&gt;
*** [https://twitter.com/sandwiches_bot Random Sandwich]&lt;br /&gt;
*** [https://twitter.com/netflix_bot Netflix Bot]&lt;br /&gt;
*** [https://twitter.com/factbot1 Fact Bot]&lt;br /&gt;
*** [https://twitter.com/feedsynbot News Feed]&lt;br /&gt;
** Watchers &lt;br /&gt;
*** [https://twitter.com/HugsToTheRescue Hug Bot]&lt;br /&gt;
*** [https://twitter.com/YesYoureRacist Yes you&#039;re racist]&lt;br /&gt;
*** [https://twitter.com/bgebot BGE]&lt;br /&gt;
** Interactives&lt;br /&gt;
*** [http://twitter.com/oliviataters olivia taters]&lt;br /&gt;
*** [https://twitter.com/wikisext how 2 sext]&lt;br /&gt;
*** [https://twitter.com/eliza_bot Eliza Bot]&lt;br /&gt;
** Imagebots &lt;br /&gt;
*** [https://twitter.com/imgblur Img Blur]&lt;br /&gt;
*** [https://twitter.com/ClipArtBot Clip Art Bot]&lt;br /&gt;
*** [https://twitter.com/lowpolybot low-poly Bot ]&lt;br /&gt;
** Feats&lt;br /&gt;
** Mashups&lt;br /&gt;
***[https://twitter.com/algo_news Algo News]&lt;br /&gt;
** Bot-on-Bot&lt;br /&gt;
** Statements&lt;br /&gt;
*** [https://twitter.com/NRA_Tally NRA Tally]&lt;br /&gt;
*** [https://twitter.com/NSA_PRISMbot NSA Prismbot]&lt;br /&gt;
** Meat&lt;br /&gt;
*** [https://twitter.com/GooglePoetics Google Poetics]&lt;br /&gt;
*** [https://twitter.com/Horse_ebooks Horse ebook]&lt;br /&gt;
&lt;br /&gt;
* [http://golancourses.net/2015/category/31-bot/ Bot Class] by Golan Levin&lt;br /&gt;
&lt;br /&gt;
== Learning to use the Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Using the Wiki + the Mailinglist ===&lt;br /&gt;
* [[Help:Editing|Using the Wiki]]&lt;br /&gt;
* [[GMU:Mailinglist|Using the Mailinglist]]&lt;br /&gt;
&lt;br /&gt;
=== Using Twitter ===&lt;br /&gt;
* The [https://support.twitter.com/articles/166337-the-twitter-glossary# Twitter Glossary]&lt;br /&gt;
* &#039;&#039;[https://twitter.com/signup Sign The Fxxk Up!]&#039;&#039; and follow [http://twitter.com/botsnplots @botsnplots]&lt;br /&gt;
* Twitter Apps and the Twitter API&lt;br /&gt;
&lt;br /&gt;
=== Using Python in Processing ===&lt;br /&gt;
* [http://processing.org/download/ Get Processing!]&lt;br /&gt;
* [http://py.processing.org Processing Python Mode]&lt;br /&gt;
** [http://py.processing.org/reference/ Reference]&lt;br /&gt;
** [http://py.processing.org/tutorials/ Tutorials]&lt;br /&gt;
&lt;br /&gt;
=== Using iPython Notebooks ===&lt;br /&gt;
&lt;br /&gt;
* iPython (interactive Python, runs in the browser)&lt;br /&gt;
** Play with it [https://tmpnb.org/ here]&lt;br /&gt;
** Explore iPython Notebooks [http://nbviewer.ipython.org/ here]&lt;br /&gt;
&lt;br /&gt;
* Jupyter (Class-Environment for iPython)&lt;br /&gt;
** We will set up our own Jupyter server for you.&lt;br /&gt;
** Nice Example of browser based python using Jupyter [https://www.youtube.com/watch?v=iSGXOU5C3sQ here] (by Doug Blank)&lt;br /&gt;
&lt;br /&gt;
== Learn Programming in Python ==&lt;br /&gt;
* Commands&lt;br /&gt;
* Variables&lt;br /&gt;
* Control Flow&lt;br /&gt;
* Functions&lt;br /&gt;
* Dictionaries, Lists, Sets&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
&lt;br /&gt;
  TO BE DONE&lt;br /&gt;
&lt;br /&gt;
=== Literature ===&lt;br /&gt;
&lt;br /&gt;
==== Python Books ====&lt;br /&gt;
&lt;br /&gt;
  TO BE DONE&lt;br /&gt;
&lt;br /&gt;
{{PythonBooks}}&lt;br /&gt;
&lt;br /&gt;
==== Processing Books ====&lt;br /&gt;
{{ProcessingBooks}}&lt;/div&gt;</summary>
		<author><name>Jan Dropmann</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Part1&amp;diff=71527</id>
		<title>GMU:Bots &#039;n&#039; Plots/Part1</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Part1&amp;diff=71527"/>
		<updated>2015-04-18T12:01:12Z</updated>

		<summary type="html">&lt;p&gt;Jan Dropmann: /* Bots on Twitter */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Python ==&lt;br /&gt;
&lt;br /&gt;
 Part I of [[GMU:Bots &#039;n&#039; Plots]].&lt;br /&gt;
&lt;br /&gt;
=== Homework ===&lt;br /&gt;
&lt;br /&gt;
* Create your Twitter Account&lt;br /&gt;
* Follow @botsnplots&lt;br /&gt;
* Create Participant Page&lt;br /&gt;
* Play on the [[Playground]]&lt;br /&gt;
* Look at the [[Help:Editing|Help Page]]&lt;br /&gt;
* Add 1 Bot to each category&lt;br /&gt;
* Download Processing!&lt;br /&gt;
* Play with Python Mode&lt;br /&gt;
&lt;br /&gt;
== Introduction to Social Bots ==&lt;br /&gt;
=== How do you spot a bot? ===&lt;br /&gt;
* [[wikipedia:Turing Test|Turing Test]]&lt;br /&gt;
&lt;br /&gt;
=== A little history of chatter bots ===&lt;br /&gt;
* [http://loebner.net/Prizef/loebner-prize.html Loebner Prize]&lt;br /&gt;
* From [[wikipedia:ELIZA|ELIZA]] to [[wikipedia:Siri|SIRI]] to [[wikipedia:Her (film)|HER]]&lt;br /&gt;
&lt;br /&gt;
=== A little history of plotter bots ===&lt;br /&gt;
* [http://www.kurzweilcyberart.com/aaron/ AARON]&lt;br /&gt;
* 1960s Computer Art &lt;br /&gt;
** [http://dada.compart-bremen.de/item/agent/15 Georg Nees]&lt;br /&gt;
** [http://dada.compart-bremen.de/item/agent/68 Frieder Nake]&lt;br /&gt;
** [http://dada.compart-bremen.de/item/agent/13 Manfred Mohr]&lt;br /&gt;
** [http://dada.compart-bremen.de/item/agent/14 Vera Molnar]&lt;br /&gt;
* [http://doc.gold.ac.uk/creativemachine/artworks/ Creative Machine Exhibition] at Goldsmiths&lt;br /&gt;
&lt;br /&gt;
=== A little history of computer poetry ===&lt;br /&gt;
* Vocal Art&lt;br /&gt;
** [http://www.ubu.com/sound/ursonate.html Ursonate] (Kurt Schwitters)&lt;br /&gt;
** [http://www.flong.com/projects/ursonography/ Ursonography] (Golan Levin)&lt;br /&gt;
** [https://vimeo.com/38471196 Konsonant] (Jörg Piringer)&lt;br /&gt;
* Narrative&lt;br /&gt;
** Morphology of the Folktale (Vladimir Propp)&lt;br /&gt;
** The Great Automatic Grammatizator (Roald Dahl)&lt;br /&gt;
** Data-Driven Journalism&lt;br /&gt;
&lt;br /&gt;
=== Creativity ===&lt;br /&gt;
* [[wikipedia:Computational creativity|Computational Creativity]]&lt;br /&gt;
* Jon McCormack: Computers and Creativity, ISBN 9781283631525&lt;br /&gt;
&lt;br /&gt;
=== Bots on Twitter ===&lt;br /&gt;
* Systema Naturae of Bots&lt;br /&gt;
* [http://www.gamesbyangelina.org/talks/codecamp.pdf A Brief History of the Future of Twitter Bots] (Michael Cook)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
** Feeds&lt;br /&gt;
*** [http://www.twitter.com/big_ben_clock Big Ben Clock]&lt;br /&gt;
*** [https://twitter.com/metaphorminute Metaphor a Minute]&lt;br /&gt;
*** [http://twitter.com/kinbot Lake Kinneret Bot]&lt;br /&gt;
*** [http://www.twitter.com/everyword everyword]&lt;br /&gt;
*** [https://twitter.com/sandwiches_bot Random Sandwich]&lt;br /&gt;
*** [https://twitter.com/netflix_bot Netflix Bot]&lt;br /&gt;
*** [https://twitter.com/factbot1 Fact Bot]&lt;br /&gt;
*** [https://twitter.com/feedsynbot News Feed]&lt;br /&gt;
** Watchers &lt;br /&gt;
*** [https://twitter.com/HugsToTheRescue Hug Bot]&lt;br /&gt;
*** [https://twitter.com/YesYoureRacist Yes you&#039;re racist]&lt;br /&gt;
*** [https://twitter.com/bgebot BGE]&lt;br /&gt;
** Interactives&lt;br /&gt;
*** [http://twitter.com/oliviataters olivia taters]&lt;br /&gt;
*** [https://twitter.com/wikisext how 2 sext]&lt;br /&gt;
** Imagebots &lt;br /&gt;
*** [https://twitter.com/imgblur Img Blur]&lt;br /&gt;
*** [https://twitter.com/ClipArtBot Clip Art Bot]&lt;br /&gt;
*** [https://twitter.com/lowpolybot low-poly Bot ]&lt;br /&gt;
** Feats&lt;br /&gt;
** Mashups&lt;br /&gt;
***[https://twitter.com/algo_news Algo News]&lt;br /&gt;
** Bot-on-Bot&lt;br /&gt;
** Statements&lt;br /&gt;
*** [https://twitter.com/NRA_Tally NRA Tally]&lt;br /&gt;
*** [https://twitter.com/NSA_PRISMbot NSA Prismbot]&lt;br /&gt;
** Meat&lt;br /&gt;
*** [https://twitter.com/GooglePoetics Google Poetics]&lt;br /&gt;
*** [https://twitter.com/Horse_ebooks Horse ebook]&lt;br /&gt;
&lt;br /&gt;
* [http://golancourses.net/2015/category/31-bot/ Bot Class] by Golan Levin&lt;br /&gt;
&lt;br /&gt;
== Learning to use the Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Using the Wiki + the Mailinglist ===&lt;br /&gt;
* [[Help:Editing|Using the Wiki]]&lt;br /&gt;
* [[GMU:Mailinglist|Using the Mailinglist]]&lt;br /&gt;
&lt;br /&gt;
=== Using Twitter ===&lt;br /&gt;
* The [https://support.twitter.com/articles/166337-the-twitter-glossary# Twitter Glossary]&lt;br /&gt;
* &#039;&#039;[https://twitter.com/signup Sign The Fxxk Up!]&#039;&#039; and follow [http://twitter.com/botsnplots @botsnplots]&lt;br /&gt;
* Twitter Apps and the Twitter API&lt;br /&gt;
&lt;br /&gt;
=== Using Python in Processing ===&lt;br /&gt;
* [http://processing.org/download/ Get Processing!]&lt;br /&gt;
* [http://py.processing.org Processing Python Mode]&lt;br /&gt;
** [http://py.processing.org/reference/ Reference]&lt;br /&gt;
** [http://py.processing.org/tutorials/ Tutorials]&lt;br /&gt;
&lt;br /&gt;
=== Using iPython Notebooks ===&lt;br /&gt;
&lt;br /&gt;
* iPython (interactive Python, runs in the browser)&lt;br /&gt;
** Play with it [https://tmpnb.org/ here]&lt;br /&gt;
** Explore iPython Notebooks [http://nbviewer.ipython.org/ here]&lt;br /&gt;
&lt;br /&gt;
* Jupyter (Class-Environment for iPython)&lt;br /&gt;
** We will set up our own Jupyter server for you.&lt;br /&gt;
** Nice Example of browser based python using Jupyter [https://www.youtube.com/watch?v=iSGXOU5C3sQ here] (by Doug Blank)&lt;br /&gt;
&lt;br /&gt;
== Learn Programming in Python ==&lt;br /&gt;
* Commands&lt;br /&gt;
* Variables&lt;br /&gt;
* Control Flow&lt;br /&gt;
* Functions&lt;br /&gt;
* Dictionaries, Lists, Sets&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
&lt;br /&gt;
  TO BE DONE&lt;br /&gt;
&lt;br /&gt;
=== Literature ===&lt;br /&gt;
&lt;br /&gt;
==== Python Books ====&lt;br /&gt;
&lt;br /&gt;
  TO BE DONE&lt;br /&gt;
&lt;br /&gt;
{{PythonBooks}}&lt;br /&gt;
&lt;br /&gt;
==== Processing Books ====&lt;br /&gt;
{{ProcessingBooks}}&lt;/div&gt;</summary>
		<author><name>Jan Dropmann</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Part1&amp;diff=71525</id>
		<title>GMU:Bots &#039;n&#039; Plots/Part1</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Part1&amp;diff=71525"/>
		<updated>2015-04-18T11:58:35Z</updated>

		<summary type="html">&lt;p&gt;Jan Dropmann: /* Bots on Twitter */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Python ==&lt;br /&gt;
&lt;br /&gt;
 Part I of [[GMU:Bots &#039;n&#039; Plots]].&lt;br /&gt;
&lt;br /&gt;
=== Homework ===&lt;br /&gt;
&lt;br /&gt;
* Create your Twitter Account&lt;br /&gt;
* Follow @botsnplots&lt;br /&gt;
* Create Participant Page&lt;br /&gt;
* Play on the [[Playground]]&lt;br /&gt;
* Look at the [[Help:Editing|Help Page]]&lt;br /&gt;
* Add 1 Bot to each category&lt;br /&gt;
* Download Processing!&lt;br /&gt;
* Play with Python Mode&lt;br /&gt;
&lt;br /&gt;
== Introduction to Social Bots ==&lt;br /&gt;
=== How do you spot a bot? ===&lt;br /&gt;
* [[wikipedia:Turing Test|Turing Test]]&lt;br /&gt;
&lt;br /&gt;
=== A little history of chatter bots ===&lt;br /&gt;
* [http://loebner.net/Prizef/loebner-prize.html Loebner Prize]&lt;br /&gt;
* From [[wikipedia:ELIZA|ELIZA]] to [[wikipedia:Siri|SIRI]] to [[wikipedia:Her (film)|HER]]&lt;br /&gt;
&lt;br /&gt;
=== A little history of plotter bots ===&lt;br /&gt;
* [http://www.kurzweilcyberart.com/aaron/ AARON]&lt;br /&gt;
* 1960s Computer Art &lt;br /&gt;
** [http://dada.compart-bremen.de/item/agent/15 Georg Nees]&lt;br /&gt;
** [http://dada.compart-bremen.de/item/agent/68 Frieder Nake]&lt;br /&gt;
** [http://dada.compart-bremen.de/item/agent/13 Manfred Mohr]&lt;br /&gt;
** [http://dada.compart-bremen.de/item/agent/14 Vera Molnar]&lt;br /&gt;
* [http://doc.gold.ac.uk/creativemachine/artworks/ Creative Machine Exhibition] at Goldsmiths&lt;br /&gt;
&lt;br /&gt;
=== A little history of computer poetry ===&lt;br /&gt;
* Vocal Art&lt;br /&gt;
** [http://www.ubu.com/sound/ursonate.html Ursonate] (Kurt Schwitters)&lt;br /&gt;
** [http://www.flong.com/projects/ursonography/ Ursonography] (Golan Levin)&lt;br /&gt;
** [https://vimeo.com/38471196 Konsonant] (Jörg Piringer)&lt;br /&gt;
* Narrative&lt;br /&gt;
** Morphology of the Folktale (Vladimir Propp)&lt;br /&gt;
** The Great Automatic Grammatizator (Roald Dahl)&lt;br /&gt;
** Data-Driven Journalism&lt;br /&gt;
&lt;br /&gt;
=== Creativity ===&lt;br /&gt;
* [[wikipedia:Computational creativity|Computational Creativity]]&lt;br /&gt;
* Jon McCormack: Computers and Creativity, ISBN 9781283631525&lt;br /&gt;
&lt;br /&gt;
=== Bots on Twitter ===&lt;br /&gt;
* Systema Naturae of Bots&lt;br /&gt;
* [http://www.gamesbyangelina.org/talks/codecamp.pdf A Brief History of the Future of Twitter Bots] (Michael Cook)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
** Feeds&lt;br /&gt;
*** [http://www.twitter.com/big_ben_clock Big Ben Clock]&lt;br /&gt;
*** [http://twitter.com/kinbot Lake Kinneret Bot]&lt;br /&gt;
*** [http://www.twitter.com/everyword everyword]&lt;br /&gt;
*** [https://twitter.com/sandwiches_bot Random Sandwich]&lt;br /&gt;
*** [https://twitter.com/netflix_bot Netflix Bot]&lt;br /&gt;
*** [https://twitter.com/factbot1 Fact Bot]&lt;br /&gt;
*** [https://twitter.com/feedsynbot News Feed]&lt;br /&gt;
** Watchers &lt;br /&gt;
*** [https://twitter.com/HugsToTheRescue Hug Bot]&lt;br /&gt;
*** [https://twitter.com/YesYoureRacist Yes you&#039;re racist]&lt;br /&gt;
*** [https://twitter.com/bgebot BGE]&lt;br /&gt;
** Interactives&lt;br /&gt;
*** [http://twitter.com/oliviataters olivia taters]&lt;br /&gt;
*** [https://twitter.com/wikisext how 2 sext]&lt;br /&gt;
** Imagebots &lt;br /&gt;
*** [https://twitter.com/imgblur Img Blur]&lt;br /&gt;
*** [https://twitter.com/ClipArtBot Clip Art Bot]&lt;br /&gt;
** Feats&lt;br /&gt;
** Mashups&lt;br /&gt;
***[https://twitter.com/algo_news Algo News]&lt;br /&gt;
** Bot-on-Bot&lt;br /&gt;
** Statements&lt;br /&gt;
*** [https://twitter.com/NRA_Tally NRA Tally]&lt;br /&gt;
*** [https://twitter.com/NSA_PRISMbot NSA Prismbot]&lt;br /&gt;
** Meat&lt;br /&gt;
*** [https://twitter.com/GooglePoetics Google Poetics]&lt;br /&gt;
*** [https://twitter.com/Horse_ebooks Horse ebook]&lt;br /&gt;
&lt;br /&gt;
* [http://golancourses.net/2015/category/31-bot/ Bot Class] by Golan Levin&lt;br /&gt;
&lt;br /&gt;
== Learning to use the Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Using the Wiki + the Mailinglist ===&lt;br /&gt;
* [[Help:Editing|Using the Wiki]]&lt;br /&gt;
* [[GMU:Mailinglist|Using the Mailinglist]]&lt;br /&gt;
&lt;br /&gt;
=== Using Twitter ===&lt;br /&gt;
* The [https://support.twitter.com/articles/166337-the-twitter-glossary# Twitter Glossary]&lt;br /&gt;
* &#039;&#039;[https://twitter.com/signup Sign The Fxxk Up!]&#039;&#039; and follow [http://twitter.com/botsnplots @botsnplots]&lt;br /&gt;
* Twitter Apps and the Twitter API&lt;br /&gt;
&lt;br /&gt;
=== Using Python in Processing ===&lt;br /&gt;
* [http://processing.org/download/ Get Processing!]&lt;br /&gt;
* [http://py.processing.org Processing Python Mode]&lt;br /&gt;
** [http://py.processing.org/reference/ Reference]&lt;br /&gt;
** [http://py.processing.org/tutorials/ Tutorials]&lt;br /&gt;
&lt;br /&gt;
=== Using iPython Notebooks ===&lt;br /&gt;
&lt;br /&gt;
* iPython (interactive Python, runs in the browser)&lt;br /&gt;
** Play with it [https://tmpnb.org/ here]&lt;br /&gt;
** Explore iPython Notebooks [http://nbviewer.ipython.org/ here]&lt;br /&gt;
&lt;br /&gt;
* Jupyter (Class-Environment for iPython)&lt;br /&gt;
** We will set up our own Jupyter server for you.&lt;br /&gt;
** Nice Example of browser based python using Jupyter [https://www.youtube.com/watch?v=iSGXOU5C3sQ here] (by Doug Blank)&lt;br /&gt;
&lt;br /&gt;
== Learn Programming in Python ==&lt;br /&gt;
* Commands&lt;br /&gt;
* Variables&lt;br /&gt;
* Control Flow&lt;br /&gt;
* Functions&lt;br /&gt;
* Dictionaries, Lists, Sets&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
&lt;br /&gt;
  TO BE DONE&lt;br /&gt;
&lt;br /&gt;
=== Literature ===&lt;br /&gt;
&lt;br /&gt;
==== Python Books ====&lt;br /&gt;
&lt;br /&gt;
  TO BE DONE&lt;br /&gt;
&lt;br /&gt;
{{PythonBooks}}&lt;br /&gt;
&lt;br /&gt;
==== Processing Books ====&lt;br /&gt;
{{ProcessingBooks}}&lt;/div&gt;</summary>
		<author><name>Jan Dropmann</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Part1&amp;diff=71524</id>
		<title>GMU:Bots &#039;n&#039; Plots/Part1</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Part1&amp;diff=71524"/>
		<updated>2015-04-18T11:58:12Z</updated>

		<summary type="html">&lt;p&gt;Jan Dropmann: /* Bots on Twitter */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Python ==&lt;br /&gt;
&lt;br /&gt;
 Part I of [[GMU:Bots &#039;n&#039; Plots]].&lt;br /&gt;
&lt;br /&gt;
=== Homework ===&lt;br /&gt;
&lt;br /&gt;
* Create your Twitter Account&lt;br /&gt;
* Follow @botsnplots&lt;br /&gt;
* Create Participant Page&lt;br /&gt;
* Play on the [[Playground]]&lt;br /&gt;
* Look at the [[Help:Editing|Help Page]]&lt;br /&gt;
* Add 1 Bot to each category&lt;br /&gt;
* Download Processing!&lt;br /&gt;
* Play with Python Mode&lt;br /&gt;
&lt;br /&gt;
== Introduction to Social Bots ==&lt;br /&gt;
=== How do you spot a bot? ===&lt;br /&gt;
* [[wikipedia:Turing Test|Turing Test]]&lt;br /&gt;
&lt;br /&gt;
=== A little history of chatter bots ===&lt;br /&gt;
* [http://loebner.net/Prizef/loebner-prize.html Loebner Prize]&lt;br /&gt;
* From [[wikipedia:ELIZA|ELIZA]] to [[wikipedia:Siri|SIRI]] to [[wikipedia:Her (film)|HER]]&lt;br /&gt;
&lt;br /&gt;
=== A little history of plotter bots ===&lt;br /&gt;
* [http://www.kurzweilcyberart.com/aaron/ AARON]&lt;br /&gt;
* 1960s Computer Art &lt;br /&gt;
** [http://dada.compart-bremen.de/item/agent/15 Georg Nees]&lt;br /&gt;
** [http://dada.compart-bremen.de/item/agent/68 Frieder Nake]&lt;br /&gt;
** [http://dada.compart-bremen.de/item/agent/13 Manfred Mohr]&lt;br /&gt;
** [http://dada.compart-bremen.de/item/agent/14 Vera Molnar]&lt;br /&gt;
* [http://doc.gold.ac.uk/creativemachine/artworks/ Creative Machine Exhibition] at Goldsmiths&lt;br /&gt;
&lt;br /&gt;
=== A little history of computer poetry ===&lt;br /&gt;
* Vocal Art&lt;br /&gt;
** [http://www.ubu.com/sound/ursonate.html Ursonate] (Kurt Schwitters)&lt;br /&gt;
** [http://www.flong.com/projects/ursonography/ Ursonography] (Golan Levin)&lt;br /&gt;
** [https://vimeo.com/38471196 Konsonant] (Jörg Piringer)&lt;br /&gt;
* Narrative&lt;br /&gt;
** Morphology of the Folktale (Vladimir Propp)&lt;br /&gt;
** The Great Automatic Grammatizator (Roald Dahl)&lt;br /&gt;
** Data-Driven Journalism&lt;br /&gt;
&lt;br /&gt;
=== Creativity ===&lt;br /&gt;
* [[wikipedia:Computational creativity|Computational Creativity]]&lt;br /&gt;
* Jon McCormack: Computers and Creativity, ISBN 9781283631525&lt;br /&gt;
&lt;br /&gt;
=== Bots on Twitter ===&lt;br /&gt;
* Systema Naturae of Bots&lt;br /&gt;
* [http://www.gamesbyangelina.org/talks/codecamp.pdf A Brief History of the Future of Twitter Bots] (Michael Cook)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
** Feeds&lt;br /&gt;
*** [http://www.twitter.com/big_ben_clock Big Ben Clock]&lt;br /&gt;
*** [http://twitter.com/kinbot Lake Kinneret Bot]&lt;br /&gt;
*** [http://www.twitter.com/everyword everyword]&lt;br /&gt;
*** [https://twitter.com/sandwiches_bot Random Sandwich]&lt;br /&gt;
*** [https://twitter.com/netflix_bot Netflix Bot]&lt;br /&gt;
*** [https://twitter.com/factbot1 Fact Bot]&lt;br /&gt;
*** [https://twitter.com/feedsynbot Feed Bot]&lt;br /&gt;
** Watchers &lt;br /&gt;
*** [https://twitter.com/HugsToTheRescue Hug Bot]&lt;br /&gt;
*** [https://twitter.com/YesYoureRacist Yes you&#039;re racist]&lt;br /&gt;
*** [https://twitter.com/bgebot BGE]&lt;br /&gt;
** Interactives&lt;br /&gt;
*** [http://twitter.com/oliviataters olivia taters]&lt;br /&gt;
*** [https://twitter.com/wikisext how 2 sext]&lt;br /&gt;
** Imagebots &lt;br /&gt;
*** [https://twitter.com/imgblur Img Blur]&lt;br /&gt;
*** [https://twitter.com/ClipArtBot Clip Art Bot]&lt;br /&gt;
** Feats&lt;br /&gt;
** Mashups&lt;br /&gt;
***[https://twitter.com/algo_news Algo News]&lt;br /&gt;
** Bot-on-Bot&lt;br /&gt;
** Statements&lt;br /&gt;
*** [https://twitter.com/NRA_Tally NRA Tally]&lt;br /&gt;
*** [https://twitter.com/NSA_PRISMbot NSA Prismbot]&lt;br /&gt;
** Meat&lt;br /&gt;
*** [https://twitter.com/GooglePoetics Google Poetics]&lt;br /&gt;
*** [https://twitter.com/Horse_ebooks Horse ebook]&lt;br /&gt;
&lt;br /&gt;
* [http://golancourses.net/2015/category/31-bot/ Bot Class] by Golan Levin&lt;br /&gt;
&lt;br /&gt;
== Learning to use the Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Using the Wiki + the Mailinglist ===&lt;br /&gt;
* [[Help:Editing|Using the Wiki]]&lt;br /&gt;
* [[GMU:Mailinglist|Using the Mailinglist]]&lt;br /&gt;
&lt;br /&gt;
=== Using Twitter ===&lt;br /&gt;
* The [https://support.twitter.com/articles/166337-the-twitter-glossary# Twitter Glossary]&lt;br /&gt;
* &#039;&#039;[https://twitter.com/signup Sign The Fxxk Up!]&#039;&#039; and follow [http://twitter.com/botsnplots @botsnplots]&lt;br /&gt;
* Twitter Apps and the Twitter API&lt;br /&gt;
&lt;br /&gt;
=== Using Python in Processing ===&lt;br /&gt;
* [http://processing.org/download/ Get Processing!]&lt;br /&gt;
* [http://py.processing.org Processing Python Mode]&lt;br /&gt;
** [http://py.processing.org/reference/ Reference]&lt;br /&gt;
** [http://py.processing.org/tutorials/ Tutorials]&lt;br /&gt;
&lt;br /&gt;
=== Using iPython Notebooks ===&lt;br /&gt;
&lt;br /&gt;
* iPython (interactive Python, runs in the browser)&lt;br /&gt;
** Play with it [https://tmpnb.org/ here]&lt;br /&gt;
** Explore iPython Notebooks [http://nbviewer.ipython.org/ here]&lt;br /&gt;
&lt;br /&gt;
* Jupyter (Class-Environment for iPython)&lt;br /&gt;
** We will set up our own Jupyter server for you.&lt;br /&gt;
** Nice Example of browser based python using Jupyter [https://www.youtube.com/watch?v=iSGXOU5C3sQ here] (by Doug Blank)&lt;br /&gt;
&lt;br /&gt;
== Learn Programming in Python ==&lt;br /&gt;
* Commands&lt;br /&gt;
* Variables&lt;br /&gt;
* Control Flow&lt;br /&gt;
* Functions&lt;br /&gt;
* Dictionaries, Lists, Sets&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
&lt;br /&gt;
  TO BE DONE&lt;br /&gt;
&lt;br /&gt;
=== Literature ===&lt;br /&gt;
&lt;br /&gt;
==== Python Books ====&lt;br /&gt;
&lt;br /&gt;
  TO BE DONE&lt;br /&gt;
&lt;br /&gt;
{{PythonBooks}}&lt;br /&gt;
&lt;br /&gt;
==== Processing Books ====&lt;br /&gt;
{{ProcessingBooks}}&lt;/div&gt;</summary>
		<author><name>Jan Dropmann</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Part1&amp;diff=71523</id>
		<title>GMU:Bots &#039;n&#039; Plots/Part1</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Part1&amp;diff=71523"/>
		<updated>2015-04-18T11:54:45Z</updated>

		<summary type="html">&lt;p&gt;Jan Dropmann: /* Bots on Twitter */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Python ==&lt;br /&gt;
&lt;br /&gt;
 Part I of [[GMU:Bots &#039;n&#039; Plots]].&lt;br /&gt;
&lt;br /&gt;
=== Homework ===&lt;br /&gt;
&lt;br /&gt;
* Create your Twitter Account&lt;br /&gt;
* Follow @botsnplots&lt;br /&gt;
* Create Participant Page&lt;br /&gt;
* Play on the [[Playground]]&lt;br /&gt;
* Look at the [[Help:Editing|Help Page]]&lt;br /&gt;
* Add 1 Bot to each category&lt;br /&gt;
* Download Processing!&lt;br /&gt;
* Play with Python Mode&lt;br /&gt;
&lt;br /&gt;
== Introduction to Social Bots ==&lt;br /&gt;
=== How do you spot a bot? ===&lt;br /&gt;
* [[wikipedia:Turing Test|Turing Test]]&lt;br /&gt;
&lt;br /&gt;
=== A little history of chatter bots ===&lt;br /&gt;
* [http://loebner.net/Prizef/loebner-prize.html Loebner Prize]&lt;br /&gt;
* From [[wikipedia:ELIZA|ELIZA]] to [[wikipedia:Siri|SIRI]] to [[wikipedia:Her (film)|HER]]&lt;br /&gt;
&lt;br /&gt;
=== A little history of plotter bots ===&lt;br /&gt;
* [http://www.kurzweilcyberart.com/aaron/ AARON]&lt;br /&gt;
* 1960s Computer Art &lt;br /&gt;
** [http://dada.compart-bremen.de/item/agent/15 Georg Nees]&lt;br /&gt;
** [http://dada.compart-bremen.de/item/agent/68 Frieder Nake]&lt;br /&gt;
** [http://dada.compart-bremen.de/item/agent/13 Manfred Mohr]&lt;br /&gt;
** [http://dada.compart-bremen.de/item/agent/14 Vera Molnar]&lt;br /&gt;
* [http://doc.gold.ac.uk/creativemachine/artworks/ Creative Machine Exhibition] at Goldsmiths&lt;br /&gt;
&lt;br /&gt;
=== A little history of computer poetry ===&lt;br /&gt;
* Vocal Art&lt;br /&gt;
** [http://www.ubu.com/sound/ursonate.html Ursonate] (Kurt Schwitters)&lt;br /&gt;
** [http://www.flong.com/projects/ursonography/ Ursonography] (Golan Levin)&lt;br /&gt;
** [https://vimeo.com/38471196 Konsonant] (Jörg Piringer)&lt;br /&gt;
* Narrative&lt;br /&gt;
** Morphology of the Folktale (Vladimir Propp)&lt;br /&gt;
** The Great Automatic Grammatizator (Roald Dahl)&lt;br /&gt;
** Data-Driven Journalism&lt;br /&gt;
&lt;br /&gt;
=== Creativity ===&lt;br /&gt;
* [[wikipedia:Computational creativity|Computational Creativity]]&lt;br /&gt;
* Jon McCormack: Computers and Creativity, ISBN 9781283631525&lt;br /&gt;
&lt;br /&gt;
=== Bots on Twitter ===&lt;br /&gt;
* Systema Naturae of Bots&lt;br /&gt;
* [http://www.gamesbyangelina.org/talks/codecamp.pdf A Brief History of the Future of Twitter Bots] (Michael Cook)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
** Feeds&lt;br /&gt;
*** [http://www.twitter.com/big_ben_clock Big Ben Clock]&lt;br /&gt;
*** [http://twitter.com/kinbot Lake Kinneret Bot]&lt;br /&gt;
*** [http://www.twitter.com/everyword everyword]&lt;br /&gt;
*** [https://twitter.com/sandwiches_bot Random Sandwich]&lt;br /&gt;
*** [https://twitter.com/netflix_bot Netflix Bot]&lt;br /&gt;
*** [https://twitter.com/factbot1 Fact Bot]&lt;br /&gt;
** Watchers &lt;br /&gt;
*** [https://twitter.com/HugsToTheRescue Hug Bot]&lt;br /&gt;
*** [https://twitter.com/YesYoureRacist Yes you&#039;re racist]&lt;br /&gt;
*** [https://twitter.com/bgebot BGE]&lt;br /&gt;
** Interactives&lt;br /&gt;
*** [http://twitter.com/oliviataters olivia taters]&lt;br /&gt;
*** [https://twitter.com/wikisext how 2 sext]&lt;br /&gt;
** Imagebots &lt;br /&gt;
*** [https://twitter.com/imgblur Img Blur]&lt;br /&gt;
*** [https://twitter.com/ClipArtBot Clip Art Bot]&lt;br /&gt;
** Feats&lt;br /&gt;
** Mashups&lt;br /&gt;
***[https://twitter.com/algo_news Algo News]&lt;br /&gt;
** Bot-on-Bot&lt;br /&gt;
** Statements&lt;br /&gt;
*** [https://twitter.com/NRA_Tally NRA Tally]&lt;br /&gt;
*** [https://twitter.com/NSA_PRISMbot NSA Prismbot]&lt;br /&gt;
** Meat&lt;br /&gt;
*** [https://twitter.com/GooglePoetics Google Poetics]&lt;br /&gt;
*** [https://twitter.com/Horse_ebooks Horse ebook]&lt;br /&gt;
&lt;br /&gt;
* [http://golancourses.net/2015/category/31-bot/ Bot Class] by Golan Levin&lt;br /&gt;
&lt;br /&gt;
== Learning to use the Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Using the Wiki + the Mailinglist ===&lt;br /&gt;
* [[Help:Editing|Using the Wiki]]&lt;br /&gt;
* [[GMU:Mailinglist|Using the Mailinglist]]&lt;br /&gt;
&lt;br /&gt;
=== Using Twitter ===&lt;br /&gt;
* The [https://support.twitter.com/articles/166337-the-twitter-glossary# Twitter Glossary]&lt;br /&gt;
* &#039;&#039;[https://twitter.com/signup Sign The Fxxk Up!]&#039;&#039; and follow [http://twitter.com/botsnplots @botsnplots]&lt;br /&gt;
* Twitter Apps and the Twitter API&lt;br /&gt;
&lt;br /&gt;
=== Using Python in Processing ===&lt;br /&gt;
* [http://processing.org/download/ Get Processing!]&lt;br /&gt;
* [http://py.processing.org Processing Python Mode]&lt;br /&gt;
** [http://py.processing.org/reference/ Reference]&lt;br /&gt;
** [http://py.processing.org/tutorials/ Tutorials]&lt;br /&gt;
&lt;br /&gt;
=== Using iPython Notebooks ===&lt;br /&gt;
&lt;br /&gt;
* iPython (interactive Python, runs in the browser)&lt;br /&gt;
** Play with it [https://tmpnb.org/ here]&lt;br /&gt;
** Explore iPython Notebooks [http://nbviewer.ipython.org/ here]&lt;br /&gt;
&lt;br /&gt;
* Jupyter (Class-Environment for iPython)&lt;br /&gt;
** We will set up our own Jupyter server for you.&lt;br /&gt;
** Nice Example of browser based python using Jupyter [https://www.youtube.com/watch?v=iSGXOU5C3sQ here] (by Doug Blank)&lt;br /&gt;
&lt;br /&gt;
== Learn Programming in Python ==&lt;br /&gt;
* Commands&lt;br /&gt;
* Variables&lt;br /&gt;
* Control Flow&lt;br /&gt;
* Functions&lt;br /&gt;
* Dictionaries, Lists, Sets&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
&lt;br /&gt;
  TO BE DONE&lt;br /&gt;
&lt;br /&gt;
=== Literature ===&lt;br /&gt;
&lt;br /&gt;
==== Python Books ====&lt;br /&gt;
&lt;br /&gt;
  TO BE DONE&lt;br /&gt;
&lt;br /&gt;
{{PythonBooks}}&lt;br /&gt;
&lt;br /&gt;
==== Processing Books ====&lt;br /&gt;
{{ProcessingBooks}}&lt;/div&gt;</summary>
		<author><name>Jan Dropmann</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Part1&amp;diff=71522</id>
		<title>GMU:Bots &#039;n&#039; Plots/Part1</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Part1&amp;diff=71522"/>
		<updated>2015-04-18T11:51:50Z</updated>

		<summary type="html">&lt;p&gt;Jan Dropmann: /* Bots on Twitter */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Python ==&lt;br /&gt;
&lt;br /&gt;
 Part I of [[GMU:Bots &#039;n&#039; Plots]].&lt;br /&gt;
&lt;br /&gt;
=== Homework ===&lt;br /&gt;
&lt;br /&gt;
* Create your Twitter Account&lt;br /&gt;
* Follow @botsnplots&lt;br /&gt;
* Create Participant Page&lt;br /&gt;
* Play on the [[Playground]]&lt;br /&gt;
* Look at the [[Help:Editing|Help Page]]&lt;br /&gt;
* Add 1 Bot to each category&lt;br /&gt;
* Download Processing!&lt;br /&gt;
* Play with Python Mode&lt;br /&gt;
&lt;br /&gt;
== Introduction to Social Bots ==&lt;br /&gt;
=== How do you spot a bot? ===&lt;br /&gt;
* [[wikipedia:Turing Test|Turing Test]]&lt;br /&gt;
&lt;br /&gt;
=== A little history of chatter bots ===&lt;br /&gt;
* [http://loebner.net/Prizef/loebner-prize.html Loebner Prize]&lt;br /&gt;
* From [[wikipedia:ELIZA|ELIZA]] to [[wikipedia:Siri|SIRI]] to [[wikipedia:Her (film)|HER]]&lt;br /&gt;
&lt;br /&gt;
=== A little history of plotter bots ===&lt;br /&gt;
* [http://www.kurzweilcyberart.com/aaron/ AARON]&lt;br /&gt;
* 1960s Computer Art &lt;br /&gt;
** [http://dada.compart-bremen.de/item/agent/15 Georg Nees]&lt;br /&gt;
** [http://dada.compart-bremen.de/item/agent/68 Frieder Nake]&lt;br /&gt;
** [http://dada.compart-bremen.de/item/agent/13 Manfred Mohr]&lt;br /&gt;
** [http://dada.compart-bremen.de/item/agent/14 Vera Molnar]&lt;br /&gt;
* [http://doc.gold.ac.uk/creativemachine/artworks/ Creative Machine Exhibition] at Goldsmiths&lt;br /&gt;
&lt;br /&gt;
=== A little history of computer poetry ===&lt;br /&gt;
* Vocal Art&lt;br /&gt;
** [http://www.ubu.com/sound/ursonate.html Ursonate] (Kurt Schwitters)&lt;br /&gt;
** [http://www.flong.com/projects/ursonography/ Ursonography] (Golan Levin)&lt;br /&gt;
** [https://vimeo.com/38471196 Konsonant] (Jörg Piringer)&lt;br /&gt;
* Narrative&lt;br /&gt;
** Morphology of the Folktale (Vladimir Propp)&lt;br /&gt;
** The Great Automatic Grammatizator (Roald Dahl)&lt;br /&gt;
** Data-Driven Journalism&lt;br /&gt;
&lt;br /&gt;
=== Creativity ===&lt;br /&gt;
* [[wikipedia:Computational creativity|Computational Creativity]]&lt;br /&gt;
* Jon McCormack: Computers and Creativity, ISBN 9781283631525&lt;br /&gt;
&lt;br /&gt;
=== Bots on Twitter ===&lt;br /&gt;
* Systema Naturae of Bots&lt;br /&gt;
* [http://www.gamesbyangelina.org/talks/codecamp.pdf A Brief History of the Future of Twitter Bots] (Michael Cook)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
** Feeds&lt;br /&gt;
*** [http://www.twitter.com/big_ben_clock Big Ben Clock]&lt;br /&gt;
*** [http://twitter.com/kinbot Lake Kinneret Bot]&lt;br /&gt;
*** [http://www.twitter.com/everyword everyword]&lt;br /&gt;
*** [https://twitter.com/sandwiches_bot Random Sandwich]&lt;br /&gt;
*** [https://twitter.com/netflix_bot Netflix Bot]&lt;br /&gt;
*** [https://twitter.com/factbot1 Fact Bot]&lt;br /&gt;
** Watchers &lt;br /&gt;
*** [https://twitter.com/HugsToTheRescue Hug Bot]&lt;br /&gt;
*** [https://twitter.com/YesYoureRacist Yes you&#039;re racist]&lt;br /&gt;
** Interactives&lt;br /&gt;
*** [http://twitter.com/oliviataters olivia taters]&lt;br /&gt;
*** [https://twitter.com/wikisext how 2 sext]&lt;br /&gt;
** Imagebots &lt;br /&gt;
*** [https://twitter.com/imgblur Img Blur]&lt;br /&gt;
*** [https://twitter.com/ClipArtBot Clip Art Bot]&lt;br /&gt;
** Feats&lt;br /&gt;
** Mashups&lt;br /&gt;
***[https://twitter.com/algo_news Algo News]&lt;br /&gt;
** Bot-on-Bot&lt;br /&gt;
** Statements&lt;br /&gt;
*** [https://twitter.com/NRA_Tally NRA Tally]&lt;br /&gt;
*** [https://twitter.com/NSA_PRISMbot NSA Prismbot]&lt;br /&gt;
** Meat&lt;br /&gt;
*** [https://twitter.com/GooglePoetics Google Poetics]&lt;br /&gt;
*** [https://twitter.com/Horse_ebooks Horse ebook]&lt;br /&gt;
&lt;br /&gt;
* [http://golancourses.net/2015/category/31-bot/ Bot Class] by Golan Levin&lt;br /&gt;
&lt;br /&gt;
== Learning to use the Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Using the Wiki + the Mailinglist ===&lt;br /&gt;
* [[Help:Editing|Using the Wiki]]&lt;br /&gt;
* [[GMU:Mailinglist|Using the Mailinglist]]&lt;br /&gt;
&lt;br /&gt;
=== Using Twitter ===&lt;br /&gt;
* The [https://support.twitter.com/articles/166337-the-twitter-glossary# Twitter Glossary]&lt;br /&gt;
* &#039;&#039;[https://twitter.com/signup Sign The Fxxk Up!]&#039;&#039; and follow [http://twitter.com/botsnplots @botsnplots]&lt;br /&gt;
* Twitter Apps and the Twitter API&lt;br /&gt;
&lt;br /&gt;
=== Using Python in Processing ===&lt;br /&gt;
* [http://processing.org/download/ Get Processing!]&lt;br /&gt;
* [http://py.processing.org Processing Python Mode]&lt;br /&gt;
** [http://py.processing.org/reference/ Reference]&lt;br /&gt;
** [http://py.processing.org/tutorials/ Tutorials]&lt;br /&gt;
&lt;br /&gt;
=== Using iPython Notebooks ===&lt;br /&gt;
&lt;br /&gt;
* iPython (interactive Python, runs in the browser)&lt;br /&gt;
** Play with it [https://tmpnb.org/ here]&lt;br /&gt;
** Explore iPython Notebooks [http://nbviewer.ipython.org/ here]&lt;br /&gt;
&lt;br /&gt;
* Jupyter (Class-Environment for iPython)&lt;br /&gt;
** We will set up our own Jupyter server for you.&lt;br /&gt;
** Nice Example of browser based python using Jupyter [https://www.youtube.com/watch?v=iSGXOU5C3sQ here] (by Doug Blank)&lt;br /&gt;
&lt;br /&gt;
== Learn Programming in Python ==&lt;br /&gt;
* Commands&lt;br /&gt;
* Variables&lt;br /&gt;
* Control Flow&lt;br /&gt;
* Functions&lt;br /&gt;
* Dictionaries, Lists, Sets&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
&lt;br /&gt;
  TO BE DONE&lt;br /&gt;
&lt;br /&gt;
=== Literature ===&lt;br /&gt;
&lt;br /&gt;
==== Python Books ====&lt;br /&gt;
&lt;br /&gt;
  TO BE DONE&lt;br /&gt;
&lt;br /&gt;
{{PythonBooks}}&lt;br /&gt;
&lt;br /&gt;
==== Processing Books ====&lt;br /&gt;
{{ProcessingBooks}}&lt;/div&gt;</summary>
		<author><name>Jan Dropmann</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Part1&amp;diff=71519</id>
		<title>GMU:Bots &#039;n&#039; Plots/Part1</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Part1&amp;diff=71519"/>
		<updated>2015-04-18T11:47:26Z</updated>

		<summary type="html">&lt;p&gt;Jan Dropmann: /* Bots on Twitter */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Python ==&lt;br /&gt;
&lt;br /&gt;
 Part I of [[GMU:Bots &#039;n&#039; Plots]].&lt;br /&gt;
&lt;br /&gt;
=== Homework ===&lt;br /&gt;
&lt;br /&gt;
* Create your Twitter Account&lt;br /&gt;
* Follow @botsnplots&lt;br /&gt;
* Create Participant Page&lt;br /&gt;
* Play on the [[Playground]]&lt;br /&gt;
* Look at the [[Help:Editing|Help Page]]&lt;br /&gt;
* Add 1 Bot to each category&lt;br /&gt;
* Download Processing!&lt;br /&gt;
* Play with Python Mode&lt;br /&gt;
&lt;br /&gt;
== Introduction to Social Bots ==&lt;br /&gt;
=== How do you spot a bot? ===&lt;br /&gt;
* [[wikipedia:Turing Test|Turing Test]]&lt;br /&gt;
&lt;br /&gt;
=== A little history of chatter bots ===&lt;br /&gt;
* [http://loebner.net/Prizef/loebner-prize.html Loebner Prize]&lt;br /&gt;
* From [[wikipedia:ELIZA|ELIZA]] to [[wikipedia:Siri|SIRI]] to [[wikipedia:Her (film)|HER]]&lt;br /&gt;
&lt;br /&gt;
=== A little history of plotter bots ===&lt;br /&gt;
* [http://www.kurzweilcyberart.com/aaron/ AARON]&lt;br /&gt;
* 1960s Computer Art &lt;br /&gt;
** [http://dada.compart-bremen.de/item/agent/15 Georg Nees]&lt;br /&gt;
** [http://dada.compart-bremen.de/item/agent/68 Frieder Nake]&lt;br /&gt;
** [http://dada.compart-bremen.de/item/agent/13 Manfred Mohr]&lt;br /&gt;
** [http://dada.compart-bremen.de/item/agent/14 Vera Molnar]&lt;br /&gt;
* [http://doc.gold.ac.uk/creativemachine/artworks/ Creative Machine Exhibition] at Goldsmiths&lt;br /&gt;
&lt;br /&gt;
=== A little history of computer poetry ===&lt;br /&gt;
* Vocal Art&lt;br /&gt;
** [http://www.ubu.com/sound/ursonate.html Ursonate] (Kurt Schwitters)&lt;br /&gt;
** [http://www.flong.com/projects/ursonography/ Ursonography] (Golan Levin)&lt;br /&gt;
** [https://vimeo.com/38471196 Konsonant] (Jörg Piringer)&lt;br /&gt;
* Narrative&lt;br /&gt;
** Morphology of the Folktale (Vladimir Propp)&lt;br /&gt;
** The Great Automatic Grammatizator (Roald Dahl)&lt;br /&gt;
** Data-Driven Journalism&lt;br /&gt;
&lt;br /&gt;
=== Creativity ===&lt;br /&gt;
* [[wikipedia:Computational creativity|Computational Creativity]]&lt;br /&gt;
* Jon McCormack: Computers and Creativity, ISBN 9781283631525&lt;br /&gt;
&lt;br /&gt;
=== Bots on Twitter ===&lt;br /&gt;
* Systema Naturae of Bots&lt;br /&gt;
* [http://www.gamesbyangelina.org/talks/codecamp.pdf A Brief History of the Future of Twitter Bots] (Michael Cook)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
** Feeds&lt;br /&gt;
*** [http://www.twitter.com/big_ben_clock Big Ben Clock]&lt;br /&gt;
*** [http://twitter.com/kinbot Lake Kinneret Bot]&lt;br /&gt;
*** [http://www.twitter.com/everyword everyword]&lt;br /&gt;
*** [https://twitter.com/sandwiches_bot Random Sandwich]&lt;br /&gt;
*** [https://twitter.com/netflix_bot Netflix Bot]&lt;br /&gt;
*** [https://twitter.com/factbot1 Fact Bot]&lt;br /&gt;
** Watchers &lt;br /&gt;
*** [https://twitter.com/HugsToTheRescue Hug Bot]&lt;br /&gt;
*** [https://twitter.com/YesYoureRacist Yes you&#039;re racist]&lt;br /&gt;
** Interactives&lt;br /&gt;
*** [http://twitter.com/oliviataters olivia taters]&lt;br /&gt;
*** [https://twitter.com/wikisext how 2 sext]&lt;br /&gt;
** Imagebots &lt;br /&gt;
*** [https://twitter.com/imgblur Img Blur]&lt;br /&gt;
*** [https://twitter.com/ClipArtBot Clip Art Bot]&lt;br /&gt;
** Feats&lt;br /&gt;
** Mashups&lt;br /&gt;
***[https://twitter.com/algo_news Algo News]&lt;br /&gt;
** Bot-on-Bot&lt;br /&gt;
** Statements&lt;br /&gt;
** Meat&lt;br /&gt;
*** [https://twitter.com/GoogleLyrik Google Lyrik]&lt;br /&gt;
*** [https://twitter.com/Horse_ebooks Horse ebook]&lt;br /&gt;
&lt;br /&gt;
* [http://golancourses.net/2015/category/31-bot/ Bot Class] by Golan Levin&lt;br /&gt;
&lt;br /&gt;
== Learning to use the Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Using the Wiki + the Mailinglist ===&lt;br /&gt;
* [[Help:Editing|Using the Wiki]]&lt;br /&gt;
* [[GMU:Mailinglist|Using the Mailinglist]]&lt;br /&gt;
&lt;br /&gt;
=== Using Twitter ===&lt;br /&gt;
* The [https://support.twitter.com/articles/166337-the-twitter-glossary# Twitter Glossary]&lt;br /&gt;
* &#039;&#039;[https://twitter.com/signup Sign The Fxxk Up!]&#039;&#039; and follow [http://twitter.com/botsnplots @botsnplots]&lt;br /&gt;
* Twitter Apps and the Twitter API&lt;br /&gt;
&lt;br /&gt;
=== Using Python in Processing ===&lt;br /&gt;
* [http://processing.org/download/ Get Processing!]&lt;br /&gt;
* [http://py.processing.org Processing Python Mode]&lt;br /&gt;
** [http://py.processing.org/reference/ Reference]&lt;br /&gt;
** [http://py.processing.org/tutorials/ Tutorials]&lt;br /&gt;
&lt;br /&gt;
=== Using iPython Notebooks ===&lt;br /&gt;
&lt;br /&gt;
* iPython (interactive Python, runs in the browser)&lt;br /&gt;
** Play with it [https://tmpnb.org/ here]&lt;br /&gt;
** Explore iPython Notebooks [http://nbviewer.ipython.org/ here]&lt;br /&gt;
&lt;br /&gt;
* Jupyter (Class-Environment for iPython)&lt;br /&gt;
** We will set up our own Jupyter server for you.&lt;br /&gt;
** Nice Example of browser based python using Jupyter [https://www.youtube.com/watch?v=iSGXOU5C3sQ here] (by Doug Blank)&lt;br /&gt;
&lt;br /&gt;
== Learn Programming in Python ==&lt;br /&gt;
* Commands&lt;br /&gt;
* Variables&lt;br /&gt;
* Control Flow&lt;br /&gt;
* Functions&lt;br /&gt;
* Dictionaries, Lists, Sets&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
&lt;br /&gt;
  TO BE DONE&lt;br /&gt;
&lt;br /&gt;
=== Literature ===&lt;br /&gt;
&lt;br /&gt;
==== Python Books ====&lt;br /&gt;
&lt;br /&gt;
  TO BE DONE&lt;br /&gt;
&lt;br /&gt;
{{PythonBooks}}&lt;br /&gt;
&lt;br /&gt;
==== Processing Books ====&lt;br /&gt;
{{ProcessingBooks}}&lt;/div&gt;</summary>
		<author><name>Jan Dropmann</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Jan_Dropmann&amp;diff=71494</id>
		<title>GMU:Bots &#039;n&#039; Plots/Jan Dropmann</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots/Jan_Dropmann&amp;diff=71494"/>
		<updated>2015-04-15T18:24:32Z</updated>

		<summary type="html">&lt;p&gt;Jan Dropmann: new page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;Welcome to my new Wiki-Page&#039;&#039;&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Jan Dropmann</name></author>
	</entry>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots&amp;diff=71489</id>
		<title>GMU:Bots &#039;n&#039; Plots</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=GMU:Bots_%27n%27_Plots&amp;diff=71489"/>
		<updated>2015-04-15T18:23:20Z</updated>

		<summary type="html">&lt;p&gt;Jan Dropmann: /* Participants */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Bots-n-plots-maillardet-drawing.png|thumb|left|300px|&#039;&#039;Drawing by [[wikipedia:Maillardet&#039;s automaton|the Draughtsman-Writer Bot]] ca. 1800&#039;&#039;]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bots &#039;n&#039; Plots &amp;amp;mdash; Malen nach 0 und 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[:Category:Werkmodul|Werkmodul]]/[[:Category:Fachmodul|Fachmodul]]&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Lecturer:&#039;&#039; [[User:ms|Martin Schneider]]&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Credits:&#039;&#039; 6 [[ECTS]], 4 [[SWS]]&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Date:&#039;&#039; Wednesday 17:00 - 20:30 Uhr &amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Venue:&#039;&#039; [[Marienstraße 7b]], Room 204&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;First meeting:&#039;&#039; Wednesday, 15. Apr. 2015&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NEWS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;The Deadline has been extended by 24 hours :)&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;You need to apply until 24:00 on April 13th, 2015.&#039;&#039;&#039;&lt;br /&gt;
 Applications after the deadline will not be taken into consideration.&lt;br /&gt;
 I will let you know if you made it onto the list on April 14th.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Follow [http://twitter.com/botsnplots @botsnplots] on Twitter!&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The internet of things is infiltrating the social web.&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;A rich ecosystem of social bots is evolving right now.&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Those bots range from the purposeful via the poetic to the philosophical.&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;And they are starting to talk to each other.&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the Bots &#039;n&#039; Plots course, we will create little robots that doodle and babble.  &amp;lt;br&amp;gt;&lt;br /&gt;
Our robots will be based in software, but we will also learn how to connect them with the physical world, using vision sound and serial connections.  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the course of the class you will:&lt;br /&gt;
&lt;br /&gt;
* Learn programming with Python&lt;br /&gt;
* Process images and text&lt;br /&gt;
* Create generative drawings and poems&lt;br /&gt;
* Use APIs for the social web, including Twitter and Mediawiki&lt;br /&gt;
* Create your own software bots and make them talk to each other&lt;br /&gt;
&lt;br /&gt;
The course requires no previous programming experience.&lt;br /&gt;
&lt;br /&gt;
As a result of the course you will acquire fundamental programming skills that will enable you to take more advanced courses in the future. &amp;lt;br&amp;gt;&lt;br /&gt;
It is recommended to combine the course with the [[GMU:eval(nature)|eval(nature) module]].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beschreibung ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Das Internet der Dinge erobert die sozialen Netzwerke.&#039;&#039;  &amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Im Augenblick entwickelt sich ein vielfältiges Ökosystem sozialer Bots.&#039;&#039;  &amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Die Bots decken ein weites Spektrum ab, vom Praktischen, über Poetisches bis hin zum Philosophischen.&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Und sie fangen an miteinander zu kommunizieren...&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;Malen nach 0 und 1&#039;&#039; werden wir kleine Roboter erschaffen, die kritzeln und brabbeln. &amp;lt;br&amp;gt;&lt;br /&gt;
Unsere Roboter bestehen aus Nullen und Einsen, aber wir werden auch lernen sie mit der materiellen Welt zu verbinden, wobei Kameras, Töne und Kabel zum Einsatz kommen. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Rahmen des Moduls werdet ihr:&lt;br /&gt;
&lt;br /&gt;
* Programmieren mit Python lernen&lt;br /&gt;
* Grafik und Text verarbeiten&lt;br /&gt;
* Generative Grafiken und Gedichte erzeugen&lt;br /&gt;
* APIs für Soziale Netzwerke nutzen, inkl. Twitter und Mediawiki&lt;br /&gt;
* Eigene Software-Bots entwickeln und sie dazu bringen miteinander zu reden.&lt;br /&gt;
&lt;br /&gt;
Dieses Modul erfordert keine Programmierkentnisse.&lt;br /&gt;
&lt;br /&gt;
Im Rahmen des Kurses werden grundlegende Programmierkentnisse vermittelt, die es ermöglichen in Zukunft fortgeschrittene Kurse zu belegen.&amp;lt;br&amp;gt;&lt;br /&gt;
Es wird empfohlen diesen Kurs mit dem Projekt-Modul [[GMU:eval(nature)|eval(nature)]] zu kombinieren.&lt;br /&gt;
&lt;br /&gt;
== Language ==&lt;br /&gt;
&lt;br /&gt;
The course will be in English, unless all participants are speaking German.&lt;br /&gt;
&lt;br /&gt;
== Eligible Participants ==&lt;br /&gt;
&lt;br /&gt;
Undergraduates and graduates enrolled in the faculties of:&lt;br /&gt;
&lt;br /&gt;
* Media Art/Design&lt;br /&gt;
* Visual Communication&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Burning Interest in Artificial Intelligence, Computer-Linguistics and Generative Design&lt;br /&gt;
* Previous course about the Internet of Things highly recommended&lt;br /&gt;
* Working knowledge of Web Technologies (HTML, CSS, Javascript ...)&lt;br /&gt;
* Time and Devotion for lots of coding homework, which may be frustrating at times&lt;br /&gt;
* Programming experience considered helpful&lt;br /&gt;
&lt;br /&gt;
== Application ==&lt;br /&gt;
&lt;br /&gt;
The deadline to apply for this course is April 13th, 2015&lt;br /&gt;
&lt;br /&gt;
 You need to provide links to previous work to be elligible to this course.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;To:&#039;&#039;&#039; [[User:ms|Martin Schneider]]&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Subject:&#039;&#039;&#039; Bots n Plots /// Application&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Content:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Please provide links to three of your visual, poetic or algorithmic works online.&lt;br /&gt;
# Please answer these questions:&lt;br /&gt;
#* What is your favourite bot on twitter?&lt;br /&gt;
#* What kind of bot would you like to be able to create at the end of the course?&lt;br /&gt;
# Please tell us about you:&lt;br /&gt;
#* program and semester (Studienprogramm und Fachsemester)&lt;br /&gt;
#* matriculation number (Matrikelnummer)&lt;br /&gt;
#* Valid email address @uni-weimar.de (no other mailing addresses will be accepted) [[SCC-Services#E-Mail|Why?]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
 This is the outline of the course.&lt;br /&gt;
 The details may still be subject to change.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Theme !! Topic !!  Date &lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[/Part1|Part 1: Python]]&lt;br /&gt;
| 01: Programming I&lt;br /&gt;
| 15. April 2015&lt;br /&gt;
|-&lt;br /&gt;
| 02: Programming II&lt;br /&gt;
| 22. April 2015&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | [[/Part2|Part 2: Plotter Bots]]&lt;br /&gt;
| 03: Drawing and Plotting I&lt;br /&gt;
| 29. April 2015&lt;br /&gt;
|-&lt;br /&gt;
| 04: Drawing and Plotting II&lt;br /&gt;
| 06. May 2015&lt;br /&gt;
|-&lt;br /&gt;
| 05: Image Processing I&lt;br /&gt;
| 13. May 2015&lt;br /&gt;
|-&lt;br /&gt;
| 06: Image Processing II&lt;br /&gt;
| 20. May 2015&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | [[/Part3|Part 3: Chatter Bots]]&lt;br /&gt;
| 07: Language Processing I&lt;br /&gt;
| 27. May 2015&lt;br /&gt;
|-&lt;br /&gt;
| 08: Language Processing II&lt;br /&gt;
| 03. June 2015&lt;br /&gt;
|-&lt;br /&gt;
| 09: Generating Poetry&lt;br /&gt;
| 10. June 2015&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | [[/Part4|Part 4: Social Bots]]&lt;br /&gt;
| 10: Twitter Bots I&lt;br /&gt;
| 17. June 2015&lt;br /&gt;
|-&lt;br /&gt;
| 11: Twitter Bots II&lt;br /&gt;
| 24. June 2015&lt;br /&gt;
|-&lt;br /&gt;
| 12: Wiki Bots I&lt;br /&gt;
| 01. July 2015&lt;br /&gt;
|-&lt;br /&gt;
| 13: Wiki Bots II&lt;br /&gt;
| 08. July 2015&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Evaluation ==&lt;br /&gt;
&lt;br /&gt;
* Presence and active participation (required)&lt;br /&gt;
* Punctual and complete submission of homework (required)&lt;br /&gt;
&lt;br /&gt;
* 50% Technical and aesthetic execution of the final bot project&lt;br /&gt;
* 20% Emergent behaviour from making the robots talk&lt;br /&gt;
* 20% Documentation of the final project&lt;br /&gt;
* 10% Contribution to the MediaWiki&lt;br /&gt;
&lt;br /&gt;
== Participants ==&lt;br /&gt;
&lt;br /&gt;
* [[GMU:Bots_&#039;n&#039;_Plots/Sebastian Stang|Sebastian Stang]]&lt;br /&gt;
* [[GMU:Bots_&#039;n&#039;_Plots/Maria Degand|Maria Degand]]&lt;br /&gt;
* [[GMU:Bots_&#039;n&#039;_Plots/Klaus Kraemer|Klaus Kraemer]]&lt;br /&gt;
* [[GMU:Bots_&#039;n&#039;_Plots/Angelica Sohn|Angelica Sohn]]&lt;br /&gt;
* [[GMU:Bots_&#039;n&#039;_Plots/Luis Hurtarte|Luis Hurtarte]]&lt;br /&gt;
* [[GMU:Bots_&#039;n&#039;_Plots/Apasri Titatarn|Apasri Titatarn]]&lt;br /&gt;
* [[GMU:Bots_&#039;n&#039;_Plots/Jan Dropmann|Jan Dropmann]]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
Here are a couple of links that should give you an idea of where this course is heading ...&lt;br /&gt;
&lt;br /&gt;
=== Learning Python ===&lt;br /&gt;
* [http://www.codecademy.com/en/tracks/python Learn Python] at Code Academy&lt;br /&gt;
=== Image Processing ===&lt;br /&gt;
* [http://software-carpentry.org/v4/media/ Multimedia Programming] by Software Carpentry&lt;br /&gt;
=== Video Processing ===&lt;br /&gt;
* [https://zulko.github.io/moviepy/ MoviePy] by Zulko&lt;br /&gt;
* [https://zulko.github.io/blog/2014/09/20/vector-animations-with-python/ Vector Animations with Python]&lt;br /&gt;
=== Language Processing ===&lt;br /&gt;
* [http://h6o6.com/2013/03/using-python-and-the-nltk-to-find-haikus-in-the-public-twitter-stream/ Using Python and the NLTK to find Haikus in the public twitter stream]&lt;br /&gt;
* [http://dhconnelly.com/paip-python/docs/paip/eliza.html Eliza.py]&lt;br /&gt;
=== Twitter ===&lt;br /&gt;
* [https://zulko.github.io/blog/2014/07/26/a-tweets-controlled-python-script/|A Python Script controlled via Twitter]&lt;br /&gt;
&lt;br /&gt;
== Literature ==&lt;br /&gt;
* Bird, Steven: &#039;&#039;Natural Language Processing with Python&#039;&#039; ISBN 978-0596516499 ([http://www.nltk.org/book/ online])&lt;br /&gt;
* Lobin, Hennig:&#039;&#039;Computerlinguistik und Texttechnologie&#039;&#039; ISBN 978-3825232825 &lt;br /&gt;
* Russel, Mathew: &#039;&#039;Mining the Social Web&#039;&#039; ISBN 978-1449367619&lt;br /&gt;
* Segaran, Toby&#039;&#039;: Programming Collective Intelligence&#039;&#039; ISBN 978-0596529321&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
This is a list of recommended books for the Python language:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{PythonBooks}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Beazley, David: &#039;&#039;Python Cookbook&#039;&#039; ISBN 978-1449340377 &lt;br /&gt;
* Blum, Richard: &#039;&#039;Python Programming for Raspberry Pi&#039;&#039; ISBN 978-0789752055 &lt;br /&gt;
* Chan, Jamie: &#039;&#039;Learn Python in One Day and Learn it Well&#039;&#039; ISBN 978-1506094380&lt;br /&gt;
* Zelle, John: &#039;&#039;Python Programming: An Introduction to Computer Science&#039;&#039; ISBN 978-1590282410 ([http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.111.6062 online])&lt;br /&gt;
&lt;br /&gt;
=== Further Reading ===&lt;br /&gt;
There are a couple of books in the Semesterapparat of [[Society of Networked Things]], that you might want to flip trough.&lt;br /&gt;
&lt;br /&gt;
[[Category:SS15]]&lt;br /&gt;
[[Category:Werkmodul]]&lt;br /&gt;
[[Category:Fachmodul]]&lt;br /&gt;
[[Category:Martin Schneider]]&lt;br /&gt;
[[Category:Python]]&lt;br /&gt;
[[Category:Gestaltung]]&lt;br /&gt;
[[Category:Design]]&lt;br /&gt;
[[Category:Poetry]]&lt;br /&gt;
[[Category:Generative Gestaltung]]&lt;br /&gt;
[[Category:Robots]]&lt;/div&gt;</summary>
		<author><name>Jan Dropmann</name></author>
	</entry>
</feed>