SI29/Our Digital Home: Difference between revisions

From XPUB & Lens-Based wiki
m (Better transclusion syntax)
 
(52 intermediate revisions by 4 users not shown)
Line 1: Line 1:
[[File:Our Home Workshop sketch.jpg|thumb|alt=Sketch of the workshop]]
<onlyinclude>[[Image:Our Digital Home.png|thumb|alt=Invitation image]]


This is a workshop by [[User:Youjung|Youjung]], [[User:Tommi|Tommi]] and [[User:Barbs|Barbs]] following the practices and research done during [[SI29|Special Issue 29]].
This is a workshop by [[User:Youjung|Youjung]], [[User:Tommi|Tommi]] and [[User:Barbs|Barbs]] following the practices and research done during [[SI29|Special Issue 29]].
</onlyinclude>


'''[https://pad.xpub.nl/p/Workshop_Home_and_Server Work-in-progress notes]'''
== 🧠 Working documents ==


== Introduction ==
* '''[https://pad.xpub.nl/p/Workshop_Home_and_Server Internal notes, brainstorming, reflections]'''
* '''[https://pad.xpub.nl/p/OurDigitalHome Workshop notes]'''
* '''[https://hub.xpub.nl/sergio/SI29/ourdigitalhome/ Our Digital Home Website]'''


'''''Premise''': this is to have an idea of what we want to do and for Doriane to revise. This is ''not'' meant to be the actual introduction to the workshop for the broader public. We will revise this text and make it more captivating and accessible.''
== ℹ️ Introduction ==


When talking about privacy and social media, we are often led to question our digital identity. Nevertheless, all identities inhabit a home, like we do ourselves. What are our digital homes? How are they and who controls them?
<onlyinclude>When talking about privacy and social media, we are often led to question our digital identity. Nevertheless, all identities inhabit a home, like we do ourselves. What are our digital homes? How are they and who controls them?


This workshop will be a collective exploration of where our data, our work, and our memories live. Together, we will unmask the marketing depiction of the cloud as something remote and untangible, and we will concretely see that what we call “the Internet” is just a huge amount of more or less big computers all over the world.
This workshop will be a collective exploration of where our data, our work, and our memories live. Together, we will unmask the marketing depiction of the cloud as something remote and intangible, and we will concretely see that what we call “the Internet” is just a huge amount of more or less big computers all over the world.


Using a local device, we will replicate a little cloud, and play with it by uploading pictures and show that they can be accessed locally or via the Internet. Possibly, if time allows it, we will print the webpage we made and make a little zine about it.
Using a local device, we will replicate a little cloud, and play with it by uploading pictures and show that they can be accessed locally or via the Internet. Possibly, if time allows it, we will print the webpage we made and make a little zine about it.


Our digital home is a bit like our own home, we are opening the door to invite people in and to communicate with the world, while when it’s closed we want it to be our safe place. Same thing with ports in a connection.
Our digital home is a bit like our own home, we are opening the door to invite people in and to communicate with the world, while when it’s closed we want it to be our safe place. Same thing with ports in a connection.</onlyinclude>


'''Doriane's feedback''': I LOVE your promise, (digital) identity and (digital) home are strong topic, you should really make them the focus. Since a lot of things has been said about the topic I would inevitably mention the quote
== 🏠 Place ==


<blockquote>there is no cloud only someone's else computer</blockquote>
The living room of [[User:Tommi|Tommi]]’s home. Playing with the concept of hosting a digital home in a home.


Or how we discussed communal (& feminist) servers with Kaa, and we mentioned how naming folder is a tool for living together! In that case I would suggest showing a few communal servers to the participants, to give them an example of people sharing digital home. (please read back this section: [[Serving Gossips#Communal_servers]] !)
== 🧑‍🤝‍🧑 Crowds ==
 
I also love the little trick you plan to do of unplugging the home to say: omg we all depend on an electric outlet!
 
== Place ==
 
[[User:Tommi|Tommi]]’s home. Playing with the concept of hosting a digital home in a home.
 
== Crowds ==


People around us, or '''friends''' of friends who are not familiar with art and technology and who are puzzled by what we are doing in XPUB or in our life.
People around us, or '''friends''' of friends who are not familiar with art and technology and who are puzzled by what we are doing in XPUB or in our life.
Line 35: Line 30:
The context and environment we are aiming for is one of a social dinner or similar, so we will be limiting the participants to '''7-9 people'''. 10-12 in total, including us.
The context and environment we are aiming for is one of a social dinner or similar, so we will be limiting the participants to '''7-9 people'''. 10-12 in total, including us.


== Key topics ==
== 💡 Key topics ==


* Concept of digital home (subjective, artistic)
* Concept of digital home (subjective, artistic)
* Materiality of the cloud
* Materiality of the cloud


== Technologies ==
== 🤖 Technologies ==


* A Raspberry Pi/a laptop/a smartphone
* A Raspberry Pi/a laptop/a smartphone
Line 51: Line 46:
* Paper, glitter and thingies
* Paper, glitter and thingies


== Social practices ==
== 🥰 Social practices ==


* Round of introduction
* Round of introduction
* Snacks and drinks together (menu: raspberry pie 😜)
* Snacks and drinks together (menu: raspberry pie? 😜)
* Sharing anecdotes of what digital home means, sharing personal files
* Sharing anecdotes of what digital home means, sharing personal files
* Collective decision on what to publish online and what to keep locally
* Collective decision on what to publish online and what to keep locally
* Making a zine collectively
* Making a zine collectively


== Setup ==
== ⏰ Schedule ==
 
* 🗓️ Saturday 14<sup>th</sup> March 2026 from 14:00 to 17:00.
* ⏰ 3 hour
{| class="wikitable"
|+
!Time
!Activity
!Details
|-
|14:00-14:15
|Introduction
| - What is this workshop
- Introduction round
- The website
|-
|14:15-14:30
|Part1: File Transfer Protocol
| - What is File Transfer Protocol(FTP)?
- Installing Filezilla & Server Box
- Logging in
|-
|14:30-15:15
|Part 2: Building Our Digital Home
| - Entrance
- Bedrooms
- Kitchen(skipped this part due to time)
- Garden
- How do others build their digital home?
|-
|15:15-15:25
|Break
|
|-
|15:25-15:55
|Part 3: Where is Our Digital Home Located?
| - The Cloud
- Tracerout
- Peer 2 Peer
|-
|15:55-16:10
|Wrap up
| - Feedback
- Remaining questions
|}
 
== 🏗️ Preparation ==
 
=== 📣 Communication and Promotion ===
 
Since we intend to have very few people, we will only reach out and invite participants directly by sending them [[:Image:Our Digital Home.png|the invitation graphic]], also because we want to pursue the vibe of an intimate gathering.
 
=== 🍓 Raspberry Pi’s configuration ===
 
The original idea was to install Raspberry Pi OS (basically Debian Trixie optimized for Raspberry Pi) on Tommi’s Raspberry Pi 4B. Nevertheless, two different issues made Tommi give up and use their already configured Raspberry Pi 5.
 
# Connect to WiFi <code>sudo raspi-config</code>
# See network information with <code>ifconfig</code>
# Create dedicated user: <syntaxhighlight lang=bash inline>sudo useradd -m -s /bin/bash -G www-data ourdigitalhome && sudo passwd ourdigitalhome</syntaxhighlight>
 
==== Configure Nginx ====
 
We don’t install Nginx via APT, because we eant to use the latest Nginx version available and all its extra modules, so that we can take advantage of one of the super cool latest features that provides '''automatic certificate generation''', therefore simplifying TLS encryption and allowing us to use HTTPS. [https://m.ac/nginx-acme-auto-ssl-debian-ubuntu/ Follow this guide].
 
Then we edit <code>/etc/nginx/nginx.conf</code>, inserting the following inside <syntaxhighlight lang=nginx inline>http {}</syntaxhighlight>:
 
<syntaxhighlight lang=nginx>
resolver 8.8.8.8:53;
acme_issuer letsencrypt {
  uri        https://acme-v02.api.letsencrypt.org/directory;
  state_path  /var/cache/nginx/letsencrypt;
  accept_terms_of_service;
  ssl_trusted_certificate /etc/ssl/certs/ca-certificates.crt;
  ssl_verify on;
}
</syntaxhighlight>
 
=== 📡 Router configuration ===
 
These steps follow [https://homebrewserver.club/fundamentals-port-forwarding.html this guide from Homebrew Server].
 
# Find the router’s IP address
# Visit that IP address via browser
# In DHCP settings, add a rule to lock maintain the same local IP address for the Raspberry Pi
# Set port forwarding rules, so that public ports are mapped to specific ports of the device
# Set a dynamic DNS (DynDNS) service to keep a DNS server of a domain name up to date following the dynamic IP address of the local home network. Even if it relies on <abbr title='Amazon Web Services'>AWS</abbr>, [https://duckdns.org DuckDNS] was the simplest and quickest solution.
## Create an account and choose a domain name on https://duckdns.org
## Go to the DynDNS page in the router and use the API token as the username, no password needed. The DNS should then be automatically pointed to the Raspberry Pi already.
<div style="display: flex;">
[[Image:Ziggo DHCP rules.png|thumb|alt=Screenshot of DHCP settings from part of the Ziggo router interface. ]][[Image:Ziggo DDNS.png|thumb|alt=Screenshot of the DDNS section of the Ziggo router interface.]]
</div>
 
=== 📂 FileZilla & Server Box testing ===
 
We agreed that FileZilla is the most effective way to allow workshop participants to upload and move files around. For mobile users we used Server Box, it even provides terminal interface.
<div style="display:flex;">
[[File:Our Digital Home FileZilla config.png|thumb|alt=Screenshot of the configuration of FileZilla for Our Digital Home workshop.]][[File:Serverbox.png|alt=screen shot of serverbox|thumb|325x325px]][[File:Serverbox2.png|alt=screen shot of Server Box terminal interface|thumb|325x325px]]</div>
 
=== 💻 Website Development ===
We used the structure from [https://hub.xpub.nl/sergio/SI29/file-sharing/xtra-nice/ xtra-nice gallery] from prototyping class. We used [https://jinja.palletsprojects.com/en/stable/ Jinja], a templating engine using python, to create the interface(website) for our workshop. We made a script that reads the directories and files and generates them into an html file.
 
'''Project structure''' : Participants would add images and txt files in house/room folder. <code>main.py</code> would read these files and make this directory in to html files using the <code>template.html</code>. To update pages real time, we <code>build_home.sh</code> to run the <code>main.py</code> every 5 seconds. You can find the code [https://git.xpub.nl/tommi/ourdigitalhome here].
[[Category: Tommi’s to-do list]]
<syntaxhighlight lang="shell">
.
|-- build_home.sh
|-- house
|  |-- bedroom_output.html
|  |-- Commit\ Mono.woff2
|  |-- entrance.html
|  |-- favicon.svg
|  |-- garden.html
|  |-- index.html
|  |-- key.html
|  |-- kitchen.html
|  |-- rooms
|  |  |-- bedroom
|  |  |-- entrance
|  |  |-- garden
|  |  `-- kitchen
|  `-- style.css
|-- main.py
|-- pyproject.toml
|-- template.html
`-- uv.lock
</syntaxhighlight>
 
 
'''Main.py'''
 
This python script has 3 main functions.
 
# <code>def read_txt_files</code> : read .txt files and appends it to the html file as paragraph element<nowiki><p></nowiki>.
# <code>def collect_pages</code> : read and collect files from the directory using <code>os.walk()</code> method.
# <code>def main</code> : generate html pages using <code>template.html</code>
 
 
'''Template.html'''
 
Using statement and expression from Jinja, it generates html pages in this template. <syntaxhighlight lang="html" line="1">
<hgroup>
<pre>.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.</pre>
<pre>{{ title }}</pre>
<pre>.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.</pre>
</hgroup>
 
{% if subfolders %}
<div class=subfolders>
{% for sub in subfolders %}
<a href='{{ sub.link }}'>[{{ sub.name }}]</a>
{% endfor %}
</div>
{% endif %}
 
<div class=gallery>
{% for text in texts %}
<p class=texts>{{ text }}</p>
{% endfor %}
 
{% for asset in assets %}
<img src='{{ asset }}'/>
{% endfor %}
</div>
 
<a id=back href='{{ back_link }}'>[Back]</a>
 
</syntaxhighlight>
 
=== Terminal Command Cheat Sheet ===
For better understanding on the terminal, we made a simple terminal command cheat sheet to hand out.
<div style="display: flex;">
[[File:Screenshot 2026-03-17 at 16.50.14.png|thumb|284x284px]]
</div>
 
== Doriane’s first feedback ==
 
* '''Feedback during preparation''': [[Talk:SI29/Our Digital Home|discussion page]].
* '''Feedback during presentation'''
** unknown unkown: you don't know how the workshop will end up
** unlike valentine's workshop where participants come with what they want, your workshop introduces a concept/idea
** focus only on the social practice - develop the practice on kitchen, make the script specific
** instead of trying to give them a solid solution and reason, share an anecdote and your story
 
== On the Day of the Workshop ==
We bought fruits, cookies, chips and some drinks and lit some candles for a cozy atmosphere.
 
[[File:Mobile screen.jpg|frameless]][[File:Tommi explaining.jpg|frameless]][[File:EF1EBCE5-28E1-417D-93D0-CAC8A7AC0083 1 105 c.jpg|frameless]][[File:Terminal command cheat sheet.jpg|frameless]][[File:Initial setup.jpg|frameless]][[File:There is no cloud .jpg|frameless]]
 
== Participant Feedback ==
=== Max ===
* I thought uploading to the server was really engaging, we immediately got a personal connection to the digital home (great metaphor btw) and I was immediately a fan of what we were doing.
* The reveal was well timed, and a good idea! I thought it was intriguing to follow along with you uploading exactly because we didn't really know what we were doing, and the explanation was a moment where everything "clicked" that felt good.
* At a certain point I kind of lost the common thread when Tommi was showing things on the monitor, around the moment when we got the terminal cheatsheet. It went too fast to understand what the shortcuts were used for and I also felt lost in what the connection was between what we did previously and what was being explained.
* It was a very stimulating (/pos) workshop! I got excited to start working with these technologies myself.
* It was nice that the scale of the group was not too large, when I was struggling a few times Youjung was able to help me immediately which was nice.
 
=== Marcel ===
 
* Raspberry Pi was a nice surprise. File sharing was interesting but didn't know where it was going. But after the reveal, it made all sense.
* What is the main take away from this workshop? What do you want us to learn form this workshop?
* What are the alternative to Dropbox or Google drive and what is the advantage of using them?
 
=== Emily ===
 
* The introduction of the workshop was kind of vague. It would be nice if you provided more information on the workshop.  Kinda vague, would be nice if I you provided more information on the workshop.


The Raspberry Pi is placed in the middle of the table. A screen and a printer is connected to it. What this Raspberry Pi is will be unveiled only during step 5 of the workshop.
== 🔄 Reflection ==


<code>[Screen] --- [Raspberry Pi] --- [Printer]</code>
=== Youjung ===
'''1. Introducing the concept and key takeaway from the beginning'''


== Schedule ==
For the surprise we kept the explanation of the workshop abstract. But this left the participants more confused. One of the feedback we received was that during the file uploading exercise, they didn't know where this was going. And the effect of unplugging the raspberry pi was not that dramatic than we expected. Without knowing the subject and going through 2 hours might be exhausting for them.


* 🗓️ Saturday 14<sup>th</sup> March 2026 from 14:00 to 17:00.
'''2. The target audience and delivery'''
* ⏰ 3 hour


# Workshop introduction (5 minutes)
We invited people who are close to us. Most of them are not familiar with XPUB. Towards the end of the workshop a lot of them were confused of what is the takeaway from this session. We should have introduced the idea and what we are doing first and explain it in a less technical way. By the end of the workshop we were explaining a lot of things through the terminal, Ping, Traceroute, IP address and alternative cloud services, and this might have overwhelmed the guests. If we could explain it through social practice like breaking it down into a play or hands-on activity.  
# Round of introductions (15 minutes).
# Each one of the participants draws on a sheet what they think when thinking of their “home” and another with their “digital home”
# Share IP address or link (15 minutes). Whenever someone is online the Web interface displace an indication of their presence.
# Upload files to Web interface and display uploaded images live (5 minutes) (See [[File uploads on a web page]])
# Go offline (20 minutes) Display on the screen (through the terminal or folder system) that files uploaded via the Internet were actually hosted on a local device
#
# Explain in essence how a server works and difference between a cloud and local server (with a graph) (20 minutes)
# Discuss what to publish on the Internet and what to keep private (only locally on device) (20 minutes)
# Web to print page + zine making (30 minutes)
# Feedback, final questions, and gossiping chitchat
[[File:Our Digital Home.png|alt=Ascii art style graphic with blue background color. Inside the house shape objects are placed. |thumb|Invitation graphic for the workshop]]


== Communication and Promotion ==
'''3. Metaphor of Home'''


Since we intend to have very few people, we will only reach out and invite participants directly, also because we want to pursue the vibe of an intimate gathering.
We used the metaphor “Our Digital Home”. What if we used this metaphor or concept more coherently throughout the workshop. For example, when we were explaining how to connect to Barbara’s computer with Tommi’s computer, it could’ve been explained as <q>Tommi visiting Barbara’s home</q> and discuss on <q>Who is intruding our house and how are we giving permission to enter</q>. This might've been a more easier way for the participants to connect to the idea as it's related to our life.  


== Documentation ==
=== Barbara ===
* I’m really proud of us that we were able to put all this together in a short time!! And that when we had technical issues we were able to troubleshoot or pivot when necessary on the fly. Of course the session had some hiccups but that is to be expected for the first ever time hosting the workshop!
* At the beginning of the workshop there was a bit of an awkward atmosphere. I also think people were afraid to speak up throughout the workshop… I wonder how we could have '''facilitated a more open space for discussion'''. It was a lot of us talking at the group instead of with them.
* Max and Ana gave me the feedback that it was difficult for them to figure out '''the common thread''' of the workshop. Especially in the second half we introduced a lot of different concepts and terms and it felt overwhelming.
** We could have shaved down all the different concepts more to one core skill we wanted to teach/explore. I think we were very enthusiastic and wanted to talk about a lot but in practice it made the workshop chaotic.
** One thing I think would have helped is to use only FTP or only the terminal, but not both.
* I agree with Youjung it would’ve been nice to make the workshop more engaging, interactive and use more metaphors and less technical terms. We started with the metaphor but didn’t continue using it throughout the workshop.


During the workshop we will document the discussions on an Etherpad. Also take pictures throughout the workshop upon consent of the participants. At the end of the workshop, we will make a collective zine together with the participants, patchworking the content uploaded to the local server.
=== Tommi ===


After the workshop we plan to revise and restructure our notes and make a more curated wiki page, with a PDF zine.
* We did a very good job and I think it was a success considering it was the first time we were doing something together as the three of us and it was the first iteration of the workshop!
* I believe one key mistake we did not really foresee is that most (if not all) the interaction with the participants and among them was '''through devices'''. Therefore, everyone participated actively, but there was still a lot of silence and awkwardness because they were engaged by uploading things and doing stuff on their laptops/phones, very rarely by talking or by doing something practical.
* Since we wanted the unveiling of the Raspberry Pi to be a surprise, we said ''nothing'' at all about the workshop to the people we invited. We could have found a middle way, anticipating the key topics and sharing the plan and the purpose of the workshop at the beginning.
* We should have asked each participant to prepare and '''come with a collection of pictures that describes them''', especially because many of them were not able to select the right photos in a short timespan.
* People are used to be proposed '''practical solutions''' when introduced to a problem, like we did with the cloud. I think it is very good that we stayed more conceptual, but it did help in making people confused. I don’t think we should have necessarily done this in this case, but we can consider a variation of the workshop where we focus more on '''actual tools and software''' they can use in their daily life. It is probably very hard because the needs of each person are varied, but still worth exploring.
* On the spot, I was agitated so I swapped the traceroute exploration and the RasPi unveiling, because I got the idea of showing the IP address of my home on the map. Maybe a good idea, but we should have tested it first. I am sorry, I should have stuck with the original plan.
* We thought making a zine would have been to much for a conclusion, but by removing that we did not think of an alternative effective way to end the workshop, so the conclusion was a bit weird, as you both pointed out.
* We were very worried about time but we finished 15 minutes earlier. We could have skipped me SSHing into Barb’s laptop, and we would have actually had time to make a zine or do something crafty together!


[[Category: SI29/Workshops]]
[[Category: SI29/Workshops]]

Latest revision as of 08:49, 30 March 2026

Invitation image

This is a workshop by Youjung, Tommi and Barbs following the practices and research done during Special Issue 29.


🧠 Working documents

ℹ️ Introduction

When talking about privacy and social media, we are often led to question our digital identity. Nevertheless, all identities inhabit a home, like we do ourselves. What are our digital homes? How are they and who controls them?

This workshop will be a collective exploration of where our data, our work, and our memories live. Together, we will unmask the marketing depiction of the cloud as something remote and intangible, and we will concretely see that what we call “the Internet” is just a huge amount of more or less big computers all over the world.

Using a local device, we will replicate a little cloud, and play with it by uploading pictures and show that they can be accessed locally or via the Internet. Possibly, if time allows it, we will print the webpage we made and make a little zine about it.

Our digital home is a bit like our own home, we are opening the door to invite people in and to communicate with the world, while when it’s closed we want it to be our safe place. Same thing with ports in a connection.

🏠 Place

The living room of Tommi’s home. Playing with the concept of hosting a digital home in a home.

🧑‍🤝‍🧑 Crowds

People around us, or friends of friends who are not familiar with art and technology and who are puzzled by what we are doing in XPUB or in our life.

The context and environment we are aiming for is one of a social dinner or similar, so we will be limiting the participants to 7-9 people. 10-12 in total, including us.

💡 Key topics

  • Concept of digital home (subjective, artistic)
  • Materiality of the cloud

🤖 Technologies

  • A Raspberry Pi/a laptop/a smartphone
  • Participants’ own devices (phones will be ok, they just need to connect to a webpage)
  • Web server: Nginx
  • Tommi’s home’s WiFi
  • Web upload + publish pages: HTML, CSS, Python (with Jinja and Flask)
  • (meta)data(?)
  • Printer
  • Paper, glitter and thingies

🥰 Social practices

  • Round of introduction
  • Snacks and drinks together (menu: raspberry pie? 😜)
  • Sharing anecdotes of what digital home means, sharing personal files
  • Collective decision on what to publish online and what to keep locally
  • Making a zine collectively

⏰ Schedule

  • 🗓️ Saturday 14th March 2026 from 14:00 to 17:00.
  • ⏰ 3 hour
Time Activity Details
14:00-14:15 Introduction - What is this workshop

- Introduction round - The website

14:15-14:30 Part1: File Transfer Protocol - What is File Transfer Protocol(FTP)?

- Installing Filezilla & Server Box - Logging in

14:30-15:15 Part 2: Building Our Digital Home - Entrance

- Bedrooms - Kitchen(skipped this part due to time) - Garden - How do others build their digital home?

15:15-15:25 Break
15:25-15:55 Part 3: Where is Our Digital Home Located? - The Cloud

- Tracerout - Peer 2 Peer

15:55-16:10 Wrap up - Feedback

- Remaining questions

🏗️ Preparation

📣 Communication and Promotion

Since we intend to have very few people, we will only reach out and invite participants directly by sending them the invitation graphic, also because we want to pursue the vibe of an intimate gathering.

🍓 Raspberry Pi’s configuration

The original idea was to install Raspberry Pi OS (basically Debian Trixie optimized for Raspberry Pi) on Tommi’s Raspberry Pi 4B. Nevertheless, two different issues made Tommi give up and use their already configured Raspberry Pi 5.

  1. Connect to WiFi sudo raspi-config
  2. See network information with ifconfig
  3. Create dedicated user: sudo useradd -m -s /bin/bash -G www-data ourdigitalhome && sudo passwd ourdigitalhome

Configure Nginx

We don’t install Nginx via APT, because we eant to use the latest Nginx version available and all its extra modules, so that we can take advantage of one of the super cool latest features that provides automatic certificate generation, therefore simplifying TLS encryption and allowing us to use HTTPS. Follow this guide.

Then we edit /etc/nginx/nginx.conf, inserting the following inside http {}:

resolver 8.8.8.8:53;
acme_issuer letsencrypt {
  uri         https://acme-v02.api.letsencrypt.org/directory;
  state_path  /var/cache/nginx/letsencrypt;
  accept_terms_of_service;
  ssl_trusted_certificate /etc/ssl/certs/ca-certificates.crt;
  ssl_verify on;
}

📡 Router configuration

These steps follow this guide from Homebrew Server.

  1. Find the router’s IP address
  2. Visit that IP address via browser
  3. In DHCP settings, add a rule to lock maintain the same local IP address for the Raspberry Pi
  4. Set port forwarding rules, so that public ports are mapped to specific ports of the device
  5. Set a dynamic DNS (DynDNS) service to keep a DNS server of a domain name up to date following the dynamic IP address of the local home network. Even if it relies on AWS, DuckDNS was the simplest and quickest solution.
    1. Create an account and choose a domain name on https://duckdns.org
    2. Go to the DynDNS page in the router and use the API token as the username, no password needed. The DNS should then be automatically pointed to the Raspberry Pi already.
Screenshot of DHCP settings from part of the Ziggo router interface.
Screenshot of the DDNS section of the Ziggo router interface.

📂 FileZilla & Server Box testing

We agreed that FileZilla is the most effective way to allow workshop participants to upload and move files around. For mobile users we used Server Box, it even provides terminal interface.

Screenshot of the configuration of FileZilla for Our Digital Home workshop.
screen shot of serverbox
screen shot of Server Box terminal interface

💻 Website Development

We used the structure from xtra-nice gallery from prototyping class. We used Jinja, a templating engine using python, to create the interface(website) for our workshop. We made a script that reads the directories and files and generates them into an html file.

Project structure : Participants would add images and txt files in house/room folder. main.py would read these files and make this directory in to html files using the template.html. To update pages real time, we build_home.sh to run the main.py every 5 seconds. You can find the code here.

.
|-- build_home.sh
|-- house
|   |-- bedroom_output.html
|   |-- Commit\ Mono.woff2
|   |-- entrance.html
|   |-- favicon.svg
|   |-- garden.html
|   |-- index.html
|   |-- key.html
|   |-- kitchen.html
|   |-- rooms
|   |   |-- bedroom
|   |   |-- entrance
|   |   |-- garden
|   |   `-- kitchen
|   `-- style.css
|-- main.py
|-- pyproject.toml
|-- template.html
`-- uv.lock


Main.py

This python script has 3 main functions.

  1. def read_txt_files : read .txt files and appends it to the html file as paragraph element<p>.
  2. def collect_pages : read and collect files from the directory using os.walk() method.
  3. def main : generate html pages using template.html


Template.html

Using statement and expression from Jinja, it generates html pages in this template.

	<hgroup>
		<pre>.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.</pre>
		<pre>{{ title }}</pre>
		<pre>.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.</pre>
	</hgroup>

	{% if subfolders %}
		<div class=subfolders>
			{% for sub in subfolders %}
			<a href='{{ sub.link }}'>[{{ sub.name }}]</a>
			{% endfor %}
		</div>
	{% endif %}

	<div class=gallery>
		{% for text in texts %}
		<p class=texts>{{ text }}</p>
		{% endfor %}

		{% for asset in assets %}
		<img src='{{ asset }}'/>
		{% endfor %}
	</div>

	<a id=back href='{{ back_link }}'>[Back]</a>

Terminal Command Cheat Sheet

For better understanding on the terminal, we made a simple terminal command cheat sheet to hand out.

Screenshot 2026-03-17 at 16.50.14.png

Doriane’s first feedback

  • Feedback during preparation: discussion page.
  • Feedback during presentation
    • unknown unkown: you don't know how the workshop will end up
    • unlike valentine's workshop where participants come with what they want, your workshop introduces a concept/idea
    • focus only on the social practice - develop the practice on kitchen, make the script specific
    • instead of trying to give them a solid solution and reason, share an anecdote and your story

On the Day of the Workshop

We bought fruits, cookies, chips and some drinks and lit some candles for a cozy atmosphere.

Mobile screen.jpgTommi explaining.jpgEF1EBCE5-28E1-417D-93D0-CAC8A7AC0083 1 105 c.jpgTerminal command cheat sheet.jpgInitial setup.jpgThere is no cloud .jpg

Participant Feedback

Max

  • I thought uploading to the server was really engaging, we immediately got a personal connection to the digital home (great metaphor btw) and I was immediately a fan of what we were doing.
  • The reveal was well timed, and a good idea! I thought it was intriguing to follow along with you uploading exactly because we didn't really know what we were doing, and the explanation was a moment where everything "clicked" that felt good.
  • At a certain point I kind of lost the common thread when Tommi was showing things on the monitor, around the moment when we got the terminal cheatsheet. It went too fast to understand what the shortcuts were used for and I also felt lost in what the connection was between what we did previously and what was being explained.
  • It was a very stimulating (/pos) workshop! I got excited to start working with these technologies myself.
  • It was nice that the scale of the group was not too large, when I was struggling a few times Youjung was able to help me immediately which was nice.

Marcel

  • Raspberry Pi was a nice surprise. File sharing was interesting but didn't know where it was going. But after the reveal, it made all sense.
  • What is the main take away from this workshop? What do you want us to learn form this workshop?
  • What are the alternative to Dropbox or Google drive and what is the advantage of using them?

Emily

  • The introduction of the workshop was kind of vague. It would be nice if you provided more information on the workshop. Kinda vague, would be nice if I you provided more information on the workshop.

🔄 Reflection

Youjung

1. Introducing the concept and key takeaway from the beginning

For the surprise we kept the explanation of the workshop abstract. But this left the participants more confused. One of the feedback we received was that during the file uploading exercise, they didn't know where this was going. And the effect of unplugging the raspberry pi was not that dramatic than we expected. Without knowing the subject and going through 2 hours might be exhausting for them.

2. The target audience and delivery

We invited people who are close to us. Most of them are not familiar with XPUB. Towards the end of the workshop a lot of them were confused of what is the takeaway from this session. We should have introduced the idea and what we are doing first and explain it in a less technical way. By the end of the workshop we were explaining a lot of things through the terminal, Ping, Traceroute, IP address and alternative cloud services, and this might have overwhelmed the guests. If we could explain it through social practice like breaking it down into a play or hands-on activity.

3. Metaphor of Home

We used the metaphor “Our Digital Home”. What if we used this metaphor or concept more coherently throughout the workshop. For example, when we were explaining how to connect to Barbara’s computer with Tommi’s computer, it could’ve been explained as Tommi visiting Barbara’s home and discuss on Who is intruding our house and how are we giving permission to enter. This might've been a more easier way for the participants to connect to the idea as it's related to our life.

Barbara

  • I’m really proud of us that we were able to put all this together in a short time!! And that when we had technical issues we were able to troubleshoot or pivot when necessary on the fly. Of course the session had some hiccups but that is to be expected for the first ever time hosting the workshop!
  • At the beginning of the workshop there was a bit of an awkward atmosphere. I also think people were afraid to speak up throughout the workshop… I wonder how we could have facilitated a more open space for discussion. It was a lot of us talking at the group instead of with them.
  • Max and Ana gave me the feedback that it was difficult for them to figure out the common thread of the workshop. Especially in the second half we introduced a lot of different concepts and terms and it felt overwhelming.
    • We could have shaved down all the different concepts more to one core skill we wanted to teach/explore. I think we were very enthusiastic and wanted to talk about a lot but in practice it made the workshop chaotic.
    • One thing I think would have helped is to use only FTP or only the terminal, but not both.
  • I agree with Youjung it would’ve been nice to make the workshop more engaging, interactive and use more metaphors and less technical terms. We started with the metaphor but didn’t continue using it throughout the workshop.

Tommi

  • We did a very good job and I think it was a success considering it was the first time we were doing something together as the three of us and it was the first iteration of the workshop!
  • I believe one key mistake we did not really foresee is that most (if not all) the interaction with the participants and among them was through devices. Therefore, everyone participated actively, but there was still a lot of silence and awkwardness because they were engaged by uploading things and doing stuff on their laptops/phones, very rarely by talking or by doing something practical.
  • Since we wanted the unveiling of the Raspberry Pi to be a surprise, we said nothing at all about the workshop to the people we invited. We could have found a middle way, anticipating the key topics and sharing the plan and the purpose of the workshop at the beginning.
  • We should have asked each participant to prepare and come with a collection of pictures that describes them, especially because many of them were not able to select the right photos in a short timespan.
  • People are used to be proposed practical solutions when introduced to a problem, like we did with the cloud. I think it is very good that we stayed more conceptual, but it did help in making people confused. I don’t think we should have necessarily done this in this case, but we can consider a variation of the workshop where we focus more on actual tools and software they can use in their daily life. It is probably very hard because the needs of each person are varied, but still worth exploring.
  • On the spot, I was agitated so I swapped the traceroute exploration and the RasPi unveiling, because I got the idea of showing the IP address of my home on the map. Maybe a good idea, but we should have tested it first. I am sorry, I should have stuck with the original plan.
  • We thought making a zine would have been to much for a conclusion, but by removing that we did not think of an alternative effective way to end the workshop, so the conclusion was a bit weird, as you both pointed out.
  • We were very worried about time but we finished 15 minutes earlier. We could have skipped me SSHing into Barb’s laptop, and we would have actually had time to make a zine or do something crafty together!