You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1176 lines
84 KiB
Plaintext

3 years ago
{
"cells": [
{
"cell_type": "code",
"execution_count": 6,
"id": "6f73330a-e0d5-4d22-a4c7-246b928394e9",
"metadata": {},
"outputs": [],
"source": [
"import os\n",
"import frontmatter\n",
"from datetime import datetime\n",
"import pypandoc"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "3d183b25-72fb-4b90-a639-188a68e02fc1",
"metadata": {},
"outputs": [],
"source": [
"def list_folders(folder):\n",
" ''' Return all the folders in a folder '''\n",
" names = []\n",
" for entry in os.scandir(folder):\n",
" # add to the list only proper files\n",
" if not entry.name.startswith('.') and entry.is_dir():\n",
" # remove the extension from the filename\n",
" names.append(entry.name)\n",
" return names\n",
"\n",
"def get_md_contents(filename, directory='./contents'):\n",
" ''' Return contents from a filename as frontmatter handler '''\n",
" with open(f\"{directory}/{filename}\", \"r\") as f:\n",
" metadata, content = frontmatter.parse(f.read())\n",
" return metadata, content\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "a7b4d409-d42d-4a74-b093-10ace148cc71",
"metadata": {
"scrolled": true,
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"===Text ⛵ Lifeboats=== \n",
"''What if we could use some excerpts from all of what we are reading now as lifeboats in a sea of text?''\n",
"==== Text Traversing ====\n",
"\n",
"* Which texts will you traverse? will you make a “quote landscape” from the different texts brought today or stay with one single text?\n",
"* Identify patterns / gather observations / draw the relations between the words/paragraphs/sounds\n",
"* What are markers of orientation you would like to set for this text?\n",
"* Where should the reader turn?\n",
"* What are the rhythms in the text and how can they be amplified/interrupted/multiplied?\n",
"* Make a score or a diagram or a script to be performed out loud\n",
"\n",
"==== Process ====\n",
"\n",
"What if we could use some excerpts from all of what we are reading now as lifeboats in a sea of text? An attempt to play around with the continous permutations between contents and contexts.\n",
"\n",
"===Text Weaving=== \n",
"''Weave two texts, like warp and weft''\n",
"==== Slow Processing ====\n",
"\n",
"* if ''NLTK'' is a form of mapping language, vltk is a form of mapping language from a particular vantage point\n",
"* pick a text or a collection of texts from the pad from last week or the one of this week\n",
"* choose a linguistic pattern to apply over the text, for example: all verbs, every third word of a sentence, the 50 most used words, collocations you observe, words with multiple meanings, x of y, question marks etc. the processing can be both manual or automatic.\n",
"* what is the output?\n",
"\n",
"Weaved with Jian and Emma\n",
"\n",
"===Chat Reader=== \n",
"''Transform a text (ok no, actually a CSV file) into a chat''\n",
"==== Reader Prototyping ====\n",
"\n",
"* take suggested methods, use something we already used already - work on it, elaborate, dont exclude what weve been doing with Manetta, Michael and Cristina go in smaller groups/individually and make a prototype - network of texts,\n",
"* something visual, reworking of something and what it can be a sensible way to explain to people\n",
"* come together at 15:30? and we share what weve done - talk about how can we stitch it together to make a reader\n",
"\n",
"==== Aggregating different things ~ output: chat form ====\n",
"\n",
"===== Levels =====\n",
"\n",
"* 🏸 1 touch the inputs\n",
"* 🏸 2 overlap/merge them a bit\n",
"* 🏸 3 mesh them completely\n",
"\n",
"===== Process =====\n",
"\n",
"* 🏏 take an academic text and turn it into a chat - translating into vernacular;\n",
"* 🏏 simplify the text\n",
"* 🏏 break it into chats\n",
"* 🏏 illustrate some bits\n",
"\n",
"Starting from a difficult but relatable text: our [https://pad.xpub.nl/p/SP16_0510 multi voiced pad] of the day.<br />\n",
"Parsed here: [https://cryptpad.fr/sheet/#/2/sheet/edit/N5uOS8x5Nu28ZiXPSk+kF-um/ Spreadsheet ghost]\n",
"\n",
"===== Rules to manipulate text: =====\n",
"\n",
"* 🏑 table of contents - shorts contents - tag them\n",
"* 🏑 turn into chat bubbles\n",
"* 🏑 illustrate a few\n",
"\n",
"===== Rules of text simplification (as ⛳️ objective ⛳️ as possible): =====\n",
"\n",
"* 🏓 simple sentences\n",
"* 🏓 on point\n",
"* 🏓 short paragraphs and short chapter\n",
"* 🏓 title on each paragraph\n",
"* 🏓 text could become image caption/illustrate chapters/graphs?\n",
"* 🏓 page number\n",
"* 🏓 navigation (table of contents)\n",
"\n",
"===== Demo online: [[chat/|Chat_a_pad]] =====\n",
"\n",
"===== Demo offline: =====\n",
"\n",
"<video src=\"/soupboat/~kamo/static/video/chat_reader.mp4\" autoplay loop>\n",
"</video>\n",
"===Cam Transcript=== \n",
"''10 minutes transcription from Insecam webcams''\n",
"==== Video Transcribing ====\n",
"\n",
"[https://pad.xpub.nl/p/SP16_1210 SI16 - with Cristina and Manetta]\n",
"\n",
"In groups of 2-3:\n",
"\n",
"# Decide a video to transcribe (max 10 min)\n",
"# If you cant decide on one, take 3-5 minutes to think about a subject of everyday knowledge that is particular to a location/group. Record yourself telling the story\n",
"# Transcribe individually either the video or your own recording\n",
"# Compare the transcriptions\n",
"\n",
"fun with Kimberley + Carmen\n",
"\n",
"===🥣 Soup-gen=== \n",
"''A soup aggregator for the next 2 years''\n",
"\n",
"===Rejection 🧠⛈️=== \n",
"''Round glossary just for fun ok''\n",
"\n",
"===🎵 K-PUB=== \n",
"''Karaoke as a mean of republishing''\n",
"==== Karaoke as a mean of republishing ====\n",
"\n",
"The idea is easy: take some songs, take some texts, and merge them through the logic of karaoke. For our first issue we want to work with Simon Weils diaries as text material and Franco Battiatos songs as musical starting point.\n",
"\n",
"Using a popular and performative device such as karaoke we want to join different voices. Not only the ones from the people singing, but also from all the different authors that participate in this event: the writer of texts, the composer of musical bases and the musicians that will perform them. This project started as a joke and eventually growed because we saw a lot of potential in it.\n",
"\n",
"[[File:/soupboat/~kamo/static/img/k-pub/karaoke_recipe.png|frame|none|alt=|caption karaoke recipe]]\n",
"\n",
"==== Christmas Update ====\n",
"\n",
"Ok we got the room of the little Room for Sound at WdkA: nice. So here is a list of things we need and a list of things to do:\n",
"\n",
"===== TODO: =====\n",
"\n",
"* text from simone weil\n",
"** select excerpts\n",
"** excerpts to lyrics\n",
"* audio from franco battiato\n",
"** select songs\n",
"** find or write midi files\n",
"** sound design\n",
"** performance mode\n",
"* visual\n",
"** finish setup record mode (excerpts → lyrics)\n",
"** setup playback mode\n",
"** design\n",
"** development\n",
"* performance\n",
"** call musicians\n",
"** space setup\n",
"** technical setup\n",
"** comunication\n",
"** documentation\n",
"** pubblication\n",
"* residency\n",
"** daily contents to be published on their radio (readings, log, musical experiemnts…)\n",
"\n",
"===== workflow for 1 song: =====\n",
"\n",
"# select text excerpts\n",
"# select song\n",
"# song to midi\n",
"## if there is already a midi: cleanup: split and join tracks meaningfully\n",
"## if not: song transcription\n",
"# karaoke recording\n",
"## input: midi song, text excerpts\n",
"## process: performative conversion, excerpt to lyrics tool\n",
"## output: karaoke midi song with text track\n",
"# karaoke performance\n",
"## input: karaoke midi song\n",
"## output: karaoke text, karaoke midi\n",
"### midi → text, display the text for singin along\n",
"### midi → audio, for live playing and real time sound design of the song\n",
"### midi → visual, for live visual effects\n",
"\n",
"===== people we need: =====\n",
"\n",
"* musician (at least 1 to start with) (micalis? gambas? others?)\n",
"* visual (open call? or we can do it on our own for this)\n",
"* event logic &amp; logistic (chae? gersande? etc? if anyone wants to take care of the setup it would be super cool)\n",
"* documentation (pinto? carmen? etc?)\n",
"\n",
"===🏓 PADliography=== \n",
"''Fetching all our pads from the PZI wiki with API magic''\n",
"\n",
"===Pimp the Soupboat WS=== \n",
"''Crash HTML_CSS workshop for our dear XPUB1 fellows''\n",
"\n",
"===Concrete 🎏 Label=== \n",
"''A tool for annotating visual contents''\n",
"How could computer read concrete &amp; visual poetry? How does computer navigate through text objects in which layout and graphical elements play a fundamental role?\n",
"\n",
"With this tool you can upload an image and then annotate it spatially. In doing so you generate a transcription of the image that keeps track of the order of your annotations (and so the visual path you take when reading the image), as well as their position and size.\n",
"\n",
"Neither the image nor the labels nor the transcription will be uploaded online. Everything happen in your browser.\n",
"\n",
"'''a join research with Supi 👹👺'''\n",
"\n",
"===SI16 API node.js + express prototype=== \n",
"''Test for an API-based special issue''\n",
"==== Test for an API-based special issue ====\n",
"\n",
"* The backend is developed with node.js and express\n",
"* Each URL is mapped to a python script. The argument are passed to the script, processed and then returned as JSON\n",
"* We start with 2 functions: 1. a find and replace and 2. a shout\n",
"\n",
"('''update:''' hei this is not active anymore! [[issue.xpub.nl/16|but we really did an API at the end!]] aha!)\n",
"\n",
"==== Wait what why an API ====\n",
"\n",
"[[File:/soupboat/~kamo/static/img/api_bikes.jpg|frame|none|alt=|caption two half bikes attacched with tape and two kids pretty satisfied with their work]]\n",
"\n",
"This is to show what an API could be in relation to the exercises we usually do during the prototyping class. It is a way to render public a piece of work that usually stays behind several layers of accessibility. The idea of the special issue as an API could be a curated collection of what we are doing since september within a critical context. 🤯\n",
"\n",
"===== Find and Replace =====\n",
"\n",
"Find a target string in a text and replace it with the given replacement. The parameters are three.\n",
"\n",
"* <code>text</code> the text in which perform the research\n",
"* <code>target</code> the string we are searching for\n",
"* <code>replacement</code> the string we want to insert in place of the target\n",
"\n",
"The endpoint is:<br />\n",
"<code>https://hub.xpub.nl/soupboat/cat-api/replace?text={text}&amp;target={target}&amp;replacement={replacement}</code>\n",
"\n",
"===SI16 Structure Proposal=== \n",
"''Imaging the SI16 as an API ecosystem''\n",
"==== Overview ====\n",
"\n",
"The special issue is composed of three main parts: the library, the projects and the launch event. Each one of these has a slightly different nature, and so can access to different kinds of public. Imaging the SI16 as an ecosystem around these three faces permits us to create an organic form of public: someone comes for the event and discovers an API, someone else arrives from the code and is introduced to the critical context around it, each project tho is situated in a specific thematic niche and the interactions with the whole ecosystem could provide fresh air to spin mill.\n",
"\n",
"A systematic approach in the contents structure enables us to morph our projects without sacrifice the unique nature of each work. Whats more is that with a clear data structure we can deliver contents in different forms with less effort and less stress.\n",
"\n",
"The following structure is a draft. The order of the elements is not defined nor fixed. Some things are not mandatory, but would be nice and useful to have them if we think to the future life of the SP16 after the launch. The idea is to build something easy to scale, to expand, and to update. Something easy to participate. As an ecosystem some parts are more likely to grow and to evolve, and to provide a good soil as starting point maybe is the best thing we can do?\n",
"\n",
"==== 1. Library ====\n",
"\n",
"===== A collection of modules and tools within a context =====\n",
"\n",
"The library is the main container of the SP16. It provides a list of algorithms and describes the world in which they operate. This world is our source of truth: it is built from all the corpora we will aggregate and use for the projects, as well as other critical contributions, inquiries about the vernacular, and guide to navigate through all the materials. Ultimately a library, or a toolkit, is orientated. Its political stance stands not only in its contents, but also in the way it grants access to them. The relation between authors and public is not based only on power, but here also in trust, and collaboration, and dependency, and mutuality.\n",
"\n",
"Hence the library is part contents, part tools, part documentation, part showcase. These sections could be open and do not have to be perceived as finished. A library is always a work in progress, a work that we are starting now, a work that then someone else can continue.\n",
"\n",
"Beside the contents and their structure, the library also include a showcase section to display all the projects we are working on now. This section strengths the link between the special issue as a publication and the special issue as an event. In order to preserve the original approach of each project an in depth record of each work is provided here. It is perceived as something sprouting from the library. Are the projects and the special issue publication the same thing? Maybe not, but for sure they are deeply related.\n",
"\n",
"[[File:/soupboat/~kamo/static/img/lib-structure.svg|frame|none|alt=|caption Library]]\n",
"\n",
"* '''Title''', The name of the library\n",
"* '''Description''', An overview of what it does, how and why does it exist\n",
"* '''Context''', A collection of materials (researches, essays, excerpts, …) that situate this library in relation with the vernacular\n",
"** '''Manifesto''', Our attitude, our purposes, our plan. It could work as an introduction to the special issue\n",
"*** '''Our plan''', A summary of the research in terms of intentions\n",
"*** '''Our attitude''', An overview of the different approaches we used\n",
"*** '''Our purposes''', What do we want to achieve or encourage\n",
"** '''Materials - Corpora''', Collections of materials used as sources or collected for the projects\n",
"*** '''Corpus''', Single corpus of materials used as sources for the projects\n",
"**** '''Title''', A title for the corpus\n",
"**** '''Description''', An overview of the contents and how they are structured\n",
"**** '''Type''', The kind of materials included\n",
"**** '''Structure''', A description of the structure of the contents\n",
"**** '''Contents''', List of contents\n",
"*** '''…''', […other corpus in the list]\n",
"** '''Research and Development''', A collection of contribuitions (researches, essays, excerpts, …) that situate this library in relation with the vernacular\n",
"*** '''SP16 History''', Evolution of the SP16 work, devlog, excerpts from the pads, etc\n",
"*** '''List of contribuitions''', Collection of essays, excerpts from the texts read in class, piece from the tutors, from us, etc\n",
"**** '''Contribuition''', Single contribuition in the list\n",
"***** '''Title''', Title of the contribuition\n",
"***** '''Description''', Description of the contribution\n",
"***** '''Subject''', Theme of the contribution\n",
"***** '''Contents''', Contents of the contribuition\n",
"***** '''Credits''', Credits and references\n",
"**** '''…''', […other contribuitions in the list]\n",
"** '''Guide''', Presentation of the form of the SI16 and its structure, how to read it and navigate it\n",
"*** '''Getting started''', First steps into the SP16 as an API\n",
"*** '''What is a documentation''', How the documentation is structured\n",
"*** '''Learning how to walk while catwalking''', Navigation through the special issue\n",
"* '''Showcase - List of Projects Documentations'''S, howcase of full fledged and meaningful project built within and from the library, list of projects documentations\n",
"** '''Project Documentation''', Documentation of a project\n",
"*** '''Contents''', Extended description of the project, including the research, the process and the future possibilities\n",
"**** '''Research''', Background of the work, field of intrests, ideas, theory, etc\n",
"**** '''Process''', History of the work, process of development, prototyping, etc\n",
"**** '''Outcomes''', Results of the research and synthesis of the process\n",
"**** '''Direction''', Possibilities for the evolution of the project, new applications, ideas, findings\n",
"*** '''Documentation''', Nice showcase of the work\n",
"**** '''Text''', Textual description of project and key findings\n",
"**** '''Visual''', Visual documentation such as pictures, videos, etc\n",
"**** '''*''', Other specifications are unique for each project\n",
"*** '''References''', Reference to the corpora or materials used and to the tool involved during the production\n",
"**** '''Materials''', Corpora and sources used or created for the project\n",
"**** '''Theory''', References for specific theoric notes\n",
"**** '''Codes''', Modules, functions and parts of the library involved in the work\n",
"** '''…''', […other projects documentations in the showcase]\n",
"* '''List of Modules''', A list of all the different code approaches, or modules, that compose the library\n",
"** '''Module''', A thematic or reasoned group of functions\n",
"*** '''Title''', The name of the module\n",
"*** '''Decription''', A description of what it does\n",
"*** '''Applications''', Examples of applications that use several functions to build complex procedures\n",
"*** '''List of functions''', A list of functions\n",
"**** '''Function''', A single function in the module\n",
"***** '''Title''', The name of the function or algorithm\n",
"***** '''Description''', A description of what it does\n",
"***** '''Input''', The types of inputs it receives\n",
"***** '''Codes''', The procedure it follows\n",
"***** '''Output''', The types of outputs it returns\n",
"***** '''Example''', Simple and specific examples\n",
"**** '''…''', […other functions in the module]\n",
"*** '''…''', […other modules in the library]\n",
"\n",
"==== 2. Project ====\n",
"\n",
"===== Full fledged and meaningful work built within and from the library =====\n",
"\n",
"The main feature of having several serious different projects is both that we can explore different shades of the vernacular language processing and that we can access to different kinds of public. It is true that we are in needs for more time now, but at the same time having different projects to work on\n",
"\n",
"[[File:/soupboat/~kamo/static/img/proj-structure.svg|frame|none|alt=|caption Library]]\n",
"\n",
"* '''Title''', Title of the project\n",
"* '''Description''', Description of the project\n",
"* '''Colophon''', Credits and colophon\n",
"* '''Project Object''', Concrete outcomes of the project\n",
"** '''Object''', Concrete result of the work\n",
"** '''*''', Specifications are unique for each project\n",
"* '''Project Documentation''', Documentation of the project\n",
"** '''Contents''', Extended description of the project, including the research, the process and the future possibilities\n",
"*** '''Research''', Background of the work, field of intrests, ideas, theory, etc\n",
"*** '''Process''',History of the work, process of development, prototyping, etc\n",
"*** '''Outcomes''', Results of the research and synthesis of the process\n",
"*** '''Direction''', Possibilities for the evolution of the project, new applications, ideas, findings\n",
"** '''Documentation''',Nice showcase of the work\n",
"*** '''Text''', Textual description of project and key findings\n",
"*** '''Visual''',Visual documentation such as pictures, videos, etc\n",
"*** '''*''', Other specifications are unique for each project\n",
"** '''References''', Reference to the corpora or materials used and to the tool involved during the production\n",
"*** '''Corpora''', Corpora and sources used or created for the project\n",
"*** '''Theory/contributions''',References for specific theoric notes\n",
"*** '''Codes''', Modules, functions and parts of the library involved in the work\n",
"\n",
"==== 3. Launch ====\n",
"\n",
"===== @Varia on 17.12.2021 =====\n",
"\n",
"[[File:/soupboat/~kamo/static/img/launch-structure.svg|frame|none|alt=|caption Library]]\n",
"\n",
"* '''Space setup''', Display and physical setup of the space\n",
"* '''List of presentations''', List of moments in which the different contents of the SP16 are presented to the public\n",
"** '''Presentation''', Moment like performance, presentation, talk, workshop, panel, etc\n",
"*** '''Title''', Title of the presentation\n",
"*** '''Description''', Description of the presentation\n",
"*** '''Subject''', Theme of the contribution\n",
"*** '''Type''', Kind of presentation: talk, panel, showcase of a project, performance, etc\n",
"*** '''Contents''', Contents and theme of the presentation\n",
"** '''…''', […other presentations in the list]\n",
"* '''List of projects objects''', List of physical outcomes from the projects\n",
"** '''Project Object''', Concrete outcomes of the project\n",
"*** '''Object''', Concrete result of the work\n",
"*** '''*''', Specifications are unique for each project\n",
"** '''…''', […other project object in the list]\n",
"\n",
"===SI16 API Strapi+Nuxt.js prototype=== \n",
"''Test for a Strapi based backend + Nuxt.js frontend for the SI16''\n",
"A little test for the Special Issue 16 website developed with Nuxt.js for the frontend and Strapi as CMS / backend. Our Python functions can be uploaded in the CMS and then exposed as an API for the public usage.\n",
"\n",
"<video src=\"/soupboat/~kamo/static/video/test-strapi-python.mp4\" autoplay loop>\n",
"</video>\n",
"<video src=\"/soupboat/~kamo/static/video/test-si16-nuxt.mp4\" autoplay loop>\n",
"</video>\n",
"===SI16 Frontend Proposal=== \n",
"''Proposal for the SI16 website''\n",
"==== Design proposal ====\n",
"\n",
"A super teamwork with Chae, Emma, Supi + the incredible visual package from the Visual Identity group You can see the final result at [https://issue.xpub.nl/16 Learning How to Walk while Catwalking]\n",
"\n",
"[[File:/soupboat/~kamo/static/img/si16-frontend/Intro.jpg|frame|none|alt=|caption Library]]\n",
"\n",
"[[File:/soupboat/~kamo/static/img/si16-frontend/Home.jpg|frame|none|alt=|caption Library]]\n",
"\n",
"[[File:/soupboat/~kamo/static/img/si16-frontend/About.jpg|frame|none|alt=|caption Library]]\n",
"\n",
"[[File:/soupboat/~kamo/static/img/si16-frontend/Snippet%20Research.jpg|frame|none|alt=|caption Library]]\n",
"\n",
"[[File:/soupboat/~kamo/static/img/si16-frontend/Manifesto.jpg|frame|none|alt=|caption Library]]\n",
"\n",
"[[File:/soupboat/~kamo/static/img/si16-frontend/Functions.jpg|frame|none|alt=|caption Library]]\n",
"\n",
"[[File:/soupboat/~kamo/static/img/si16-frontend/Function.jpg|frame|none|alt=|caption Library]]\n",
"\n",
"[[File:/soupboat/~kamo/static/img/si16-frontend/Projects.jpg|frame|none|alt=|caption Library]]\n",
"\n",
"[[File:/soupboat/~kamo/static/img/si16-frontend/Project%20Documentation.jpg|frame|none|alt=|caption Library]]\n",
"\n",
"[[File:/soupboat/~kamo/static/img/si16-frontend/Showcase.jpg|frame|none|alt=|caption Library]]\n",
"\n",
"===Spawn Sticker=== \n",
"''simple & flexible & adhesive''\n",
"A script that let you add stickers on top of HTML elements. To make it works just add a <code>data-sticker</code> attribute to your element. The content of the sticker will be the value of the attribute.\n",
"\n",
"<source lang=\"html\"><div data-sticker='Hello'>World</div></source>\n",
"<div data-sticker=\"???\">\n",
"\n",
"This script was used for the SI16 - Learning how to walk while cat-walking website. This is a simplified version. In the original one we had to deal with fixed elements (such as the header / nav of the pages) as well as relative ones. So the code there is a bit messier, but this one here its simple and clean.\n",
"\n",
"\n",
"</div>\n",
"<h2 data-sticker=\"tell us more\">\n",
"How does it work\n",
"</h2>\n",
"The code its composed of 3 main functions: one to <span data-sticker=\"createSticker\">create</span> the sticker, one to <span data-sticker=\"spawnSticker\">spawn and attach</span> it to an element, and a last one to <span data-sticker=\"throttle\">limit the amount</span> of stickers spawned at once.\n",
"\n",
"<div data-sticker=\"wait for it\">\n",
"\n",
"propper documentation coming sooon\n",
"\n",
"\n",
"</div>\n",
"<!-- Collect all the elements with the data-sticker attribute\n",
"```js\n",
"const stickerSpawners = document.querySelectorAll(\"[data-sticker]\");\n",
"```\n",
"\n",
"Create the -->\n",
"===Annotation Compass=== \n",
"''A tool for gathering situated impressions in order to create individual, vernacular and poetic readings of various inputs''\n",
"This project is a multiplayer branch of the Concrete Label tool, developed in the context of the SI16 &amp;&amp;&amp; is a super collaboration with Supi, Jian, Kim, Alex, and Emma. The description is a porting of the documentation that you can find along with the various showcases on the [https://hub.xpub.nl/soupboat/si16/projects/annotation-compass/ SI16 website].\n",
"\n",
"How do we bring multi-vocality in the work of annotation? The Annotation Compass builds composites from aggregated vernacular impressions, rich of their subjectivity and situatedness. It is the outcome of a three months journey questioning the relationship between vernacular languages and natural language processing tools.\n",
"\n",
"==== First Experiments ====\n",
"\n",
"===== The living-room =====\n",
"\n",
"[[File:/soupboat/~kamo/static/img/map_description_H.jpg|frame|none|alt=|caption Supis livingroom]]\n",
"\n",
"For this experiment, four of us were gathered in a living-room.\n",
"\n",
"* Number of participants: 4\n",
"* Location: Supis living room\n",
"* Aim: Map out each participants impressions of the living room.\n",
"* Material: The living rooms floor plan, InDesign, computers…..\n",
"* Time-frame: 5 minutes\n",
"* Instructions: individually annotate the floor plan with impressions of the living room\n",
"\n",
"After removing the floor plan and looking at the subjective annotations of this experiment, we observed that each outcome forms another space. Each persons set of annotations brings a unique perspective of the living room , an individual map. We then layered the individual maps and the compilation resulted in a vernacular picture of the space. This alternative understanding of the space can only be given to a reader through those descriptions.\n",
"\n",
"===== Still from Michael Snows Wavelength =====\n",
"\n",
"[[File:https://pzwiki.wdka.nl/mw-mediadesign/images/3/3e/Selection_process_2.png|frame|none|alt=|caption Michael Snow, Wavelength]]\n",
"\n",
"The same method was applied to the photograph of a room. Each of us used a different set of coloured sticky notes and took 5 minutes to physically annotate the picture on the same surface. The picture was then removed from the background, resulting in a similar outcome as the experiment described above.\n",
"\n",
"From these observations, our interest on subjective annotations that could flow in a common understanding of an image grew. As a tool to collect situated impressions, we elaborated the idea of the Annotation Compass.\n",
"\n",
"On a given surface, such as an image, the tool facilitates the collection of annotations and their coordinates from various users simultaneously. These annotations represent individual knowledges and perspectives in regards to the given surface.\n",
"\n",
"[[File:https://pzwiki.wdka.nl/mw-mediadesign/images/3/32/Selection_process_3.png|Michael Snow, Wavelength]] [[File:https://pzwiki.wdka.nl/mw-mediadesign/images/2/2b/Selection_process_4.png|Michael Snow, Wavelength]]\n",
"\n",
"==== Instructions ====\n",
"\n",
"To use this tool, lets consider the “host” any person interested in gathering annotation on a specific image; and the “guest” any person invited by the host to annotate the image.\n",
"\n",
"===== Process for the host =====\n",
"\n",
"# upload an image\n",
"# add a text to explain the context of the image or to give instructions and helpful advice to the guests\n",
"# send link to guests and invite them to annotate\n",
"# download a json-file or text-file that contains the collected data that was gathered so far\n",
"# try the different functions of SI16 to filter the collected dat\n",
"\n",
"===== Process for the guest =====\n",
"\n",
"# open the link sent by the host\n",
"# read the information attached to the image by the host\n",
"# use the cursor to select a specific area that you want to annotate\n",
"# write and insert your annotation(s)a\n",
"\n",
"==== The data ====\n",
"\n",
"The Tool not only archives the annotations, but also additional meta-data that can be helpful to analyze the outcome. The collected data is stored in a “json-file” that comes as a list of labels. In each label, one can find the file name of the annotated image, the coordinates of the annotation, the dimension of the annotation box, the annotation itself, the index number of the annotation and a user identification:\n",
"\n",
"<source lang=\"json\">{\n",
" \"image\": \"filename.jpg\",\n",
" \"position\": {\"x\": 12, \"y\": 97},\n",
" \"size\": {\"width\": 43, \"height\": 18},\n",
" \"text\": \"Content of the annotation\",\n",
" \"timestamp\": \"Wed, 01 Dec 2021 14:04:00 GMT\",\n",
" \"userID\": 123456789\n",
"}</source>\n",
"* <code>image</code>: a reference to the filename of the image\n",
"* <code>position</code>: x and y coordinates given in percentage, relative to the top left corner of the image\n",
"* <code>size</code>: width and height given in percentage, relative to the size of the image\n",
"* <code>text</code>: the text content of the label\n",
"* <code>timestamp</code>: the moment in which the label was uploaded\n",
"* <code>userID</code>: a random generated id to keep track of the autorship of the labels\n",
"\n",
"'''for the future:''' at some point could be intresting to something like a <code>components</code> property, in order to make the tool more flexible and open to plugin or integration. Ideally this property is a list of components, and each one can add some kind of info or metadata for specific usecases, without the need to rewrite all the code to make room for that.\n",
"\n",
"The outcome provided by the Annotation Compass is ever-changing: whenever an individual adds an annotation, the data grows.\n",
"\n",
"After applying the tool to different projects we observed that the collected data can offer a reflexion on the so called “objective”: It provides individual perceptions and builds a common experience by including a multiplicity of impressions rather than one objective definition. In conclusion, the Tool can be used to provide alternative ways to define images, images of space, texts, and anything else annotatable.\n",
"\n",
"==== Possible applications of the tool: ====\n",
"\n",
"* Ask individuals to annotate the space they are in at the moment.\n",
"* Ask individuals to annotate a space from memory.\n",
"* Ask individuals to annotate imaginary spaces. (e.g. a space from a dream, a fictional space they know from a novel, a place that exists but they never went …)\n",
"* Ask individuals to annotate a space before and after they went for the first time.\n",
"* Invite individuals to a space and ask them to annotate it as a performative act that is situated not only in space but also time.\n",
"* Ask individuals to annotate a space whenever they want (unlimited access).\n",
"* Ask individuals to annotate a public space.\n",
"* Ask individuals to annotate a whole city, country, continent …\n",
"* Ask individuals to annotate a private space.\n",
"* Ask individuals to annotate an indoor space (bedroom, library, central station, theatre …)\n",
"* Ask individuals to annotate an outdoor space (park, market place, beach …)\n",
"* Ask specific groups to annotate a space (queer, teenagers, people with disabilities, immigrants …)\n",
"* Ask individuals to annotate specific things, e.g. emotions, colors, surfaces, light …\n",
"* Ask individuals to only use specific glyphs (e.g. ! ? and ) or emojis to annotate the space to include those not confident using words.\n",
"* Encourage individuals to use their mother tongue / slang / informal language to annotate a space.\n",
"* Ask only one individual to give many annotations of a space over time (daily diary, yearly check-in …)\n",
"* Ask individuals to annotate different spaces (e.g. their own living rooms)\n",
"* Ask individuals to annotate a space without using a standard map but rather an empty sheet as a starting point.\n",
"* Ask individuals to annotate a space without using a standard map but rather an individual map or vernacular map as a starting point.\n",
"* Ask individuals to annotate a space without using a standard map but rather a photograph of a space as a starting point.\n",
"* Ask individuals to annotate a space in real life (e.g. using sticky notes, writing on plexiglass, interview) and use the tool to insert the data afterwards.\n",
"* annotate a photograph (portrait, scene, landscape …)\n",
"* annotate a painting\n",
"* annotate a text\n",
"* annotate a song/sound\n",
"* misusing the tool\n",
"\n",
"===SI16 Backend=== \n",
"''Flexible Flask app (~) for the SI16 API''\n",
"==== Familiar and flexible ====\n",
"\n",
"Each contribuition to the SI16 API was unique. Both the subgroups projects and their documentation had different voices, different ways of presenting the contents, and different needs. This specificity required a system that was structured enough to keep together each pace, but remained flexible, in order to let anyone express her own approach to the Special Issue.\n",
"\n",
"With the SI16 being at the same time a set of functions, a playground to experiment with it, and a list of meaningful projects developed within their context, we structured the backend as an interface between the different parts of the work.\n",
"\n",
"The main idea was to define a pipeline that was not so different from the processes and technologies we learned and explored during the first trimester.\n",
"\n",
"==== Functions ====\n",
"\n",
"We chose to work with the Jupiter Notebook format we were familiar with, as a way to both collect and document our functions. With a common protocol defined within us and some 🐍 pythonic 🐍 (''omg this term is cringe ah ah'') good practices, we wrote a Notebook for each function. In each file there was the definition of the function, as well as a propper documentation and some examples on how to use it.\n",
"\n",
"A big part of the backend work was to let anyone structure their own notebook freely, deciding how to present the process and the result of each contribuition without forcing a structure. At the end the Flask application was designed to scan all the <code>notebook</code> folder and extract from it the function, as well as their input and output, and the documentation.\n",
"\n",
"With those information we generated an interactive page for [https://hub.xpub.nl/soupboat/si16/functions/ each function] in which the user could try and play around with our functions exposed as an API.\n",
"\n",
"==== Projects ====\n",
"\n",
"The organic process of SI16 led us to a collection of several interconnected projects. Each one of them had grown around a specific implementation of the functions we developed for the API. Those complex applications were initally developed as standalone Flask app, and they were merged all together at the end. (''well, ok, after the end to be honest'')\n",
"\n",
"One thing we could do differently next time is to use Flasks <code>Blueprints</code> as a way to work in a more flexible way. At some point we were really struggling about how to manage the code and the collaboration on it. Now that we have an overview of how Python works, it could be nice to develop our projects in a more modular way. BTW we used the documentation pages as a gateway to the projects, in order to have a common starting point.\n",
"\n",
"Things got a bit complicated when the subgroup I was in started to working on sub-sub-project. And to face that we made the structure open to the possibility to nest projects one into the other, in order to have again flexibility between documentation and interaction on the website, and still a (kinda) structure in the filesystem.\n",
"\n",
"Actually: we were totally new into this, so probably half of the things we did were not just wrong, but illegal. BTW we are still learning so next time it will be better, deal with it.\n",
"\n",
"'''disclaimer''' there are some problems with the xpub git so the source code is still not totally public, but we are working on it. There the code is annotated and each function is documented so I will not go more in detail here for now.\n",
"\n",
"==== Project structure ====\n",
"\n",
"<pre>si16\n",
"├── contents\n",
"├── notebooks\n",
"├── projects\n",
"│ ├── and-i-wish-that-your-question-has-been-answered\n",
"│ ├── annotation-compass\n",
"│ │ └── showcases\n",
"│ └── etc-portal\n",
"├── si16.py\n",
"├── static\n",
"│ ├── corpora\n",
"│ ├── css\n",
"│ ├── event\n",
"│ ├── font\n",
"│ ├── img\n",
"│ ├── js\n",
"│ └── uploads\n",
"└── templates</pre>\n",
"* <code>contents</code> contains a list of markdown file for generic pages. For example the route <code>/si16/intro</code> will search and load the contents from the <code>intro.md</code> file in this folder.\n",
"* <code>notebooks</code> contains a list of Jupiter Notebook files, one for each function we developed for the API.\n",
"* <code>projects</code> contains a list of folder one for each subgroup project. Each one has a <code>documentation.md</code> file with the main contents and process of development.\n",
"* <code>showcases</code> is a optional folder in each project for nesting other sub projects in the sub project. Convoluted but useful and flexible.\n",
"* <code>si16.py</code> is the main module for the Flask app and the backend duties.\n",
"* <code>static</code> contains all the different files that are served statically from the webserver such as images, stylesheets, javascript files, etc.\n",
"* <code>templates</code> is a Flask folder that contains the HTML templates for generating the frontend pages.\n",
"\n",
"Ciao ciao\n",
"\n",
"===Soupboat CMS 00=== \n",
"''Micro JSON→HTML CMS for the first trimester''\n",
"==== A micro CMS ====\n",
"\n",
"During the first weeks at XPUB I spent some time trying to figure out how to archive and log the various projects going on. I felt to do it here in the Soupboat, because its more flexible and playful than the wiki, that remains of course the source of truth and the future-proof archiving system etc. etc. 👹👺\n",
"\n",
"After the second page though I was already ultra annoyed by the fact of rewriting or copy-pasting the HTML from a page to the other to keep at least a bit of style and structure and add contents manually. I wrote then a bit of code to have a default page and then used a JSON file filled with a list of projects. The script traversed this list and created a table with the basic informations about each one.\n",
"\n",
"The model for a project was something like that:\n",
"\n",
"<source lang=\"json\">{\n",
" \"title\": \"Text Weaving\",\n",
" \"date\": \"Oct 5, 2021\",\n",
" \"url\": \"10-05-2021-weaving/\",\n",
" \"git\": \"https://git.xpub.nl/kamo/text_weaving\",\n",
" \"pad\": \"https://pad.xpub.nl/p/replacing_cats\",\n",
" \"links\": [\n",
" {\n",
" \"url\": \"\",\n",
" \"title\": \"\",\n",
" }\n",
" ],\n",
" \"categories\": [\n",
" \"Python\",\n",
" \"NLTK\",\n",
" \"Text\"\n",
" ]\n",
"},</source>\n",
"Each proj has a title, a date, an URL to a dedicated page. Then a list of links: the git repository for sharing the source code and the pad, that are the two most common types of link, and then a list of generic other links, each one composed by an URL and a title. There is also a list of categories, in order to give some hints about the project.\n",
"\n",
"The dedicated page for a project could have been something somewhere in the Soupboat, or a subfolder in my personal folder.\n",
"\n",
"The structure of the whole thing was: an <code>index.html</code> page with a <code>cms.js</code> script and a <code>cms.json</code> file. (Such imagination in these filenames). Then a <code>style.css</code> and a <code>global.css</code> for sharing the style with the various projects.\n",
"\n",
"Not really a revolutionary CMS but a starting point. Ah ah\n",
"\n",
"Im writing this while im migrating everything into a flask based one, that will use more or less the same structure we developed for the SI16! Really happy with it. Good night\n",
"\n",
"===Temporality of the loot box=== \n",
"''Against instant rewarding''\n",
"==== Bill Viola opens a loot box ====\n",
"\n",
"The loot box implies a specific temporal dimension: the one with instant rewarding. When a player opens the loot box she receives immediate feedback. Sometimes it is dressed up with an aesthetic of suspense, but this is just cosmetics and the built-up climax often becomes just something undesired that the user wants (and even pay) to skip.\n",
"\n",
"In order to work with the idea of the loot box without re-enacting its toxic behavior and mechanics it could be interesting to hijack its temporality. By inflating the time between the purchasing and the result, we could create space for dig deeper in this complex and delicate topic.\n",
"\n",
"Loot box<br />\n",
"<code>pay ●--&gt;○ get</code>\n",
"\n",
"SI17 Loot Box<br />\n",
"<code>pay ●--things could happen here--&gt;○ get</code>\n",
"\n",
"This approach could help us in filling the loot box (tempo) without falling for the same addictive schemes that the industry is implementing for exploiting the players.\n",
"\n",
"'''Inflating the loot box means that the player could reclaim her own leisure time.''' If we focus on the temporal fruition of the l~b we can imagine to produce not only an object, but a time slot that the person from the public can reserve for herself. If we define this time slot as leisure time then we could create a sacred and safe space to take a rest and to arrest the acceleration of capital. Something like a checkpoint, speaking from a gaming point of view.\n",
"\n",
"An approach to deal with the temporal aspect in a way that doesnt feel forced could be to rely on ''real-yet-slow-time'' processes for the material production of the special issue. A digital manufacturing production could make a lot of sense in this context. 👀\n",
"\n",
"See the [[soupboat/~kamo/projects/loot-box-sealing-device/|loot—box—sealing—device]] for a concrete and 3d example\n",
"\n",
"===LOOT—BOX—SEALING—DEVICE=== \n",
"''Closing Pandora's 3D large jar''\n",
"==== 3D printed loot box? ====\n",
"\n",
"This is an idea that follows some intuitions regarding the [[soupboat/~kamo/projects/loot-box-temporality/|temporality of the loot box]].\n",
"\n",
"Imagine the loot box being 3D printed, and especially 3D printed on demand when the player want to buy it at Page Not Found or Varia or any other place we are going to distribute our work. 3D printing is a slow process, and in order to create a small piece you need to wait lets say an hour. When someone want to buy our loot box goes to PNF and ask for it, the 3d printing process begins and during the waiting time the player can access and navigate through the contents of our special issue. These contents are contained inside the temporality of the l~b, but they are not consumed instantaneously.\n",
"\n",
"[[File:/soupboat/~kamo/static/img/test-4d.jpg|frame|none|alt=|caption 3d sculpted loot boxes]]\n",
"\n",
"How do we want to deliver these contents? It could be related to the way of production of the physical l~b, for instance each player could contribute and shape the 3d model for the next player during the waiting time, and we can aggregate and collect narrations within and around the tools used in order to do so.\n",
"\n",
"In order to cover the expenses of a similar process part of the SI17 budget could cover the cost for some small 3D printers and printing material. The term of services of our special issue could allocate a certain amount of money from each purchase to self sustain the process (buying new printing material, etc)\n",
"\n",
"[[File:/soupboat/~kamo/static/img/test-5d.jpg|frame|none|alt=|caption 3d sculpted loot boxes]]\n",
"\n",
"==== The loot—box—sealing—device ====\n",
"\n",
"In the movie ''The NeverEnding Story'' based on the novel by Michael Ende, the two main characters are linked together by the Auryn. In the (fictional) real world the Auryn is a sigil on the cover of the (fictional) Neverending Story book that tells the tales of the land of Fantasia. In Fantasia, the Auryn is a magic medalion that the hero wears during his mission.\n",
"\n",
"[[File:/soupboat/~kamo/static/img/book_AURYN.jpg|Auryn from Neverending Story]] [[File:/soupboat/~kamo/static/img/atreyu_AURYN.jpg|Auryn from Neverending Story]]\n",
"\n",
"Here the Auryn acts as a seal: by removing it from the cover of the book the magical world of Fantasia begins to leak inside the (fictional) real world. Later on it will be the main character to fall inside the (fictional) book of the Neverending Story.\n",
"\n",
"This plot from Michael Ende resembles what happens when we play a game. Thanks to a weird device like a table game, a console or just a set of shared principles, we are able to flow into the [https://en.wikipedia.org/wiki/Magic_circle_(virtual_worlds) magic circle]. In the novel this happens with the main character reading a book, and while its true that every cultural object offers a certain degree of immersivity, the kind of agency, interaction and participation in the NeverEnding Story is something that reminds me more the act of playing.\n",
"\n",
"[[File:/soupboat/~kamo/static/img/seals1.jpg|frame|none|alt=|caption 3d sculpted seals]]\n",
"\n",
"To elaborate more on the 3D printed loot box: we could have a book and using the 3d printer to seal it with a new 3d sigil every time! In a way it is like '''sealing the loot box instead of opening it'''. As in the NeverEnding Story (but this is a recurrent magical trope) we would have a sigil connecting who is reading the book with another player. This connection will be not with a fictional character, but with a real person: the one that bought the previous book. There is something like the [https://pzwiki.wdka.nl/mediadesign/Glossary_of_productive_play#Reciprocity reciprocity] descripted by Mausse here, but is a reciprocity swimming backstroke: the player receives a gift from a past uknown fellow player, and leaves one for a future unkown one. In this way the reciprocity chain (sounds weird) goes spiral.\n",
"\n",
"[[File:/soupboat/~kamo/static/img/seals2.jpg|frame|none|alt=|caption 3d sculpted seals]]\n",
"\n",
"==== Overview ====\n",
"\n",
"Here a brief description of the different pieces that compose the loot—box—sealing—device\n",
"\n",
"# The pubblication is composed of 2 main parts: a base and a superstructure. omg sorry\n",
"# The base is the same for every copy, and its where the main contents are. (imagine it like a book)\n",
"# The superstructure is dynamic, it is produced and added to the base when and where the pubblication is purchased by someone. (imagine it like a 3d printed something)\n",
"# The production of the superstructure inflates the temporality of the loot box: our narration can inhabit this timespan.\n",
"# While someone wait for the 3d sigil to be printed we can offer a ''temporary safe zone'': a checkpoint at PNF (or other locations)\n",
"# In this ''temporary safe zone'' the player can leave something for the next player by designing the next sigil and\n",
"# In this ''temporary safe zone'' the player can be guided through the contents of the pubblication while waiting for the superstructure to be produced\n",
"# When a new copy of the pubblication is bought, a sigil is 3d printed and then uploaded on the website of the SI17 as documentation\n",
"\n",
"===== 1. Physical pubblication (a book? a box? something) =====\n",
"\n",
"I dont really know which kind of contents, but since we are reading a lot could be intresting to prepare a critical reader about the loot box issues, collecting different perspectives and heterogeneous voices? Then production mode ok and then we print say 100 copies. Our magical technical book binding team figures out the best way in which we can add some dynamic components or 3D addition to the cover-object-book, but we dont do that yet. We just leave the pubblications without the 3d cherry on the cake.\n",
"\n",
"===== 2. A custom 3d sculpting software =====\n",
"\n",
"''Note that the process could be also implemented with totally different techniques based on digital manufacturing like wood working with cnc, laser cut, etc endless possibilities, but lets say we want these exoterical 3d printed sigils.''\n",
"\n",
"We can develop a simple 3D sculpting software that even people not used to 3D modeling could use. Something like this [https://stephaneginier.com/sculptgl/ SculptGL]. This is not super easy to do, but not as hard as an API. We could start from some open source thing and then customize it in the way we need. [https://www.blender.org/ Blender] is written in Python and has a super nice API for programming custom plugins, for example.\n",
"\n",
"Side note totally (not totally) unrelated: plugin republishing? 🤯 Ahah it would be great to publish some excerpts from Simone Weil inside the UI of Blender or Photoshop or whatever. Injecting culture in the cultural industry tools.\n",
"\n",
"===== 3. Some templates for the 3d sigil =====\n",
"\n",
"* material and practical needs\n",
"* SI17 visual identity as a starting point\n",
"* SI17 contents as orientation\n",
"* SI17 world building as heading\n",
"\n",
"(wip)\n",
"\n",
"===== 4. A 3D Printing device =====\n",
"\n",
"* A 3D printer\n",
"* Some interface to sculpt the next 3d seal (aka 1 pc)\n",
"* A nice setup for display everything (checkpoint? treasure chest? loot box?)\n",
"\n",
"(wip)\n",
"\n",
"===== 5. A website =====\n",
"\n",
"* Info\n",
"* Inventory that keep track of the sigils (world building)\n",
"\n",
"(wip)\n",
"\n",
"<video src=\"/soupboat/~kamo/static/video/lootboxes 3d meme.mp4\" autoplay loop>\n",
"</video>\n",
"===Multi Player Loot Box=== \n",
"''Notes to generate relations within the public''\n",
"If the public of the classical loot box is made of individuals that are easier to exploit, our SI17 could research on ways to generate relations within the public.\n",
"\n",
"==== Homogeneous public? ====\n",
"\n",
"The classical loot box assumes two main things:\n",
"\n",
"* That the public is an homogeneous group of individual users\n",
"* That the relation between the loot box and its public should be always the same\n",
"\n",
"The loot box offers a limited amount of agency to the player. There is no quality in the interaction with it. The only way to use and access its content is to open it (and this usually means to pay). From the point of view of the loot box every player is the same, an their abilities or features or uniqueness have no meaning at all. One could say that the loot box is a popular device since is an object with a common interface for everyone, but is this really the case?\n",
"\n",
"The interaction with the loot box has no quality, but for sure it implies some kind of quantity. To access is it required to spend a certain amount of money or time. This quantifiable expense is presented as a flat access scheme with homogeneous outcomes, but it is not. The effects of spending hundred €€€ in Fortnite skins are different for a kid and a streamer, for example. [https://www.youtube.com/watch?v=EXy83qr9jrI While the streamer on Twitch spends 800€ in a row] to gain a thousandfold through sponsorizations and views, the average kid just throws away half of his mothers monthly income.\n",
"\n",
"The public of the loot box is not homogeneous.\n",
"\n",
"Keeping that in mind, we could rethink the basic way of interaction with the loot box. What if we offer something different from the flat price scheme? What if someone can pay less to access to the contents and someone else must pay more? Could this be a way to inject different qualities in the interaction with the loot box?\n",
"\n",
"===Mimic research 📦=== \n",
"''Exploring a tricky treasure trope''\n",
"==== 2 different types of treasure chest ====\n",
"\n",
"In RPG games the Mimic is a monster that appears as a treasure chest. When a player tries to interact with it in order to get the contents of the chest, it reveals its true nature and attacks her. The name of the Mimic come from its act of mimesis: this creature is like a predator that disguises itself in order to sneak up on its prey.\n",
"\n",
"A treasure chest in a game can be seen as a ''temporary safe zone'' because it interrupts the flow of incoming threats by offering a reward to the player. The Mimic endangers this ''temporary safe zone'', and breaks a kind of contract between the player and the game. The treasure chest is transformed in a risky russian roulette, that inoculates danger in the safe zones of a narration.\n",
"\n",
"Im tempted to write here that the loot box is something like a ''meta mimic'': an object that promises an in-game reward, but produces a damage to the player. Whats more is that this damage is inflicted in the real world, not to the player but to the person. Whats then the difference between a loot box and a Mimic?\n",
"\n",
"Starting from the [https://en.wikipedia.org/wiki/Mimic_(Dungeons_%26_Dragons) Dungeons and Dragons Mimic] Id like to explore the evolution and the ecology of the mimic through different games. How do the game designers choose where Mimics spawn? What are the relations between those creatures, the level design, the stress of the player, as well as her expectations and trust in the game world? Are there similarities in the way the Mimics and the loot boxes are presented to the player?\n",
"\n",
"'''TODO: amazon package but has fangs'''\n",
"\n",
"<!-- ## Mimics gallery\n",
"\n",
"![Mimic from D&D](https://upload.wikimedia.org/wikipedia/en/a/a0/D%26DMimic.JPG)\n",
"Mimics from D&D \n",
"\n",
"![Baldur's Gate Killer Mimic](/soupboat/~kamo/static/img/mimic/baldur-gate-killer-mimic.jpg)\n",
"Baldur's Gate Killer Mimic\n",
"\n",
"![Dragon Quest Mimic](/soupboat/~kamo/static/img/mimic/dragon-quest-mimic.png)\n",
"[Dragon Quest Mimic](https://dragon-quest.org/wiki/Mimic) -->\n",
"===A Katamari Fanfiction=== \n",
"''What's left when you roll on everything?''\n",
"==== Modding narrative ====\n",
"\n",
"<code>After lunch we will be writing fanfic based on the games you played and analysed this week!</code> Lidia said this.\n",
"\n",
"We played Katamari Damacy this week → We wrote a fan faction about it → We approached the fanfiction with empathyzing with the most inanimate things of the game → So we focused on the prince and the objects of the game → We left the King of all Cosmos in the backgroud, since he talks already a lot in the original game. → Suggested soundtrack for the reading: [https://www.youtube.com/watch?v=QAA6hq9RL-4 katamari OST]\n",
"\n",
"Fun fictious with Mitsa and Erica\n",
"\n",
"===Loot Box as a Decorator=== \n",
"''Hermit crab in the book store''\n",
"==== 3 intuitions come together ====\n",
"\n",
"Right now:\n",
"\n",
"# A ''loot box'' within a context as such: a book store\n",
"# A ''loot box'' within a temporality\n",
"# A ''loot box'' with different kinds of public\n",
"\n",
"Over me 🦶🦶 🥁 🦵🦵 📀—-\n",
"\n",
"===== Context =====\n",
"\n",
"A ''lolt box'' accellerates and forces the mechanics of an environment. In some games it can speed up some tedious process, in other it offers a specific special instant rewarding. Our ''loot bbx'' inhabits a book store, or more in general a cultural space. In which ways can we hack through the normal functioning of such place? At a certain point today I thought: ''ah, we could fill it with the last page of every books in Page Not Found'', just to say something about the presumed shortcuts that the ''loat box'' promises to the player. The idea is kinda fun, but then what? So maybe no.\n",
"\n",
"===== Temporality =====\n",
"\n",
"A couple of days ago I wrote some notes about the temporality of the ''loto box''. In 1 sentence the idea is: if the ''lot bx'' is a mechanism of instant rewarding, we could hijack and inflate its tempo and then fill it with our contents. Instead of opening in 30 seconds, the ''loot bocs'' takes one hour. Meanwhile we can deliver our messages.\n",
"\n",
"Today I read ''Play like a feminist'' by ''Shira Chess'' and guess what: theres an entire part about the temporality of leisure → 🤯\n",
"\n",
"There is something really important we should keep in mind: we are aiming to a public that is etherogeneous. The intersectional approach that Chess advocates its a reminder that we can inflate the temporality of the ''loot biusch'', but not everyone will have access to it. So we need to think at both the limits of this spectrum, and put them in a meaningful relation.\n",
"\n",
"===== Public =====\n",
"\n",
"As said: our public could be complex. For sure there will be some ultra publishing nerd that will sip all our soup and will be happy with it, but isnt 1 of our goals to reach also the world outside XPUB? ''Chess'' in her book writes about micro temporality, little timespans carved between work shifts or commutes. She has a point when writes that with smartphones leisure time is more affordable and is detached from the rigid tempo of labour.\n",
"\n",
"==== Decorator ====\n",
"\n",
"Combining these three aspects the question is: can we create a relation between who can spend an hour at PNF waiting for the ''loot bosx'' and who cannot?\n",
"\n",
"Enter the ''boot lox'' as a decorator.\n",
"\n",
"A decorator is something that adorn something else. In Python and object-oriented programming in general is also a name of a design pattern that adds some functionality to other functions. We used it already also with Flask! A ''oobt olx'' as a decorator means that we could attach it to other pubblication at PNF. Something like an hermit crab inside other shells or that spiky things that bites the tail of a Slowpoke.\n",
"\n",
"===== The setup =====\n",
"\n",
"# The physical decorator, that is a digital manufactured object produced on demand\n",
"# A catalogue of books that can be decorated\n",
"# A website with a digital loot box\n",
"\n",
"===== The process =====\n",
"\n",
"# As a part of the research we compose a bibliography that is also a statement i.e: ''away from the cis white west guys gang''. This bibliography could be site specific for PNF or the other places we will distribute our SI17. We should choose to sell our pubblication in book stores or spaces that want to host this bibliography in their inventory. In this way we can use our SI17 as a device to reclaim space for marginal and subaltern voices.\n",
"# The decorator inhabits this bibliography. It is presented as a special offer in which you can buy one of the book from the bibliography and receive a decorated version of it. Maybe we can sort out some kind of discount mechanism using part of the budget we have. The point is to favor access.\n",
"# The deal is that the production of the decorator has a certain temporality: if we imagine it as something that is 3D printed or laser cutted or CNC carved on demand, it involves a little waiting time. During this waiting time we can transform the book shop in a library, and offer full access to the titles in our bibliography.\n",
"# In exchange we ask to the reader for some insights, notes or excerpts from the books. Those will be inserted in the inventory of our loot box.\n",
"# This loot box can be accessed online from the website of SI17. It works exaclty as a classic one, except that we offer it for free. The content is a collection of thoughts questioning the issue of our project, in the context around our bibliography and readers. It could be an effective way to offer our research to that kind of public that has no means to access it.\n",
"# To open the online loot box and get one (more or less random?) excerpt, the user is asked to draw a decorator. This could be made with a super simple web interface. The drawing will be the next digital manufactured decorator.\n",
"# In the website of SI17 we can keep track of the decorators as well as the exceprts, in a process of inventory and world building.\n",
"\n",
"==== Skin care routine ====\n",
"\n",
"This idea of decorator is somehow similar to the concept of skin (in videogame terms). Here our decorator acts as cosmetic in the same way a fancy hat decorates your sniper in Team Fortress 2.\n",
"\n",
"In the game itself the skin is nothing more than a visual candy. But once you look at the turbulence it puts in motion in the game superstructure, you realize that the kind of power-up it offers is something that acts in the social sphere around the game. (See: peer pressure, emotional commitment, skins gambling, product placement, collectibles)\n",
"\n",
"A loot of lot boxes promise rare skins, and by doing so it lures in players. We could subvert this process by taking the skin out of the box.\n",
"\n",
"Instead of opening it to get a new skin, you design a new skin (the decorator!) to open the loot box.\n",
"\n",
"<!-- ### OLD DRAFT\n",
"\n",
"1. Someone wants to buy our _olot xbox_ at PNF: nice!\n",
"2. They discover that our _tool oxb_ can be purchased only if it decorates another product. What's more is that the _bloo tox_ acts actually as a discount for the other product (!!!). For example: if you decorate [A choreographer's score](https://www.rosas.be/nl/publications/425-a-choreographer-s-score-fase-rosas-danst-rosas-elena-s-aria-bartok) with our _blur fox_ it costs 10% less, amazin!\n",
"3. The only constrain is: when the decorator-_otol xobo_ will be ready it would be nice to collect some meaningful excerpt from the book that the player want to buy. \n",
"4. By the way our _tlob xob_ requires [1 hour to be ready](https://hub.xpub.nl/soupboat/~kamo/projects/loot-box-sealing-device/), so A) there is [plenty of leisure time to reclaim](https://hub.xpub.nl/soupboat/~kamo/projects/loot-box-temporality/) and B) it can be used for delve a bit into the contents and write some annotations for who has not access to it, for economical or temporal reasons. \n",
"5. The excerpts are putted in a real _lool xox_. \n",
"6. This _llll lll_ is the website of _the bbb_ SI17\n",
"7. This _oooo ooo_ can be opened and the contents delivered to someone who wants a fast insight of our SI17.\n",
"8. In order to open it, a key need to be drawn through a simple interface on the website (obv also super mobile friendly)\n",
"9. And guess where this key will end up? Nothing less than 3D printed as the next _toto tot_ as decorator at PNF\n",
"10. That will provide new excerpts for the digital _bbbb bbb_ in exchange of a super nice 3d printed decurator\n",
"11. wow \n",
"\n",
"Variant or elaboration of point 4.: \n",
"During that hour the person is free to look at everything in PNF. In this hour the book store is transformed in a library.\n",
"\n",
"Ok it makes super sense in my head right now but are like 3 in the morning and for sure im skipping passages in the process, it will seem super obscure I'm so sorry. Will elaborate more but atm happy with it ciao good night\n",
" -->\n",
"===🥐 XQUISITE BRUNCH 🥐=== \n",
"''A branching take on the exquisite corpse game''\n",
"==== An exquisite branch ====\n",
"\n",
"The [https://en.wikipedia.org/wiki/Exquisite_corpse exquisite corpse] is a multiplayer game invented by the surrealists in which the participants compose a drawing or a story together.\n",
"\n",
"Traditionally the game is played on a long piece of paper, and each player draws a part, hiding the drawing to the next person, but leaving some hints. The following fellow continues to draw from there and so on. The result is a weird linear narrative, in which the transition between authors are at the same time smooth and abrupt.\n",
"\n",
"With the xquisite branch I would like to try a digital approach to the game. If the original version is constrained to the single piece of paper and is doomed to be linear, here we can imagine our drawings forking and branching and go in different directions.\n",
"\n",
"The process could be something like:\n",
"\n",
"someone send you a link to continue the drawing and when you are happy with it and upload it you receive a new link to share with others. If you pass the link to just one person the xquisite branch will continue, but if you pass it to several people the drawing will branch, resulting in multiple version with a common starting point.\n",
"\n",
"I would like to try this not only as a multiplayer game, but also as a creative tool. I will ask [https://www.togniser.com/ ser togni] if he want to draw some comics with it. But it could also used for branching meetings aha 🤯\n",
"\n",
"==== TODOs ====\n",
"\n",
"* add name for credits?\n",
"* display name in svg?\n",
"* comment the code\n",
"* remove new from homepage? or\n",
"* add per-new level in the xquisite branches (this makes more sense!)\n",
"\n",
"===Chaotic evil puzzles=== \n",
"''Jigsaw puzzle as a form of encryption of our SI17''\n",
"==== There are 100 lot boxes with 100 different jigsaw puzzles of 100 pieces.*<br />\n",
"[[File:https://hub.xpub.nl/soupboat/~kamo/static/img/100-boxes.jpg|100 boxes compose the face of aymeric if seen from a precise point of view]] ====\n",
"\n",
"''* (exact quantities to be defined)''\n",
"\n",
"==== The picture on each puzzles is a content related to our experiments, games and researches for the SI17 ====\n",
"\n",
"[[File:https://hub.xpub.nl/soupboat/~kamo/static/img/catchy-puzzles.jpg|frame|none|alt=|caption sample of contents for the puzzles]]\n",
"\n",
"Each puzzle is an A2 sized image displaying the works we did during this trimester, designed in a way that can be interesting for the players to buy it, even for the sake of doing a jigsaw puzzle itself.\n",
"\n",
"''f.e. A puzzle could be the rules for an RPG; or the map of a bitsy game with some critical texts about gamification; a generated maze, a fan fiction, the glossary, the list of one sentence games, etc.''\n",
"\n",
"In other words, the collection of puzzles will be a sort of inventory of our research framed in the form of jigsaw.\n",
"\n",
"==== The pieces are scattered through all the loot boxes, in a way that each one contains parts of multiple puzzles. ====\n",
"\n",
"[[File:https://hub.xpub.nl/soupboat/~grgr/static/img/jigmix.png|frame|none|alt=|caption shuffle of the jiigsaw pieces]]\n",
"\n",
"This could be done in a meaningful way: the idea is not to have total random pieces, but legible fragments from each content.\n",
"\n",
"==== When players buy the loot box they can compose the puzzle, but the result is a patchwork of different images. ====\n",
"\n",
"[[File:https://hub.xpub.nl/soupboat/~grgr/static/img/patchworks.png|frame|none|alt=|caption in each loot box there is a patchwork of different puzzles]]\n",
"\n",
"If the puzzles have different images but the same pieces pattern, each loot box can have a complete puzzle, but with mixed pieces. In this way we can avoid the frustration that having an incomplete jigsaw puzzle could cause.\n",
"\n",
"==== On the website of SI17 the players can upload their fragments, and compose together an online version to complete all the jigsaw puzzles. ====\n",
"\n",
"[[File:https://hub.xpub.nl/soupboat/~kamo/static/img/puzzle-web.jpg|frame|none|alt=|caption demo web interface]]\n",
"\n",
"We can numerate or identify each piece of the puzzles with a code. This could be done when we generate the pattern of the puzzle with Python 👀. To upload a fragment of puzzle, the player is required to insert the code of the pieces, and maybe take a picture. In this way we can be sure that only who has the fragment can insert it online.\n",
"\n",
"==== Optional feature: users can upload pictures of their fragments and we could have a collective documentation of the work. ====\n",
"\n",
"[[File:https://hub.xpub.nl/soupboat/~kamo/static/img/share-puzzle.jpg|demo upload pictures]] ''This is not unpaid work, its participation''\n",
"\n",
"Nice feature for the website could be that you can see the digital version of the puzzle, but on mouse :hover we could show the pictures from the public. A puzzle of photos of puzzles. This could be challenging but funny to develop.\n",
"\n",
"==== On the website of SI17 there is a community section for exchanging the fragments and complete the puzzle ====\n",
"\n",
"[[File:https://hub.xpub.nl/soupboat/~kamo/static/img/xchange-puzzle.jpg|frame|none|alt=|caption demo xchange puzzle fragments]]\n",
"\n",
"The community section with users and exchange etc could be tricky, but we can stay as simple as possible and do it with Flask. The exchange section should exclude by design the speculation on the pieces or money. A fragment for a fragment.\n",
"\n",
"==== On the website of SI17 the public can access to the experiments, games and researches as well ====\n",
"\n",
"[[File:https://hub.xpub.nl/soupboat/~grgr/static/img/lootbweb.png|frame|none|alt=|caption demo other contents on the website]]\n",
"\n",
"In this way we can provide access to the contents such as the bitsy games, the karaoke video, the ruleset of our games, the reading list, etc.\n",
"\n",
"===== Risk / Benefit assessment =====\n",
"\n",
"PROS + simple to make + accessible because its a well known game + a lot of design + not to much code + use what we already have + interesting interaction with the public + performative element ready for the launch + multiple temporalities (individual puzzle, contents, shared puzzles) + world building\n",
"\n",
"CONS: - not an API 👀 - i dont like puzzles - people mught not appreciate the fact of missing parts of their puzzle, but were here to subvert it, and contents will be available online anyways\n",
"\n",
"===== Bonus: summary workflow =====\n",
"\n",
"[[File:https://hub.xpub.nl/soupboat/~kamo/static/img/puzzle-production.jpg|production]] The process to make the puzzles could be easy as design - print - cut - shuffle - package, nothing more (+ website)\n",
"\n",
"[[File:https://hub.xpub.nl/soupboat/~grgr/static/img/puzzle-box.jpg|box]] The loot box could provide a context and the instruction of the game, as well as the link to the website.\n",
"\n",
"==== Scenario ====\n",
"\n",
"Mapping the chaotic evil puzzles in the through the different scenari\n",
"\n",
"===== of the form =====\n",
"\n",
"''scenario 1: The lootbox is a physical box that contains something''\n",
"\n",
"Fragments of several puzzles.\n",
"\n",
"===== of the feature =====\n",
"\n",
"''scenario 7: The items in the loot-box are complementary and it is necessary to connect with other loot-box owners in order to assemble the pieces together.''\n",
"\n",
"There is a single player aspect and there is a collaborative aspect. These two components could be mediated by an online platform, such as the online shared puzzles, but could also work offline if people just combine the pieces of their loot boxes.\n",
"\n",
"===== of the contents =====\n",
"\n",
"''scenario 2: The loot box is a collection of the prototyped games (and researches!) we did so far curated in some kind of form''\n",
"\n",
"The jigsaw puzzle is just a form of encryption of our contents. A shared surface in which we can publish really different things such as a fan fiction, a board game, a link to a video karaoke or a videogame, an essay, the characters of a roleplaying game, etc.\n",
"\n",
"''scenario 3: The loot box is a collection of mini-games + an ultimate game that has to be performed with other players that purcahsed the LB''\n",
"\n",
"There are several layers of playability and access:\n",
"\n",
"# to solve the fragments (single player jigsaw)\n",
"# to access the contents (games, texts, etc. )\n",
"# to combine the fragments (ultimate multiplayer game, re-distribuition of the loot boxes contents)\n",
"\n",
"''scenario 6: The lootbox contains a series of jigsaw puzzles but their pieces are scattered through all the boxes and there is a platform online where you can see the missing tiles.''\n",
"\n",
"Nothing to declare.\n",
"\n",
"==== memos ====\n",
"\n",
"* play with quantities and distribuition of pieces (1 piece only, large groups, variations, etc)\n",
"* play with puzzle pattern: alternative to the mainstream shape of the tiles\n",
"* pieces naming system\n",
"* And then the aim is to exchange pieces or something and rebuild the original puzzles? (can this be a critical approach?) (does this make sense only if there are as many puzzles as loot boxes?)\n",
"* short term puzzles (link to multimedia contents, puzzle shards)\n",
"* long term puzzles (hidden messages, 1 word in each puzzles and a secret sentence)\n",
"* size and quantity\n",
"* The jigsaw puzzles results should be secret? There would be much more mistery. Can we reveal only during the launch, but not on the loot boxes? Maybe is a compromise, but maybe is not necessary. Should we reveal them only in the website meanwhile they are completed? Could be.<br />\n",
"\n",
"* [https://github.com/jkenlooper/piecemaker Generate Jigsaw Puzzle with python]\n",
"* [https://www.youtube.com/watch?v=xqhOrY8unn4 How To Laser Cut a Jigsaw Puzzle]\n",
"* [https://draradech.github.io/jigsaw/index.html Jigsaw puzzle generator]\n",
"* [https://proceduraljigsaw.github.io/Fractalpuzzlejs/ Fractlal Jigsaw]\n",
"\n",
"===SI17 producing the public=== \n",
"''homeworks for 21/02''\n",
"===== Which kind of public do we want to produce? =====\n",
"\n",
"If the loot box and gamification produce a single player in competition with all the others, I would like to produce a collaborative public. More like a community than a billboard with users ranking. Also I think this is an operation that requires time. Hence the loot box as a shrine: a safe place to build, discover and charge with meanings together.\n",
"\n",
"===== How do we want our public to engage with our loot box? =====\n",
"\n",
"I like the idea of different temporalities and the concept of slow processing. Something could be delivered really fast, something could require an entire evening, something could need to wait an entire month.\n",
"\n",
"We should balance the single player / multi player aspect of the loot box. It would be great to have something that one can enjoy both alone and with others. The collaborative aspect of the loot box should be something possible and encouraged, but not mandatory.\n",
"\n",
"===== What kinds of questions/feelings/thoughts it create ? =====\n",
"\n",
"* To feel part of a community or fellows in a shared quest.\n",
"* To wonder how vast is the inventory of the loot box.\n",
"* To question the idea of competition as necessary for gamification\n",
"* To raise awareness on different voices on the topic\n",
"\n",
"===== How the lootbox is going to be presented to our public during our launch event? =====\n",
"\n",
"The presentation could perform the contents of the loot box.\n",
"\n",
"===== How will the launch look like? =====\n",
"\n",
"Nice\n",
"\n",
"===== How can the lootboxes be activated by the public in a sustainable an independent way after the launch? =====\n",
"\n",
"With a website\n",
"\n",
"===== What is our relationship to PnF? =====\n",
"\n",
"I dont know\n",
"\n",
"===== Does the publication relate to PnF? how? =====\n",
"\n",
"I dont think so\n",
"\n",
"===== how and where do we sell the lootbox? =====\n",
"\n",
"In place that want to host subaltern authors from our reading list.\n",
"\n",
"===== do we sell in other stores? if yes how are they connected? =====\n",
"\n",
"We are the connection\n",
"\n",
"===test static files in project directory=== \n",
"''it's a test''\n",
"==== Hello this is a test. ====\n",
"\n",
"This image is in the same folder of the project, not in the static one.\n",
"\n",
"[[File:hiroshige.jpg|frame|none|alt=|caption test]]\n",
"\n",
"and it works!\n",
"\n",
"and now also the md file that generates the page [[documentation.md|should be accessible]].\n",
"\n",
"is this a good idea?\n",
"\n",
"\n"
]
}
],
"source": [
"folders = list_folders('public_html/projects')\n",
"projects = []\n",
"\n",
"for folder in folders:\n",
" project = get_md_contents('documentation.md', f'public_html/projects/{folder}')\n",
" project_date = datetime.strptime(project[0]['date'], '%d/%m/%Y')\n",
" project[0]['date'] = datetime.strftime(project_date, '%d %b, %y')\n",
" project[0]['categories'].sort()\n",
" projects.append(project)\n",
"\n",
"projects.sort(reverse=False, key=lambda project: datetime.strptime(\n",
" project[0]['date'], '%d %b, %y'))\n",
" \n",
"page = ''\n",
"\n",
"for project in projects:\n",
" page = page + f\"==={project[0]['title']}=== \\n\"\n",
" page = page + f\"''{project[0]['description']}''\\n\"\n",
" page = page + pypandoc.convert_text(project[1], 'mediawiki', format='md', extra_args=['--base-header-level=3'])\n",
" \n",
"\n",
"print(page)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "53c9a453-4399-4ec5-b905-3cd739276919",
"metadata": {},
"outputs": [],
"source": [
"folders = list_folders('public_html/projects')\n",
"projects = []\n",
"\n",
"for folder in folders:\n",
" project = get_md_contents('documentation.md', f'public_html/projects/{folder}')\n",
" project_date = datetime.strptime(project[0]['date'], '%d/%m/%Y')\n",
" project[0]['date'] = datetime.strftime(project_date, '%d %b, %y')\n",
" project[0]['categories'].sort()\n",
" projects.append(project)\n",
"\n",
"projects.sort(reverse=False, key=lambda project: datetime.strptime(\n",
" project[0]['date'], '%d %b, %y'))\n",
" \n",
"page = ''\n",
"\n",
"for project in projects:\n",
" page = page + f\"==={project[0]['title']}=== \\n\"\n",
" page = page + f\"''{project[0]['description']}''\\n\""
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}