├── .gitignore ├── README.md ├── code-societies-2020.md ├── folder-cities.jpg ├── folder-laser-3.png ├── folder-laser-black-wide.png ├── garden-of-forking-path-ycam ├── look-down │ └── worms-in-dirt.txt ├── look-left │ ├── birds-and-bees.txt │ └── walk-into-ycam │ │ └── walk-into-sfpc-classroom │ │ ├── a-message-from-brian.txt │ │ ├── a-message-from-jane.txt │ │ ├── a-message-from-lauren.txt │ │ ├── a-message-from-melanie.txt │ │ ├── a-message-from-robby.txt │ │ ├── a-message-from-taeyoon.txt │ │ └── the-network-is-a-folder-poem.txt └── look-right │ ├── suspended-orchids.txt │ └── walk-into-the-house │ ├── bathroom │ └── toilet.txt │ ├── bedroom │ └── sleep.txt │ └── kitchen │ ├── family-dinner.txt │ ├── garden.sh │ ├── pots-and-pans.txt │ ├── sink.txt │ └── stove.txt ├── poster.png ├── radical-networks.md ├── sfpc-1.jpg ├── sfpc-fall-2019.md ├── test.md └── two-day-workshop.md /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .dat* 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![](https://github.com/melaniehoff/Peer-to-Peer-Poetry/blob/master/folder-cities.jpg) 2 | 3 | # Peer-to-Peer Folder Poetry 4 | 5 | What if we could transform our online networks from something we passively receive to something we actively create? Folder Poetry is the practice of using the structure of computer folder organization as a new kind of poetic form like the haiku or iambic pentameter. By naming and nesting folders and files, we can create unfolding narratives, rhythmic prose, and choose-your-own-adventure poetry. In this workshop we will collectively create peer-to-peer folder poetry using the command line and Dat. Through lecture, examples, and writing folder poetry as meditation, we will explore the narrative qualities of folder structures and Dat as a tool for building digital spaces with and for our networks. 6 | 7 | In this session we will get intimate with computers and write poetry with their logic. This workshop is an introduction to writing folder poetry, the P2P protocol Dat, and navigating the command line interface using Bash. 8 | 9 | Together, we will create living networked poetry through connecting folders on the peer-to-peer web for each other to inhabit and explore. 10 | 11 | This workshop assumes no coding experience and simultaneously takes the position that everyone who interacts with computers in some way is already a programmer. 12 | 13 | **[Always Already Programming](#always-already-programming)** 14 | 15 | 16 | **[Bash Drawings made for Folder Poetry by Taeyoon Choi](https://docs.google.com/presentation/d/1WV_vFHtKB7BUBc3P_oGVlLry6W_8K_fJkJiWzisXonY/edit#slide=id.g60e8df3e27_0_113)** 17 | 18 | 19 | ## Workshops 20 | _P2P Folder Poetry has been taught in multiple places. These are the notes and slides for each place._ 21 | - 🔴[SFPC Fall 2019](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/sfpc-fall-2019.md) 22 | - [Radical Networks - October 2019](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/radical-networks.md) 23 | - [SFPC YCAM - September 2019](https://gist.github.com/melaniehoff/96bffd279b0ea66f61291e231283aab5) 24 | - 📒[Download the Class Zine here](https://melanie-hoff.com/folder-poetry/sfpc-ycam/zine-pdfs-ycam-folder-poetry.zip) 25 | - [SFPC Detroit - August 2019](https://gist.github.com/melaniehoff/7cda150870c869c1990a744dddbd286f) 26 | - 📒[Download the Class Zine here](https://melanie-hoff.com/folder-poetry/sfpc-detroit/detroit-zine-reader.pdf.zip) 27 | - [SFPC Detroit - June 2019](https://github.com/melaniehoff/folderpoetry/blob/master/README.md) 28 | 29 | ## Resources to Review Before Class 30 | - [P2P Folder Poetry Arena Channel](https://www.are.na/melanie-hoff/peer-to-peer-folder-poetry) 31 | 32 | ## Prerequisites 33 | - A computer running macOS, Linux or [Windows 10](https://gist.github.com/solon/4e254be6e0d2e73ef8624470fc9ca852#file-folder-poetry-setup-md) 34 | - An Internet connection to download software packages 35 | - Administrator access to your computer to install software packages 36 | - In this workshop we will use Bash, Node.js, and Dat. 37 | 38 | 39 | ## Session Objectives 40 | 41 | - To create a space where we are getting intimate with computers and writing poetry with their logic 42 | - To develop a taste for creating emotive and community-centered software 43 | - To introduce [Dat](https://dat.foundation/) and navigating the Command Line with [Bash](https://en.wikipedia.org/wiki/Bash_(Unix_shell)) 44 | - To create poetry through building a folder-based city on the peer-to-peer web for each other to inhabit 45 | 46 | 47 | ## Vocabulary 48 | **Word** | **Notes** 49 | --- | --- 50 | Folder Poetry| The practice of using the structure of computer folder organization as a new kind of [poetic form](https://en.wikipedia.org/wiki/Poetry#Forms) like the [haiku](https://en.wikipedia.org/wiki/Haiku) or [iambic pentameter](https://en.wikipedia.org/wiki/Iambic_pentameter). By naming and nesting folders and files, we can create unfolding narratives, rhythmic prose, and choose-your-own-adventure poetry. 51 | terminal | A desktop application to control and make changes to your operating system by typing text commands. In this class we'll use the terminal to create folder poetry. 52 | terminal commands | text commands to control your computer when entered into a command prompt like the terminal. The commands we'll learn will be in a language called Bash. 53 | Bash | is the programming language we use in the terminal, often one line at a time, but we can also put Bash code in a file and run that file. 54 | Peer-to-Peer | Peer-to-peer computing is a way to make distributed networks in which each computer can act as a server for the others, allowing shared access to files without the need for a central server. 55 | Dat | is a data distribution tool for publishing on peer-to-peer networks. 56 | folder | (also referred to as directory) is an organizational regime imposed on your computer used to store and organize files and other folders 57 | file | is an object on a computer which stores data, information, settings, or commands to be used with various computer programs 58 | file types/formats/extensions | indicate how data has been stored and how to read or open files in specific programs. for example, `.txt` files open in a text editor, `.jpg` files open in an image viewer/editor. full list of file formats and extensions [here](https://en.wikipedia.org/wiki/List_of_file_formats) 59 | file path | tells you the location of a file in a system. for example `users/username/desktop/folder_poetry_club` 60 | 61 | # Always Already Programming 62 | 63 | Everyone who interacts with computers has—in important ways—always already been programming them. Why are the ideas of a programmer and a user so divorced from each other? The distinction between programmer and user is reinforced and maintained by a tech industry that benefits from a population rendered computationally passive. 64 | 65 | Every time you make a folder or rename a file on your computer, the actions you take through moving your mouse and clicking on buttons, have an equivalent text command. When you use a visual interface (called a GUI) text commands are still being fired in the background which eventually compile to binary. Using bash in the terminal is a way to get a little closer to the metal and a little further along in uncovering the mechanics of our most common devices. 66 | 67 | Together we can build up and cultivate one another’s agency to shape technology and online spaces that support and care for each other. 68 | 69 | 70 | ## To create our folder poetry, we will use Bash in the terminal. To share our folder poetry, we will use Dat. 71 | 72 | >"Dat is a p2p protocol that enables people to publish content and information to the web from their personal computers. This fundamentally changes the relationship people have to the internet by breaking the client server hierarchy and opens the realm of self publishing to everyone." - [New Computers Working Group](https://p2p.newcomputers.group/guides/why-self-host.html) 73 | 74 | ## Notes on why we're using a spatial and narrative metaphors for learning bash and creating folder poetry 75 | 76 | **Using the command line and computing in general is a relational practice**. You are never using the command line from a “global” perspective. When you issue commands from the command line, you are doing so, from a particular position within the hierarchy of your computer’s file system. 77 | 78 | Similarly, when we are inside a house, we are never simultaneously in the kitchen and the bedroom. If we tried to “get into bed” while in the kitchen, we would not be able to. However if we wanted to wash dishes while standing in the kitchen, we would be able to. 79 | 80 | From the command line, if we have navigated to the Desktop folder but try to perform an action on a file that’s inside your home directory, this would not work. You would have to navigate to the home folder by navigating your file path. 81 | 82 | ___ 83 | 84 | 85 | ## Acknowledgments & Thank You 86 | 87 | **_Thank you these collaborators and friends for guiding and inspiring Peer-to-Peer Folder Poetry_** 88 | 89 | - [Max Fowler](https://mfowler.info/) for creating [Oasis](https://mfowler.info/work/oasis/) which was one of the early sparks for me creating spatial metaphors with folders and was a beautiful example of collaborating on these folder structures through SSH 90 | - [Taeyoon Choi](http://taeyoonchoi.com/) for inviting me to teach this class at SFPC in Detroit and Japan and for suggesting I name it Folder Poetry instead of Folder Structure Narratives. Another thank you for encouraging me to bring Folder Poetry to the P2P web. And for the [Bash drawings](https://docs.google.com/presentation/d/1WV_vFHtKB7BUBc3P_oGVlLry6W_8K_fJkJiWzisXonY/edit#slide=id.g60e8df3e27_0_113) he created for Folder Poetry 91 | - [Neta Bomani](https://www.netabomani.com/) for designing and printing the first Folder Poetry with Bash Zine 92 | - [Teikaut](https://www.instagram.com/teikaut/?hl=en) for printing the second Folder Poetry zine on Risograph 93 | - [Brian Solon](https://twitter.com/briansolon?lang=en) for being the Folder Poetry TA twice and writing custom Folder Poetry software students to use in the terminal 94 | - [Callil Capuozzo](https://callil.com/) for guiding me through how Dat works and suggesting ways to integrate Folder Poetry with Dat 95 | - [Laurel Schwulst](http://laurelschwulst.com/) for her many tender Dat Projects and for creating http://p2pforever.org/, a charming and helpful P2P resource 96 | - [Dan Taeyoung](https://dantaeyoung.com/) for giving incredible feedback on the class structure 97 | - [Lauren Gardner](http://laurengardner.com/) for iniviting me to teach Folder Poetry at SFPC Fall 2019 and for helping to create sustainable spaces for creative ideas always 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | -------------------------------------------------------------------------------- /code-societies-2020.md: -------------------------------------------------------------------------------- 1 | # P2P Folder Poetry: An introduction to Re-introducing Yourself to Computers 2 | 3 | - [☎️ P2P Address book 🦋](https://docs.google.com/spreadsheets/d/1nDLIUVbKFc3XNALA7Uf65ra-sH4AsPewWWajt2ltxMY/edit?usp=sharing) 4 | - [How to share your poems on the p2p web] 5 | - [Install Node & Dat](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/code-societies-2020.md#install-node--dat) 6 | - [Rules of p2p Folder Poetry](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/code-societies-2020.md#-your-folder-poetry-structure) 7 | - [Bash commands](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/code-societies-2020.md#-bash--terminal-commands) 8 | - [Editing your Bash Profile](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/code-societies-2020.md#editing-your-bash_profile) 9 | - [Folder Poem Examples](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/code-societies-2020.md#read-folder-poetry) 10 | - [Slides](https://docs.google.com/presentation/d/1z0q_4SmfasCEsMocNmCdvosPGf_xZX5PMxuimWRP4uA/edit#slide=id.g6d44d3a07e_0_20) 11 | - [Prompt](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/test.md#prompt-folder-poem-as-school) 12 | - [Helpful Supplemental Codes](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/test.md#helpful-codes) 13 | - [Download the Garden of Forking Paths and move it to your home folder](https://melanie-hoff.com/folder-poetry/sfpc-2019/garden-of-forking-paths.zip) 14 | 15 | 16 | ![](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/folder-laser-black-wide.png) 17 | 🦋🦋🦋 18 | 19 | ## In class we will get into small groups and share our poems on the p2p web 💜 20 | 21 | ### 📤 Sharing your poem 22 | **First we will share our poems, then we will recieve other's** 23 | 24 | 1. make sure your poem lives inside ~/my-folder-poem/your-name/your-poem-here 25 | 2. `cd ~/my-folder-poem` 26 | - note if your my-folder-poem/ folder is in a different directory, this part may look like `cd ~/code-societies/my-folder-poem` 27 | 3. enter `dat share` in your terminal from inside the folder, my-folder-poem/ 28 | 4. copy and paste the blue url that looks something like `dat://a297239732y98r3y8328320230y352y0350y3520y3` into [P2P Address book](https://docs.google.com/spreadsheets/d/1nDLIUVbKFc3XNALA7Uf65ra-sH4AsPewWWajt2ltxMY/edit?usp=sharing) next to your name 29 | 5. dont close or exit this terminal session so your poem will continue to be shared on the network! 30 | 6. Now you are sharing your poem on the p2p web! 31 | 32 | ### 📥Receiving other's poems 33 | **Now we will recieve other's poems!** 34 | 35 | 1. OPEN A TOTALLY NEW TERMINAL WINDOW (so we don't disrupt the sharing) 36 | 2. `cd ~/folder-society` 37 | 3. now go to the [P2P Address book](https://docs.google.com/spreadsheets/d/1nDLIUVbKFc3XNALA7Uf65ra-sH4AsPewWWajt2ltxMY/edit?usp=sharing) and copy and paste a dat://xxxx url from someone else in the class! 38 | 4. enter `dat clone` + paste the dat hash here! 39 | - it will look something like this`dat clone dat://7ce94a276f9f16f66644e02/` 40 | 5. `ls` and you should see a directory inside your folder-society folder titled something like `7ce94a276f9f16f66644e02/` this will be the name of the hash of the dat poem you just cloned 41 | 6. cd into this directory, for me this looks like `cd 7ce94a276f9f16f66644e02/` (remember you can tab to autocomplete!) 42 | 7. now you can continue`cd`ing into your classmates poem and explore it! 43 | 8. if you want to see the whole structure enter `tree` into your terminal. if you don't have tree, seee below: 44 | 45 | #### 🌳 If you dont have tree 46 | - `/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"` 47 | - `brew install tree` 48 | - now try entering `tree` into your terminal to expand the folder structures! 49 | 50 | ### 🕸Install Node & Dat 51 | Run each of these Bash lines one after the other by pasting them in your Terminal application and pressing ENTR. Don't worry if you've never used terminal before or you're not comfortable with it! There will be time in class to install if you dont get to it before class. 52 | 53 | - `curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash` 54 | - `source ~/.bash_profile` 55 | - `nvm install --lts` 56 | - `nvm use --lts` 57 | - `npm install -g dat` 58 | 59 | To test that everything worked, enter `dat` into your terminal. 60 | If you see output that starts with `Usage: dat [] [options]` you have all the software you need to share your folder poems on the p2p web! 🎊 61 | 62 | ## 🟣 Your Folder Poetry Structure 63 | 64 | In your home(~) folder we will have: 65 | 66 | - a folder called folder-society 67 | - a folder called my-folder-poem 68 | - inside my-folder-poem is a folder called your-name 69 | - inside the folder called your-name is where your poem will live 70 | 71 | **To create the above outlined folder structure using Bash in the terminal:** 72 | 73 | - `cd` 74 | - `mkdir folder-society` 75 | - `mkdir my-folder-poem` 76 | - `cd my-folder-poem` 77 | - `mkdir your-name` 78 | - `cd your-name` 79 | - ^ where we'll make our poems 80 | 81 | ## 🟣 P2P Folder Poetry *Strict* Rules 82 | 83 | P2P folder poetry has specific requirements in order for your poems to be shared 84 | with each other via the Dat protocol. If you don't follow these rules, you will have 85 | still created folder poetry, they just wont become P2P folder poetry during this 86 | workshop. 87 | 88 | **The artform of folder poetry is forgiving, Dat is not.** 89 | 90 | - 🟣 No empty folders. 91 | - 🟣 Every file has to contain text in it. 92 | - 🟣 All lowercase 93 | - 🟣 No spaces. 94 | - 🔺Underscores and dashes are ok. for example: `my_file.txt` or `my-file.txt` 95 | - 🟣 All files must have a file extension such as .txt 96 | 97 | 98 | ### Read Folder Poetry 99 | **Folder Poetry Examples** 100 | - 🔗[Download & Explore the SFPC Fall 2019 Cohort's Poetry in your Terminal or Finder](https://www.dropbox.com/s/ewh0cowonhqoozf/sfpc-fall-2019-folder-poetry-smaller.zip?dl=0) 101 | - 📒[Download: Folder Poetry - SFPC Yamaguchi Japan Zine](https://melanie-hoff.com/folder-poetry/sfpc-ycam/zine-pdfs-ycam-folder-poetry.zip)
102 | - 📒[Download: Folder Poetry - SFPC Detroit Zine](https://melanie-hoff.com/folder-poetry/sfpc-detroit/detroit-zine-reader.pdf.zip)
103 | - Folder Poetry on the default (non P2P) internet 104 | - [folderpoetry.club](folderpoetry.club) 105 | - Laurel Schwulst's adapatation of Folder Poetry in their _Writing as Metadata_ class at Yale: [metadatarocks.nfshost.com](metadatarocks.nfshost.com) 106 | 107 | 108 | ## 🎲 Bash & Terminal commands 109 | 110 | | Command | Description | 111 | | ------------------------------------------ | --------------------------------------------- | 112 | | `cd` | change directory | 113 | | `cd ..` | change directory one level back | 114 | | `ls` | list contents of directory | 115 | | `pwd` | print working directory | 116 | | `mkdir foldername` | create a folder named foldername . | 117 | | `touch dandelion.txt` | create a file named dandelion.txt | 118 | | `echo "woof woof" > kitty.txt` | creates a text file called kitty.txt that contains the words, "woof woof"| 119 | | `cat filename.txt` | print contents of file | 120 | | `rm -rf filename.txt` . | remove a file or folder this way | 121 | | `mv filename.txt newfilename.txt` | rename a file | 122 | | `open .` | (macOS) open the current folder in Finder | 123 | | `explorer.exe .` | (Windows) open the current folder in Explorer | 124 | | `open filename.txt` | (macOS) opens file in Text Edit | 125 | | `notepad.exe filename.txt` | (Windows) opens file in Notepad | 126 | | `cp filename.txt filename2.txt` | copy file | 127 | | `say "hello, what is poetic computation?"` | (macOS) speak out loud | 128 | | `man cd` | show the manual for 'cd'. Press q to quit | 129 | | `source ~/.bash_profile` | restart your terminal config file | 130 | 131 | 132 | ### Keyboard Terminal Shortcuts 133 | | Command | Description | 134 | |-----------------------|------------------------| 135 | | Up + Down Arrow keys | scroll through history | 136 | | Tab Key | autocomplete | 137 | |CMD + CTRL + SPACE |Emoji Keyboard (Mac OS) | 138 | 139 | 140 | ### Editing a text file 141 | | command | Description | 142 | | -------------------- | --------------------------------- | 143 | |`echo "woof woof" > kitty.txt` | creates a text file called kitty.txt that contains the words, "woof woof"| 144 | | `nano textfile.txt` | open file in the nano text editor | 145 | | CTRL + X , y , ENTER | exit and save changes | 146 | 147 | 148 | ## Editing your ~./bash_profile 149 | 150 | _The ~./bash_profile is a configuration file for the terminal._ 151 | 152 | 1. `nano ~/.bash_profile` 153 | 154 | - This command will open your ~./bash_profile in the nano editor 155 | 156 | In steps 2 and 3 we will paste 2 aliass AKA shortcuts that will help us visualize our folder poem structures. 157 | 158 | 2. `alias tree="find . -not -path '*/\.*' -print | sed -e 's;[^/]*/;|;g;s;|; |;g'"` 159 | - (if you have homebrew installed enter `brew install tree` in another terminal window instead) 160 | 161 | 3. `alias treefile="find . -not -path '*/\.*' | xargs -I {} bash -c 'f={}; echo \$f | sed -e \"s;[^/]*/;|;g;s;|; |;g\"; if [[ \$f == *.txt ]]; then echo; cat \$f; echo; echo; fi'"` 162 | 163 | 4. `export PS1="🍋 \w\n\u$ "` 164 | - This will customize your Bash prompt. Feel free to change the emoji. (skip if you use zshell) 165 | - Explanation: `\w` shows your full file path so you'll always know where you are in the terminal, `\n` creates a new line in your bash prompt. `\u` shows your computer username, and `$` symoolizes the end of a bash prompt. 166 | 167 | 5. `source ~/.bash_profile` 168 | - reboot your terminal 169 | 170 | 171 | ### 🔮Prompt: Folder Poem as School 172 | _What would your speculative liberatory learning environment look like?_ 173 | 174 | _Previous prompts have been Folder Poem as [Village](https://gist.github.com/melaniehoff/7cda150870c869c1990a744dddbd286f#folder-poetry-prompt--a-village-you-want-to-live-in), [Gift](https://gist.github.com/melaniehoff/96bffd279b0ea66f61291e231283aab5#folder-poetry-prompt), & [Home](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/sfpc-fall-2019.md#2-prompt-folder-poem-as-home)_ 175 | 176 | **Gently explore your imagination and think about the following prompt. Feel free to write or sketch based on your reflections but this is not required.** 177 | 178 | - **Imagine a fantastical physical environment that could hold you and those you want to learn nearby.** 179 | - **This school is not like any school that exists. This school does not have to be realistic or adhere to laws of physics.** 180 | - What kinds of rooms, interconnecting hallways, or gardens could be grown? What kinds of activities would learners do in different spaces throughout the school? 181 | - What kinds of subjects would be taught there? Are their teachers and students or some other set of roles? 182 | - Do the roles ever change? 183 | - What are the bathrooms like? How about the furniture? Are there laboratories? Playgrounds? Napping rooms? 184 | - Consider the kinds of relationships you would like this school to hold & how people could relate to each other differently based on the proximity and content of their learning? 185 | - Consider how you would like to share space with others in this school. How are different parts of your school accessed and by whom? 186 | - Are there grades in this school? How are people separated into groups if ever? What are the taxonomies? For ex: traditional school systems will group people by categories such as age, class, geography, "ability", "behavior", and able-bodied-ness. 187 | - Consider the ephemeral aspects of the school as much as the physical aspects. 188 | - In this school, how do you communicate and care for each other? 189 | - What are the emotional qualities of the spaces in this school? 190 | - What is the weather like around this school? 191 | - Consider the many forms it could take, 192 | - A memory palace with many rooms. In each room a memory of something that someone learned in this room by seeing the memory of the last person in this room. 193 | - A forest of learning folders where each participant is a tree and insect files carry information back and forth between them. 194 | - A school where each room is devoted to something you would like to learn collectively with those you share a that room with. 195 | - A multi-generational interconnected courtyard boarding house with rooms for climbing, rooms for growing, rooms for cooking, rooms for singing. 196 | 197 | ### Helpful Codes 198 | 199 | 👛 if you have a Mac computer and are feeling fancy, i recommend downloading Iterm 200 | - https://iterm2.com/ 201 | 202 | Install homebrew 203 | - `/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"` 204 | 205 | For newer Mac's to switch from zsh to bash 206 | - `chsh -s $(which bash)`
207 | OR
208 | - `chsh -s /bin/bash` 209 | - More info [here](https://www.howtogeek.com/444596/how-to-change-the-default-shell-to-bash-in-macos-catalina/) 210 | 211 | To remove "(base)" from prepending the bash prompt after installing Anaconda: 212 | - `conda config --set auto_activate_base False` 213 | - `source ~/.bash_profile` 214 | 215 | To change your computer's hostname (Mac) 216 | - sudo scutil --set HostName new_hostname 217 | - restart your computer 218 | 219 | To install Anaconda (Python 3.7+, 64-bit), follow the instructions for your platform here. 220 | - Mac OS X: [go this page](https://www.anaconda.com/download/#macos), wait for the download to complete, and run the installer file. Choose all of the installer’s default options. To test your installation, open a terminal window and type “conda”, without quotation marks, and press enter. You should see a different list of arcane commands than those produced by typing “git”. 221 | 222 | - Windows: [go to this page](https://www.anaconda.com/download/#windows), wait for the download to complete, and run the exe file. Choose all of the installer’s default options, except you should reject the suggestion to install Microsoft Visual Studio Code. (Again, we recommend editing text using Atom.) Test your installation by searching for “anaconda prompt” in your system. In the resulting terminal window, type “conda”, without quotation marks, and press enter. You should see a different list of arcane commands than those produced by typing “git”. 223 | 224 | # SFPC Code Societies 225 | **Jan 7th 2020, 6:30 - 9:30pm** 226 | 227 | What if we could transform our online networks from something we passively receive to something we actively create? Folder Poetry is the practice of using the structure of computer folder organization as a new kind of poetic form like the haiku or iambic pentameter. By naming and nesting folders and files, we can create unfolding narratives, rhythmic prose, and choose-your-own-adventure poetry. In this workshop we will collectively create peer-to-peer folder poetry using the command line and Dat. Through lecture, examples, and writing folder poetry as meditation, we will explore the narrative qualities of folder structures and Dat as a tool for building digital spaces with and for our networks. 228 | 229 | In this session we will get intimate with computers and write poetry with their logic. This workshop is an introduction to writing folder poetry, the P2P protocol Dat, and navigating the command line interface using Bash. 230 | 231 | Together, we will create living networked poetry through connecting folders on the peer-to-peer web for each other to inhabit and explore. 232 | 233 | This workshop assumes no coding experience and simultaneously takes the position that everyone who interacts with computers in some way is already a programmer. 234 | 235 | See: [Always Already Programming](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry#always-already-programming) 236 | 237 | 238 | ## Terms 239 | - **Folder Poetry** is the practice of using the structure of computer folder organization as a new kind of poetic form like the haiku or iambic pentameter. By naming and nesting folders and files, we can create unfolding narratives, rhythmic prose, and choose-your-own-adventure poetry. 240 | - **The Terminal** is desktop application to control and make changes to your operating system by typing text commands. In this class we'll use the terminal to create folder poetry. 241 | - **Bash** is the programming language we'll use in the terminal, often one line at a time, but we can also put Bash code in a file and run that file. 242 | - **Peer-to-peer** computing is a way to make distributed networks in which each computer can act as a server for the others, allowing shared access to files without the need for a central server. 243 | - **Dat** is a data distribution tool for publishing on peer-to-peer networks. 244 | 245 | ## Windows Preparation before Class 246 | For Windows 10, check out this [preliminary set up guide](https://gist.github.com/solon/4e254be6e0d2e73ef8624470fc9ca852#file-folder-poetry-setup-md) 247 | 248 | 249 | ### Part I: Folder Poetry 250 | 251 | **Reintroduction to computers & computing** 252 | _Programming is about the computer, the programmer, the relationship they have with each other, and the environments they create together._ 253 | - Folders & file systems 254 | - What is Folder Poetry and how will we be creating it? 255 | - Discretely categorizing things. The affordances of folders. 256 | - Examples of folder projects 257 | - Folders Anonymous 258 | 259 | ### Part II: Terminal & Bash 260 | _The Desktop is a lie_ 261 | - Terminal and Bash commands 262 | - Introduction of navigating the command line by walking through the-garden-of-forking-paths 263 | - [Download the garden](https://melanie-hoff.com/folder-poetry/sfpc-2019/garden-of-forking-paths.zip) 264 | - growing the garden 265 | - Anatomy of Bash Prompt 266 | - Editing bash_profile 267 | 268 | ### Part III 269 | _Making our Folder Poem Poems in Bash_ 270 | 271 | ### Part IIII: Peer-to-Peer Poetry with Dat 272 | _The network is a folder poem, be the poet_ 273 | - P2P introduction and description of DAT and "the cloud" 274 | - Dat is a protocol for sharing data between computers. 275 | - Dat’s strengths are that data is hosted and distributed by many computers on the network, that it can work offline or with poor connectivity 276 | - The Distributed Web is about decentralization of servers and control 277 | - Data on the distributed web is not indexed which means it is not easily searchable 278 | - We are creating a local network island away from the default(larger) internet 279 | - Sharing our Poems on the P2P Web 280 | -------------------------------------------------------------------------------- /folder-cities.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/melaniehoff/Peer-to-Peer-Folder-Poetry/c13415dd9a9e0ff1abbde6baff7d6ad12554d7c3/folder-cities.jpg -------------------------------------------------------------------------------- /folder-laser-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/melaniehoff/Peer-to-Peer-Folder-Poetry/c13415dd9a9e0ff1abbde6baff7d6ad12554d7c3/folder-laser-3.png -------------------------------------------------------------------------------- /folder-laser-black-wide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/melaniehoff/Peer-to-Peer-Folder-Poetry/c13415dd9a9e0ff1abbde6baff7d6ad12554d7c3/folder-laser-black-wide.png -------------------------------------------------------------------------------- /garden-of-forking-path-ycam/look-down/worms-in-dirt.txt: -------------------------------------------------------------------------------- 1 | /~~\ 2 | ____ /'o | 3 | .~ | `\ ,-~~~\~-_ ,' _/'| 4 | `\_/ /'\ /'`\ \ ~, | .' 5 | `,/' | ,'_ | | |`\ ,'~~\ | 6 | | /`: | `\ /~~~~\ / | ,' `.' 7 | | /' | | ,' `\ /`| /'\ / 8 | `| / \_ _/ `\ | |' `----\ | /' 9 | `./' | ~ | ,' | | | |/' 10 | `\ | / ,' `\ / |/~' 11 | `\/_ /~ _/ `~------' 12 | 13 | 14 | 15 | 16 | 17 | (o)(o) 18 | / \ 19 | / | 20 | / \ * | 21 | ________ / /\__/ 22 | _ / \ / / 23 | / \ / ____ \_/ / 24 | //\ \ / / \ / 25 | V \ \/ / \ / 26 | \___/ \_____/ 27 | -------------------------------------------------------------------------------- /garden-of-forking-path-ycam/look-left/birds-and-bees.txt: -------------------------------------------------------------------------------- 1 | __ .' '. 2 | _/__) . . . 3 | (8|)_}}- . . . 4 | `\__) '. . ' ' . . ' 5 | 6 | __ 7 | // \ 8 | \\_/ // 9 | ''-.._.-''-.._.. -(||)(') 10 | ''' 11 | 12 | 13 | 14 | 15 | ___ ___ 16 | (o o) (o o) 17 | ( V ) ( V ) 18 | /--m-m- /--m-m- 19 | 20 | ___ ___ 21 | (o o) (o o) 22 | ( V ) ( V ) 23 | /--m-m- /--m-m 24 | 25 | 26 | 27 | wWWWw wWWWw 28 | vVVVv (___) wWWWw (___) vVVVv 29 | (___) ~Y~ (___) vVVVv ~Y~ (___) 30 | ~Y~ \| ~Y~ (___) |/ ~Y~ 31 | \| \ |/ \| / \~Y~/ \| \ |/ 32 | \\|// \\|// \\|/// \\|// \\|// \\\|/// 33 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 34 | -------------------------------------------------------------------------------- /garden-of-forking-path-ycam/look-left/walk-into-ycam/walk-into-sfpc-classroom/a-message-from-brian.txt: -------------------------------------------------------------------------------- 1 | Between my finger and my thumb 2 | The squat pen rests; snug as a gun. 3 | Under my window, a clean rasping sound 4 | When the spade sinks into gravelly ground: 5 | My father, digging. I look down 6 | Till his straining rump among the flowerbeds 7 | Bends low, comes up twenty years away 8 | Stooping in rhythm through potato drills 9 | Where he was digging. 10 | The coarse boot nestled on the lug, the shaft 11 | Against the inside knee was levered firmly. 12 | He rooted out tall tops, buried the bright edge deep 13 | To scatter new potatoes that we picked, 14 | Loving their cool hardness in our hands. 15 | By God, the old man could handle a spade. 16 | Just like his old man. 17 | My grandfather cut more turf in a day 18 | Than any other man on Toner’s bog. 19 | Once I carried him milk in a bottle 20 | Corked sloppily with paper. He straightened up 21 | To drink it, then fell to right away 22 | Nicking and slicing neatly, heaving sods 23 | Over his shoulder, going down and down 24 | For the good turf. Digging. 25 | The cold smell of potato mould, the squelch and slap 26 | Of soggy peat, the curt cuts of an edge 27 | Through living roots awaken in my head. 28 | But I’ve no spade to follow men like them. 29 | Between my finger and my thumb 30 | The squat pen rests. 31 | I’ll dig with it. 32 | Seamus Heaney, "Digging" from Death of a Naturalist. 33 | Copyright 1966 by Seamus Heaney. 34 | -------------------------------------------------------------------------------- /garden-of-forking-path-ycam/look-left/walk-into-ycam/walk-into-sfpc-classroom/a-message-from-jane.txt: -------------------------------------------------------------------------------- 1 | In Retrospect 2 | ______________ 3 | 4 | One thing I dislike about the design career is that we have a habit of talking about our projects like they happened in a straight, easy, logical line. When we show our final projects, we talk about the initial idea, and we talk about the final product. We rarely talk about the true experience of getting from the start to the end: the bumps, the insecurities, the worries, the belief that we’ve gone down the wrong path or are wasting time. 5 | 6 | I care a lot about this, because it’s so easy to worry about the bumps in our own projects, and the twists and turns in our own lives. When we make it seem easy, we end up worrying about our projects that don’t feel easy, or our ideas that don’t make immediate sense. I study something unrelated to what I do, and I worry it’s a waste of time. I try a design approach that doesn’t seem to work. I make a prototype of a game and it isn’t fun. I lose faith in my idea. I worry about deadlines. I worry if I’ve lost my skill. 7 | 8 | But what I have noticed every time is that these bumps and detours end up meaning something. Maybe I won’t know what for several years, but in the end, they make my projects, my career, and my life more rich and vivid. Your unique background--whatever it is, no matter how random or bumpy--does the same for you. Keep faith in yourself. 9 | -------------------------------------------------------------------------------- /garden-of-forking-path-ycam/look-left/walk-into-ycam/walk-into-sfpc-classroom/a-message-from-lauren.txt: -------------------------------------------------------------------------------- 1 | At SFPC, the length of time you're here isn’t going to be your most valuable asset - it’s the access to other people who are also excited, interested and supportive about what you are doing. This is how we learn, from each other. It’s in sharing our goals and questions with each other and listening and being open to other people’s feedback, perspectives and their experiences. It’s in the support and encouragement we can give each other. It’s the community we build around us. 2 | -------------------------------------------------------------------------------- /garden-of-forking-path-ycam/look-left/walk-into-ycam/walk-into-sfpc-classroom/a-message-from-melanie.txt: -------------------------------------------------------------------------------- 1 | At SFPC, I have been a student, a TA, an organizer, an artist, and a teacher. SFPC holds these parts of me well and I hope it is holding you too. The unique educational space of SFPC is co-created by you, me, the person sitting next to you. If something doesn't feel good we can work together to change it. SFPC can grow with you as you grow. 2 | 3 | 🦋🌿🍄🌿🦋🌿🌻🌿🦋🌿🌷🌿🦋🌿💐🌿🦋🌿 4 | 5 | ALWAYS ALREADY PROGRAMMING 6 | 7 | Every time you make a folder or rename a file on your computer, the actions you take through moving your mouse and clicking on buttons, have an equivalent text command. When you use a visual interface (called a GUI) text commands are still being fired in the background which eventually compile to binary. Using bash in the terminal is a way to get a little closer to the metal and a little further along in uncovering the mechanics of our most common devices. 8 | 9 | Everyone who interacts with computers has, in very real ways already been programming. The distinction between programmer and user is maintained by a tech industry that benefits from a population rendered computationally passive. 10 | 11 | Together we can build up and cultivate one another’s agency to shape technology and online spaces that support and care for each other and our communities. 12 | -------------------------------------------------------------------------------- /garden-of-forking-path-ycam/look-left/walk-into-ycam/walk-into-sfpc-classroom/a-message-from-robby.txt: -------------------------------------------------------------------------------- 1 | (-1,6)..(0,6) 2 | | . (2,5) 3 | | 4 | | . (5,2) 5 | (-6,1). | . (6,1) 6 | -----------------. (6,0) 7 | -6,-1). | 8 | | 9 | | 10 | | 11 | pts far, in same quadrant pts near each other 12 | 6*5 - 2*1 = 30-2 = 28 12-10 = 2 13 | 2*1 - 6*5 = 2-30 = -28 10-12 = -2 14 | how to explore the unexplored? 15 | there are times your work is unique and times when it drifts back to resemble other people's. 16 | take note of this moment-what took you there? 17 | mirror x 18 | 6*1 - -1*6 = 12 19 | -6*1 - 1*6 = -12 20 | 90 deg 90 deg - slightly shorter vector 21 | 6*6 - -1*1 = 38 6*6 - 0*0 = 36 22 | -1*1 - 6*6 = -38 0*0 - 6*6 = -36 23 | "we couldn't measure what was important, so we decided what we could measure was important" 24 | A (horizontal upward), B (vertical backwards) 25 | get the vector direction of each line and cross one line against the other 26 | depending on order, you get the same number + / - 27 | save both 28 | aVec = (8, 3) bVec = (-4,7) 29 | give people the ability to play in the space *around* the solution. 30 | hypothesis: highly organized space has the potential to heighten your senses, relax you, make you more at ease. 31 | this cross product is 32 | 8*7 - 3*-4 = 56 + 12 = 68 33 | -4*3 - 8*7 = -12 - 56 = -68 34 | make an additional line connecting a origin and b origin 35 | o o 36 | \ ---o (4,8) \ ---o 37 | \ ---- (10,7) \ ---- 38 | ---\ ---\ 39 | o--- \ o--- \ 40 | a origin \ (2,4) --- \ 41 | \ (8,1) --- \ 42 | o --o 43 | b origin 44 | aTOb = (6, -3) bTOa = (-6, 3) 45 | -------------------------------------------------------------------------------- /garden-of-forking-path-ycam/look-left/walk-into-ycam/walk-into-sfpc-classroom/a-message-from-taeyoon.txt: -------------------------------------------------------------------------------- 1 | Technology as a Gift 2 | 3 | "...art can achieve what politics and science can’t achieve on their own. Art has the transformative capacity to redefine our understanding of reality. In this week-long intensive workshop, we will focus on the theme of ‘Technology as a gift.’ Let’s uncover the abstract idea of technology and consider the concrete task to take action. Let’s begin by returning to our humble self, honest to each other, be aware of the context shift of being in a new and an international environment. Let go of our ego and insecurity and gear up our humility and agency. " - Taeyoon Choi 4 | -------------------------------------------------------------------------------- /garden-of-forking-path-ycam/look-left/walk-into-ycam/walk-into-sfpc-classroom/the-network-is-a-folder-poem.txt: -------------------------------------------------------------------------------- 1 | ________________________________________________ 2 | / \ 3 | | _________________________________________ | 4 | | | | | 5 | | | | | 6 | | | | | 7 | | | | | 8 | | | be the poet <3 | | 9 | | | | | 10 | | | | | 11 | | | | | 12 | | | | | 13 | | | | | 14 | | | | | 15 | | | | | 16 | | | | | 17 | | |_________________________________________| | 18 | | | 19 | \_________________________________________________/ 20 | \___________________________________/ 21 | ___________________________________________ 22 | _-' .-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-. --- `-_ 23 | _-'.-.-. .---.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--. .-.-.`-_ 24 | _-'.-.-.-. .---.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-`__`. .-.-.-.`-_ 25 | _-'.-.-.-.-. .-----.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-----. .-.-.-.-.`-_ 26 | _-'.-.-.-.-.-. .---.-. .-------------------------. .-.---. .---.-.-.-.`-_ 27 | :-------------------------------------------------------------------------: 28 | `---._.-------------------------------------------------------------._.---' 29 | -------------------------------------------------------------------------------- /garden-of-forking-path-ycam/look-right/suspended-orchids.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | ;A: 4 | :'"`: ~ ~ 5 | ~ ~ . : ; : , " " 6 | ' " ; . : ; ' : 7 | ,' Y ;Y . ~~-C, 8 | , . ~ .".: , : ' . \. 9 | { ~ >``\ V /' :. 10 | *>/ ,*,o@o,*.. } 11 | ; . ',6*"@@*9, `, ` : 12 | { ' .: .'{o"@"@*o} L, : 13 | : .' .;&)"^"(*:: `.*:, ,' 14 | `:. .:' .'::' i `:.*. : ` ~ .;, 15 | `~~~ ".* / ; : : ? 16 | { ." ; : i, : 17 | "V' : : :|} 18 | { " } Y 19 | : : ; : ; 20 | `;. . A . ,; 21 | `~ ~ 22 | 23 | 24 | 25 | 26 | 27 | 28 | _ 29 | _ (`-`) _ 30 | /` '.\ /.' `\ 31 | ``'-.,=,.-'`` 32 | .'//v\\'. 33 | (_/\ " /\_) 34 | '-' 35 | -------------------------------------------------------------------------------- /garden-of-forking-path-ycam/look-right/walk-into-the-house/bathroom/toilet.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | 🚽 4 | 🚻 5 | 🛀 6 | -------------------------------------------------------------------------------- /garden-of-forking-path-ycam/look-right/walk-into-the-house/bedroom/sleep.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | 🌚 🌚 🌚 🌚 🌚 🌚 🌚 🌚 🌚 🌚 🌚 4 | 💤 💤 💤 💤 💤 💤 💤 💤 5 | 😴 😴 😴 😴 😴 😴 😴 😴 😴 😴 😴 6 | 🛌 🛌 🛌 🛌 🛌 🛌 🛌 🛌 🛌 🛌 🛌 7 | 🤤 🤤 🤤 🤤 🤤 🤤 🤤 🤤 🤤 🤤 🤤 8 | -------------------------------------------------------------------------------- /garden-of-forking-path-ycam/look-right/walk-into-the-house/kitchen/family-dinner.txt: -------------------------------------------------------------------------------- 1 | new friends 2 | tasty healthy nourishment 3 | cooking for each together 4 | cleaning up after ourselves 5 | sharing space and time with each other and caring for our bodies 6 | -------------------------------------------------------------------------------- /garden-of-forking-path-ycam/look-right/walk-into-the-house/kitchen/garden.sh: -------------------------------------------------------------------------------- 1 | for i in {1..2000}; do printf ' 👈 👇 👉 🖐 👉 🦋 🦎 🌹 🥀 🌺 🐉 🌗 🌘 🌑 🌒 🌓 🌔 🌱 🌷 🌱 🌸 🌱 💦 🌱 🍄 🌱 🌷 🌹 🌻 🌼 🌺 🌸 💧 💧 💧 💧 💧 💧 💧 💧 💧 '; done; 2 | -------------------------------------------------------------------------------- /garden-of-forking-path-ycam/look-right/walk-into-the-house/kitchen/pots-and-pans.txt: -------------------------------------------------------------------------------- 1 | 🥘 🍳 🥘 🍳 🥘 🍳 🥘 🍳 🥘 🍳 🥘 🍳 🥘 🍳 2 | Amazon Product Review: 3 | 1.0 out of 5 stars 4 | Horrible smell 5 | August 25, 2018 6 | Size: 8-Piece Pots and Pans set 7 | Pans look sturdy and work fine. The problem is the smell. Every time we use them it smells like toxic burning plastic and the fumes fill the entire house. We’re getting rid of them because we’re concerned that it could cause health damage. 8 | 🥘 🍳 🥘 🍳 🥘 🍳 🥘 🍳 🥘 🍳 🥘 🍳 🥘 🍳 9 | -------------------------------------------------------------------------------- /garden-of-forking-path-ycam/look-right/walk-into-the-house/kitchen/sink.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | 🚰 💦 💧 4 | 5 | 🍽 🥢 🥣 6 | 🍽 🥢 🥣 7 | 🍽 🥢 🥣 8 | 🍽 🥢 🥣 9 | 🍽 🥢 🥣 10 | 🍽 🥢 🥣 11 | 🍽 🥢 🥣 12 | 🍽 🥢 🥣 13 | 🍽 🥢 🥣 14 | 🍽 🥢 🥣 15 | 🍽 🥢 🥣 16 | 🍽 🥢 🥣 17 | 🍽 🥢 🥣 18 | 🍽 🥢 🥣 19 | 🍽 🥢 🥣 20 | 🍽 🥢 🥣 21 | 🍽 🥢 🥣 22 | 🍽 🥢 🥣 23 | ughhh roommate left dishes in here! 24 | -------------------------------------------------------------------------------- /garden-of-forking-path-ycam/look-right/walk-into-the-house/kitchen/stove.txt: -------------------------------------------------------------------------------- 1 | stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove stove 2 | -------------------------------------------------------------------------------- /poster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/melaniehoff/Peer-to-Peer-Folder-Poetry/c13415dd9a9e0ff1abbde6baff7d6ad12554d7c3/poster.png -------------------------------------------------------------------------------- /radical-networks.md: -------------------------------------------------------------------------------- 1 | # P2P Folder Poetry – Radical Networks 2 | 3 | ![](https://melanie-hoff.com/poster.png) 4 | 5 | # Table of Contents 6 | - [Preparation for Class](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/radical-networks.md#preparation-for-class) _look here first 👀_ 7 | - [Agenda](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/radical-networks.md#day-1-agenda) 8 | - [Slides](https://docs.google.com/presentation/d/1K6vC-erUczNtjtBB4Q8wDeJXCcRIrP_t_BttH_kDxKo/edit?usp=sharing) 9 | - [Folder Poetry Zines & Examples](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/radical-networks.md#folder-poetry-examples) 10 | - [P2P Poetry Rules](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/radical-networks.md#p2p-folder-poetry-rules) 11 | - [Bash & Terminal Commands](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/radical-networks.md#-bash--terminal-commands) 12 | - [Editing your .bash_profile](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/radical-networks.md#to-edit-your-bash_profile) 13 | - [Sharing on the P2P web](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/radical-networks.md#-sharing-our-poems-on-the-p2p-web) 14 | - [P2P address book](https://docs.google.com/spreadsheets/d/1YPHB6c4ATzImkolcQz2nHPz1xm8n1AluqQrsI_R_sl4/edit?usp=sharing) 15 | - [Workshop Description & Theory](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/radical-networks.md#workshop-description) 16 | 17 | # Preparation for Class (Download, Install, Prompt) 18 | **1. Download [this folder](https://melanie-hoff.com/folder-poetry/radical-networks/garden-of-forking-paths.zip) and move it to your Home directory**
19 | **2. Install Node & Dat** 20 | Run each of these Bash lines one after the other by pasting them in your Terminal and pressing ENTR. 21 | - `curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.0/install.sh | bash` 22 | - `source ~/.bash_profile` 23 | - `nvm install --lts` 24 | - `nvm use --lts` 25 | - `npm install -g dat` 26 | 27 | ### 3. 🌳Prompt: Folder Poem as Home 28 | _What would your utopic, liberatory living environment look like?_ 29 | 30 | Gently explore your imagination and think about the following prompt. Write, diagram, or draw out your thoughts. 31 | 32 | - **Imagine a kind of housing or space that could hold all your friends, chosen family, and maybe your biological family too.** 33 | - **This home does not have to be realistic or even physically probable.** 34 | - What kinds of rooms, interconnecting hallways, or gardens could be grown? What kinds of activities would residents do in different spaces throughout the home? 35 | - Consider the kinds of relationships you would like this home to hold & how people could relate to each other differently based on the proximity of their daily lives? 36 | - Consider how you would like to share space with others in this home. How are different parts of your home accessed and by whom? 37 | - Consider the ephemeral aspects of your home as much as the physical aspects. 38 | - In this home, how do you communicate and care for each other? 39 | - What are the emotional qualities of the spaces in your home? 40 | - What is the weather like around your home? 41 | - Consider the many forms it could take, 42 | - A palace with many rooms. In each room a memory of something that happened in this room with someone in you live with. 43 | - A forest of folders where each resident is tree and insect files carry messages back and forth between them. 44 | - A school where each room is devoted to something you would like to learn collectively with those you share a home with. 45 | - A multi-generational interconnected courtyard housing compound with rooms for climbing, rooms for growing, rooms for cooking, rooms for learning. 46 | 47 | 48 | # Day 1 Agenda 49 | - Our Folder Names 50 | - Preparation / Installation / Downloading 51 | - Introduction: Melanie's files 52 | 53 | ### Part I: Folder Poetry 54 | 55 | **Reintroduction to computers & computing** 56 | _Programming is about the computer, the programmer, the relationship they have with each other, and the environments they create together._ 57 | - Folders & file systems 58 | - What is Folder Poetry and how will we be creating it? 59 | - Discretely categorizing things. The affordances of folders. 60 | - Examples of folder projects 61 | - Folders Anonymous 62 | 63 | ### Part II: Terminal & Bash 64 | _The Desktop is a lie_ 65 | - [Terminal and Bash commands](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/radical-networks.md#-bash--terminal-commands) 66 | - Introduction of navigating the command line by walking through the-garden-of-forking-paths 67 | - [Download a garden-of-forking-paths](https://melanie-hoff.com/folder-poetry/radical-networks/garden-of-forking-paths.zip) and move it to your Home folder 68 | - growing the garden 69 | - Anatomy of Bash Prompt 70 | - [Editing bash_profile](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/radical-networks.md#editing-your-bash_profile) 71 | 72 | ### Part III 73 | _Making our Folder Poem Homes_ 74 | 75 | - [Folder Home Structure](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/radical-networks.md#making-our-folder-poems) 76 | - [Bash commands](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/radical-networks.md#-bash--terminal-commands) 77 | - [Folder Poetry Rules](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/radical-networks.md#p2p-folder-poetry-rules) 78 | 79 | ### Part IIII: Peer-to-Peer Poetry with Dat 80 | _The network is a folder poem_ 81 | - [Sharing our Poems on the P2P Web](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/radical-networks.md#-sharing-our-poems-on-the-p2p-web) 82 | 83 | 84 | _________ 85 | 86 | ## Folder Poetry Examples 87 | 📒[Download: Folder Poetry - SFPC Yamaguchi Japan Zine](https://melanie-hoff.com/folder-poetry/sfpc-ycam/zine-pdfs-ycam-folder-poetry.zip)
88 | 📒[Download: Folder Poetry - SFPC Detroit Zine](https://melanie-hoff.com/folder-poetry/sfpc-detroit/detroit-zine-reader.pdf.zip)
89 | - Folder Poetry on the regular internet 90 | - [folderpoetry.club](folderpoetry.club) 91 | - Laurel Schwulst's adapatation of Folder Poetry in their _Writing as Metadata_ class at Yale: [metadatarocks.nfshost.com](metadatarocks.nfshost.com) 92 | 93 | _____ 94 | 95 | ## P2P Folder Poetry Rules 96 | _The artform of folder poetry is forgiving, Dat is not_ 97 | 98 | P2P folder poetry has specific requirements in order for your poems to be shared 99 | with each other via the Dat protocol. If you don't follow these rules, you will have 100 | still created folder poetry, they just wont become P2P folder poetry during this 101 | workshop. 102 | 103 | 🔴 No empty folders.
104 | 🔴 Every file has to contain text in it.
105 | 🔴 Naming files and folders
106 | 🔴 All lowercase
107 | 🔴 No spaces.
108 | - Underscores and dashes are ok. for example: `my_file.txt` or `my-file.txt`
109 | 🔴 All files must have a file extension such as .txt
110 | 111 | ## 🎲 Bash & Terminal commands 112 | 113 | | Command | Description | 114 | | ------------------------------------------ | --------------------------------------------- | 115 | | `cd` | change directory | 116 | | `cd ..` | change directory one level back | 117 | | `ls` | list contents of directory | 118 | | `pwd` | print working directory | 119 | | `mkdir foldername` | create a folder named foldername . | 120 | | `touch dandelion.txt` | create a file named dandelion.txt | 121 | | `echo "woof woof" > kitty.txt` | creates a text file called kitty.txt that contains the words, "woof woof"| 122 | | `cat filename.txt` | print contents of file | 123 | | `rm -rf filename.txt` . | remove a file or folder this way | 124 | | `mv filename.txt newfilename.txt` | rename a file | 125 | | `open .` | (macOS) open the current folder in Finder | 126 | | `explorer.exe .` | (Windows) open the current folder in Explorer | 127 | | `open filename.txt` | (macOS) opens file in Text Edit | 128 | | `notepad.exe filename.txt` | (Windows) opens file in Notepad | 129 | | `cp filename.txt filename2.txt` | copy file | 130 | | `say "hello, what is poetic computation?"` | (macOS) speak out loud | 131 | | `man cd` | show the manual for 'cd'. Press q to quit | 132 | | `source ~/.bash_profile` | restart your terminal config file | 133 | 134 | 135 | ### Keyboard Terminal Shortcuts 136 | | Command | Description | 137 | |-----------------------|------------------------| 138 | | Up + Down Arrow keys | scroll through history | 139 | | Tab Key | autocomplete | 140 | |CMD + CTRL + SPACE |Emoji Keyboard (Mac OS) | 141 | 142 | 143 | ### Editing a text file 144 | | command | Description | 145 | | -------------------- | --------------------------------- | 146 | |`echo "woof woof" > kitty.txt` | creates a text file called kitty.txt that contains the words, "woof woof"| 147 | | `nano textfile.txt` | open file in the nano text editor | 148 | | CTRL + X , y , ENTER | exit and save changes | 149 | 150 | 151 | ## Editing your ~./bash_profile 152 | 153 | _The ~./bash_profile is a configuration file for the terminal._ 154 | 155 | 1. `nano ~/.bash_profile` 156 | 157 | - This command will open your ~./bash_profile in the nano editor 158 | 159 | In steps 2 and 3 we will paste 2 aliass AKA shortcuts that will help us visualize our folder poem structures. 160 | 161 | 2. `alias tree="find . -not -path '*/\.*' -print | sed -e 's;[^/]*/;|;g;s;|; |;g'"` 162 | - (if you have homebrew installed enter `brew install tree` in another terminal window instead) 163 | 164 | 3. `alias treefile="find . -not -path '*/\.*' | xargs -I {} bash -c 'f={}; echo \$f | sed -e \"s;[^/]*/;|;g;s;|; |;g\"; if [[ \$f == *.txt ]]; then echo; cat \$f; echo; echo; fi'"` 165 | 166 | 4. `export PS1="🍋 \w\n\u$ "` 167 | - This will customize your Bash prompt. Feel free to change the emoji. (skip if you use zshell) 168 | - Explanation: `\w` shows your full file path so you'll always know where you are in the terminal, `\n` creates a new line in your bash prompt. `\u` shows your computer username, and `$` symoolizes the end of a bash prompt. 169 | 170 | 5. `source ~/.bash_profile` 171 | - reboot your terminal 172 | 173 | ## Making our Folder Poems 174 | - `cd` 175 | - `mkdir folder-friends` 176 | - `mkdir folder-poetry` 177 | - `cd folder-poetry` 178 | - `mkdir yourname-home` 179 | - `cd yourname-home` 180 | - ^ where we'll make our poems 181 | 182 | 183 | ## 🕸 Sharing our Poems on the P2P Web 184 | 185 | This part might feel tricky. Don't worry if you miss a step and encounter any problems. It’s ok, they will be easily resolved. TAs and i are here to help you :) 186 | 187 | - Open a totally new window in Terminal 188 | - `cd folder-poetry` this brings you into your folder-poetry folder 189 | - `dat share` this starts serving your folder on the P2P web 190 | - copy your hash into [this spreadsheet](https://docs.google.com/spreadsheets/d/1YPHB6c4ATzImkolcQz2nHPz1xm8n1AluqQrsI_R_sl4/edit?usp=sharing) next to your name 191 | - minimize this window so you dont touch it. Your folder will only be sharing as long as this terminal window is active and dat share-ing. 192 | 193 | ### Networked Poems (cloning your neighbor's poem) 194 | - **In a new Terminal window:** 195 | - `cd folder-friends` 196 | - `dat clone + copy-someone-elses-poem-hash-from-spreadsheet` 197 | - `ls` you should be able to see and explore their poem! 198 | 199 | ___ 200 | 201 | # Workshop Description 202 | 203 | What if we could transform our online networks from something we passively receive to something we actively create? Folder Poetry is the practice of using the structure of computer folder organization as a new kind of poetic form like the haiku or iambic pentameter. By naming and nesting folders and files, we can create unfolding narratives, rhythmic prose, and choose-your-own-adventure poetry. In this workshop we will collectively create peer-to-peer folder poetry using the command line and Dat. Through lecture, examples, and writing folder poetry as meditation, we will explore the narrative qualities of folder structures and Dat as a tool for building digital spaces with and for our networks. 204 | 205 | In this session we will get intimate with computers and write poetry with their logic. This workshop is an introduction to writing folder poetry, the P2P protocol Dat, and navigating the command line interface using Bash. 206 | 207 | Together, we will create living networked poetry through connecting folders on the peer-to-peer web for each other to inhabit and explore. 208 | 209 | This workshop assumes no coding experience and simultaneously takes the position that everyone who interacts with computers in some way is already a programmer. 210 | 211 | ### Always Already Programmimg 212 | 213 | Every time you make a folder or rename a file on your computer, the actions you take through moving your mouse and clicking on buttons, have an equivalent text command. When you use a visual interface (called a GUI) text commands are still being fired in the background which eventually compile to binary. Using bash in the terminal is a way to get a little closer to the metal and a little further along in uncovering the mechanics of our most common devices. 214 | 215 | Everyone who interacts with computers has, in very real ways already been programming. The distinction between programmer and user is maintained by a tech industry that benefits from a population rendered computationally passive. 216 | 217 | Together we can build up and cultivate one another’s agency to shape technology and online spaces that support and care for each other and our communities. 218 | 219 | 220 | ### To create our folder poetry, we will use Bash in the terminal. To share our folder poetry, we will use Dat. 221 | 222 | >"Dat is a p2p protocol that enables people to publish content and information to the web from their personal computers. This fundamentally changes the relationship people have to the internet by breaking the client server hierarchy and opens the realm of self publishing to everyone." - [New Computers Working Group](https://p2p.newcomputers.group/guides/why-self-host.html) 223 | 224 | ### Notes on why we're using a spatial and narrative metaphors for learning bash and creating folder poetry 225 | 226 | **Using the command line and computing in general is a relational practice**. You are never using the command line from a “global” perspective. When you issue commands from the command line, you are doing so, from a particular position within the hierarchy of your computer’s file system. 227 | 228 | Similarly, when we are inside a house, we are never simultaneously in the kitchen and the bedroom. If we tried to “get into bed” while in the kitchen, we would not be able to. However if we wanted to wash dishes while standing in the kitchen, we would be able to. 229 | 230 | From the command line, if we have navigated to the Desktop folder but try to perform an action on a file that’s inside your home directory, this would not work. You would have to navigate to the home folder by navigating your file path. 231 | 232 | 233 | ___ 234 | 235 | 236 | 237 | ### Emoji for loop 238 | 239 | `for i in {1..2000}; do printf ' ♡ 📂 → ➩ ➪ ➫ ➬ ➭ ➮ '; done;` will create an emoji for loop 240 | 241 | ### 🔮 `folder-spell` 242 | 243 | `folder-spell` is a folder poetry generator that came out of a conversation our TA Brian Solon and i had on the bus yesterday. It makes writing sentences with folders go very quickly. 244 | 245 | - It creates a series of nested folders with a text file at the end. 246 | - The first words you write after `folder-spell` will become a series of nested folders. The text within quotations will become the contents of a text file. 247 | 248 | **Installation** 249 | 250 | - enter the entire following line in your terminal 251 | - `curl https://gist.githubusercontent.com/solon/27106a5389c61dcb83fb25fa9c20787d/raw/folder-spell.sh > ~/folder-spell.sh && chmod u+x ~/folder-spell.sh && echo $'folder-spell() {\n ~/folder-spell.sh \"$@\" \n}' >> ~/.bash_profile` 252 | - `source ~/.bash_profile` 253 | 254 | 255 | -------------------------------------------------------------------------------- /sfpc-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/melaniehoff/Peer-to-Peer-Folder-Poetry/c13415dd9a9e0ff1abbde6baff7d6ad12554d7c3/sfpc-1.jpg -------------------------------------------------------------------------------- /sfpc-fall-2019.md: -------------------------------------------------------------------------------- 1 | # P2P Folder Poetry – SFPC Fall 2019 2 | 3 | ![](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/sfpc-1.jpg) 4 | 5 | # Table of Contents 6 | - [Preparation for Class](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/sfpc-fall-2019.md#preparation-before-class) _look here first 👀_ 7 | - [Agenda](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/sfpc-fall-2019.md#agenda) 8 | - [Slides](https://docs.google.com/presentation/d/1VoU8IQrp-GTEIzVTRag_3G_Kt_bAv-kAO_X7ezrorCo/edit?usp=sharing) 9 | - [P2P Poetry Rules & Bash Commands](#p2p-folder-poetry-rules) 10 | - [Bash Drawings from Taeyoon](https://docs.google.com/presentation/d/1WV_vFHtKB7BUBc3P_oGVlLry6W_8K_fJkJiWzisXonY/edit#slide=id.g60e8df3e27_0_0) 11 | - [Editing your .bash_profile](#to-edit-your-bash_profile) 12 | - [Sharing on the P2P web](#-sharing-our-poems-on-the-p2p-web) 13 | - [P2P address book](https://docs.google.com/spreadsheets/d/1NXW5iyCl1lgAJezwOQV1T0PLwSkjF4ILNlRLv5CzCpg/edit?usp=sharing) 14 | - [Homework](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/sfpc-fall-2019.md#homework-for-oct-24th) 15 | - [Workshop Description & Theory](#workshop-description) 16 | 17 | ## Terms 18 | - **Folder Poetry** is the practice of using the structure of computer folder organization as a new kind of poetic form like the haiku or iambic pentameter. By naming and nesting folders and files, we can create unfolding narratives, rhythmic prose, and choose-your-own-adventure poetry. 19 | - **The Terminal** is desktop application to control and make changes to your operating system by typing text commands. In this class we'll use the terminal to create folder poetry. 20 | - **Bash** is the programming language we'll use in the terminal, often one line at a time, but we can also put Bash code in a file and run that file. 21 | - **Peer-to-peer** computing is a way to make distributed networks in which each computer can act as a server for the others, allowing shared access to files without the need for a central server. 22 | - **Dat** is a data distribution tool for publishing on peer-to-peer networks. 23 | 24 | ## Preparation before Class 25 | **Install, Respond to the Prompt, & Read Folder Poetry** 26 | 27 | ### 1. Install Node & Dat 28 | Run each of these Bash lines one after the other by pasting them in your Terminal application and pressing ENTR. Don't worry if you've never used terminal before or you're not comfortable with it! There will be time in class to install if you dont get to it before class. 29 | 30 | - `curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.0/install.sh | bash` 31 | - `source ~/.bash_profile` 32 | - `nvm install --lts` 33 | - `nvm use --lts` 34 | - `npm install -g dat` 35 | 36 | 37 | ### 2. 🌳Prompt: Folder Poem as Home 38 | _What would your utopic, liberatory living environment look like?_ 39 | 40 | **Gently explore your imagination and think about the following prompt. Come to class with writing, diagrams, or sketches in response to these guiding questions.** 41 | 42 | - **Imagine a kind of housing or space that could hold all your friends, chosen family, and maybe your biological family too.** 43 | - **This home does not have to be realistic or even physically probable.** 44 | - What kinds of rooms, interconnecting hallways, or gardens could be grown? What kinds of activities would residents do in different spaces throughout the home? 45 | - Consider the kinds of relationships you would like this home to hold & how people could relate to each other differently based on the proximity of their daily lives? 46 | - Consider how you would like to share space with others in this home. How are different parts of your home accessed and by whom? 47 | - Consider the ephemeral aspects of your home as much as the physical aspects. 48 | - In this home, how do you communicate and care for each other? 49 | - What are the emotional qualities of the spaces in your home? 50 | - What is the weather like around your home? 51 | - Consider the many forms it could take, 52 | - A palace with many rooms. In each room a memory of something that happened in this room with someone in you live with. 53 | - A forest of folders where each resident is tree and insect files carry messages back and forth between them. 54 | - A school where each room is devoted to something you would like to learn collectively with those you share a home with. 55 | - A multi-generational interconnected courtyard housing compound with rooms for climbing, rooms for growing, rooms for cooking, rooms for learning. 56 | 57 | ### 3. Read Folder Poetry 58 | **Folder Poetry Examples** 59 | - 📒[Download: Folder Poetry - SFPC Yamaguchi Japan Zine](https://melanie-hoff.com/folder-poetry/sfpc-ycam/zine-pdfs-ycam-folder-poetry.zip)
60 | - 📒[Download: Folder Poetry - SFPC Detroit Zine](https://melanie-hoff.com/folder-poetry/sfpc-detroit/detroit-zine-reader.pdf.zip)
61 | - Folder Poetry on the default (non P2P) internet 62 | - [folderpoetry.club](folderpoetry.club) 63 | - Laurel Schwulst's adapatation of Folder Poetry in their _Writing as Metadata_ class at Yale: [metadatarocks.nfshost.com](metadatarocks.nfshost.com) 64 | 65 |
66 | 67 | ![](https://melanie-hoff.com/poster.png) 68 | 69 | 70 | # Agenda 71 | - [Download Garden](https://melanie-hoff.com/folder-poetry/sfpc-2019/garden-of-forking-paths.zip) 72 | - Our Folder Names 73 | - Preparation / Installation / Downloading 74 | - Introduction: Melanie's files 75 | 76 | ### Part I: Folder Poetry 77 | 78 | **Reintroduction to computers & computing** 79 | _Programming is about the computer, the programmer, the relationship they have with each other, and the environments they create together._ 80 | - Folders & file systems 81 | - What is Folder Poetry and how will we be creating it? 82 | - Discretely categorizing things. The affordances of folders. 83 | - Examples of folder projects 84 | - Folders Anonymous 85 | 86 | ### Part II: Terminal & Bash 87 | _The Desktop is a lie_ 88 | - Terminal and Bash commands 89 | - Introduction of navigating the command line by walking through the-garden-of-forking-paths 90 | - [Download the garden](https://melanie-hoff.com/folder-poetry/sfpc-2019/garden-of-forking-paths.zip) 91 | - growing the garden 92 | - Anatomy of Bash Prompt 93 | - Editing bash_profile 94 | 95 | ### Part III 96 | _Making our Folder Poem Homes_ 97 | 98 | - Folder Home Structure 99 | - Bash commands 100 | - Folder Poetry Rules 101 | 102 | ### Part IIII: Peer-to-Peer Poetry with Dat 103 | _The network is a folder poem, be the poet_ 104 | - P2P introduction and description of DAT and "the cloud" 105 | - Dat is a protocol for sharing data between computers. 106 | - Dat’s strengths are that data is hosted and distributed by many computers on the network, that it can work offline or with poor connectivity 107 | - The Distributed Web is about decentralization of servers and control 108 | - Data on the distributed web is not indexed which means it is not easily searchable 109 | - We are creating a local network island away from the default(larger) internet 110 | - Sharing our Poems on the P2P Web 111 | 112 | _____ 113 | 114 | ## P2P Folder Poetry Rules 115 | _The artform of folder poetry is forgiving, Dat is not_ 116 | 117 | P2P folder poetry has specific requirements in order for your poems to be shared 118 | with each other via the Dat protocol. If you don't follow these rules, you will have 119 | still created folder poetry, they just wont become P2P folder poetry during this 120 | workshop. 121 | 122 | 🔴 No empty folders.
123 | 🔴 Every file has to contain text in it.
124 | 🔴 Underscores and dashes are ok. for example: `my_file.txt` or `my-file.txt`
125 | 🔴 All files must have a file extension such as .txt
126 | 127 | ## 🎲 Bash & Terminal commands 128 | 129 | | Command | Description | 130 | | ------------------------------------------ | --------------------------------------------- | 131 | | `cd` | change directory | 132 | | `cd ..` | change directory one level back | 133 | | `ls` | list contents of directory | 134 | | `pwd` | print working directory | 135 | | `mkdir foldername` | create a folder named foldername . | 136 | | `touch dandelion.txt` | create a file named dandelion.txt | 137 | | `echo "woof woof" > kitty.txt` | creates a text file called kitty.txt that contains the words, "woof woof"| 138 | | `cat filename.txt` | print contents of file | 139 | | `rm -rf filename.txt` . | remove a file or folder this way | 140 | | `mv filename.txt newfilename.txt` | rename a file | 141 | | `open .` | (macOS) open the current folder in Finder | 142 | | `explorer.exe .` | (Windows) open the current folder in Explorer | 143 | | `open filename.txt` | (macOS) opens file in Text Edit | 144 | | `notepad.exe filename.txt` | (Windows) opens file in Notepad | 145 | | `cp filename.txt filename2.txt` | copy file | 146 | | `say "hello, what is poetic computation?"` | (macOS) speak out loud | 147 | | `man cd` | show the manual for 'cd'. Press q to quit | 148 | | `source ~/.bash_profile` | restart your terminal config file | 149 | 150 | 151 | ### Keyboard Terminal Shortcuts 152 | | Command | Description | 153 | |-----------------------|------------------------| 154 | | Up + Down Arrow keys | scroll through history | 155 | | Tab Key | autocomplete | 156 | |CMD + CTRL + SPACE |Emoji Keyboard (Mac OS) | 157 | 158 | 159 | ### Editing a text file 160 | | command | Description | 161 | | -------------------- | --------------------------------- | 162 | |`echo "woof woof" > kitty.txt` | creates a text file called kitty.txt that contains the words, "woof woof"| 163 | | `nano textfile.txt` | open file in the nano text editor | 164 | | CTRL + X , y , ENTER | exit and save changes | 165 | 166 | 167 | ## Editing your ~./bash_profile 168 | 169 | _The ~./bash_profile is a configuration file for the terminal._ 170 | 171 | 1. `nano ~/.bash_profile` 172 | 173 | - This command will open your ~./bash_profile in the nano editor 174 | 175 | In steps 2 and 3 we will paste 2 aliass AKA shortcuts that will help us visualize our folder poem structures. 176 | 177 | 2. `alias tree="find . -not -path '*/\.*' -print | sed -e 's;[^/]*/;|;g;s;|; |;g'"` 178 | - (if you have homebrew installed enter `brew install tree` in another terminal window instead) 179 | 180 | 3. `alias treefile="find . -not -path '*/\.*' | xargs -I {} bash -c 'f={}; echo \$f | sed -e \"s;[^/]*/;|;g;s;|; |;g\"; if [[ \$f == *.txt ]]; then echo; cat \$f; echo; echo; fi'"` 181 | 182 | 4. `export PS1="🍋 \w\n\u$ "` 183 | - This will customize your Bash prompt. Feel free to change the emoji. (skip if you use zshell) 184 | - Explanation: `\w` shows your full file path so you'll always know where you are in the terminal, `\n` creates a new line in your bash prompt. `\u` shows your computer username, and `$` symoolizes the end of a bash prompt. 185 | 186 | 5. `source ~/.bash_profile` 187 | - reboot your terminal 188 | 189 | ## Making our Folder Poems 190 | - `cd` 191 | - `mkdir folder-friends` 192 | - `mkdir folder-poetry` 193 | - `cd folder-poetry` 194 | - `mkdir yourname-home` 195 | - `cd yourname-home` 196 | - ^ where we'll make our poems 197 | 198 | 199 | ## 🕸 Sharing our Poems on the P2P Web 200 | 201 | This part might feel tricky. Don't worry if you miss a step and encounter any problems. It’s ok, they will be easily resolved. TAs and i are here to help you :) 202 | 203 | - Open a totally new window in Terminal 204 | - `cd folder-poetry` this brings you into your folder-poetry folder 205 | - `dat share` this starts serving your folder on the P2P web 206 | - copy your hash into [this spreadsheet](https://docs.google.com/spreadsheets/d/1NXW5iyCl1lgAJezwOQV1T0PLwSkjF4ILNlRLv5CzCpg/edit?usp=sharing) next to your name 207 | - minimize this window so you dont touch it. Your folder will only be sharing as long as this terminal window is active and dat share-ing. 208 | 209 | ### Networked Poems (cloning your neighbor's poem) 210 | - **In a new Terminal window:** 211 | - `cd folder-friends` 212 | - `dat clone someone-elses-poem-hash-from-spreadsheet` 213 | - `ls` you should be able to see and explore their poem! 214 | 215 | ## Homework for Oct 24th 216 | 217 | **Draw and code a folder poem over the next week** 218 | It can be a continuation of the Folder Poem as Home Prompt or something else you desire 219 | 220 | **Important:** 221 | - Draw / sketch a folder poem first on paper 222 | - Drop photos of your sketch in [this paper doc](https://paper.dropbox.com/doc/Folder-Poem-Drawings--AnhncalFlfX36gKb6cpu2AJZAg-gh1MtJqX5lmPC0ZiixkeA) 223 | - Write & code your poem using Bash in the terminal (avoid the finder) 224 | - Come to class with your Folder Poems on your computer, we will be sharing them over a distributed network using Dat 225 | 226 | _I will be creating a folder poetry zine from this class to share and distribute at the showcase with your folder poems alongside your folder poem drawings_ 227 | 228 | **Suggested:** 229 | - Check out Laurel’s tender P2P resource: http://p2pforever.org/ for P2P/Dat resources and example projects 230 | - to view some of these projects, download the Dat browser, https://beakerbrowser.com/ 231 | - Browse these [Distributed projects & resources](https://www.are.na/melanie-hoff/sweet-er-distributed-projects) and consider ways we could use a Dat server together at SFPC : ) 232 | ___ 233 | 234 | # Workshop Description 235 | 236 | What if we could transform our online networks from something we passively receive to something we actively create? Folder Poetry is the practice of using the structure of computer folder organization as a new kind of poetic form like the haiku or iambic pentameter. By naming and nesting folders and files, we can create unfolding narratives, rhythmic prose, and choose-your-own-adventure poetry. In this workshop we will collectively create peer-to-peer folder poetry using the command line and Dat. Through lecture, examples, and writing folder poetry as meditation, we will explore the narrative qualities of folder structures and Dat as a tool for building digital spaces with and for our networks. 237 | 238 | In this session we will get intimate with computers and write poetry with their logic. This workshop is an introduction to writing folder poetry, the P2P protocol Dat, and navigating the command line interface using Bash. 239 | 240 | Together, we will create living networked poetry through connecting folders on the peer-to-peer web for each other to inhabit and explore. 241 | 242 | This workshop assumes no coding experience and simultaneously takes the position that everyone who interacts with computers in some way is already a programmer. 243 | 244 | ### Always Already Programmimg 245 | 246 | Every time you make a folder or rename a file on your computer, the actions you take through moving your mouse and clicking on buttons, have an equivalent text command. When you use a visual interface (called a GUI) text commands are still being fired in the background which eventually compile to binary. Using bash in the terminal is a way to get a little closer to the metal and a little further along in uncovering the mechanics of our most common devices. 247 | 248 | Everyone who interacts with computers has, in very real ways already been programming. The distinction between programmer and user is maintained by a tech industry that benefits from a population rendered computationally passive. 249 | 250 | Together we can build up and cultivate one another’s agency to shape technology and online spaces that support and care for each other and our communities. 251 | 252 | 253 | ### To create our folder poetry, we will use Bash in the terminal. To share our folder poetry, we will use Dat. 254 | 255 | >"Dat is a p2p protocol that enables people to publish content and information to the web from their personal computers. This fundamentally changes the relationship people have to the internet by breaking the client server hierarchy and opens the realm of self publishing to everyone." - [New Computers Working Group](https://p2p.newcomputers.group/guides/why-self-host.html) 256 | 257 | ### Notes on why we're using a spatial and narrative metaphors for learning bash and creating folder poetry 258 | 259 | **Using the command line and computing in general is a relational practice**. You are never using the command line from a “global” perspective. When you issue commands from the command line, you are doing so, from a particular position within the hierarchy of your computer’s file system. 260 | 261 | Similarly, when we are inside a house, we are never simultaneously in the kitchen and the bedroom. If we tried to “get into bed” while in the kitchen, we would not be able to. However if we wanted to wash dishes while standing in the kitchen, we would be able to. 262 | 263 | From the command line, if we have navigated to the Desktop folder but try to perform an action on a file that’s inside your home directory, this would not work. You would have to navigate to the home folder by navigating your file path. 264 | 265 | 266 | ⛅️⛅️⛅️⛅️⛅️⛅️⛅️⛅️⛅️⛅️ 267 | ### Accessing Your Personal Shared Cloud (Raspberry pi) 268 | 269 | - `ssh pi@garden` 270 | - pw: `morepoetry` 271 | 272 | your poems are in ~/folder-poetry 273 | 274 | 275 | 276 | ___ 277 | 278 | 279 | 280 | ### Emoji for loop 281 | 282 | `for i in {1..2000}; do printf ' ♡ 📂 → ➩ ➪ ➫ ➬ ➭ ➮ '; done;` will create an emoji for loop 283 | 284 | ___ 285 | 286 | 287 | ### 🔮 `folder-spell` 288 | 289 | `folder-spell` is a folder poetry generator that came out of a conversation our TA Brian Solon and i had on the bus yesterday. It makes writing sentences with folders go very quickly. 290 | 291 | - It creates a series of nested folders with a text file at the end. 292 | - The first words you write after `folder-spell` will become a series of nested folders. The text within quotations will become the contents of a text file. 293 | 294 | **Installation** 295 | 296 | - enter the entire following line in your terminal 297 | - `curl https://gist.githubusercontent.com/solon/27106a5389c61dcb83fb25fa9c20787d/raw/folder-spell.sh > ~/folder-spell.sh && chmod u+x ~/folder-spell.sh && echo $'folder-spell() {\n ~/folder-spell.sh \"$@\" \n}' >> ~/.bash_profile` 298 | - `source ~/.bash_profile` 299 | 300 | **Usage** 301 | 302 | - `folder-spell these are words "this is some text"` 303 | - ![](https://melanie-hoff.com/folder-spell.png) 304 | 305 | 306 | - Another example usage: 307 | - `folder-spell this is a folder poem generator "the first words you write will become a series of nested folders. The text within quotations will become the contents of a text file"`

308 | 309 | 310 | ___________ 311 | 312 | ```` 313 | ,,, ,,, 314 | {{{}} ,,, {{{}} ,,, 315 | ,,, ~Y~ {{{}},,, ,,, ~Y~ {{{}},,, 316 | {{}}} |/,,, ~Y~{{}}} {{}}} |/,,, ~Y~{{}}} 317 | ~Y~ \|{{}}}/\|/ ~Y~ ,,, ~Y~ \|{{}}}/\|/ ~Y~ ,,, 318 | \|/ \|/~Y~ \|,,,|/ {{}}}\|/ \|/~Y~ \|,,,|/ {{}}} 319 | \|/ \|/\|/ \{{{}}/ ~Y~ \|/ \|/\|/ \{{{}}/ ~Y~ 320 | \|/\\|/\|/ \\|~Y~// \|/ \|/\\|/\|/ \\|~Y~// \|/ 321 | \|//\|/\|/,\\|/|/|// \|/ \|//\|/\|/,\\|/|/|// \|/ 322 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 323 | 324 | ```` 325 | 326 | -------------------------------------------------------------------------------- /test.md: -------------------------------------------------------------------------------- 1 | # P2P Folder Poetry: An introduction to Re-introducing Yourself to Computers 2 | ### 🌿🕸[Download the Garden of Forking Paths and move it to your home folder](https://melanie-hoff.com/folder-poetry/sfpc-2019/garden-of-forking-paths.zip) 3 | - [☎️ P2P Address book :0)](https://docs.google.com/spreadsheets/d/1nDLIUVbKFc3XNALA7Uf65ra-sH4AsPewWWajt2ltxMY/edit?usp=sharing) 4 | - [Install Node & Bash](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/test.md#2-install-node--dat) 5 | - [Rules of p2p Folder Poetry](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/test.md#-your-folder-poetry-structure) 6 | - [Bash commands](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/test.md#-bash--terminal-commands) 7 | - [Editing your Bash Profile](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/test.md#editing-your-bash_profile) 8 | - [Slides](https://docs.google.com/presentation/d/1z0q_4SmfasCEsMocNmCdvosPGf_xZX5PMxuimWRP4uA/edit#slide=id.g6d44d3a07e_0_20) 9 | - [Prompt]() 10 | - [Variables & Functions](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/test.md#variables--functions) 11 | - [Helpful Supplemental Codes](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/test.md#helpful-codes) 12 | 13 | ![](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/folder-laser-black-wide.png) 14 | 15 | **SFPC Code Societies**
16 | **Jan 7th 2020, 6:30 - 9:30pm** 17 | 18 | What if we could transform our online networks from something we passively receive to something we actively create? Folder Poetry is the practice of using the structure of computer folder organization as a new kind of poetic form like the haiku or iambic pentameter. By naming and nesting folders and files, we can create unfolding narratives, rhythmic prose, and choose-your-own-adventure poetry. In this workshop we will collectively create peer-to-peer folder poetry using the command line and Dat. Through lecture, examples, and writing folder poetry as meditation, we will explore the narrative qualities of folder structures and Dat as a tool for building digital spaces with and for our networks. 19 | 20 | In this session we will get intimate with computers and write poetry with their logic. This workshop is an introduction to writing folder poetry, the P2P protocol Dat, and navigating the command line interface using Bash. 21 | 22 | Together, we will create living networked poetry through connecting folders on the peer-to-peer web for each other to inhabit and explore. 23 | 24 | This workshop assumes no coding experience and simultaneously takes the position that everyone who interacts with computers in some way is already a programmer. 25 | 26 | See: [Always Already Programming](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry#always-already-programming) 27 | 28 | 29 | ## Terms 30 | - **Folder Poetry** is the practice of using the structure of computer folder organization as a new kind of poetic form like the haiku or iambic pentameter. By naming and nesting folders and files, we can create unfolding narratives, rhythmic prose, and choose-your-own-adventure poetry. 31 | - **The Terminal** is desktop application to control and make changes to your operating system by typing text commands. In this class we'll use the terminal to create folder poetry. 32 | - **Bash** is the programming language we'll use in the terminal, often one line at a time, but we can also put Bash code in a file and run that file. 33 | - **Peer-to-peer** computing is a way to make distributed networks in which each computer can act as a server for the others, allowing shared access to files without the need for a central server. 34 | - **Dat** is a data distribution tool for publishing on peer-to-peer networks. 35 | 36 | ## Preparation before Class 37 | For Windows 10, check out this [preliminary set up guide](https://gist.github.com/solon/4e254be6e0d2e73ef8624470fc9ca852#file-folder-poetry-setup-md) 38 | 39 | ### 2. Install Node & Dat 40 | Run each of these Bash lines one after the other by pasting them in your Terminal application and pressing ENTR. Don't worry if you've never used terminal before or you're not comfortable with it! There will be time in class to install if you dont get to it before class. 41 | 42 | - `curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.0/install.sh | bash` 43 | - `source ~/.bash_profile` 44 | - `nvm install --lts` 45 | - `nvm use --lts` 46 | - `npm install -g dat` 47 | 48 | ### 3. Read Folder Poetry 49 | **Folder Poetry Examples** 50 | - 🔗[Download & Explore the SFPC Fall 2019 Cohort's Poetry in your Terminal or Finder](https://www.dropbox.com/s/ewh0cowonhqoozf/sfpc-fall-2019-folder-poetry-smaller.zip?dl=0) 51 | - 📒[Download: Folder Poetry - SFPC Yamaguchi Japan Zine](https://melanie-hoff.com/folder-poetry/sfpc-ycam/zine-pdfs-ycam-folder-poetry.zip)
52 | - 📒[Download: Folder Poetry - SFPC Detroit Zine](https://melanie-hoff.com/folder-poetry/sfpc-detroit/detroit-zine-reader.pdf.zip)
53 | - Folder Poetry on the default (non P2P) internet 54 | - [folderpoetry.club](folderpoetry.club) 55 | - Laurel Schwulst's adapatation of Folder Poetry in their _Writing as Metadata_ class at Yale: [metadatarocks.nfshost.com](metadatarocks.nfshost.com) 56 | 57 | 58 | ## 🎲 Bash & Terminal commands 59 | 60 | | Command | Description | 61 | | ------------------------------------------ | --------------------------------------------- | 62 | | `cd` | change directory | 63 | | `cd ..` | change directory one level back | 64 | | `ls` | list contents of directory | 65 | | `pwd` | print working directory | 66 | | `mkdir foldername` | create a folder named foldername . | 67 | | `touch dandelion.txt` | create a file named dandelion.txt | 68 | | `echo "woof woof" > kitty.txt` | creates a text file called kitty.txt that contains the words, "woof woof"| 69 | | `cat filename.txt` | print contents of file | 70 | | `rm -rf filename.txt` . | remove a file or folder this way | 71 | | `mv filename.txt newfilename.txt` | rename a file | 72 | | `open .` | (macOS) open the current folder in Finder | 73 | | `explorer.exe .` | (Windows) open the current folder in Explorer | 74 | | `open filename.txt` | (macOS) opens file in Text Edit | 75 | | `notepad.exe filename.txt` | (Windows) opens file in Notepad | 76 | | `cp filename.txt filename2.txt` | copy file | 77 | | `say "hello, what is poetic computation?"` | (macOS) speak out loud | 78 | | `man cd` | show the manual for 'cd'. Press q to quit | 79 | | `source ~/.bash_profile` | restart your terminal config file | 80 | 81 | 82 | ### Keyboard Terminal Shortcuts 83 | | Command | Description | 84 | |-----------------------|------------------------| 85 | | Up + Down Arrow keys | scroll through history | 86 | | Tab Key | autocomplete | 87 | |CMD + CTRL + SPACE |Emoji Keyboard (Mac OS) | 88 | 89 | 90 | ### Editing a text file 91 | | command | Description | 92 | | -------------------- | --------------------------------- | 93 | |`echo "woof woof" > kitty.txt` | creates a text file called kitty.txt that contains the words, "woof woof"| 94 | | `nano textfile.txt` | open file in the nano text editor | 95 | | CTRL + X , y , ENTER | exit and save changes | 96 | 97 | 98 | ## Editing your ~./bash_profile 99 | 100 | _The ~./bash_profile is a configuration file for the terminal._ 101 | 102 | 1. `nano ~/.bash_profile` 103 | 104 | - This command will open your ~./bash_profile in the nano editor 105 | 106 | In steps 2 and 3 we will paste 2 aliass AKA shortcuts that will help us visualize our folder poem structures. 107 | 108 | 2. `alias tree="find . -not -path '*/\.*' -print | sed -e 's;[^/]*/;|;g;s;|; |;g'"` 109 | - (if you have homebrew installed enter `brew install tree` in another terminal window instead) 110 | 111 | 3. `alias treefile="find . -not -path '*/\.*' | xargs -I {} bash -c 'f={}; echo \$f | sed -e \"s;[^/]*/;|;g;s;|; |;g\"; if [[ \$f == *.txt ]]; then echo; cat \$f; echo; echo; fi'"` 112 | 113 | 4. `export PS1="🍋 \w\n\u$ "` 114 | - This will customize your Bash prompt. Feel free to change the emoji. (skip if you use zshell) 115 | - Explanation: `\w` shows your full file path so you'll always know where you are in the terminal, `\n` creates a new line in your bash prompt. `\u` shows your computer username, and `$` symoolizes the end of a bash prompt. 116 | 117 | 5. `source ~/.bash_profile` 118 | - reboot your terminal 119 | 120 | ## 🟣 Your Folder Poetry Structure 121 | 122 | In your home(~) folder we will have: 123 | 124 | - a folder called folder-society 125 | - a folder called my-folder-poem 126 | - inside my-folder-poem is a folder called your-name 127 | - inside the folder called your-name is where your poem will live 128 | 129 | **To create the above outlined folder structure using Bash in the terminal:** 130 | 131 | - `cd` 132 | - `mkdir folder-society` 133 | - `mkdir my-folder-poem` 134 | - `cd my-folder-poem` 135 | - `mkdir your-name` 136 | - `cd your-name` 137 | - ^ where we'll make our poems 138 | 139 | ## 🟣 P2P Folder Poetry *Strict* Rules 140 | 141 | P2P folder poetry has specific requirements in order for your poems to be shared 142 | with each other via the Dat protocol. If you don't follow these rules, you will have 143 | still created folder poetry, they just wont become P2P folder poetry during this 144 | workshop. 145 | 146 | **The artform of folder poetry is forgiving, Dat is not.** 147 | 148 | - 🟣 No empty folders. 149 | - 🟣 Every file has to contain text in it. 150 | - 🟣 All lowercase 151 | - 🟣 No spaces. 152 | - 🔺Underscores and dashes are ok. for example: `my_file.txt` or `my-file.txt` 153 | - 🟣 All files must have a file extension such as .txt 154 | 155 | ## Variables & Functions 156 | 157 | **Javascript vs. Python** 158 | To read a great article on the difference between Javascript and Python, [check here](https://skillcrush.com/2019/03/15/python-vs-javascript/)! 159 | - My top-level distinction is Javascript is for making dynamic websites. Javascript lives and breathes in _the Browser_. - Python, is way more of an all-purpose programming language for millions of computational uses including on the web (in servers but not in the browser). 160 | 161 | **Variables** 162 | 163 | - variables are named containers that hold information. When we name something we can refer to it later. Naming is powerful. 164 | - words in laguage are like variables. They are named containers that hold meaning. To name something is declare the existance of the thing we are naming. names for words and variables don't emerge from the ether, they are collectively constructed and reaffirmed by people. what are the social histories of the words you speak? 165 | 166 | Example Variables in Python: 167 | ``` 168 | dog = "woof" 169 | my_fav_number = 7 170 | 171 | ``` 172 | 173 | Example Variables in Javascript: 174 | ``` 175 | var dog = "woof"; 176 | var myFavNumber = 7 177 | ``` 178 | 179 | - Notice the quotations for a variable that contains a line of text (variable type is called a string). Notice that for a variable type of number, there are no quations. Why do you think that is? 180 | - Notice that in python vs. there are different naming conventions. snake_case vs. camelCase. Why do you think this is? (hint there's not a clear hard and fast answer, it's really just differnet naming conventions for different languages!) 181 | 182 | **Function** 183 | - A function is a block of reusable code (like a shortcut!) that is used to perform an action. Functions provide modularity for your project and the ability to easily reuse and repurpose code. Technically, any piece of code (from your website to the code that runs Facebook) can be written without using functions but you wouldnt want to do this because your code would then be so long! 184 | 185 | - Lanhguages like Python and Javascript gives you many built-in functions like print(), etc. but you can also create your own functions. These functions are called user-defined functions. 186 | 187 | Function in Python: 188 | ``` 189 | dog = "woof" 190 | 191 | def printme( my_var ): 192 | print (my_var) 193 | return 194 | 195 | printme(dog) 196 | ``` 197 | 198 | Function in Javascript: 199 | ``` 200 | var dog = "woof"; 201 | 202 | function printMe(my_var){ 203 | console.log(my_var); 204 | } 205 | 206 | printMe(dog); 207 | ``` 208 | 209 | ### Part I: Folder Poetry 210 | 211 | **Reintroduction to computers & computing** 212 | _Programming is about the computer, the programmer, the relationship they have with each other, and the environments they create together._ 213 | - Folders & file systems 214 | - What is Folder Poetry and how will we be creating it? 215 | - Discretely categorizing things. The affordances of folders. 216 | - Examples of folder projects 217 | - Folders Anonymous 218 | 219 | ### Part II: Terminal & Bash 220 | _The Desktop is a lie_ 221 | - Terminal and Bash commands 222 | - Introduction of navigating the command line by walking through the-garden-of-forking-paths 223 | - [Download the garden](https://melanie-hoff.com/folder-poetry/sfpc-2019/garden-of-forking-paths.zip) 224 | - growing the garden 225 | - Anatomy of Bash Prompt 226 | - Editing bash_profile 227 | 228 | ### Part III 229 | _Making our Folder Poem Poems in Bash_ 230 | 231 | ### Part IIII: Peer-to-Peer Poetry with Dat 232 | _The network is a folder poem, be the poet_ 233 | - P2P introduction and description of DAT and "the cloud" 234 | - Dat is a protocol for sharing data between computers. 235 | - Dat’s strengths are that data is hosted and distributed by many computers on the network, that it can work offline or with poor connectivity 236 | - The Distributed Web is about decentralization of servers and control 237 | - Data on the distributed web is not indexed which means it is not easily searchable 238 | - We are creating a local network island away from the default(larger) internet 239 | - Sharing our Poems on the P2P Web 240 | 241 | 242 | ### 🔮Prompt: Folder Poem as School 243 | _What would your speculative liberatory learning environment look like?_ 244 | 245 | _Previous prompts have been Folder Poem as [Village](https://gist.github.com/melaniehoff/7cda150870c869c1990a744dddbd286f#folder-poetry-prompt--a-village-you-want-to-live-in), [Gift](https://gist.github.com/melaniehoff/96bffd279b0ea66f61291e231283aab5#folder-poetry-prompt), & [Home](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/sfpc-fall-2019.md#2-prompt-folder-poem-as-home)_ 246 | 247 | **Gently explore your imagination and think about the following prompt. Feel free to write or sketch based on your reflections but this is not required.** 248 | 249 | - **Imagine a fantastical physical environment that could hold you and those you want to learn nearby.** 250 | - **This school is not like any school that exists. This school does not have to be realistic or adhere to laws of physics.** 251 | - What kinds of rooms, interconnecting hallways, or gardens could be grown? What kinds of activities would learners do in different spaces throughout the school? 252 | - What kinds of subjects would be taught there? Are their teachers and students or some other set of roles? 253 | - Do the roles ever change? 254 | - What are the bathrooms like? How about the furniture? Are there laboratories? Playgrounds? Napping rooms? 255 | - Consider the kinds of relationships you would like this school to hold & how people could relate to each other differently based on the proximity and content of their learning? 256 | - Consider how you would like to share space with others in this school. How are different parts of your school accessed and by whom? 257 | - Are there grades in this school? How are people separated into groups if ever? What are the taxonomies? For ex: traditional school systems will group people by categories such as age, class, geography, "ability", "behavior", and able-bodied-ness. 258 | - Consider the ephemeral aspects of the school as much as the physical aspects. 259 | - In this school, how do you communicate and care for each other? 260 | - What are the emotional qualities of the spaces in this school? 261 | - What is the weather like around this school? 262 | - Consider the many forms it could take, 263 | - A memory palace with many rooms. In each room a memory of something that someone learned in this room by seeing the memory of the last person in this room. 264 | - A forest of learning folders where each participant is a tree and insect files carry information back and forth between them. 265 | - A school where each room is devoted to something you would like to learn collectively with those you share a that room with. 266 | - A multi-generational interconnected courtyard boarding house with rooms for climbing, rooms for growing, rooms for cooking, rooms for singing. 267 | 268 | ### Helpful Codes 269 | 270 | 👛 if you have a Mac computer and are feeling fancy, i recommend downloading Iterm 271 | - https://iterm2.com/ 272 | 273 | Install homebrew 274 | - `/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"` 275 | 276 | For newer Mac's to switch from zsh to bash 277 | - `chsh -s $(which bash)`
278 | OR
279 | - `chsh -s /bin/bash` 280 | - More info [here](https://www.howtogeek.com/444596/how-to-change-the-default-shell-to-bash-in-macos-catalina/) 281 | 282 | To remove "(base)" from prepending the bash prompt after installing Anaconda: 283 | - `conda config --set auto_activate_base False` 284 | - `source ~/.bash_profile` 285 | 286 | To change your computer's hostname (Mac) 287 | - sudo scutil --set HostName new_hostname 288 | - restart your computer 289 | 290 | To install Anaconda (Python 3.7+, 64-bit), follow the instructions for your platform here. 291 | - Mac OS X: [go this page](https://www.anaconda.com/download/#macos), wait for the download to complete, and run the installer file. Choose all of the installer’s default options. To test your installation, open a terminal window and type “conda”, without quotation marks, and press enter. You should see a different list of arcane commands than those produced by typing “git”. 292 | 293 | - Windows: [go to this page](https://www.anaconda.com/download/#windows), wait for the download to complete, and run the exe file. Choose all of the installer’s default options, except you should reject the suggestion to install Microsoft Visual Studio Code. (Again, we recommend editing text using Atom.) Test your installation by searching for “anaconda prompt” in your system. In the resulting terminal window, type “conda”, without quotation marks, and press enter. You should see a different list of arcane commands than those produced by typing “git”. 294 | -------------------------------------------------------------------------------- /two-day-workshop.md: -------------------------------------------------------------------------------- 1 | # P2P Folder Poetry: An introduction to Re-introducing Yourself to Computers 2 | 3 | ![](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/folder-laser-black-wide.png) 4 | 5 | 6 | What if we could transform our online networks from something we passively receive to something we actively create? Folder Poetry is the practice of using the structure of computer folder organization as a new kind of poetic form like the haiku or iambic pentameter. By naming and nesting folders and files, we can create unfolding narratives, rhythmic prose, and choose-your-own-adventure poetry. In this workshop we will collectively create peer-to-peer folder poetry using the command line and Dat. Through lecture, examples, and writing folder poetry as meditation, we will explore the narrative qualities of folder structures and Dat as a tool for building digital spaces with and for our networks. 7 | 8 | In this session we will get intimate with computers and write poetry with their logic. This workshop is an introduction to writing folder poetry, the P2P protocol Dat, and navigating the command line interface using Bash. 9 | 10 | Together, we will create living networked poetry through connecting folders on the peer-to-peer web for each other to inhabit and explore. 11 | 12 | This workshop assumes no coding experience and simultaneously takes the position that everyone who interacts with computers in some way is already a programmer. 13 | 14 | 15 | # Always Already Programming 16 | 17 | Everyone who interacts with computers has—in important ways—always already been programming them. Why are the ideas of a programmer and a user so divorced from each other? The distinction between programmer and user is reinforced and maintained by a tech industry that benefits from a population rendered computationally passive. 18 | 19 | Every time you make a folder or rename a file on your computer, the actions you take through moving your mouse and clicking on buttons, have an equivalent text command. When you use a visual interface (called a GUI) text commands are still being fired in the background which eventually compile to binary. Using bash in the terminal is a way to get a little closer to the metal and a little further along in uncovering the mechanics of our most common devices. 20 | 21 | Together we can build up and cultivate one another’s agency to shape technology and online spaces that support and care for each other. 22 | 23 | ## Vocabulary 24 | **Word** | **Notes** 25 | --- | --- 26 | Folder Poetry| The practice of using the structure of computer folder organization as a new kind of [poetic form](https://en.wikipedia.org/wiki/Poetry#Forms) like the [haiku](https://en.wikipedia.org/wiki/Haiku) or [iambic pentameter](https://en.wikipedia.org/wiki/Iambic_pentameter). By naming and nesting folders and files, we can create unfolding narratives, rhythmic prose, and choose-your-own-adventure poetry. 27 | terminal | An application to control and make changes to your operating system by typing text commands. In this class we'll use the terminal to create folder poetry. 28 | terminal commands | text commands to control your computer when entered into a command prompt like the terminal. The commands we'll learn will be in a language called Bash. 29 | Bash | is the programming language we use in the terminal, often one line at a time, but we can also put Bash code in a file and run that file. 30 | Peer-to-Peer | Peer-to-peer computing is a way to make distributed networks in which each computer can act as a server for the others, allowing shared access to files without the need for a central server. 31 | Dat | is a data distribution tool for publishing on peer-to-peer networks. 32 | folder | (also referred to as directory) is an organizational regime imposed on your computer used to store and organize files and other folders 33 | file | is an object on a computer which stores data, information, settings, or commands to be used with various computer programs 34 | file types/formats/extensions | indicate how data has been stored and how to read or open files in specific programs. for example, `.txt` files open in a text editor, `.jpg` files open in an image viewer/editor. full list of file formats and extensions [here](https://en.wikipedia.org/wiki/List_of_file_formats) 35 | file path | tells you the location of a file in a system. for example `users/username/desktop/folder_poetry_club` 36 | 37 | 38 | ## To create our folder poetry, we will use Bash in the terminal. To share our folder poetry, we will use Dat. 39 | 40 | >"Dat is a p2p protocol that enables people to publish content and information to the web from their personal computers. This fundamentally changes the relationship people have to the internet by breaking the client server hierarchy and opens the realm of self publishing to everyone." - [New Computers Working Group](https://p2p.newcomputers.group/guides/why-self-host.html) 41 | 42 | ## Notes on why we're using a spatial and narrative metaphors for learning bash and creating folder poetry 43 | 44 | **Using the command line and computing in general is a relational practice**. You are never using the command line from a “global” perspective. When you issue commands from the command line, you are doing so, from a particular position within the hierarchy of your computer’s file system. 45 | 46 | Similarly, when we are inside a house, we are never simultaneously in the kitchen and the bedroom. If we tried to “get into bed” while in the kitchen, we would not be able to. However if we wanted to wash dishes while standing in the kitchen, we would be able to. 47 | 48 | From the command line, if we have navigated to the Desktop folder but try to perform an action on a file that’s inside your home directory, this would not work. You would have to navigate to the home folder by navigating your file path. 49 | 50 | ## Resources to Review Before Class 51 | - [P2P Folder Poetry Arena Channel](https://www.are.na/melanie-hoff/peer-to-peer-folder-poetry) 52 | 53 | ## Prerequisites 54 | - A computer running macOS, Linux or [Windows 10](https://gist.github.com/solon/4e254be6e0d2e73ef8624470fc9ca852#file-folder-poetry-setup-md) 55 | - An Internet connection to download software packages 56 | - Administrator access to your computer to install software packages 57 | - In this workshop we will use Bash, Node.js, and Dat. 58 | 59 | 60 | ## Session Objectives 61 | 62 | - To create a space where we are getting intimate with computers and writing poetry with their logic 63 | - To develop a taste for creating emotive and community-centered software 64 | - To introduce [Dat](https://dat.foundation/) and navigating the Command Line with [Bash](https://en.wikipedia.org/wiki/Bash_(Unix_shell)) 65 | - To create poetry through building a folder-based city on the peer-to-peer web for each other to inhabit 66 | 67 | ### Part I: Folder Poetry 68 | 69 | **Reintroduction to computers & computing** 70 | _Programming is about the computer, the programmer, the relationship they have with each other, and the environments they create together._ 71 | - Folders & file systems 72 | - What is Folder Poetry and how will we be creating it? 73 | - Discretely categorizing things. The affordances of folders. 74 | - Examples of folder projects 75 | - Folders Anonymous 76 | 77 | ### Part II: Terminal & Bash 78 | _The Desktop is a lie_ 79 | - Terminal and Bash commands 80 | - Introduction of navigating the command line by walking through the-garden-of-forking-paths 81 | - [Download the garden](https://melanie-hoff.com/folder-poetry/sfpc-2019/garden-of-forking-paths.zip) 82 | - growing the garden 83 | - Anatomy of Bash Prompt 84 | - Editing bash_profile 85 | 86 | ### Part III 87 | _Making our Folder Poem Poems in Bash_ 88 | 89 | ### Part IIII: Peer-to-Peer Poetry with Dat 90 | _The network is a folder poem, be the poet_ 91 | - P2P introduction and description of DAT and "the cloud" 92 | - Dat is a protocol for sharing data between computers. 93 | - Dat’s strengths are that data is hosted and distributed by many computers on the network, that it can work offline or with poor connectivity 94 | - The Distributed Web is about decentralization of servers and control 95 | - Data on the distributed web is not indexed which means it is not easily searchable 96 | - We are creating a local network island away from the default(larger) internet 97 | - Sharing our Poems on the P2P Web 98 | 99 | ### 🔮Prompt: Folder Poem as School 100 | _What would your speculative liberatory learning environment look like?_ 101 | 102 | _Previous prompts have been Folder Poem as [Village](https://gist.github.com/melaniehoff/7cda150870c869c1990a744dddbd286f#folder-poetry-prompt--a-village-you-want-to-live-in), [Gift](https://gist.github.com/melaniehoff/96bffd279b0ea66f61291e231283aab5#folder-poetry-prompt), & [Home](https://github.com/melaniehoff/Peer-to-Peer-Folder-Poetry/blob/master/sfpc-fall-2019.md#2-prompt-folder-poem-as-home)_ 103 | 104 | **Gently explore your imagination and think about the following prompt. Feel free to write or sketch based on your reflections but this is not required.** 105 | 106 | - **Imagine a fantastical physical environment that could hold you and those you want to learn nearby.** 107 | - **This school is not like any school that exists. This school does not have to be realistic or adhere to laws of physics.** 108 | - What kinds of rooms, interconnecting hallways, or gardens could be grown? What kinds of activities would learners do in different spaces throughout the school? 109 | - What kinds of subjects would be taught there? Are their teachers and students or some other set of roles? 110 | - Do the roles ever change? 111 | - What are the bathrooms like? How about the furniture? Are there laboratories? Playgrounds? Napping rooms? 112 | - Consider the kinds of relationships you would like this school to hold & how people could relate to each other differently based on the proximity and content of their learning? 113 | - Consider how you would like to share space with others in this school. How are different parts of your school accessed and by whom? 114 | - Are there grades in this school? How are people separated into groups if ever? What are the taxonomies? For ex: traditional school systems will group people by categories such as age, class, geography, "ability", "behavior", and able-bodied-ness. 115 | - Consider the ephemeral aspects of the school as much as the physical aspects. 116 | - In this school, how do you communicate and care for each other? 117 | - What are the emotional qualities of the spaces in this school? 118 | - What is the weather like around this school? 119 | - Consider the many forms it could take, 120 | - A memory palace with many rooms. In each room a memory of something that someone learned in this room by seeing the memory of the last person in this room. 121 | - A forest of learning folders where each participant is a tree and insect files carry information back and forth between them. 122 | - A school where each room is devoted to something you would like to learn collectively with those you share a that room with. 123 | - A multi-generational interconnected courtyard boarding house with rooms for climbing, rooms for growing, rooms for cooking, rooms for singing. 124 | 125 | 126 | ## 🎲 Bash & Terminal commands 127 | 128 | | Command | Description | 129 | | ------------------------------------------ | --------------------------------------------- | 130 | | `cd` | change directory | 131 | | `cd ..` | change directory one level back | 132 | | `ls` | list contents of directory | 133 | | `pwd` | print working directory | 134 | | `mkdir foldername` | create a folder named foldername . | 135 | | `touch dandelion.txt` | create a file named dandelion.txt | 136 | | `echo "woof woof" > kitty.txt` | creates a text file called kitty.txt that contains the words, "woof woof"| 137 | | `cat filename.txt` | print contents of file | 138 | | `rm -rf filename.txt` . | remove a file or folder this way | 139 | | `mv filename.txt newfilename.txt` | rename a file | 140 | | `open .` | (macOS) open the current folder in Finder | 141 | | `explorer.exe .` | (Windows) open the current folder in Explorer | 142 | | `open filename.txt` | (macOS) opens file in Text Edit | 143 | | `notepad.exe filename.txt` | (Windows) opens file in Notepad | 144 | | `cp filename.txt filename2.txt` | copy file | 145 | | `say "hello, what is poetic computation?"` | (macOS) speak out loud | 146 | | `man cd` | show the manual for 'cd'. Press q to quit | 147 | | `source ~/.bash_profile` | restart your terminal config file | 148 | 149 | 150 | ### Keyboard Terminal Shortcuts 151 | | Command | Description | 152 | |-----------------------|------------------------| 153 | | Up + Down Arrow keys | scroll through history | 154 | | Tab Key | autocomplete | 155 | |CMD + CTRL + SPACE |Emoji Keyboard (Mac OS) | 156 | 157 | 158 | ### Editing a text file 159 | | command | Description | 160 | | -------------------- | --------------------------------- | 161 | |`echo "woof woof" > kitty.txt` | creates a text file called kitty.txt that contains the words, "woof woof"| 162 | | `nano textfile.txt` | open file in the nano text editor | 163 | | CTRL + X , y , ENTER | exit and save changes | 164 | 165 | 166 | ## Editing your ~./bash_profile 167 | 168 | _The ~./bash_profile is a configuration file for the terminal._ 169 | 170 | 1. `nano ~/.bash_profile` 171 | 172 | - This command will open your ~./bash_profile in the nano editor 173 | 174 | In steps 2 and 3 we will paste 2 aliass AKA shortcuts that will help us visualize our folder poem structures. 175 | 176 | 2. `alias tree="find . -not -path '*/\.*' -print | sed -e 's;[^/]*/;|;g;s;|; |;g'"` 177 | - (if you have homebrew installed enter `brew install tree` in another terminal window instead) 178 | 179 | 3. `alias treefile="find . -not -path '*/\.*' | xargs -I {} bash -c 'f={}; echo \$f | sed -e \"s;[^/]*/;|;g;s;|; |;g\"; if [[ \$f == *.txt ]]; then echo; cat \$f; echo; echo; fi'"` 180 | 181 | 4. `export PS1="🍋 \w\n\u$ "` 182 | - This will customize your Bash prompt. Feel free to change the emoji. (skip if you use zshell) 183 | - Explanation: `\w` shows your full file path so you'll always know where you are in the terminal, `\n` creates a new line in your bash prompt. `\u` shows your computer username, and `$` symoolizes the end of a bash prompt. 184 | 185 | 5. `source ~/.bash_profile` 186 | - reboot your terminal 187 | 188 | 189 | ## In class we will get into small groups and share our poems on the p2p web 💜 190 | 191 | ### 📤 Sharing your poem 192 | **First we will share our poems, then we will recieve other's** 193 | 194 | 1. make sure your poem lives inside ~/my-folder-poem/your-name/your-poem-here 195 | 2. `cd ~/my-folder-poem` 196 | - note if your my-folder-poem/ folder is in a different directory, this part may look like `cd ~/code-societies/my-folder-poem` 197 | 3. enter `dat share` in your terminal from inside the folder, my-folder-poem/ 198 | 4. copy and paste the blue url that looks something like `dat://a297239732y98r3y8328320230y352y0350y3520y3` into [P2P Address book](https://docs.google.com/spreadsheets/d/1nDLIUVbKFc3XNALA7Uf65ra-sH4AsPewWWajt2ltxMY/edit?usp=sharing) next to your name 199 | 5. dont close or exit this terminal session so your poem will continue to be shared on the network! 200 | 6. Now you are sharing your poem on the p2p web! 201 | 202 | ### 📥Receiving other's poems 203 | **Now we will recieve other's poems!** 204 | 205 | 1. OPEN A TOTALLY NEW TERMINAL WINDOW (so we don't disrupt the sharing) 206 | 2. `cd ~/folder-society` 207 | 3. now go to the [P2P Address book](https://docs.google.com/spreadsheets/d/1nDLIUVbKFc3XNALA7Uf65ra-sH4AsPewWWajt2ltxMY/edit?usp=sharing) and copy and paste a dat://xxxx url from someone else in the class! 208 | 4. enter `dat clone` + paste the dat hash here! 209 | - it will look something like this`dat clone dat://7ce94a276f9f16f66644e02/` 210 | 5. `ls` and you should see a directory inside your folder-society folder titled something like `7ce94a276f9f16f66644e02/` this will be the name of the hash of the dat poem you just cloned 211 | 6. cd into this directory, for me this looks like `cd 7ce94a276f9f16f66644e02/` (remember you can tab to autocomplete!) 212 | 7. now you can continue`cd`ing into your classmates poem and explore it! 213 | 8. if you want to see the whole structure enter `tree` into your terminal. if you don't have tree, seee below: 214 | 215 | #### 🌳 If you dont have tree 216 | - `/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"` 217 | - `brew install tree` 218 | - now try entering `tree` into your terminal to expand the folder structures! 219 | 220 | ### 🕸Install Node & Dat 221 | Run each of these Bash lines one after the other by pasting them in your Terminal application and pressing ENTR. Don't worry if you've never used terminal before or you're not comfortable with it! There will be time in class to install if you dont get to it before class. 222 | 223 | - `curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash` 224 | - `source ~/.bash_profile` 225 | - `nvm install --lts` 226 | - `nvm use --lts` 227 | - `npm install -g dat` 228 | 229 | To test that everything worked, enter `dat` into your terminal. 230 | If you see output that starts with `Usage: dat [] [options]` you have all the software you need to share your folder poems on the p2p web! 🎊 231 | 232 | ## 🟣 Your Folder Poetry Structure 233 | 234 | In your home(~) folder we will have: 235 | 236 | - a folder called folder-society 237 | - a folder called my-folder-poem 238 | - inside my-folder-poem is a folder called your-name 239 | - inside the folder called your-name is where your poem will live 240 | 241 | **To create the above outlined folder structure using Bash in the terminal:** 242 | 243 | - `cd` 244 | - `mkdir folder-society` 245 | - `mkdir my-folder-poem` 246 | - `cd my-folder-poem` 247 | - `mkdir your-name` 248 | - `cd your-name` 249 | - ^ where we'll make our poems 250 | 251 | ## 🟣 P2P Folder Poetry *Strict* Rules 252 | 253 | P2P folder poetry has specific requirements in order for your poems to be shared 254 | with each other via the Dat protocol. If you don't follow these rules, you will have 255 | still created folder poetry, they just wont become P2P folder poetry during this 256 | workshop. 257 | 258 | **The artform of folder poetry is forgiving, Dat is not.** 259 | 260 | - 🟣 No empty folders. 261 | - 🟣 Every file has to contain text in it. 262 | - 🟣 All lowercase 263 | - 🟣 No spaces. 264 | - 🔺Underscores and dashes are ok. for example: `my_file.txt` or `my-file.txt` 265 | - 🟣 All files must have a file extension such as .txt 266 | 267 | 268 | ### Read Folder Poetry 269 | **Folder Poetry Examples** 270 | - 🔗[Download & Explore the SFPC Fall 2019 Cohort's Poetry in your Terminal or Finder](https://www.dropbox.com/s/ewh0cowonhqoozf/sfpc-fall-2019-folder-poetry-smaller.zip?dl=0) 271 | - 📒[Download: Folder Poetry - SFPC Yamaguchi Japan Zine](https://melanie-hoff.com/folder-poetry/sfpc-ycam/zine-pdfs-ycam-folder-poetry.zip)
272 | - 📒[Download: Folder Poetry - SFPC Detroit Zine](https://melanie-hoff.com/folder-poetry/sfpc-detroit/detroit-zine-reader.pdf.zip)
273 | - Folder Poetry on the default (non P2P) internet 274 | - [folderpoetry.club](folderpoetry.club) 275 | - Laurel Schwulst's adapatation of Folder Poetry in their _Writing as Metadata_ class at Yale: [metadatarocks.nfshost.com](metadatarocks.nfshost.com) 276 | 277 | 278 | 279 | 280 | ### Helpful Codes 281 | 282 | 👛 if you have a Mac computer and are feeling fancy, i recommend downloading Iterm 283 | - https://iterm2.com/ 284 | 285 | Install homebrew 286 | - `/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"` 287 | 288 | For newer Mac's to switch from zsh to bash 289 | - `chsh -s $(which bash)`
290 | OR
291 | - `chsh -s /bin/bash` 292 | - More info [here](https://www.howtogeek.com/444596/how-to-change-the-default-shell-to-bash-in-macos-catalina/) 293 | 294 | To remove "(base)" from prepending the bash prompt after installing Anaconda: 295 | - `conda config --set auto_activate_base False` 296 | - `source ~/.bash_profile` 297 | 298 | To change your computer's hostname (Mac) 299 | - sudo scutil --set HostName new_hostname 300 | - restart your computer 301 | 302 | 303 | 304 | ## Windows Preparation before Class 305 | For Windows 10, check out this [preliminary set up guide](https://gist.github.com/solon/4e254be6e0d2e73ef8624470fc9ca852#file-folder-poetry-setup-md) 306 | 307 |
308 | 🦋🦋🦋 309 | 310 | --------------------------------------------------------------------------------