Possiamo pensare ad Habitat come a una mappa, disseminata di punti sparsi, attraversata da percorsi ingarbugliati. Linee che si incontrano con linee che si diramano dentro e fuori, e fuori e dentro, in una danza capillare.
Possiamo pensare ad Habitat come a una colonia di funghi, il cui mondo sotterraneo collega silenziosamente i molteplici elementi di un insieme disperso.
Oppure, possiamo pensare ad Habitat come a un luogo, per alcuni di passaggio, per altri chiamato casa, in cui far convergere corpi, pensieri, abitudini e pratiche.
Il colophon, che riconosce i ruoli e le responsabilità delle persone o degli ingredienti coinvolti in un progetto, dovrebbe tradizionalmente concludere ogni pubblicazione. Nel nostro caso, rappresenta la premessa. Una premessa che parla dell'importanza della convivialità, riconoscendo, senza gerarchie, l'importanza di ogni incontro, amico,
viaggiatore o persona che ha lasciato una traccia in questo luogo.
Da ogni corpo errante abbiamo preso in prestito qualcosa, e ognuno di loro ha portato con sé qualcos'altro quando è ripartito.
Sembra che qui tutti siano abitanti della stessa terra.
We can think of Habitat as a map, spangled of scattered dots, crossed of entangles paths. Lines meeting lines that branch in and out, and out and in, in a capillary dance.
We can think of Habitat as a mushroom colony, whose underworld silently link the multiple elements of a dispersed whole.
Or, we can think of Habitat as a place, for some of passage, for some called home, in which to converge bodies, thoughts, habits and, practices.
The colophon, which acknowledges the roles and responsibilities of the people or ingredients involved in a project, should traditionally conclude every publication. In our case, it represent the premise. A premise that speaks about the importance of conviviality, recognizing, without hierarchy, the special bring of each encounter, friend, traveler or person who left a trace in this place.
From each errant body we borrowed something, and each of them carried something else with them when they left again.
It seems that here, everyone is an inhabitant of the same land.
Abo Rahmy Ilaria • Åhnebrink Carl • Amadori Lucia • Amphibia • Angelo e Jeck • Aniello • Argnani Michele • Ayce Bio • Banjurtrungkajorn Virada • Barkai Avital • Bartolini Eleonora • Basnayaka Mayomi • Bendandi Amanda • Bianchi Lidia • Birby • Bonduelle Linus • Bonetti Susanna • Bordes Emilie • Bosi Lorenzo • Bozhnjaku Giorgina • Braida Elena • Brosio Ermanno • Bucciarelli Pietro • Bullo Tommaso • Buskevica Paula • Candoli Matteo • Canepa Bianca Maria • Capalti Luna • Cappelli Claudia • Capuccini Belloni Margherita • Caracappa Giuseppe • Carminati Chiara • Carminati Chiara • Casadio Michela • Casanova Chiara • Catanzaro Claudia • Cavallari Luna • Cavina Matteo • Cesari Marco • Ciappini Benedetta • Clementino Marco • Colombo Stefano • Colucci Matteo • Cosentino Eugenio • Crighton Gina • Cusimano Roberta • D'urbano Anna • Daverio Tommaso • De Marchi Leonardo • Dellafoglia Marta • Devis Numero 1 • Dissimile Andrea • Donati Chiara • Donati Michele • Dottorini Micaela Livia • Duport Olivier • D‘Almeida Rafael • Ercoli Federico • Faccini Arianna • Fantoni Montana Riccardo • Fazzi Giulia • Ferrari Alecio • Flavio Rossi • Fogliata Andrea • Fogliata Virginia • Fontanelli Lucia • Foucaut Martin • Francia Lamattina Zoe • Franciosi Federico • Francisetti Chiara • Frederic Ronco • Fuzzi Greta • Gaidano Andrea • Gaidano Andrea • Gandini Gabriele • Garcia Aycardi Camilo • Gargaglione Erica • Ghisio Paolo • Giammarini Elena • Giammario e Famiglia Rocchi • Gianfranco e famiglia Billi • Giargo in Arte • Giuseppe Bendoni e i cinghialai • Gorla Giacomo Guglielmo • Grégoire Adèle • Grünberger Ira • Guidotti Lucilla • Hollyspleef • Italia90 • Jansen Roze • Jänchen Georg • Krebs Linde Natasha • Laadro • Lee Euna • Lega Jacopo • Lehmann Max • Lindhout Ilya • Liquori Benedetta • Lisi Lucilla • Liverani Maria Sole • Lobo Ines • Losi Matilde • Macchi Lucrezia • Magnani Gian Marco • Mammana Flora • Marani Filippo • Marazzi Camilla • Marcello • Marta Giunipero • Martínez Marín Paulina • Marullo Luca • Marzo Alan • Marzolla Graziano • Marzolla Ilaria • Mathys Ella • Matteucci Nicolò • Merlo Guadalupe • Meyer Stefan • Michele detto Michele Salerno • Miky Master DJ • Miseyko Anastasia • Molina Concha • Morini Virginia • Nonaj Angelina • Oliviero e la Berta • Paace2000 • Pagano Chiara • Passanti Leonardo • Paola della Biblioteca di Tredozio • Patuelli Matilde • Peters Erik • Piacentini Alessandra • Plutino Alice • Poggiolini Bruno (L'elettricista. Grande estimatore di Lady Chatterley) • Poggiolini Giorgio (Il Tabaccaio) • Poggiolini Paola • Poni Federico • Pra Mio Matteo • Preto Federica • Previti Alessandro • Pusinanti Daniele • Quinto Cappelli • Rabiti Elisa • Rigoni Stefania • Rizzato Marta • Romera Luis Lecea • Ronchini Michele • Sabena Nicholas • Saggese • Salvatori Luca • Salvatori Marco • Sambo Giovanni • Sandri Anna • Santarsenio Valerio • Scavoni Ilaria • Schaeberle Amelie • Schubertz Julian • Scola Clara • Serato Gabriella • Silvestre Itziar • Simon Daniel • Steiger Jonathan • Tamburino Stefano • Tarò Enrico • Taró Mattia • Tedioli Alberto • Teglia Olivia • Teichmann Louisa • Tosetto Leonardo • Turenne • Travaglini Lorenzo • Valgimigli Lorenzo • van Leest Oscar • van Meeuwen Floor • Vega Cristopher • Veltman Carla • Villa Ivan • Vittone Giacomo • Viviano Matteo • Viziale Marco • Wiering Koenraad • Woc • Zangenberg Rosa • Zaniboni Francesco • Zannoni Sara • Zguri Enkeleda • Zocca Anita • Zuccaro Giorgia
Parasite2.0 • Zine Camp • Spread! Zine • SPRINT – Independent Publishers & Artists' Books Salon • AMRO Festival – Art Meets Radical Openness • Het Neue Institute • Flee Project • Grezz Press • Italia90 • Archivio180 • 47011 Records • Fototeca Manfrediana • Funclab Records • 47011 Records • Clang! • Forno Vagabondo • Studio for immediate Space – Sandberg Instituut • XPUB – Piet Zwart Institute • KABK – Royal Academy of Arts • Terraforma • Ptwschool • Alpi Wood • Pian di Stantino • Peromatto • Stamperia Il Guado • Tipo-litografica Fabbri • Filo e Foglia • Agriturismo Ridiano • Chiaroscuro • Biblioteca di Tredozio
Proloco Tredozio • Proloco San Benedetto • Proloco San Casciano • Proloco Portico di Romagna
Celebriamo anche
La Montagna Sacra e L'Antenna • L'ascia di Ronco • I Gorgoni • Biblioteca dei Libri Liberi di Portico • La Taverna dei Rioni per i fegatini e le vibrazioni • Macelleria di Tredozio per i Ciccioli • Il Bar Derna • Chiosco San Rocco di Portico per le piadine epiche • Ringraziamenti alle piante e gli animali: • Le Api • Le Porcinelle • Il nostro amico Castagneto ("lui ci guarda sempre") • Loro
The platform is used as web-container for a series of remix/alternative display of our archive's assets.
You will see boxes, each box is created by a resident. You will be able to generate pdf to print! You will check the checkboxes beside each box to select which one to queue and then click PRINT.
For this platform2print has been used:
As rudimental CMS has been used our NextCloud instance.
NextCloud, as it sounds, it's a self-hosted open-source cloud. You can store files, share them, do shared calendars and todo lists, etc...
The People from MEGASTUDIO recidency could then upload in their shared folders the contents of this publication.
Flask reads the path of all the folders that the users uploaded in our server to create a JSON file, a dictionary.
"ah__you_are_also_here": {
"box": [
"oh!_ci_sei_anche_tu!001.jpg"
],
"showbar": [
"enri.jpeg",
"IMG_9559.JPG",
"WhatsApp_Image_2022-07-27_at_11.16.50.jpeg",
"3.jpg",
"MAT03671.JPG",
"MAT02455.jpeg",
"il_mattino_ha_l'oro_in_bocca_(3).JPG",
"oh!_ci_sei_anche_tu!002.jpg",
"Ah! You are also here!\n",
"MAT02462.jpeg"
]
},
If in the platform you open the "TREE", you will see the structure of the folders: the JSON file contains that, and Flask reads it after compiling it to create the HTML page.
First of all, who programmed this platform really likes Python (Flask is made of it) and never really tried Flask. So why not?
Flask is a web framework, so it's used to develop and deploy web stuff.
You install it in the server via python (see below)
You can make flask perform only in the server and serves to the user static files: it is Server Side Rendering.
It is definitely more ecological then make Javascript runs everything in the device of each user.
So, Python compiles with Jinja a html template:
Jinja is an engine to make templates, for to facilitate the compiling with Python. It comes with Flask.
"Paged.js is a free and open source JavaScript library that paginates content in the browser to create PDF output from any HTML content. This means you can design works for print (eg. books) using HTML and CSS!"
So yep, after you select which boxes you want to print (and which layout you want to use, with the sliders) and click print, Flask compiles another HTML based on Paged.js
You will see the magic in the file app.py
The code is in our GIT git.habitattt.it/ministro/MEGASTUDIO_platform
So, you have to install Python
Then you create a folder, and from the terminal you go there (if you don't know what I'm talkin about, first have a look to basic commands in Terminal).
Create a virtual environment with:
python3 -m venv .
And activate it
source bin/activate
And then install flask
pip3 install flask
To run:
flask run
The files are resized in CLI (Command Line Interface, the terminal, directly from the server) with bash and ImageMagick. You can do it also with MacOs, they are bot "unix" based.
To adjust the name of the files and folders, to not have blank spaces, we can run:
for f in */box/*; do mv "$f" "${f// /_}"; done
for f in */showbar/*; do mv "$f" "${f// /_}"; done
First we convert every picture in "jpeg", to be sure they're all jpegs.
ls | grep -v jpeg$ | while IFS= read -r FILENAME; do; convert "${FILENAME}" "${FILENAME%.*}.jpeg"; rm "${FILENAME}"; done
Then we run this in order to resize until 300kb (this value can be changed). This exploits also python because it's just easier. Save this as "resize.py", put it in the asset folder and run the magic.
import os
box = os.listdir('box')
showbar = os.listdir('showbar')
for bb in box:
os.system(f"convert ./box/{bb} -define jpeg:extent=300kb ./box/{bb}" )
for ss in showbar:
os.system(f"convert ./showbar/{ss} -define jpeg:extent=300kb ./showbar/{ss}" )
Any questions? Write us at wiki@habitattt.it