call + other changes

master
Michael Murtaugh 2 years ago
parent 40e9085748
commit baaefb78cc

@ -0,0 +1,45 @@
body{
background-color: #ffc0fb;
background: url("sticker-background.svg");
}
div#wrapper{
display: block;
margin: 3em auto;
padding: 2em;
background-color: black;
color: white;
width: 750px;
font-family: "custom";
}
div#call span.phrase:last-of-type span.comma{
display: none;
}
strong{
color: magenta;
}
hr{
border: unset;
border-bottom: double white;
}
a{
color: white;
}
@font-face{
font-family: "custom";
src: url("https://vvvvvvaria.org/~mb/fonts/LibreBaskerville-Regular.ttf");
font-weight: normal;
font-style: normal;
}
@font-face{
font-family: "custom";
src: url("https://vvvvvvaria.org/~mb/fonts/LibreBaskerville-Italic.ttf");
font-weight: normal;
font-style: italic;
}
@font-face{
font-family: "custom";
src: url("https://vvvvvvaria.org/~mb/fonts/LibreBaskerville-Bold.ttf");
font-weight: bold;
font-style: normal;
}

@ -0,0 +1,71 @@
function randint (from, to) {
return from + Math.floor((Math.random() * (to-from)));
}
function choice (arr) {
let ri = randint(0, arr.length-1);
let ret = arr[ri];
arr.splice(ri, 1);
return ret;
}
function make_phrase (nn, terms) {
nn.querySelector(".actor").innerHTML = choice(terms['actor']);
nn.querySelector(".action").innerHTML = choice(terms['action']);
if (randint(0, 2) == 0) {
nn.querySelector(".prefix").innerHTML = choice(terms['prefix'])+'-';
} else {
nn.querySelector(".prefix").remove();
}
nn.querySelector(".sort").innerHTML = choice(terms['sort']);
nn.querySelector(".media").innerHTML = choice(terms['media']);
}
const sleep = delaysecs => new Promise(resolve => setTimeout(resolve, delaysecs*1000));
let limit = 25;
async function make_phrases () {
let terms = await (await fetch("terms.json")).json();
// console.log("terms", terms);
let call = document.querySelector("#call");
let template = call.querySelector(".phrase");
template.remove();
let count = 0;
while (true) {
let nn = template.cloneNode(true);
call.appendChild(nn);
make_phrase(nn, terms);
if (terms['actor'].length == 0 || terms['action'].length == 0 || terms['prefix'].length == 0 || terms['sort'].length == 0 || terms['media'].length == 0) {
console.log("out of terms, stopping");
break;
}
count += 1;
if (limit > 0 && count>=limit) { break };
await (sleep(1.0));
}
}
make_phrases();
// fetch("terms.json")
// .then(response => response.json())
// .then(terms => {
// console.log("terms", terms);
// let call = document.querySelector("#call");
// let template = call.querySelector(".phrase");
// for (var i=0; i<20; i++) {
// let nn = template.cloneNode(true);
// call.appendChild(nn);
// nn.querySelector(".actor").innerHTML = choice(terms['actor']);
// nn.querySelector(".action").innerHTML = choice(terms['action']);
// if (randint(0, 2) == 0) {
// nn.querySelector(".prefix").innerHTML = choice(terms['prefix']) + '-';
// } else {
// nn.querySelector(".prefix").remove();
// }
// nn.querySelector(".sort").innerHTML = choice(terms['sort']);
// nn.querySelector(".media").innerHTML = choice(terms['media']);
// }
// template.style.display = "none";
// });

@ -0,0 +1,73 @@
#!/usr/bin/env python3
import json, random, textwrap
import yaml
from urllib.request import urlopen
# with open('terms.json', 'r') as f:
# terms = json.load(f)
# with open('terms.yaml', 'r') as f:
# terms = yaml.load(f)
f = urlopen("https://pad.xpub.nl/p/XPUB-promo-terms/export/txt")
terms = yaml.load(f)
with open("terms.yaml", "w") as f:
yaml.dump(terms, f)
with open("terms.json", "w") as f:
json.dump(terms, f, indent=2)
def make_pub():
actor = random.choice(terms['actor'])
terms['actor'].remove(actor)
action = random.choice(terms['action'])
terms['action'].remove(action)
prefix = ''
sort = random.choice(terms['sort'])
terms['sort'].remove(sort)
media = random.choice(terms['media'])
terms['media'].remove(media)
if random.randint(0,2) == 0:
prefix = random.choice(terms['prefix'])
terms['prefix'].remove(prefix)
prefix += '-'
return actor + ' ' + action + ' ' + prefix + sort + ' ' + media
def make_call():
text = 'Calling all '
for _ in range(20):
text += make_pub() + ', '
text = text[:-2]
text += '.'
return text
call = '''
///
____ ____ ____ ____
||X |||P |||U |||B ||
||__|||__|||__|||__||
|/__\|/__\|/__\|/__\|
Master of Arts in Fine Art and Design: Experimental Publishing
at the Piet Zwart Institute (Rotterdam, Netherlands
///
%s
///
Applications deadlines: March 7, 2023 (non-EU) and May 10, 2023 (EU)
Online open day: February 11, 2023
https://xpub.nl
///
''' % (textwrap.fill(make_call()))
print(call)

@ -0,0 +1,64 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>XPUB call</title>
<!--
To switch between the WEB and POSTER version,
you can enable/disable the stylesheets below
and the paged.polyfill.js script at the bottom.
-->
<!-- --------------------------------------------- -->
<!-- WEB VERSION -->
<link rel="stylesheet" href="call.css" />
<!-- --------------------------------------------- -->
<!-- --------------------------------------------- -->
<!-- POSTER VERSION -->
<!-- <link rel="stylesheet" href="paged.interface.css" /> -->
<!-- <link rel="stylesheet" href="poster.css" /> -->
<!-- --------------------------------------------- -->
</head>
<body>
<div id="wrapper">
<hr>
<div id="head">
<h1>Master Experimental Publishing (XPUB)</h1>
</div>
<div id="call">
<span class="intro"><strong>Calling all </strong></span>
<span class="phrase">
<span class="actor"></span>
<span class="action"></span>
<span class="prefix"></span><span class="sort"></span>
<span class="media" style="font-style: italic;"></span><span class="comma">, </span>
</span>
</div>
<div id="footer">
<p>
<strong>Applications deadlines</strong>: <span class="highlight">March 7, 2023</span> (non-EU) and <span class="highlight">May 10, 2023</span> (EU)<br>
<strong>Online open day</strong>: <span class="highlight">February 11, 2023</span><br>
</p>
<p class="link">
<a href="https://xpub.nl">https://xpub.nl</a>
</p>
</div>
<hr>
<script src="call.js"></script>
</div>
<!-- --------------------------------------------- -->
<!-- POSTER VERSION -->
<!-- <script src="paged.polyfill.js"></script> -->
<!-- --------------------------------------------- -->
</body>
</html>

@ -0,0 +1,180 @@
/* CSS for Paged.js interface v0.4 */
/* Change the look */
:root {
--color-background: whitesmoke;
--color-pageSheet: #cfcfcf;
--color-pageBox: violet;
--color-paper: white;
--color-marginBox: transparent;
--pagedjs-crop-color: black;
--pagedjs-crop-shadow: white;
--pagedjs-crop-stroke: 1px;
}
/* To define how the book look on the screen: */
@media screen, pagedjs-ignore {
body {
background-color: var(--color-background);
}
.pagedjs_pages {
display: flex;
width: calc(var(--pagedjs-width) * 2);
flex: 0;
flex-wrap: wrap;
margin: 0 auto;
}
.pagedjs_page {
background-color: var(--color-paper);
box-shadow: 0 0 0 1px var(--color-pageSheet);
margin: 0;
flex-shrink: 0;
flex-grow: 0;
margin-top: 10mm;
}
.pagedjs_first_page {
margin-left: var(--pagedjs-width);
}
.pagedjs_page:last-of-type {
margin-bottom: 10mm;
}
.pagedjs_pagebox{
box-shadow: 0 0 0 1px var(--color-pageBox);
}
.pagedjs_left_page{
z-index: 20;
width: calc(var(--pagedjs-bleed-left) + var(--pagedjs-pagebox-width))!important;
}
.pagedjs_left_page .pagedjs_bleed-right .pagedjs_marks-crop {
border-color: transparent;
}
.pagedjs_left_page .pagedjs_bleed-right .pagedjs_marks-middle{
width: 0;
}
.pagedjs_right_page{
z-index: 10;
position: relative;
left: calc(var(--pagedjs-bleed-left)*-1);
}
/* show the margin-box */
.pagedjs_margin-top-left-corner-holder,
.pagedjs_margin-top,
.pagedjs_margin-top-left,
.pagedjs_margin-top-center,
.pagedjs_margin-top-right,
.pagedjs_margin-top-right-corner-holder,
.pagedjs_margin-bottom-left-corner-holder,
.pagedjs_margin-bottom,
.pagedjs_margin-bottom-left,
.pagedjs_margin-bottom-center,
.pagedjs_margin-bottom-right,
.pagedjs_margin-bottom-right-corner-holder,
.pagedjs_margin-right,
.pagedjs_margin-right-top,
.pagedjs_margin-right-middle,
.pagedjs_margin-right-bottom,
.pagedjs_margin-left,
.pagedjs_margin-left-top,
.pagedjs_margin-left-middle,
.pagedjs_margin-left-bottom {
box-shadow: 0 0 0 1px inset var(--color-marginBox);
}
/* uncomment this part for recto/verso book : ------------------------------------ */
/*
.pagedjs_pages {
flex-direction: column;
width: 100%;
}
.pagedjs_first_page {
margin-left: 0;
}
.pagedjs_page {
margin: 0 auto;
margin-top: 10mm;
}
.pagedjs_left_page{
width: calc(var(--pagedjs-bleed-left) + var(--pagedjs-pagebox-width) + var(--pagedjs-bleed-left))!important;
}
.pagedjs_left_page .pagedjs_bleed-right .pagedjs_marks-crop{
border-color: var(--pagedjs-crop-color);
}
.pagedjs_left_page .pagedjs_bleed-right .pagedjs_marks-middle{
width: var(--pagedjs-cross-size)!important;
}
.pagedjs_right_page{
left: 0;
}
*/
/*--------------------------------------------------------------------------------------*/
/* uncomment this par to see the baseline : -------------------------------------------*/
/* .pagedjs_pagebox {
--pagedjs-baseline: 22px;
--pagedjs-baseline-position: 5px;
--pagedjs-baseline-color: cyan;
background: linear-gradient(transparent 0%, transparent calc(var(--pagedjs-baseline) - 1px), var(--pagedjs-baseline-color) calc(var(--pagedjs-baseline) - 1px), var(--pagedjs-baseline-color) var(--pagedjs-baseline)), transparent;
background-size: 100% var(--pagedjs-baseline);
background-repeat: repeat-y;
background-position-y: var(--pagedjs-baseline-position);
} */
/*--------------------------------------------------------------------------------------*/
}
/* Marks (to delete when merge in paged.js) */
.pagedjs_marks-crop{
z-index: 999999999999;
}
.pagedjs_bleed-top .pagedjs_marks-crop,
.pagedjs_bleed-bottom .pagedjs_marks-crop{
box-shadow: 1px 0px 0px 0px var(--pagedjs-crop-shadow);
}
.pagedjs_bleed-top .pagedjs_marks-crop:last-child,
.pagedjs_bleed-bottom .pagedjs_marks-crop:last-child{
box-shadow: -1px 0px 0px 0px var(--pagedjs-crop-shadow);
}
.pagedjs_bleed-left .pagedjs_marks-crop,
.pagedjs_bleed-right .pagedjs_marks-crop{
box-shadow: 0px 1px 0px 0px var(--pagedjs-crop-shadow);
}
.pagedjs_bleed-left .pagedjs_marks-crop:last-child,
.pagedjs_bleed-right .pagedjs_marks-crop:last-child{
box-shadow: 0px -1px 0px 0px var(--pagedjs-crop-shadow);
}

File diff suppressed because it is too large Load Diff

@ -0,0 +1,68 @@
:root{
font-size: 22px;
font-family: "custom";
}
@page{
size: A4 portrait;
margin: 2em;
background-image: url("sticker-background.svg");
}
/* -------------------------------------- single page */
.pagedjs_pages {
display: block;
width: var(--pagedjs-width);
}
.pagedjs_page{
display: block;
margin: 0 auto !important;
clear: both !important;
float: left !important;
}
/* -------------------------------------- */
body{
position: relative;
display: block;
top: 0;
margin: 0;
}
div#wrapper{
background-color: black;
color: white;
height: 100%;
padding: 1em 2em;
}
div#call span.phrase:last-of-type span.comma{
display: none;
}
div#footer p.link{
margin: 1.5em 0 2em 0;
}
strong{
color: magenta;
}
hr{
border: unset;
border-bottom: double white;
}
a{
color: white;
}
@font-face{
font-family: "custom";
src: url("https://vvvvvvaria.org/~mb/fonts/LibreBaskerville-Regular.ttf");
font-weight: normal;
font-style: normal;
}
@font-face{
font-family: "custom";
src: url("https://vvvvvvaria.org/~mb/fonts/LibreBaskerville-Italic.ttf");
font-weight: normal;
font-style: italic;
}
@font-face{
font-family: "custom";
src: url("https://vvvvvvaria.org/~mb/fonts/LibreBaskerville-Bold.ttf");
font-weight: bold;
font-style: normal;
}

@ -0,0 +1,7 @@
from urllib.request import urlopen
import yaml
f = urlopen("https://pad.xpub.nl/p/XPUB-promo-terms/export/txt")
terms = yaml.load(f)
print (terms)

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 4.7 MiB

@ -0,0 +1,331 @@
{
"action": [
"scanning",
"uploading",
"seeding",
"screening",
"spamming",
"tweeting",
"tooting",
"singing",
"feeling",
"listening to",
"playing",
"reading",
"disrupting",
"acting as",
"dancing",
"seeing",
"cooking",
"preaching",
"translating",
"yelling",
"screaming",
"running",
"whistleblowing",
"leaking",
"painting",
"writing",
"laughing at",
"dictating",
"designing",
"destroying",
"showing",
"debating",
"creating",
"performing",
"building",
"hiding",
"surveilling",
"faking",
"banning",
"watching",
"deciding",
"dealing",
"exchanging",
"mediating",
"fighting",
"vandalizing",
"parodying",
"questioning",
"criticizing",
"provoking",
"obscuring",
"shouting on",
"controlling",
"demanding",
"delivering",
"disclosing",
"developing",
"divulging",
"lying about",
"bragging about",
"echoing",
"portraying",
"helping",
"hiding",
"interrupting",
"conspiring",
"sending",
"repairing",
"disagreeing"
],
"actor": [
"hipsters",
"sceners",
"seeders",
"leechers",
"pirates",
"librarians",
"viruses",
"AI",
"wizards",
"quants",
"CEOs",
"shareholders",
"users",
"stenographers",
"makers",
"artists",
"professionals",
"hobbyists",
"amateurs",
"teachers",
"students",
"doctors",
"patients",
"publics",
"victims",
"criminals",
"cooks",
"editors",
"programmers",
"preachers",
"livecoders",
"individuals",
"nations",
"visitors",
"hackers",
"readers",
"consumers",
"mediators",
"actors",
"builders",
"children",
"adults",
"architects",
"tourists",
"persons",
"parents",
"photographers",
"musicians",
"designers",
"chatbots",
"regulators",
"dancers",
"developers",
"authors",
"robots",
"dogs",
"cats",
"judges",
"celebrities",
"computers",
"networks",
"media",
"businesses",
"governments",
"politicians",
"presidents",
"families",
"communities",
"managers",
"entrepreneurs",
"whistleblowers",
"infiltrators",
"book binders",
"impatient people",
"collectives",
"research centers"
],
"media": [
"image boards",
"forums",
"warez",
"screens",
"galleries",
"screensavers",
"viruses",
"frequencies",
"files",
"operating systems",
"databases",
"privacy",
"posters",
"cybernetics",
"floppy disks",
"CD-ROMs",
"LaserDiscs",
"apps",
"spam",
"startups",
"manuscripts",
"carpets",
"markets",
"architectures",
"feels",
"books",
"games",
"radio",
"music",
"graffitis",
"blogs",
"theatre",
"woodblocks",
"dances",
"recycling",
"emails",
"food",
"migration",
"magazines",
"maps",
"comics",
"finance",
"teaching",
"memes",
"futures",
"traditions",
"corruption",
"regulation",
"porn",
"webpages",
"vandalism",
"samizdat",
"ethics",
"billboards",
"advertising",
"manifestos",
"leaflets",
"browsers",
"wikis",
"canvases",
"tapes",
"vinyls",
"records",
"synthesizers",
"feeds",
"newspapers",
"HTML pages",
"codex",
"software",
"codes of conduct",
"epubs",
"PDFs",
"NFTs",
"stories",
"dictionaries",
"libraries",
"bugs",
"disagreements"
],
"prefix": [
"proto",
"xeno",
"cyber",
"retro",
"pre",
"ante",
"proto",
"post",
"avant",
"neo",
"anti",
"co",
"epi",
"ex",
"extra",
"hyper",
"infra",
"inter",
"macro",
"micro",
"mid",
"mono",
"non",
"multi",
"omni",
"semi",
"sub",
"super",
"trans",
"cross",
"uni",
"minor"
],
"sort": [
"bootleg",
"capitalist",
"progressive",
"organic",
"industrial",
"homemade",
"craft",
"AI",
"encrypted",
"inclusive",
"fair",
"transparent",
"command line",
"granular",
"crypto",
"centralised",
"free",
"libre",
"open",
"proprietary",
"DIY",
"DIWO",
"homebrew",
"decentralised",
"closed source",
"binary",
"plaintext",
"federated",
"distributed",
"online",
"offline",
"raw",
"compressed",
"deep",
"dark",
"common",
"shared",
"liberal",
"anarcho-capitalist",
"anarcho-communist",
"anarcho-syndicalist",
"authoritarian",
"capitalist",
"communist",
"marxist",
"apolitical",
"syndicated",
"digital",
"analog",
"bottom-up",
"top-down",
"horizontal",
"vertical",
"agonistic",
"version-controlled",
"feminist",
"decolonial",
"contradictory",
"occasional",
"layered",
"entangled",
"collective",
"complex",
"artificial"
]
}

@ -0,0 +1,7 @@
{
"actor": ["hipsters", "sceners", "seeders", "leechers", "pirates", "librarians", "viruses", "AI", "wizards", "quants", "CEOs", "shareholders", "users", "stenographers", "makers", "artists", "professionals", "hobbyists", "amateurs", "teachers", "students", "doctors", "patients", "publics", "victims", "criminals", "cooks", "editors", "programmers", "preachers", "livecoders", "victors", "individuals", "nations", "visitors", "hackers", "readers", "consumers", "mediators","actors", "builders", "children", "adults", "men", "women", "architects", "terrorists", "tourists", "persons", "monkeys","parents","boys","girls", "photographers", "musicians", "designers", "chatbots", "regulators", "dancers", "developers", "authors", "robots", "dogs", "cats", "judges", "celebrities", "computers", "networks", "media", "businesses", "governments", "politicians", "presidents", "families", "communities", "managers", "entrepreneurs", "whistleblowers"],
"action": ["scanning", "uploading", "seeding", "screening", "spamming", "tweeting", "tooting", "singing", "feeling", "listening to", "playing", "reading", "disrupting", "acting as", "dancing", "seeing", "cooking", "preaching", "translating", "yelling", "screaming", "running", "whistleblowing", "leaking", "painting", "writing", "laughing at","dictating", "designing", "destroying", "showing", "debating", "creating", "performing", "building", "hiding", "surveilling", "faking", "banning", "watching", "deciding", "dealing", "exchanging", "mediating", "fighting", "vandalizing", "parodying", "questioning", "criticizing", "provoking", "obscuring", "shouting on", "controlling", "demanding", "delivering", "disclosing", "developing", "divulging", "lying about", "bragging about", "echoing", "portraying", "helping", "hiding", "interrupting", "conspiring", "sending"],
"prefix": ["proto", "xeno", "cyber", "retro", "pre", "ante", "proto", "post", "avant", "neo", "anti", "co", "epi", "ex", "extra", "hyper", "infra", "inter", "macro", "micro", "mid", "mono", "non", "multi", "omni", "semi", "sub", "super", "trans", "cross", "uni"],
"sort": ["bootleg", "capitalist", "progressive", "organic", "industrial", "homemade", "craft", "AI", "encrypted", "inclusive", "fair", "transparent", "command line", "granular", "crypto", "centralised", "blockchain", "free", "libre", "open", "proprietary", "DIY", "DIWO", "homebrew", "decentralised", "closed source", "binary", "plaintext", "federated", "distributed", "online", "offline", "raw", "compressed", "deep", "dark", "common", "shared", "liberal", "anarcho-capitalist", "anarcho-communist", "anarcho-syndicalist", "authoritarian", "capitalist", "communist", "marxist", "apolitical", "syndicated", "digital", "analog", "bottom-up", "top-down", "horizontal", "vertical", "agonistic", "version-controlled"],
"media": ["image boards", "forums", "warez", "screens", "galleries", "screensavers", "viruses", "frequencies", "files", "operating systems", "databases", "privacy", "posters", "cybernetics", "floppy disks", "CD-ROM", "LaserDiscs", "apps", "spam", "startups", "manuscripts", "carpets", "markets", "architectures", "feels", "books", "games", "radio", "music", "graffitis", "blogs", "theatre", "woodblocks", "dances", "recycling", "emails", "food", "migration", "magazines", "maps", "comics", "finance", "teaching", "memes", "terrorism", "futures", "traditions", "corruption", "regulation", "porn", "web", "vandalism", "samizdat", "ethics", "billboards", "advertising", "manifestos", "leaflets", "browsers", "wikis", "canvases", "tapes", "vinyls", "records", "synthesizers", "feeds", "newspapers", "HTML pages", "codex", "software", "codes of conduct"]
}

@ -0,0 +1,324 @@
action:
- scanning
- uploading
- seeding
- screening
- spamming
- tweeting
- tooting
- singing
- feeling
- listening to
- playing
- reading
- disrupting
- acting as
- dancing
- seeing
- cooking
- preaching
- translating
- yelling
- screaming
- running
- whistleblowing
- leaking
- painting
- writing
- laughing at
- dictating
- designing
- destroying
- showing
- debating
- creating
- performing
- building
- hiding
- surveilling
- faking
- banning
- watching
- deciding
- dealing
- exchanging
- mediating
- fighting
- vandalizing
- parodying
- questioning
- criticizing
- provoking
- obscuring
- shouting on
- controlling
- demanding
- delivering
- disclosing
- developing
- divulging
- lying about
- bragging about
- echoing
- portraying
- helping
- hiding
- interrupting
- conspiring
- sending
- repairing
- disagreeing
actor:
- hipsters
- sceners
- seeders
- leechers
- pirates
- librarians
- viruses
- AI
- wizards
- quants
- CEOs
- shareholders
- users
- stenographers
- makers
- artists
- professionals
- hobbyists
- amateurs
- teachers
- students
- doctors
- patients
- publics
- victims
- criminals
- cooks
- editors
- programmers
- preachers
- livecoders
- individuals
- nations
- visitors
- hackers
- readers
- consumers
- mediators
- actors
- builders
- children
- adults
- architects
- tourists
- persons
- parents
- photographers
- musicians
- designers
- chatbots
- regulators
- dancers
- developers
- authors
- robots
- dogs
- cats
- judges
- celebrities
- computers
- networks
- media
- businesses
- governments
- politicians
- presidents
- families
- communities
- managers
- entrepreneurs
- whistleblowers
- infiltrators
- book binders
- impatient people
- collectives
- research centers
media:
- image boards
- forums
- warez
- screens
- galleries
- screensavers
- viruses
- frequencies
- files
- operating systems
- databases
- privacy
- posters
- cybernetics
- floppy disks
- CD-ROMs
- LaserDiscs
- apps
- spam
- startups
- manuscripts
- carpets
- markets
- architectures
- feels
- books
- games
- radio
- music
- graffitis
- blogs
- theatre
- woodblocks
- dances
- recycling
- emails
- food
- migration
- magazines
- maps
- comics
- finance
- teaching
- memes
- futures
- traditions
- corruption
- regulation
- porn
- webpages
- vandalism
- samizdat
- ethics
- billboards
- advertising
- manifestos
- leaflets
- browsers
- wikis
- canvases
- tapes
- vinyls
- records
- synthesizers
- feeds
- newspapers
- HTML pages
- codex
- software
- codes of conduct
- epubs
- PDFs
- NFTs
- stories
- dictionaries
- libraries
- bugs
- disagreements
prefix:
- proto
- xeno
- cyber
- retro
- pre
- ante
- proto
- post
- avant
- neo
- anti
- co
- epi
- ex
- extra
- hyper
- infra
- inter
- macro
- micro
- mid
- mono
- non
- multi
- omni
- semi
- sub
- super
- trans
- cross
- uni
- minor
sort:
- bootleg
- capitalist
- progressive
- organic
- industrial
- homemade
- craft
- AI
- encrypted
- inclusive
- fair
- transparent
- command line
- granular
- crypto
- centralised
- free
- libre
- open
- proprietary
- DIY
- DIWO
- homebrew
- decentralised
- closed source
- binary
- plaintext
- federated
- distributed
- online
- offline
- raw
- compressed
- deep
- dark
- common
- shared
- liberal
- anarcho-capitalist
- anarcho-communist
- anarcho-syndicalist
- authoritarian
- capitalist
- communist
- marxist
- apolitical
- syndicated
- digital
- analog
- bottom-up
- top-down
- horizontal
- vertical
- agonistic
- version-controlled
- feminist
- decolonial
- contradictory
- occasional
- layered
- entangled
- collective
- complex
- artificial

@ -0,0 +1,8 @@
import yaml
import json
with open("terms.json") as f:
terms = json.load(f)
print (yaml.dump(terms))

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

@ -39,7 +39,7 @@ XPUB Call for application 2023
**Online open day**: *February 11, 2023*
[See how the call image is made.](./apply/)
[See how the call image is made.](2022/call/)
<a href="https://www.pzwart.nl/experimental-publishing/apply/"><button class="apply">Apply</button></a>
@ -132,40 +132,44 @@ servers for students & staff
<details>
<summary>
Zulip
Hub
![Zulip](images/zulip.webp)
![hub](images/hub.320x.jpg)
</summary>
The [zulip](https://zulip.xpub.nl) instance functions as a private bulletin board system for the XPUB community.
The [xpub hub](https://hub.xpub.nl/) is a public relay to a collection of self-hosted and student-maintained local servers. Using a combination of [VPN](https://tinc-vpn.org/) (virtual private network) and [reverse proxy](https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/), the hub enables experimentation with self-hosting, server portability, local-first and low power infrastructure and [convivial](http://damaged.bleu255.com/Convivial_Computing/) and [feminist](http://damaged.bleu255.com/Feminist_Technology/) server practices.
</details>
<details>
<summary>
Mailing list
</summary>
Zulip
The course uses a mailing list provided by a neighboring network [lurk.org](https://we.lurk.org).
![Zulip](images/zulip.webp)
</summary>
The [zulip](https://zulip.xpub.nl) server functions as a private bulletin board system for the XPUB community, and as a [self-hosted free software](https://zulip.com/) acts as an alternative to centralized proprietary services like Slack and Discord.
</details>
<details>
<summary>
Hotline (jitsi)
Mailing list
![Hotline](images/jitsi.320x.jpg "hotline")
![](images/we.lurk.org.320x.jpg)
</summary>
The [hotline](https://hotline.xpub.nl) is a self-hosted [jitsi](https://jitsi.org) instance.
The course uses a mailing list provided by neighbor network [lurk.org](https://we.lurk.org).
</details>
<details>
<summary>
Hub
Hotline
![hub](images/hub.320x.jpg)
![Hotline](images/jitsi.320x.jpg "hotline")
</summary>
The [xpub hub](https://hub.xpub.nl/) is a public relay to a collection of self-hosted and student-maintained local servers. Using a combination of [VPN](https://tinc-vpn.org/) (virtual private network) and [reverse proxy](https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/), the hub enables experimentation with self-hosting, server portability, local-first and low power infrastructure and [convivial](http://damaged.bleu255.com/Convivial_Computing/) and [feminist](http://damaged.bleu255.com/Feminist_Technology/) server practices.
The [hotline](https://hotline.xpub.nl) is a self-hosted [Jitsi Meet](https://jitsi.org) server, an alternative to proprietary services like Zoom, Teams, and Meet.
</details>
:::
@ -173,6 +177,21 @@ The [xpub hub](https://hub.xpub.nl/) is a public relay to a collection of self-h
------
::: {.flex}
<details>
<summary>
Walkie Talkie
![](2022/walkie-talkie-ref.320x.jpg)
</summary>
The XPUB 2022 graduation was hosted at [Worm](https://worm.org/production/xpub-pzi-graduation-show/) and the academy.
[Project pages and theses](https://project.xpub.nl/)
[Video documentation](https://media.xpub.nl/2022/gradshow/Walkie_Talkie.720p.mp4)
[Catalog](https://media.xpub.nl/2022/walkie-talkie.pdf) Collective publication made with [pagedjs](http://pagedjs.org)
</details>
<details>
<summary>
Queerying Wikidata
@ -181,8 +200,8 @@ Queerying Wikidata
</summary>
XPUB, Anaïs Berck and queer artivist/wikimedian Z. Blace join forces to explore automatic writing experiments querying and queering Wikidata.
[Workshop](/2022/queeryingwikidata/)
[Recorded presentation](//media.xpub.nl/2022/)
[Workshop announcement](/2022/queeryingwikidata/)
Recorded video presentation (coming soon)
</details>
@ -194,10 +213,10 @@ Paged.js Workshop
</summary>
Julie Blanc and Julien Taquet from the paged.js project share their experiences at the intersection of design practice and technical standards.
[Paged.js](https://pagedjs.org/) is a rendering tool for previewing, inspecting and designing a PDF in the browser, that is known for specifically accommodating designers using web-to-print techniques in their publications and book making practice. Julie and Julien both work (or have worked) as developers on the project, so the workshop gave students an opportunity to ask them about Paged.js as an open source project, and what it means to develop and maintain it. A nice example of paged.js in action is the [2022 graduation catalog](https://media.xpub.nl/2022/walkie-talkie.pdf).
[Paged.js](https://pagedjs.org/) is a rendering tool for previewing, inspecting and designing a PDF in the browser, that is known for specifically accommodating designers using web-to-print techniques in their publications and book making practice. Julie and Julien both work (or have worked) as developers on the project, so the workshop gave students an opportunity to ask them about Paged.js as an open source project, and what it means to develop and maintain it. A nice example of paged.js in action is [Walkie Talkie](https://media.xpub.nl/2022/walkie-talkie.pdf), the 2022 XPUB graduation catalog.
[Workshop description](/2022/pagedjs/)
[Recording](https://media.xpub.nl/2022/2022-10-13-pagedjs.html)
[Workshop announcement](/2022/pagedjs/)
[Recorded video presentation](https://media.xpub.nl/2022/2022-10-13-pagedjs.html)
</details>
@ -207,7 +226,9 @@ X-unPub
![](./2022/xunpub.320x.jpg)
</summary>
[unPublic](https://unpublic.bandcamp.com/album/paris-22-june-2022?fbclid=IwAR0i1kkNAKDhjbYlqrWgB_Em58f0Q9PaPAbfhg0XiaZbguPMEafLhENfLuQ): XPUB2 presenting Special Issue #18 work in Paris
XPUB1 presented their work during Special Issue #18 at a residency in Paris
[Recorded audio presentation](https://unpublic.bandcamp.com/album/paris-22-june-2022?fbclid=IwAR0i1kkNAKDhjbYlqrWgB_Em58f0Q9PaPAbfhg0XiaZbguPMEafLhENfLuQ)
</details>
:::
@ -223,7 +244,13 @@ SWAAT #00
![](2021/SWAAT.320x.jpg)
</summary>
[Software with an Attitude (SWAAT), Issue #00](https://media.xpub.nl/2021/SWAAT-00.pdf): Zine edited by Manetta Berends and Michael Murtaugh reflecting on the experiences of teaching programming and alternative tools in the context of the XPUB [Prototyping](https://pzwiki.wdka.nl/mediadesign/Prototyping) class.
Software with an Attitude (SWAAT), Issue #00
Zine edited by Manetta Berends and Michael Murtaugh reflecting on the experiences of teaching programming and alternative tools in the context of the XPUB [Prototyping](https://pzwiki.wdka.nl/mediadesign/Prototyping) class.
[Zine (pdf)](https://media.xpub.nl/2021/SWAAT-00.pdf)
[Printable A5 booklet (pdf)](https://media.xpub.nl/2021/SWAAT-00-book.pdf)
</details>
@ -233,7 +260,9 @@ Screen Walk with Aymeric Mansoux and Roel Roscam-Abbing
![](images/dropinvsengagement.320x.jpg)
</summary>
[Screen Walk with Aymeric Mansoux and Roel Roscam-Abbing](https://thephotographersgallery.org.uk/whats-on/watch-screen-walk-aymeric-mansoux-and-roel-roscam-abbing): Online presentation by Aymeric Mansoux & Roel Roscam-Abbing including a description of XPUB as an example of making "systemic shifts" with alternative infrastructure.
Online presentation by Aymeric Mansoux & Roel Roscam-Abbing including a description of XPUB as an example of making "systemic shifts" with alternative infrastructure.
[Recorded video presentation](https://thephotographersgallery.org.uk/whats-on/watch-screen-walk-aymeric-mansoux-and-roel-roscam-abbing)
</details>
:::
@ -241,7 +270,7 @@ Screen Walk with Aymeric Mansoux and Roel Roscam-Abbing
colophon
------------
This site is made with [pandoc](https://pandoc.org/) & [markdown](https://pandoc.org/MANUAL.html#pandocs-markdown).
This site is made with [pandoc](https://pandoc.org/), [markdown](https://pandoc.org/MANUAL.html#pandocs-markdown), and [git](https://git.xpub.nl/XPUB/xpub.nl/).
apply to the course

@ -34,7 +34,7 @@
<p><img src="./2022/call2023.320x.jpg" title="XPUB Call for applications" alt="XPUB Call 2023" /> </summary></p>
<p><strong>Applications deadlines</strong>: March 7, 2023 (non-EU) and <em>May 10, 2023</em> (EU)</p>
<p><strong>Online open day</strong>: <em>February 11, 2023</em></p>
<p><a href="./apply/">See how the call image is made.</a></p>
<p><a href="2022/call/">See how the call image is made.</a></p>
<p><a href="https://www.pzwart.nl/experimental-publishing/apply/"><button class="apply">Apply</button></a></p>
</details>
<h2 id="public-servers">public servers</h2>
@ -73,55 +73,69 @@
<h2 id="servers-for-students-staff">servers for students &amp; staff</h2>
<div class="flex">
<details>
<p><summary> Zulip</p>
<img src="images/zulip.webp" alt="Zulip" /> </summary> The <a href="https://zulip.xpub.nl">zulip</a> instance functions as a private bulletin board system for the XPUB community.
<p><summary> Hub</p>
<img src="images/hub.320x.jpg" alt="hub" /> </summary> The <a href="https://hub.xpub.nl/">xpub hub</a> is a public relay to a collection of self-hosted and student-maintained local servers. Using a combination of <a href="https://tinc-vpn.org/">VPN</a> (virtual private network) and <a href="https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/">reverse proxy</a>, the hub enables experimentation with self-hosting, server portability, local-first and low power infrastructure and <a href="http://damaged.bleu255.com/Convivial_Computing/">convivial</a> and <a href="http://damaged.bleu255.com/Feminist_Technology/">feminist</a> server practices.
</details>
<details>
<p><summary> Mailing list </summary></p>
The course uses a mailing list provided by a neighboring network <a href="https://we.lurk.org">lurk.org</a>.
<p><summary> Zulip</p>
<img src="images/zulip.webp" alt="Zulip" /> </summary> The <a href="https://zulip.xpub.nl">zulip</a> server functions as a private bulletin board system for the XPUB community, and as a <a href="https://zulip.com/">self-hosted free software</a> acts as an alternative to centralized proprietary services like Slack and Discord.
</details>
<details>
<p><summary> Hotline (jitsi)</p>
<img src="images/jitsi.320x.jpg" title="hotline" alt="Hotline" /> </summary> The <a href="https://hotline.xpub.nl">hotline</a> is a self-hosted <a href="https://jitsi.org">jitsi</a> instance.
<p><summary> Mailing list</p>
<p><img src="images/we.lurk.org.320x.jpg" /> </summary></p>
The course uses a mailing list provided by neighbor network <a href="https://we.lurk.org">lurk.org</a>.
</details>
<details>
<p><summary> Hub</p>
<img src="images/hub.320x.jpg" alt="hub" /> </summary> The <a href="https://hub.xpub.nl/">xpub hub</a> is a public relay to a collection of self-hosted and student-maintained local servers. Using a combination of <a href="https://tinc-vpn.org/">VPN</a> (virtual private network) and <a href="https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/">reverse proxy</a>, the hub enables experimentation with self-hosting, server portability, local-first and low power infrastructure and <a href="http://damaged.bleu255.com/Convivial_Computing/">convivial</a> and <a href="http://damaged.bleu255.com/Feminist_Technology/">feminist</a> server practices.
<p><summary> Hotline</p>
<img src="images/jitsi.320x.jpg" title="hotline" alt="Hotline" /> </summary> The <a href="https://hotline.xpub.nl">hotline</a> is a self-hosted <a href="https://jitsi.org">Jitsi Meet</a> server, an alternative to proprietary services like Zoom, Teams, and Meet.
</details>
</div>
<h2 id="section">2022</h2>
<div class="flex">
<details>
<p><summary> Walkie Talkie</p>
<p><img src="2022/walkie-talkie-ref.320x.jpg" /> </summary></p>
<p>The XPUB 2022 graduation was hosted at <a href="https://worm.org/production/xpub-pzi-graduation-show/">Worm</a> and the academy.</p>
<a href="https://project.xpub.nl/">Project pages and theses</a><br />
<a href="https://media.xpub.nl/2022/gradshow/Walkie_Talkie.720p.mp4">Video documentation</a><br />
<a href="https://media.xpub.nl/2022/walkie-talkie.pdf">Catalog</a> Collective publication made with <a href="http://pagedjs.org">pagedjs</a>
</details>
<details>
<p><summary> Queerying Wikidata</p>
<p><img src="./2022/queeryingwikidata/xpub_queeryingwikidata_icon.png" alt="queerying wikidata" /> </summary> XPUB, Anaïs Berck and queer artivist/wikimedian Z. Blace join forces to explore automatic writing experiments querying and queering Wikidata.</p>
<a href="/2022/queeryingwikidata/">Workshop</a><br />
<a href="//media.xpub.nl/2022/">Recorded presentation</a>
<a href="/2022/queeryingwikidata/">Workshop announcement</a><br />
Recorded video presentation (coming soon)
</details>
<details>
<p><summary> Paged.js Workshop</p>
<p><img src="./images/650x400_thumb_pagedjs.png" /> </summary> Julie Blanc and Julien Taquet from the paged.js project share their experiences at the intersection of design practice and technical standards.</p>
<p><a href="https://pagedjs.org/">Paged.js</a> is a rendering tool for previewing, inspecting and designing a PDF in the browser, that is known for specifically accommodating designers using web-to-print techniques in their publications and book making practice. Julie and Julien both work (or have worked) as developers on the project, so the workshop gave students an opportunity to ask them about Paged.js as an open source project, and what it means to develop and maintain it. A nice example of paged.js in action is the <a href="https://media.xpub.nl/2022/walkie-talkie.pdf">2022 graduation catalog</a>.</p>
<a href="/2022/pagedjs/">Workshop description</a><br />
<a href="https://media.xpub.nl/2022/2022-10-13-pagedjs.html">Recording</a>
<p><a href="https://pagedjs.org/">Paged.js</a> is a rendering tool for previewing, inspecting and designing a PDF in the browser, that is known for specifically accommodating designers using web-to-print techniques in their publications and book making practice. Julie and Julien both work (or have worked) as developers on the project, so the workshop gave students an opportunity to ask them about Paged.js as an open source project, and what it means to develop and maintain it. A nice example of paged.js in action is <a href="https://media.xpub.nl/2022/walkie-talkie.pdf">Walkie Talkie</a>, the 2022 XPUB graduation catalog.</p>
<a href="/2022/pagedjs/">Workshop announcement</a><br />
<a href="https://media.xpub.nl/2022/2022-10-13-pagedjs.html">Recorded video presentation</a>
</details>
<details>
<p><summary> X-unPub</p>
<img src="./2022/xunpub.320x.jpg" /> </summary> <a href="https://unpublic.bandcamp.com/album/paris-22-june-2022?fbclid=IwAR0i1kkNAKDhjbYlqrWgB_Em58f0Q9PaPAbfhg0XiaZbguPMEafLhENfLuQ">unPublic</a>: XPUB2 presenting Special Issue #18 work in Paris
<p><img src="./2022/xunpub.320x.jpg" /> </summary> XPUB1 presented their work during Special Issue #18 at a residency in Paris</p>
<a href="https://unpublic.bandcamp.com/album/paris-22-june-2022?fbclid=IwAR0i1kkNAKDhjbYlqrWgB_Em58f0Q9PaPAbfhg0XiaZbguPMEafLhENfLuQ">Recorded audio presentation</a>
</details>
</div>
<h2 id="section-1">2021</h2>
<div class="flex">
<details>
<p><summary> SWAAT #00</p>
<img src="2021/SWAAT.320x.jpg" /> </summary> <a href="https://media.xpub.nl/2021/SWAAT-00.pdf">Software with an Attitude (SWAAT), Issue #00</a>: Zine edited by Manetta Berends and Michael Murtaugh reflecting on the experiences of teaching programming and alternative tools in the context of the XPUB <a href="https://pzwiki.wdka.nl/mediadesign/Prototyping">Prototyping</a> class.
<p><img src="2021/SWAAT.320x.jpg" /> </summary> Software with an Attitude (SWAAT), Issue #00</p>
<p>Zine edited by Manetta Berends and Michael Murtaugh reflecting on the experiences of teaching programming and alternative tools in the context of the XPUB <a href="https://pzwiki.wdka.nl/mediadesign/Prototyping">Prototyping</a> class.</p>
<p><a href="https://media.xpub.nl/2021/SWAAT-00.pdf">Zine (pdf)</a><br />
<a href="https://media.xpub.nl/2021/SWAAT-00-book.pdf">Printable A5 booklet (pdf)</a></p>
</details>
<details>
<p><summary> Screen Walk with Aymeric Mansoux and Roel Roscam-Abbing</p>
<img src="images/dropinvsengagement.320x.jpg" /> </summary> <a href="https://thephotographersgallery.org.uk/whats-on/watch-screen-walk-aymeric-mansoux-and-roel-roscam-abbing">Screen Walk with Aymeric Mansoux and Roel Roscam-Abbing</a>: Online presentation by Aymeric Mansoux &amp; Roel Roscam-Abbing including a description of XPUB as an example of making “systemic shifts” with alternative infrastructure.
<p><img src="images/dropinvsengagement.320x.jpg" /> </summary> Online presentation by Aymeric Mansoux &amp; Roel Roscam-Abbing including a description of XPUB as an example of making “systemic shifts” with alternative infrastructure.</p>
<a href="https://thephotographersgallery.org.uk/whats-on/watch-screen-walk-aymeric-mansoux-and-roel-roscam-abbing">Recorded video presentation</a>
</details>
</div>
<h2 id="colophon">colophon</h2>
<p>This site is made with <a href="https://pandoc.org/">pandoc</a> &amp; <a href="https://pandoc.org/MANUAL.html#pandocs-markdown">markdown</a>.</p>
<p>This site is made with <a href="https://pandoc.org/">pandoc</a>, <a href="https://pandoc.org/MANUAL.html#pandocs-markdown">markdown</a>, and <a href="https://git.xpub.nl/XPUB/xpub.nl/">git</a>.</p>
<h2 id="apply-to-the-course">apply to the course</h2>
<p><strong>Applications deadlines</strong>: March 7, 2023 (non-EU) and <em>May 10, 2023</em> (EU)</p>
<p><strong>Online open day</strong>: <em>February 11, 2023</em></p>

Loading…
Cancel
Save