Compare commits

..

11 Commits

Author SHA1 Message Date
9969572358 intro text! 2025-04-19 12:23:57 +02:00
2bd968cfba linting things 2025-04-13 10:24:24 +02:00
9b8474efb9 word count 2025-04-13 09:03:57 +02:00
f6d44f88ca remove big files 2025-04-12 11:11:25 +02:00
56ab16c018 include loads of icons 2025-04-12 11:07:56 +02:00
58e03fd344 thesis before sending it to 2nd reader 2025-04-08 11:21:21 +02:00
fd0c53940e some rewrites and new pics 2025-03-14 20:04:30 +01:00
390a6af594 change citation 2025-03-13 14:06:43 +01:00
af73a7c7ec more rewrites 2025-03-13 13:51:28 +01:00
cde23aea5a rewrite 2025-03-13 12:22:03 +01:00
034859d38e more words 2025-03-13 09:24:22 +01:00
205 changed files with 2222 additions and 459 deletions

9
.fleet/run.json Normal file
View File

@ -0,0 +1,9 @@
{
"configurations": [
{
"type": "command",
"name": "Command configuration",
"command":
}
]
}

3
.gitignore vendored
View File

@ -2,3 +2,6 @@ venv
dist
feedback
backup
*.sh
*.zip
*.JPG

187
app.py
View File

@ -1,23 +1,19 @@
import subprocess
import os
from pathlib import Path
import shutil
import csv
import os
import re
from datetime import datetime
from jinja2 import Environment, PackageLoader, select_autoescape
import frontmatter
from slugify import slugify
import pypandoc
import shutil
import subprocess
import xml.etree.ElementTree as ET
from datetime import datetime
from pathlib import Path
import frontmatter
import pypandoc
from jinja2 import Environment, PackageLoader, select_autoescape
from slugify import slugify
# TODO make newsletter URL's absolute to klank.school
env = Environment(
loader=PackageLoader("src"),
autoescape=select_autoescape()
)
env = Environment(loader=PackageLoader("src"), autoescape=select_autoescape())
CONTENT_D = os.path.abspath("src/content")
OUTPUT_D = "dist"
@ -25,11 +21,21 @@ OUT_ASSETS = "dist/assets"
SRC_ASSETS = "src/assets"
documents = {}
now = datetime.now()
word_count = 0
# Utils
def getParam(params, index):
return params[index] if len(params) > index else False
def imageSpread(params):
global documents
param = params.split(" ")
print(param[1])
for item in documents[param[0]]:
print(item.get("filename"))
d = [item for item in documents[param[0]] if item.get("filename") == param[1]]
print(d)
template = env.select_template(["snippets/spread-images.jinja"])
html = template.render(documents=documents, content=d[0], type=param[1])
return html
# jinja filter that can list documents
def listDocuments(params):
@ -39,22 +45,47 @@ def listDocuments(params):
return html
# jinja filter to make a slug out of a stirng
def slugify_filter(value):
return slugify(value)
# Source: https://github.com/gandreadis/markdown-word-count
def count_words_in_markdown(text):
# Comments
text = re.sub(r"<!--(.*?)-->", "", text, flags=re.MULTILINE)
# Tabs to spaces
text = text.replace("\t", " ")
# More than 1 space to 4 spaces
text = re.sub(r"[ ]{2,}", " ", text)
# Footnotes
text = re.sub(r"^\[[^]]*\][^(].*", "", text, flags=re.MULTILINE)
# Indented blocks of code
text = re.sub(r"^( {4,}[^-*]).*", "", text, flags=re.MULTILINE)
# Replace newlines with spaces for uniform handling
text = text.replace("\n", " ")
# Custom header IDs
text = re.sub(r"{#.*}", "", text)
# Remove images
text = re.sub(r"!\[[^\]]*\]\([^)]*\)", "", text)
# Remove HTML tags
text = re.sub(r"</?[^>]*>", "", text)
# Remove special characters
text = re.sub(r"[#*`~\-^=<>+|/:]", "", text)
# Remove footnote references
text = re.sub(r"\[[0-9]*\]", "", text)
# Remove enumerations
text = re.sub(r"[0-9#]*\.", "", text)
return len(text.split())
# jinja filter for date formatting
def prettydate(value, format='%d/%m/%Y'):
def prettydate(value, format="%d/%m/%Y"):
return datetime.fromtimestamp(int(value)).strftime(format)
# jinja filter to replace shortcodes in HTML
def shortcode_filter(value):
shortcode_callbacks = {
"show": listDocuments
}
shortcode_callbacks = {"show": listDocuments, "showImages": imageSpread}
def shortcode_replacer(match):
@ -71,13 +102,15 @@ def shortcode_filter(value):
env.filters["shortcode"] = shortcode_filter
env.filters["slugify"] = slugify_filter
env.filters["slugify"] = slugify
env.filters["prettydate"] = prettydate
# translate a single file into HTML
def render_single_file(page, path, dist, name = False):
def render_single_file(path, dist, name=False):
name = Path(path).stem
template = env.select_template([f"{name}.jinja", "post.jinja"])
page = get_page_data(path)
html = template.render(documents=documents, page=page, name=name)
if not os.path.exists(dist):
@ -101,30 +134,20 @@ def get_existing_page(path, slug):
if folder == "content":
return False
for doc in documents[folder]:
if doc:
if doc["slug"] == slug:
return doc
return [item for item in documents[folder] if item.get("slug") == slug]
return False
# build a slug including the folder
def get_slug(path, folder, filename):
if folder == "content":
return slugify(filename)
else:
return slugify(f"{folder}/{filename}")
# compile markdown into cited HTML
def get_page_data(path):
global word_count
filename = Path(path).stem
folder = Path(path).parent.name
slug = get_slug(path, folder, filename)
slug = slugify(filename) if folder == "content" else slugify(f"{folder}/{filename}")
prerendered = get_existing_page(path, slug)
if prerendered:
if prerendered := get_existing_page(path, slug):
return prerendered
page = frontmatter.load(path)
@ -137,14 +160,14 @@ def get_page_data(path):
content = page.content
if "`include" in page.content:
if ".include" in page.content:
print("doing an include!")
content = pypandoc.convert_text(
page.content,
to='md',
format='md',
extra_args=[
"--lua-filter=include-files.lua"
])
to="md",
format="md",
extra_args=["--lua-filter=include-files.lua"],
)
page.body = pypandoc.convert_text(
content,
@ -153,11 +176,13 @@ def get_page_data(path):
extra_args=[
"--citeproc",
"--bibliography=library.bib",
"--csl=apa.csl",
])
"--csl=harvard-cite-them-right.csl",
],
)
return page
# Do stuff to the circuit's pcb
def save_circuit_svg(filepath, outpath, name):
@ -185,25 +210,27 @@ def render_posts(path, output_path=OUTPUT_D):
file_path = Path(path) / filename
if file_path.suffix == ".md":
render_single_file(get_page_data(file_path), file_path, f"{output_path}/{name}")
render_single_file(file_path, f"{output_path}/{name}")
elif file_path.is_dir():
render_posts(file_path, f"{output_path}/{name}")
elif file_path.suffix == ".svg":
save_circuit_svg(file_path, f"{output_path}/{name}", filename)
elif file_path.suffix in {".jpeg", ".mp3", ".jpg", ".png"}:
elif file_path.suffix in {".jpeg", ".mp3", ".jpg", ".png", ".JPG", ".webp"}:
os.makedirs(f"{output_path}/{name}", exist_ok=True)
shutil.copyfile(file_path, f"{output_path}/{name}/{filename}")
else:
print("doing nothing with", filename)
# Pre-load before compiling
def preload_documents():
global documents
version = subprocess.check_output(["git", "rev-list", "--count", "HEAD"]).decode("utf-8").strip()
version = (
subprocess.check_output(["git", "rev-list", "--count", "HEAD"])
.decode("utf-8")
.strip()
)
documents["meta"] = {"now": now.strftime("%d %B %Y"), "version": version}
documents["meta"] = {"now": now.strftime("%d %B %Y - %H:%M:%S"), "version": version}
for subdir in os.listdir(CONTENT_D):
path = os.path.join(CONTENT_D, subdir)
@ -217,19 +244,14 @@ def preload_documents():
if filename.endswith(".md"):
documents[name].append(get_page_data(cpath))
elif os.path.isdir(cpath):
documents[name].append(get_page_data(os.path.join(cpath, "index.md")))
documents[name].append(
get_page_data(os.path.join(cpath, "index.md"))
)
elif Path(path).suffix == '.md':
elif Path(path).suffix == ".md":
documents[Path(path).stem] = get_page_data(path)
def copy_assets():
if os.path.exists(OUT_ASSETS):
shutil.rmtree(OUT_ASSETS)
shutil.copytree(SRC_ASSETS, OUT_ASSETS)
def get_inventory():
global documents
@ -240,22 +262,45 @@ def get_inventory():
documents['inventory'].append(line)
def get_wordcount():
global word_count
word_count += count_words_in_markdown(documents["thesis"].body)
for section in ["chapters", "components", "recipes"]:
for c in documents[section]:
if section == "recipes" or c["filename"] != "index":
count = count_words_in_markdown(c.body)
print(f"{c['filename']}: has {count} words")
word_count += count
print(f"word count: { word_count} ")
documents["meta"]["count"] = word_count
def main():
print("....Start putting together a new document....")
get_inventory()
preload_documents()
get_wordcount()
for subdir in os.listdir(CONTENT_D):
path = os.path.join(CONTENT_D, subdir)
if os.path.isdir(path):
print("rendering posts", path)
print("Compile: an entire directory", Path(path).name)
render_posts(path)
elif Path(path).suffix == '.md':
print("rendering single", path);
render_single_file(get_page_data(path), path, OUTPUT_D)
elif Path(path).suffix == ".md":
print("Compile: single page", Path(path).name)
render_single_file(path, OUTPUT_D)
elif Path(path).suffix in [".csv"]:
print("not compiling this file!")
print("Compile: not compiling ", Path(path).name)
if os.path.exists(OUT_ASSETS):
shutil.rmtree(OUT_ASSETS)
shutil.copytree(SRC_ASSETS, OUT_ASSETS)
print(f"total words: {word_count}")
copy_assets()
main()

321
harvard-cite-them-right.csl Normal file
View File

@ -0,0 +1,321 @@
<?xml version="1.0" encoding="utf-8"?>
<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" version="1.0" demote-non-dropping-particle="sort-only" default-locale="en-GB">
<info>
<title>Cite Them Right 12th edition - Harvard</title>
<id>http://www.zotero.org/styles/harvard-cite-them-right</id>
<link href="http://www.zotero.org/styles/harvard-cite-them-right" rel="self"/>
<link href="http://www.zotero.org/styles/harvard-cite-them-right-11th-edition" rel="template"/>
<link href="http://www.citethemrightonline.com/" rel="documentation"/>
<author>
<name>Patrick O'Brien</name>
</author>
<category citation-format="author-date"/>
<category field="generic-base"/>
<summary>Harvard according to Cite Them Right, 11th edition.</summary>
<updated>2022-06-27T11:10:37+00:00</updated>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
</info>
<locale xml:lang="en-GB">
<terms>
<term name="editor" form="short">
<single>ed.</single>
<multiple>eds</multiple>
</term>
<term name="editortranslator" form="verb">edited and translated by</term>
<term name="edition" form="short">edn.</term>
</terms>
</locale>
<macro name="editor">
<choose>
<if type="chapter paper-conference" match="any">
<names variable="container-author" delimiter=", " suffix=", ">
<name and="text" initialize-with=". " delimiter=", " sort-separator=", " name-as-sort-order="all"/>
</names>
<choose>
<if variable="container-author" match="none">
<names variable="editor translator" delimiter=", ">
<name and="text" initialize-with="."/>
<label form="short" prefix=" (" suffix=")"/>
</names>
</if>
</choose>
</if>
</choose>
</macro>
<macro name="secondary-contributors">
<choose>
<if type="chapter paper-conference" match="none">
<names variable="editor translator" delimiter=". ">
<label form="verb" text-case="capitalize-first" suffix=" "/>
<name and="text" initialize-with="."/>
</names>
</if>
<else-if variable="container-author" match="any">
<names variable="editor translator" delimiter=". ">
<label form="verb" text-case="capitalize-first" suffix=" "/>
<name and="text" initialize-with=". " delimiter=", "/>
</names>
</else-if>
</choose>
</macro>
<macro name="author">
<names variable="author">
<name and="text" delimiter-precedes-last="never" initialize-with="." name-as-sort-order="all"/>
<label form="short" prefix=" (" suffix=")"/>
<et-al font-style="italic"/>
<substitute>
<names variable="editor"/>
<names variable="translator"/>
<choose>
<if type="article-newspaper article-magazine" match="any">
<text variable="container-title" text-case="title" font-style="italic"/>
</if>
<else>
<text macro="title"/>
</else>
</choose>
</substitute>
</names>
</macro>
<macro name="author-short">
<names variable="author">
<name form="short" and="text" delimiter=", " delimiter-precedes-last="never" initialize-with=". "/>
<et-al font-style="italic"/>
<substitute>
<names variable="editor"/>
<names variable="translator"/>
<choose>
<if type="article-newspaper article-magazine" match="any">
<text variable="container-title" text-case="title" font-style="italic"/>
</if>
<else>
<text macro="title"/>
</else>
</choose>
</substitute>
</names>
</macro>
<macro name="access">
<choose>
<if variable="DOI">
<group delimiter=": ">
<text term="available at" text-case="capitalize-first"/>
<text variable="DOI" prefix="https://doi.org/"/>
</group>
</if>
<else-if variable="URL">
<text term="available at" suffix=": " text-case="capitalize-first"/>
<text variable="URL"/>
<group prefix=" (" delimiter=": " suffix=")">
<text term="accessed" text-case="capitalize-first"/>
<date form="text" variable="accessed">
<date-part name="day"/>
<date-part name="month"/>
<date-part name="year"/>
</date>
</group>
</else-if>
</choose>
</macro>
<macro name="number-volumes">
<choose>
<if variable="volume" match="none">
<group delimiter=" " prefix="(" suffix=")">
<text variable="number-of-volumes"/>
<label variable="volume" form="short" strip-periods="true"/>
</group>
</if>
</choose>
</macro>
<macro name="title">
<choose>
<if type="bill book legal_case legislation motion_picture report song thesis webpage graphic" match="any">
<group delimiter=". ">
<group delimiter=" ">
<group delimiter=" ">
<text variable="title" font-style="italic"/>
<text variable="medium" prefix="[" suffix="]"/>
</group>
<text macro="number-volumes"/>
</group>
<text macro="edition"/>
</group>
</if>
<else>
<text variable="title" form="long" quotes="true"/>
</else>
</choose>
</macro>
<macro name="publisher">
<choose>
<if type="thesis">
<group delimiter=". ">
<text variable="genre"/>
<text variable="publisher"/>
</group>
</if>
<else-if type="report">
<group delimiter=". ">
<group delimiter=" ">
<text variable="genre"/>
<text variable="number"/>
</group>
<group delimiter=": ">
<text variable="publisher-place"/>
<text variable="publisher"/>
</group>
</group>
</else-if>
<else-if type="article-journal article-newspaper article-magazine" match="none">
<group delimiter=" ">
<group delimiter=", ">
<choose>
<if type="speech" variable="event" match="any">
<text variable="event" font-style="italic"/>
</if>
</choose>
<group delimiter=": ">
<text variable="publisher-place"/>
<text variable="publisher"/>
</group>
</group>
<group prefix="(" suffix=")" delimiter=", ">
<text variable="collection-title"/>
<text variable="collection-number"/>
</group>
</group>
</else-if>
</choose>
</macro>
<macro name="year-date">
<choose>
<if variable="issued">
<date variable="issued">
<date-part name="year"/>
</date>
<text variable="year-suffix"/>
</if>
<else>
<text term="no date"/>
<text variable="year-suffix" prefix=" "/>
</else>
</choose>
</macro>
<macro name="locator">
<choose>
<if type="article-journal">
<text variable="volume"/>
<text variable="issue" prefix="(" suffix=")"/>
</if>
</choose>
</macro>
<macro name="published-date">
<choose>
<if type="article-newspaper article-magazine post-weblog speech" match="any">
<date variable="issued">
<date-part name="day" suffix=" "/>
<date-part name="month" form="long"/>
</date>
</if>
</choose>
</macro>
<macro name="pages">
<choose>
<if type="chapter paper-conference article-journal article article-magazine article-newspaper book review review-book report" match="any">
<group delimiter=" ">
<label variable="page" form="short"/>
<text variable="page"/>
</group>
</if>
</choose>
</macro>
<macro name="container-title">
<choose>
<if variable="container-title">
<group delimiter=". ">
<group delimiter=" ">
<text variable="container-title" font-style="italic"/>
<choose>
<if type="article article-journal" match="any">
<choose>
<if match="none" variable="page volume">
<text value="Preprint" prefix="[" suffix="]"/>
</if>
</choose>
</if>
</choose>
</group>
<text macro="edition"/>
</group>
</if>
</choose>
</macro>
<macro name="edition">
<choose>
<if is-numeric="edition">
<group delimiter=" ">
<number variable="edition" form="ordinal"/>
<text term="edition" form="short" strip-periods="true"/>
</group>
</if>
<else>
<text variable="edition"/>
</else>
</choose>
</macro>
<macro name="container-prefix">
<choose>
<if type="chapter paper-conference" match="any">
<text term="in"/>
</if>
</choose>
</macro>
<citation et-al-min="4" et-al-use-first="1" disambiguate-add-year-suffix="true" disambiguate-add-names="true" disambiguate-add-givenname="true" collapse="year">
<sort>
<key macro="year-date"/>
</sort>
<layout prefix="(" suffix=")" delimiter="; ">
<group delimiter=", ">
<group delimiter=", ">
<text macro="author-short"/>
<text macro="year-date"/>
</group>
<group>
<label variable="locator" form="short" suffix=" "/>
<text variable="locator"/>
</group>
</group>
</layout>
</citation>
<bibliography and="text" et-al-min="4" et-al-use-first="1">
<sort>
<key macro="author"/>
<key macro="year-date"/>
<key variable="title"/>
</sort>
<layout suffix=".">
<group delimiter=". ">
<group delimiter=" ">
<text macro="author"/>
<text macro="year-date" prefix="(" suffix=")"/>
<group delimiter=", ">
<text macro="title"/>
<group delimiter=" ">
<text macro="container-prefix"/>
<text macro="editor"/>
<text macro="container-title"/>
</group>
</group>
</group>
<text macro="secondary-contributors"/>
<text macro="publisher"/>
</group>
<group delimiter=", " prefix=", ">
<text macro="locator"/>
<text macro="published-date"/>
<text macro="pages"/>
</group>
<text macro="access" prefix=". "/>
</layout>
</bibliography>
</style>

View File

@ -1,3 +1,10 @@
@misc{99PanelDesign,
title = {(99+) {{Panel}}: {{Design}} for {{Hackability}}},
urldate = {2025-03-14},
howpublished = {https://www.academia.edu/110475342/Panel\_Design\_for\_Hackability},
file = {/Users/Rosa/Zotero/storage/33PDJSPD/Panel_Design_for_Hackability.html}
}
@article{abalansaElectronicWasteEnvironmental2021,
title = {Electronic {{Waste}}, an {{Environmental Problem Exported}} to {{Developing Countries}}: {{The GOOD}}, the {{BAD}} and the {{UGLY}}},
shorttitle = {Electronic {{Waste}}, an {{Environmental Problem Exported}} to {{Developing Countries}}},
@ -30,6 +37,27 @@
file = {/Users/Rosa/Zotero/storage/LTRYTQS2/charles-r-acland-residual-media_pdf -- Xerox WorkCentre 5655 -- fd5e0a915ed3fdf92f48da0ca8009c71 -- Annas Archive-1.pdf}
}
@misc{Apple8217sRecyclingProgram2025,
title = {Apple\&\#8217;s {{Recycling Program Forced Recyclers}} to {{Shred Over}} 530,000 {{Repairable iPhones}}},
year = {2025},
month = mar,
journal = {iFixit},
urldate = {2025-03-25},
abstract = {With Earth Day approaching, Apple is bragging about their ``free'' iPhone recycling program---meanwhile, reports say they\&\#8217;re forcing recyclers to shred hundreds of thousands of repairable products.},
howpublished = {https://www.ifixit.com/News/94386/the-truth-about-apples-free-iphone-recycling-program-the-earth-deserves-better},
langid = {english},
file = {/Users/Rosa/Zotero/storage/FL76BU2I/the-truth-about-apples-free-iphone-recycling-program-the-earth-deserves-better.html}
}
@techreport{baldeGlobalEWasteMonitor2024,
title = {The {{Global E-Waste Monitor}} 2024},
author = {Bald{\'e}, Cornelis P. and Kuehr, Ruediger and Yamamoto, Tales and McDonald, Rosie and D'Angelo, Elena and Althaf, Shahana and Bel, Garam and {Fernandez-Cubillo}, Elena and Forti, Vanessa and Gray, Vanessa and Herat, Sunil and Honda, Shunichi and Iattoni, Giulia and Khetriwal, Deepali S. and di Cortemiglia, Vittoria Luda and Lobuntsova, Yuliya and Nnorom, Innocent and Wagner (2024), Michelle and Bald{\'e}, Cornelis P. and {International Telecommunication Union (ITU)} and {United Nations Institute for Training and Research (UNITAR)}},
year = {2024},
langid = {english},
annotation = {titleTranslation: THE GLOBAL E-WASTE MONITOR 2024},
file = {/Users/Rosa/Zotero/storage/WGS4GDYK/GEM_2024_EN_11_NOV-web.pdf}
}
@article{batesSocialLifeMusical2012,
title = {The {{Social Life}} of {{Musical Instruments}}},
author = {Bates, Eliot},
@ -149,6 +177,20 @@
file = {/Users/Rosa/Zotero/storage/6G8IIDT5/article.pdf}
}
@article{chokkattuWhatYourDefunct2025,
title = {What to {{Do With Your Defunct Humane Ai Pin}}},
author = {Chokkattu, Julian},
year = {2025},
month = feb,
journal = {Wired},
issn = {1059-1028},
urldate = {2025-03-13},
abstract = {Humane Ai's Pins stopped working today, turning the year-old wearable into a paperweight. Here are some ideas for what to do with yours if you want to avoid e-waste.},
chapter = {tags},
langid = {american},
file = {/Users/Rosa/Zotero/storage/J4U6SVG3/what-to-do-with-your-humane-ai-pin.html}
}
@book{collinsHandmadeElectronicMusic2009,
title = {Handmade Electronic Music: The Art of Hardware Hacking},
shorttitle = {Handmade Electronic Music},
@ -160,7 +202,7 @@
isbn = {978-0-415-99609-9 978-0-415-99873-4 978-0-203-87962-7},
langid = {american},
lccn = {ML1092 .C66 2009},
keywords = {Construction,Electronic musical instruments,toppertje},
keywords = {toppertje},
file = {/Users/Rosa/Zotero/storage/T5E3CZ4S/Collins - 2009 - Handmade electronic music the art of hardware hacking.pdf}
}
@ -179,6 +221,17 @@
keywords = {summarised}
}
@misc{CompudanzasPermacomputing2025,
title = {{compudanzas --- permacomputing}},
year = {2025},
month = apr,
urldate = {2025-04-14},
abstract = {permacomputing is a holistic approach to computing and sustainability inspired from permaculture.},
howpublished = {https://compudanzas.net/permacomputing.html},
langid = {en,es-MX},
file = {/Users/Rosa/Zotero/storage/EMI4X8QH/2025 - compudanzas — permacomputing.pdf;/Users/Rosa/Zotero/storage/2984G2IV/permacomputing.html}
}
@inproceedings{CooperativeExperimentalismSharing,
title = {Cooperative {{Experimentalism}}: {{Sharing}} to Enhance Electronic Media},
booktitle = {Proceedings of the {{International Symposium}} on {{Electronic Art}} ({{ISEA2019}})},
@ -206,7 +259,6 @@
year = {2024},
institution = {Right to Repair Europe},
langid = {american},
keywords = {check note},
file = {/Users/Rosa/Zotero/storage/69IHSGQM/Current-State-of-EU-Right-to-Repair_v3_2.pdf}
}
@ -240,11 +292,38 @@
file = {/Users/Rosa/Zotero/storage/D6EBFKZU/popupforcollaborativemusicmaking.wordpress.com.html}
}
@article{fennisOntologyElectronicWaste,
@misc{editorNightmareRealHP,
title = {The Nightmare Is Real: {{HP}} Makes Printing a Monthly Subscription},
shorttitle = {The Nightmare Is Real},
author = {Editor, Senior and {PCWorld}},
journal = {PCWorld},
urldate = {2025-04-14},
abstract = {HP launches the All-In Plan, charging up to \$36 per month for a limited number of printed pages, plus potential overage and cancellation fees.},
howpublished = {https://www.pcworld.com/article/2251993/the-nightmare-is-real-hp-makes-printing-a-subscription.html},
langid = {english},
file = {/Users/Rosa/Zotero/storage/VXQZT9BS/the-nightmare-is-real-hp-makes-printing-a-subscription.html}
}
@misc{EssentialPhoneTeardown2017,
title = {Essential {{Phone Teardown}}},
year = {2017},
month = aug,
journal = {iFixit},
urldate = {2025-04-14},
abstract = {There's a newbie in the smartphone scene, and it's bringing a whole lot less to the table. That's right, in a world of \&quot;more is better,\&quot; this phone...},
howpublished = {https://www.ifixit.com/Teardown/Essential+Phone+Teardown/96764},
langid = {english},
file = {/Users/Rosa/Zotero/storage/3CLBB35B/96764.html}
}
@article{fennisOntologyElectronicWaste2022,
title = {Ontology {{Of Electronic Waste}}},
author = {Fennis, Maurits},
year = {2022},
month = nov,
langid = {english},
keywords = {summarised},
annotation = {titleTranslation: Ontologie van elektronisch afval},
file = {/Users/Rosa/Zotero/storage/PZ45G9QF/Fennis - Ontology Of Electronic Waste.pdf}
}
@ -256,6 +335,19 @@
file = {/Users/Rosa/Zotero/storage/4HTDFEDL/Fernandez and Iazzetta - Circuit-Bending and DIY Culture.pdf}
}
@misc{foresmanAppleScrewingNew2011,
title = {Apple ``Screwing'' New {{iPhones}} out of Simple {{DIY}} Repair},
author = {Foresman, Chris},
year = {2011},
month = jan,
journal = {Ars Technica},
urldate = {2025-03-14},
abstract = {Apple is purposefully making it harder to get inside its devices buy using {\dots}},
howpublished = {https://arstechnica.com/gadgets/2011/01/apple-screwing-new-iphones-out-of-simple-diy-repair/},
langid = {american},
file = {/Users/Rosa/Zotero/storage/AZ3IAGCT/apple-screwing-new-iphones-out-of-simple-diy-repair.html}
}
@article{fullerIntroductionAutomaticInstruments1983,
title = {An Introduction to Automatic Instruments},
author = {Fuller, David},
@ -303,6 +395,19 @@
file = {/Users/Rosa/Zotero/storage/XAC25TL3/TOD8_DEPLETION_DESIGN.pdf}
}
@misc{GalaxyUpcyclingHow2025,
title = {Galaxy {{Upcycling}}: {{How Samsung Ruined Their Best Idea}} in {{Years}}},
shorttitle = {Galaxy {{Upcycling}}},
year = {2025},
month = mar,
journal = {iFixit},
urldate = {2025-03-25},
abstract = {Samsung had a revolutionary approach to reusing old Galaxy phones four years ago. We were an excited partner. What happened to Galaxy Upcycling?},
howpublished = {https://www.ifixit.com/News/50450/samsung-galaxy-upcycling-unlocked-smartphone-smarthome-project},
langid = {english},
file = {/Users/Rosa/Zotero/storage/D929VFGX/samsung-galaxy-upcycling-unlocked-smartphone-smarthome-project.html}
}
@inproceedings{gegenbauerIPodsAtarisPolaroids2012,
title = {{{iPods}}, {{Ataris}}, and {{Polaroids}}: A Personal Inventories Study of out-of-Use Electronics in {{Swiss}} Households},
shorttitle = {{{iPods}}, {{Ataris}}, and {{Polaroids}}},
@ -317,7 +422,7 @@
urldate = {2025-02-25},
isbn = {978-1-4503-1224-0},
langid = {english},
keywords = {niet gebruiken,read},
keywords = {read},
file = {/Users/Rosa/Zotero/storage/47YW9WJG/Gegenbauer and Huang - 2012 - iPods, Ataris, and Polaroids a personal inventories study of out-of-use electronics in Swiss househ.pdf}
}
@ -344,7 +449,7 @@
isbn = {978-0-262-08200-6},
langid = {english},
lccn = {H62.5.U5 H45 1991},
keywords = {Cybernetics,Josiah Macy Jr. Foundation,Philosophy,Research,Science,Social aspects,Social sciences,United States},
keywords = {Science},
file = {/Users/Rosa/Zotero/storage/F7GQ3EYL/Heims - 1991 - The cybernetics group.pdf}
}
@ -358,7 +463,7 @@
isbn = {978-0-262-04493-6},
langid = {english},
lccn = {N72.E53 H47 2023},
keywords = {Art and electronics,Arts,Experimental methods,Maker movement,Social aspects,summarised,Technology},
keywords = {Maker movement,summarised},
file = {/Users/Rosa/Zotero/storage/E8IXZVMU/Hertz - 2023 - Art + DIY electronics.pdf}
}
@ -382,17 +487,21 @@
urldate = {2025-01-05},
abstract = {This text is an investigation into media culture, temporalities of media objects and planned obsolescence in the midst of ecological crisis and electronic waste. The authors approach the topic under the umbrella of media archaeology and aim to extend this historiographically oriented field of media theory into a methodology for contemporary artistic practice. Hence, media archaeology becomes not only a method for excavation of repressed and forgotten media discourses, but extends itself into an artistic method close to Do-It-Yourself (DIY) culture, circuit bending, hardware hacking and other hacktivist exercises that are closely related to the political economy of information technology. The concept of dead media is discussed as ``zombie media''---dead media revitalized, brought back to use, reworked.},
langid = {english},
keywords = {check note,summarised,toppertje},
keywords = {check note,Obsolescence,summarised,toppertje},
file = {/Users/Rosa/Zotero/storage/K5SZIEPI/Hertz and Parikka - 2012 - Zombie Media Circuit Bending Media Archaeology into an Art Method.pdf}
}
@misc{HolisticApproachComputing,
title = {A Holistic Approach to Computing and Sustainability Inspired from Permaculture.},
urldate = {2025-01-05},
howpublished = {https://wiki.xxiivv.com/site/permacomputing.html?utm\_source=pocket\_shared},
langid = {american},
keywords = {summarised},
file = {/Users/Rosa/Zotero/storage/QM25W9ZH/permacomputing.html}
@article{hillPanelDesignHackability2004,
title = {Panel: {{Design}} for {{Hackability}}},
shorttitle = {Panel},
author = {Hill, Dan},
year = {2004},
month = jan,
urldate = {2025-03-14},
abstract = {Design for hackability encourages designers and nondesigners to critically and creatively explore interactivity, technology and media-to reclaim authorship and ownership of technologies and the social and cultural worlds in which we live. Hackability},
langid = {english},
keywords = {No DOI found},
file = {/Users/Rosa/Zotero/storage/CWFGVBXA/Panel_Design_for_Hackability.html}
}
@book{holmesElectronicExperimentalMusic2012,
@ -405,7 +514,7 @@
address = {New York},
isbn = {978-0-415-89646-7 978-0-415-89636-8 978-0-203-12842-8},
lccn = {ML1380 .H64 2012},
keywords = {Computer music,Electronic music,History and criticism},
keywords = {Computer music},
annotation = {OCLC: ocn703208713},
file = {/Users/Rosa/Zotero/storage/HUAVMT2T/Electronic and Experimental Music.pdf}
}
@ -420,6 +529,17 @@
file = {/Users/Rosa/Zotero/storage/ZK479XQZ/web.archive.org-Vague Terrain 19 Schematic as Score.pdf}
}
@misc{HomeboyElectronicsTurns2025,
title = {Homeboy {{Electronics Turns Junk}} into {{Jobs}}. {{Right}} to {{Repair Could Help}}.},
year = {2025},
month = mar,
journal = {iFixit},
urldate = {2025-03-25},
abstract = {Homeboy Electronics Recycling hires former prisoners to repair 15,000 devices a year, but they\&\#8217;re running into software locks and hurting for manuals.},
howpublished = {https://www.ifixit.com/News/51286/homeboy-electronics-turns-junk-into-jobs-right-to-repair-could-help},
langid = {english}
}
@book{horowitzArtElectronics2024,
title = {The Art of Electronics},
author = {Horowitz, Paul and Hill, Winfield},
@ -431,6 +551,20 @@
langid = {english}
}
@book{huhtamoMediaArchaeologyApproaches2011,
title = {Media Archaeology: Approaches, Applications, and Implications},
shorttitle = {Media Archaeology},
editor = {Huhtamo, Erkki and Parikka, Jussi},
year = {2011},
publisher = {University of California Press},
address = {Berkeley, Calif},
isbn = {978-0-520-26273-7 978-0-520-26274-4},
langid = {english},
lccn = {P90 .M36622 2011},
annotation = {OCLC: ocn664555771},
file = {/Users/Rosa/Zotero/storage/6SL672CT/Huhtamo and Parikka - 2011 - Media archaeology approaches, applications, and implications.pdf}
}
@article{ilesMappingEnvironmentalJustice2004,
title = {Mapping {{Environmental Justice}} in {{Technology Flows}}: {{Computer Waste Impacts}} in {{Asia}}},
shorttitle = {Mapping {{Environmental Justice}} in {{Technology Flows}}},
@ -474,6 +608,20 @@
keywords = {summarised}
}
@book{instituteofnetworkculturesDepletionDesignGlossary2012a,
title = {Depletion Design: A Glossary of Network Ecologies},
shorttitle = {Depletion Design},
author = {{Institute of Network Cultures}},
year = {2012},
series = {Theory on Demand},
number = {8},
publisher = {Institute of Network Cultures},
address = {Amsterdam},
collaborator = {Wiedemann, Carolin and Zehle, Soenke},
isbn = {978-90-818575-1-2},
langid = {english}
}
@article{InterchangeableParts2024,
title = {Interchangeable Parts},
year = {2024},
@ -519,6 +667,7 @@
urldate = {2025-01-05},
isbn = {978-1-4503-4950-5},
langid = {english},
keywords = {Obsolescence},
file = {/Users/Rosa/Zotero/storage/ZGWSKZXI/Jang et al. - 2017 - Unplanned Obsolescence Hardware and Software After Collapse.pdf}
}
@ -626,6 +775,7 @@
urldate = {2025-01-05},
isbn = {978-1-4503-7595-5},
langid = {english},
keywords = {toppertje},
file = {/Users/Rosa/Zotero/storage/NEBEZJ9M/Lepawsky - 2020 - Towards a World of Fixers Examining barriers and enablers of widely deployed third-party repair for.pdf}
}
@ -660,6 +810,18 @@
file = {/Users/Rosa/Zotero/storage/XFGEV94M/Principles of Perma-Hybridity.pdf;/Users/Rosa/Zotero/storage/HYCEANK3/principles-of-perma-hybridity.html}
}
@misc{lulinvegaHolisticApproachComputing,
type = {Wiki},
title = {A Holistic Approach to Computing and Sustainability Inspired from Permaculture.},
author = {Lu Linvega, Devine},
journal = {Devine Lu Linvega's journal},
urldate = {2025-01-05},
howpublished = {https://wiki.xxiivv.com/site/permacomputing.html},
langid = {american},
keywords = {summarised},
file = {/Users/Rosa/Zotero/storage/QM25W9ZH/permacomputing.html}
}
@article{luUnmakingElectronicWaste2024,
title = {Unmaking {{Electronic Waste}}},
author = {Lu, Jasmine and Lopes, Pedro},
@ -674,6 +836,7 @@
urldate = {2025-02-25},
abstract = {The proliferation of new technologies has led to a proliferation of unwanted electronic devices. E-waste is the largest-growing consumer waste-stream worldwide, but also an issue often ignored. In fact, HCI primarily focuses on designing and understanding device interactions during one segment of their lifecycles---while users use them. Researchers overlook a significant space---when devices are no longer ``useful'' to the user, such as after breakdown or obsolescence. We argue that HCI can learn from experts who upcycle e-waste and give it second lives in electronics projects, art projects, educational workshops, and more. To acquire and translate this knowledge to HCI, we interviewed experts who unmake e-waste. We explore their practices through the lens of unmaking both when devices are physically unmade and when the perception of e-waste is unmade once waste becomes, once again, useful . Last, we synthesize findings into takeaways for how HCI can engage with the issue of e-waste.},
langid = {english},
keywords = {Obsolescence},
file = {/Users/Rosa/Zotero/storage/879KYXX9/3674505.pdf;/Users/Rosa/Zotero/storage/FPAIKIDF/Lu and Lopes - 2024 - Unmaking Electronic Waste.pdf}
}
@ -711,6 +874,23 @@
file = {/Users/Rosa/Zotero/storage/URF6ZN4I/Sonic Writing Technologies.pdf}
}
@inproceedings{mansouxPermacomputingAestheticsPotential2023,
title = {Permacomputing {{Aesthetics}}: {{Potential}} and {{Limits}} of {{Constraints}} in {{Computational Art}}, {{Design}} and {{Culture}}},
shorttitle = {Permacomputing {{Aesthetics}}},
booktitle = {Ninth {{Computing}} within {{Limits}} 2023},
author = {Mansoux, Aymeric and Howell, Brendan and Barok, Du{\v s}an and Heikkil{\"a}, Ville-Matias},
year = {2023},
month = jun,
publisher = {LIMITS},
address = {Virtual},
doi = {10.21428/bf6fb269.6690fc2e},
urldate = {2025-04-07},
abstract = {Permacomputing is a nascent concept and a community of practice centred around design principles that embrace limits and constraints as a positive thing in computational culture, and on creativity with scarce computational resources. As a result, permacomputing aims to provide a countervoice to digital practices that promote maximisation, hyper-consumption and waste. It seeks to encourage practices as an applied critique of contemporary computer technology that privileges maximalist aesthetics where more pixels, more frame rate, more computation and more power equals more potential at any cost and without any consequences. We believe that such a critical practice can be relevant to artists, designers and cultural practitioners working with computer and network technology who are interested in engaging with environmental issues. This is particularly relevant given the tendency in art, design and cultural production to rely on tools and techniques designed to maximise productivity and mass consumption.},
langid = {english},
keywords = {toppertje},
file = {/Users/Rosa/Zotero/storage/7FSUWZ2X/Mansoux et al. - 2023 - Permacomputing Aesthetics Potential and Limits of Constraints in Computational Art, Design and Cult.pdf}
}
@article{matternMaintenanceCare2018,
title = {Maintenance and {{Care}}},
author = {Mattern, Shannon},
@ -781,6 +961,19 @@
file = {/Users/Rosa/Zotero/storage/TCPV5QUC/2012 - The sound studies reader.pdf}
}
@book{mimsGettingStartedElectronics1983,
title = {Getting Started in Electronics},
shorttitle = {Getting Started in Electronics},
author = {Mims, Forrest M.},
year = {1983},
edition = {4. ed., 13. printing},
publisher = {Master Publ},
address = {Niles, Ill},
isbn = {978-0-945053-28-6},
langid = {english},
file = {/Users/Rosa/Zotero/storage/WVMHNRFB/Mims - 2014 - Getting started in electronics a complete electronics course in 128 pages!.pdf}
}
@book{mindellHumanMachineFeedback2002,
title = {Between Human and Machine: Feedback, Control, and Computing before Cybernetics},
shorttitle = {Between Human and Machine},
@ -794,6 +987,19 @@
file = {/Users/Rosa/Zotero/storage/X5EIETEA/Mindell - 2002 - Between human and machine feedback, control, and computing before cybernetics.pdf}
}
@article{MooresLaw2025,
title = {Moore's Law},
year = {2025},
month = apr,
journal = {Wikipedia},
urldate = {2025-04-15},
abstract = {Moore's law is the observation that the number of transistors in an integrated circuit (IC) doubles about every two years. Moore's law is an observation and projection of a historical trend. Rather than a law of physics, it is an empirical relationship. It is an experience-curve law, a type of law quantifying efficiency gains from experience in production. The observation is named after Gordon Moore, the co-founder of Fairchild Semiconductor and Intel and former CEO of the latter, who in 1965 noted that the number of components per integrated circuit had been doubling every year, and projected this rate of growth would continue for at least another decade. In 1975, looking forward to the next decade, he revised the forecast to doubling every two years, a compound annual growth rate (CAGR) of 41\%. Moore's empirical evidence did not directly imply that the historical trend would continue, nevertheless, his prediction has held since 1975 and has since become known as a law. Moore's prediction has been used in the semiconductor industry to guide long-term planning and to set targets for research and development (R\&D). Advancements in digital electronics, such as the reduction in quality-adjusted prices of microprocessors, the increase in memory capacity (RAM and flash), the improvement of sensors, and even the number and size of pixels in digital cameras, are strongly linked to Moore's law. These ongoing changes in digital electronics have been a driving force of technological and social change, productivity, and economic growth. Industry experts have not reached a consensus on exactly when Moore's law will cease to apply. Microprocessor architects report that semiconductor advancement has slowed industry-wide since around 2010, slightly below the pace predicted by Moore's law. In September 2022, Nvidia CEO Jensen Huang considered Moore's law dead, while Intel CEO Pat Gelsinger was of the opposite view.},
copyright = {Creative Commons Attribution-ShareAlike License},
langid = {english},
annotation = {Page Version ID: 1283756153},
file = {/Users/Rosa/Zotero/storage/LLNRZSRV/Moore's_law.html}
}
@article{moslangHowDoesBicycle2004,
title = {How {{Does}} a {{Bicycle Light Sound}}?: {{Cracked Everyday Electronics}}},
author = {M{\"o}slang, Norbert and Br{\"a}uninger, Brigitte},
@ -820,6 +1026,7 @@
collaborator = {Nova, Nicolas and Bloch, {\relax Ana{\"i}s}.},
isbn = {978-2-9700992-6-0},
langid = {american},
keywords = {Obsolescence},
annotation = {OCLC: 1264652861}
}
@ -851,6 +1058,47 @@
langid = {english}
}
@book{osullivanBloomsburyHandbookDigital2022,
title = {The {{Bloomsbury Handbook}} to the {{Digital Humanities}}},
editor = {O'Sullivan, James},
year = {2022},
publisher = {Bloomsbury Academic},
doi = {10.5040/9781350232143},
urldate = {2025-04-14},
isbn = {978-1-350-23211-2 978-1-350-23212-9 978-1-350-23213-6 978-1-350-23214-3},
langid = {english},
file = {/Users/Rosa/Zotero/storage/EDWEPPX4/OSullivan - 2022 - The Bloomsbury Handbook to the Digital Humanities.pdf}
}
@misc{owensArchivesMaterialityAgency2013,
type = {Webpage},
title = {Archives, {{Materiality}} and the ``{{Agency}} of the {{Machine}}'': {{An Interview}} with {{Wolfgang Ernst}} {\textbar} {{The Signal}}},
shorttitle = {Archives, {{Materiality}} and the ``{{Agency}} of the {{Machine}}''},
author = {Owens, Trevor},
year = {2013},
month = feb,
journal = {The Library of Congress},
urldate = {2025-04-10},
abstract = {In this installment of the National Digital Stewardship Alliance Innovation working group's series of interviews Lori~Emerson~of the Media Archaeology Lab interviews Wolfgang Ernst of Humboldt University in Berlin. The interview explores the relationship between media archaeology and digital preservation as evident in the design and structure of the Humbolt Media Archaeological Fundus. Lori: I deeply {\dots}},
howpublished = {https://blogs.loc.gov/thesignal/2013/02/archives-materiality-and-agency-of-the-machine-an-interview-with-wolfgang-ernst},
langid = {english}
}
@inbook{parikkaDustMatter2012,
title = {Dust {{Matter}}},
booktitle = {Depletion Design: A Glossary of Network Ecologies},
author = {Parikka, Jussi},
year = {2012},
series = {Theory on Demand},
number = {8},
pages = {53--57},
publisher = {Institute of Network Cultures},
address = {Amsterdam},
collaborator = {{Institute of Network Cultures} and Wiedemann, Carolin},
isbn = {978-90-818575-1-2},
langid = {english}
}
@article{parikkaOperativeMediaArchaeology2011,
title = {Operative {{Media Archaeology}}: {{Wolfgang Ernst}}'s {{Materialist Media Diagrammatics}}},
shorttitle = {Operative {{Media Archaeology}}},
@ -928,6 +1176,21 @@
langid = {english}
}
@misc{PermacomputingDanceRepair,
title = {Permacomputing and the {{Dance}} of {{Repair Amid}} the {{Vestiges}} of {{Digital Obsolescence}} << {{Performing}} the {{Internet}}},
urldate = {2025-04-14},
langid = {american},
keywords = {Obsolescence},
file = {/Users/Rosa/Zotero/storage/3J4Y723V/Permacomputing and the Dance of Repair Amid the Vestiges of Digital Obsolescence « Performing the In.pdf;/Users/Rosa/Zotero/storage/RNSDL2A2/the-dance-of-repair-amid-the-vestiges-of-digital-obsolescence.html}
}
@misc{PermacomputingViznut,
title = {Permacomputing {\textbar} Viznut},
urldate = {2025-04-14},
howpublished = {http://viznut.fi/files/texts-en/permacomputing.html},
file = {/Users/Rosa/Zotero/storage/YH328MPK/Permacomputing viznut.pdf;/Users/Rosa/Zotero/storage/3M49668D/permacomputing.html}
}
@book{pinchAnalogDaysInvention2002,
title = {Analog Days: The Invention and Impact of the {{Moog}} Synthesizer},
shorttitle = {Analog Days},
@ -941,13 +1204,24 @@
file = {/Users/Rosa/Zotero/storage/B6P7MAUL/Pinch and Trocco - 2002 - Analog days the invention and impact of the Moog synthesizer.pdf}
}
@book{postmaWeggooienMooiNiet,
@book{postmaWeggooienMooiNiet2015,
title = {Weggooien, Mooi Niet!},
author = {Postma, Martine},
editor = {Rhoen, Marion},
year = {2015},
month = mar,
publisher = {de Vrije Uitgevers},
isbn = {978-94-90298-06-7},
keywords = {summarised}
}
@misc{Principles,
title = {Principles},
urldate = {2025-03-14},
howpublished = {https://permacomputing.net/Principles/},
file = {/Users/Rosa/Zotero/storage/TBYIGTHI/Principles.html}
}
@inproceedings{raghavanMacroscopicallySustainableNetworking2016,
title = {Macroscopically Sustainable Networking: On Internet Quines},
shorttitle = {Macroscopically Sustainable Networking},
@ -964,6 +1238,12 @@
langid = {english}
}
@misc{ReclaimingFutureOld,
title = {Reclaiming the {{Future}} with {{Old Media}}},
urldate = {2025-04-14},
howpublished = {https://works.hcommons.org/records/m3p4w-4d331}
}
@article{remyLimitsSustainableInteraction2015,
title = {Limits and Sustainable Interaction Design: Obsolescence in a Future of Collapse and Resource Scarcity},
shorttitle = {Limits and Sustainable Interaction Design},
@ -974,7 +1254,7 @@
doi = {10.5167/UZH-110997},
urldate = {2025-01-05},
langid = {american},
keywords = {check note,obsolescence,to summarise},
keywords = {check note,Obsolescence,to summarise},
file = {/Users/Rosa/Zotero/storage/DYCDWWC4/Remy and Huang - 2015 - Limits and sustainable interaction design obsolescence in a future of collapse and resource scarcit.pdf}
}
@ -1070,7 +1350,7 @@
urldate = {2025-01-05},
copyright = {http://creativecommons.org/licenses/by/4.0/},
langid = {english},
keywords = {check note,to summarise,toppertje},
keywords = {check note,Speculative,to summarise,toppertje},
file = {/Users/Rosa/Zotero/storage/WJS3URT5/Richards - 2018 - Speculative Sound Circuits.pdf}
}
@ -1096,12 +1376,6 @@
howpublished = {https://web.archive.org/web/20140723131951/http://vagueterrain.net/journal19/peter-blasser/01}
}
@misc{RoolzGeweiJagerspracheVaguea,
title = {Roolz-{{Gewei}} \& {{Jagersprache}} {\textbar} {{Vague Terrain}}},
urldate = {2025-01-26},
howpublished = {https://web.archive.org/web/20140723131951/http://vagueterrain.net/journal19/peter-blasser/01}
}
@inproceedings{rouraCircularDigitalDevices2021,
title = {Circular Digital Devices: Lessons about the Social and Planetary Boundaries},
shorttitle = {Circular Digital Devices},
@ -1138,10 +1412,17 @@
urldate = {2025-01-05},
abstract = {The past few years have seen various attempts within computing, programming and hacker communities to apply `degrowth' principles to their work -- i.e. sketching out ways to de-couple digital techno{\dots}},
langid = {english},
keywords = {niet gebruiken,to summarise},
keywords = {to summarise},
file = {/Users/Rosa/Zotero/storage/ABFRIUPV/PDF document.pdf;/Users/Rosa/Zotero/storage/9ZAFPFDB/2022 - What might degrowth computing look like.html}
}
@misc{Signin,
title = {Signin},
urldate = {2025-04-15},
howpublished = {https://login.oerol.nl/login?client\_id=5bc7qo8bkmtroe5oia7kdhpbov\&redirect\_uri=https\%3A\%2F\%2Fservice.oerol.nl\%2Faccount\%2Fexternal-authentication\&response\_type=code\&state=aHR0cHM6Ly9zZXJ2aWNlLm9lcm9sLm5sL2Zvcm1zLzkzYmU4YzMyLTc3MjgtNDNmZC04MDYxLWI5ODZlYmIxOWUzZA},
file = {/Users/Rosa/Zotero/storage/EDJ3HRJL/login.html}
}
@book{sladeMadeBreakTechnology2006,
title = {Made to Break: Technology and Obsolescence in {{America}}},
shorttitle = {Made to Break},
@ -1152,7 +1433,7 @@
isbn = {978-0-674-02203-4},
langid = {english},
lccn = {609.730 9},
keywords = {summarised},
keywords = {Obsolescence,summarised},
file = {/Users/Rosa/Zotero/storage/HC67UT6D/Slade - 2006 - Made to break technology and obsolescence in America.pdf}
}
@ -1200,6 +1481,24 @@
file = {/Users/Rosa/Zotero/storage/ZSGCB24X/Sutherland - 2021 - Design Aspirations for Energy Autarkic Information Systems in a Future with Limits.pdf}
}
@inproceedings{switzerJunkyardComputingRepurposing2023,
title = {Junkyard {{Computing}}: {{Repurposing Discarded Smartphones}} to {{Minimize Carbon}}},
shorttitle = {Junkyard {{Computing}}},
booktitle = {Proceedings of the 28th {{ACM International Conference}} on {{Architectural Support}} for {{Programming Languages}} and {{Operating Systems}}, {{Volume}} 2},
author = {Switzer, Jennifer and Marcano, Gabriel and Kastner, Ryan and Pannuto, Pat},
year = {2023},
month = jan,
series = {{{ASPLOS}} 2023},
pages = {400--412},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
doi = {10.1145/3575693.3575710},
urldate = {2025-03-25},
abstract = {1.5 billion smartphones are sold annually, and most are decommissioned less than two years later. Most of these unwanted smartphones are neither discarded nor recycled but languish in junk drawers and storage units. This computational stockpile represents a substantial wasted potential: modern smartphones have increasingly high-performance and energy-efficient processors, extensive networking capabilities, and a reliable built-in power supply. This project studies the ability to reuse smartphones as "junkyard computers." Junkyard computers grow global computing capacity by extending device lifetimes, which supplants the manufacture of new devices. We show that the capabilities of even decade-old smartphones are within those demanded by modern cloud microservices and discuss how to combine phones to perform increasingly complex tasks. We describe how current operation-focused metrics do not capture the actual carbon costs of compute. We propose Computational Carbon Intensity---a performance metric that balances the continued service of older devices with the superlinear runtime improvements of newer machines. We use this metric to redefine device service lifetime in terms of carbon efficiency. We develop a cloudlet of reused Pixel 3A phones. We analyze the carbon benefits of deploying large, end-to-end microservice-based applications on these smartphones. Finally, we describe system architectures and associated challenges to scale to cloudlets with hundreds and thousands of smartphones.},
isbn = {978-1-4503-9916-6},
file = {/Users/Rosa/Zotero/storage/L23JPAUL/Switzer et al. - 2023 - Junkyard Computing Repurposing Discarded Smartphones to Minimize Carbon.pdf}
}
@misc{SynthSchematicsWords,
title = {Synth Schematics--::-- {{Some}} Words},
urldate = {2025-01-23},
@ -1242,8 +1541,7 @@
volume = {85},
pages = {1193--202},
doi = {10.1037/0022-3514.85.6.1193},
abstract = {Do experiences make people happier than material possessions? In two surveys, respondents from various demographic groups indicated that experiential purchases-those made with the primary intention of acquiring a life experience--made them happier than material purchases. In a follow-up laboratory experiment, participants experienced more positive feelings after pondering an experiential purchase than after pondering a material purchase. In another experiment, participants were more likely to anticipate that experiences would make them happier than material possessions after adopting a temporally distant, versus a temporally proximate, perspective. The discussion focuses on evidence that experiences make people happier because they are more open to positive reinterpretations, are a more meaningful part of one's identity, and contribute more to successful social relationships.},
keywords = {niet gebruiken}
abstract = {Do experiences make people happier than material possessions? In two surveys, respondents from various demographic groups indicated that experiential purchases-those made with the primary intention of acquiring a life experience--made them happier than material purchases. In a follow-up laboratory experiment, participants experienced more positive feelings after pondering an experiential purchase than after pondering a material purchase. In another experiment, participants were more likely to anticipate that experiences would make them happier than material possessions after adopting a temporally distant, versus a temporally proximate, perspective. The discussion focuses on evidence that experiences make people happier because they are more open to positive reinterpretations, are a more meaningful part of one's identity, and contribute more to successful social relationships.}
}
@article{vanloonRecyclingTimeTemporal1997,
@ -1275,7 +1573,7 @@
address = {New York},
isbn = {978-0-471-91030-5},
lccn = {ML55.V575 M9},
keywords = {Computer music,niet gebruiken},
keywords = {Computer music},
file = {/Users/Rosa/Zotero/storage/YKUYA5BZ/Beauchamp - EDITORS HEINZ VON FOERSTER.pdf}
}
@ -1297,6 +1595,21 @@
file = {/Users/Rosa/Zotero/storage/FHJBKZHZ/Wallendorf and Arnould - 1988 - My Favorite Things A Cross-Cultural Inquiry into Object Attachment, Possessiveness, and Social Li.pdf}
}
@book{wershler-henryLabBookSituated2021,
title = {The Lab Book: Situated Practices in Media Studies},
shorttitle = {The Lab Book},
author = {{Wershler-Henry}, Darren S. and Emerson, Lori and Parikka, Jussi},
year = {2021},
publisher = {University of Minnesota Press},
address = {Minneapolis},
abstract = {"An important new approach to the study of laboratories, presenting a practical method for understanding labs in all walks of life"--},
isbn = {978-1-5179-0217-9 978-1-5179-0218-6},
langid = {english},
lccn = {P91.3 .W446 2021},
keywords = {Group work in research,Laboratories,Media Archeology,Speculative},
file = {/Users/Rosa/Zotero/storage/JJTTH8SA/Wershler-Henry et al. - 2021 - The lab book situated practices in media studies.pdf}
}
@misc{What2017sPotential,
title = {What 2017's {{Potential Component Shortage Means}} for {{Design Engineers}} - {{News}}},
urldate = {2025-01-28},
@ -1305,3 +1618,16 @@
langid = {english},
file = {/Users/Rosa/Zotero/storage/FKZVA9QW/what-2017s-potential-component-shortage-means-for-design-engineers.html}
}
@misc{zaffarRiseFrankensteinLaptops2025,
title = {The Rise of `{{Frankenstein}}' Laptops in {{New Delhi}}'s Repair Markets},
author = {Zaffar, Hanan},
year = {2025},
month = apr,
journal = {The Verge},
urldate = {2025-04-10},
abstract = {Technicians in India's refurbished laptop shops give discarded electronics a new life.},
howpublished = {https://www.theverge.com/tech/639126/india-frankenstein-laptops},
langid = {american},
file = {/Users/Rosa/Zotero/storage/GXKJZE75/india-frankenstein-laptops.html}
}

1
run.sh Normal file
View File

@ -0,0 +1 @@
php -S localhost:8080

View File

@ -1,12 +1,12 @@
const dialog = document.querySelector("dialog");
const closeDialog = (e) => {
e.stopPropagation();
console.log("close")
dialog.close();
document.body.removeEventListener("click", closeDialog);
}
const showLightbox = (e) => {
e.preventDefault();
e.stopPropagation();
@ -18,7 +18,5 @@ const showLightbox = (e) => {
document.body.addEventListener("click", closeDialog, false);
}
document.querySelectorAll("article img").forEach((img) => {
console.log(img);
img.addEventListener("click", showLightbox);
})

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 897 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 946 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 445 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 840 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M74.88 150V12.5m.12 50 37.5-50M75 62.5l-37.5-50"/>
</svg>

After

Width:  |  Height:  |  Size: 200 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M49.5 150 50 50H12.5m87.25 100L100 50h37.5"/>
</svg>

After

Width:  |  Height:  |  Size: 195 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M50 150v-37.5L12.5 75 75 12.5 137.5 75 100 112.5V150"/>
</svg>

After

Width:  |  Height:  |  Size: 205 B

View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<g fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5">
<path d="M25 12.5h100s0 50-50 50-50-50-50-50Z"/>
<path d="M0 74.69h50V56.25m50 0V75h50"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 259 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M37.5 37.5H75l50-31.25v137.5L75 112.5H37.5v-75zm37.5 0v75M0 49.94h37.5M0 100h37.5"/>
</svg>

After

Width:  |  Height:  |  Size: 234 B

View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<g fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5">
<circle cx="75" cy="75" r="50"/>
<path d="M0 49.94h31.25M0 100h31.25M125 18.75v112.5"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 257 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M118.75 12.5v125S50 137.5 50 75s68.75-62.5 68.75-62.5ZM0 49.66l56.25.34M0 100.28l56.25-.28"/>
</svg>

After

Width:  |  Height:  |  Size: 243 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M0 74.5h150M25 50s25 12.5 50 12.5S125 50 125 50M25 100s25-12.5 50-12.5 50 12.5 50 12.5M75 87.5V150"/>
</svg>

After

Width:  |  Height:  |  Size: 251 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M0 74.97h65.5m84.5.28H84.5m0-31.25v62m-19-62v62"/>
</svg>

After

Width:  |  Height:  |  Size: 200 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M0 74.97h65.5m84.5.28H84.5m0-31.25v62m-19-62v62m65.75-56h-25m12.5-12.5v25"/>
</svg>

After

Width:  |  Height:  |  Size: 226 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M0 74.97h65.5m84.5.28H84.5m0-31.25v62m-19-62v62M25 104.25l98-57.5m8.25 15.75L112.5 31.25"/>
</svg>

After

Width:  |  Height:  |  Size: 241 B

View File

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M0 74.97h65.5m84.5.28H84.5m0-31.25v62m-19-62v62m-40.5.25 84.79-52.99"/>
<path d="M113.3 65.76 125 43.75l-24.91.87 13.21 21.14z"/>
</svg>

After

Width:  |  Height:  |  Size: 283 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M150 74.97H84.5M0 75.25h66.5M54 44s12.5 12.25 12.5 31S54 106 54 106m30.5-62v62"/>
</svg>

After

Width:  |  Height:  |  Size: 231 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M150 74.97H84.5M0 75.25h66.5M54 44s12.5 12.25 12.5 31S54 106 54 106m30.5-62v62m46.75-56h-25m12.5-12.5v25"/>
</svg>

After

Width:  |  Height:  |  Size: 257 B

View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="m100 75-50 31.25v-62.5L100 75zm0-34.25v68.5M50 75H0m100 0h50m-50-43.75 18.75-18.75"/>
<path d="m122.49 19.34 3.87-14.45-14.45 3.87 10.58 10.58z"/>
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="m118.75 50 18.75-18.75"/>
<path d="m141.24 38.09 3.87-14.45-14.45 3.87 10.58 10.58z"/>
</svg>

After

Width:  |  Height:  |  Size: 470 B

View File

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="m100 75-50 31.25v-62.5L100 75zm0-34.25v68.5M50 75H0m100 0h50M62.5 40.5V13.98"/>
<path d="M69.98 16.17 62.5 3.22l-7.48 12.95h14.96z"/>
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M87.5 40.5V13.98"/>
<path d="M94.98 16.17 87.5 3.22l-7.48 12.95h14.96z"/>
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M112.5 40.75v68.5"/>
</svg>

After

Width:  |  Height:  |  Size: 544 B

View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="m100 75-50 31.25v-62.5L100 75zm0-34.25v68.5M50 75H0m100 0h50m-12.5-43.75L118.75 50"/>
<path d="m115.01 43.16-3.87 14.45 14.45-3.87-10.58-10.58z"/>
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M118.75 12.5 100 31.25"/>
<path d="m96.26 24.41-3.87 14.45 14.45-3.87-10.58-10.58z"/>
</svg>

After

Width:  |  Height:  |  Size: 469 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M100 37.5v75m0-37.5L43.75 40.75v71.75M0 75h150"/>
</svg>

After

Width:  |  Height:  |  Size: 199 B

View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<g fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5">
<path d="m100 75-50 31.25v-62.5L100 75zm-50 0H0m100 0h50"/>
<path d="M87.5 97v12.5H100v-69h12.5V53"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 271 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="m100 75-50 31.25v-62.5L100 75zm0-34.25v68.5M50 75H0m100 0h50"/>
</svg>

After

Width:  |  Height:  |  Size: 213 B

View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<g fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5">
<path d="m100 75-50 31.25v-62.5L100 75zm-50 0H0m100 0h50"/>
<path d="M87.5 109.25H100v-68.5H87.5"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 269 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="m92.75 75-50 31.25v-62.5l50 31.25zm-50 0H0m108.25 0H150m-54.25 37.5v-75m12.5 75v-75"/>
</svg>

After

Width:  |  Height:  |  Size: 236 B

View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<g fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5">
<path d="m100 75-50 31.25v-62.5L100 75zm-50 0H0m100 0h50"/>
<path d="M112.5 109.5 100 100V50l-12.5-9.5"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 275 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M0 74.88 25 75m0-25h100v50H25zm100 25h25M43.75 50v50m62.5-50v50"/>
</svg>

After

Width:  |  Height:  |  Size: 216 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M0 75.25 25 75s0-25 25-25 25 25 25 25 0 25 25 25 25-25 25-25h25"/>
</svg>

After

Width:  |  Height:  |  Size: 216 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M0 74.88h150M25 50h100v50H25z"/>
</svg>

After

Width:  |  Height:  |  Size: 182 B

View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<g fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5">
<path d="M56.25 125 75 75h-.31V0"/>
<path d="m25 125 18.75-50h62.5L87.5 125"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 248 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M75 0v75m-50 0h100m-56.25 50h12.5M50 100h50"/>
</svg>

After

Width:  |  Height:  |  Size: 196 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M75 0v62.5m-50 0h100L75 125 25 62.5z"/>
</svg>

After

Width:  |  Height:  |  Size: 189 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M25 25v100l100-50L25 25zm0 25H0m125 25h25M0 100h25m9.5-47H53m-9.25-9.25v18.5M34.5 97H53"/>
</svg>

After

Width:  |  Height:  |  Size: 240 B

View File

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M25 12.5h100v125H25zM25 50H0m25 50H0m125-50h25m-25 50h25"/>
<path d="m111.57 53.9 2 1.29-1.36 3.16-2-1.44a4.78 4.78 0 0 1-4 2.34 5.08 5.08 0 0 1-4.48-2.46 12.52 12.52 0 0 1-1.73-6.91 12.5 12.5 0 0 1 1.62-6.88 5.15 5.15 0 0 1 8.79 0 12.5 12.5 0 0 1 1.59 6.88c0 3.18-.43 4.02-.43 4.02Zm-2.37-1.33a13.51 13.51 0 0 0 .24-2.69 9.25 9.25 0 0 0-.94-4.7 2.76 2.76 0 0 0-5 0 9.22 9.22 0 0 0-1 4.69 9.44 9.44 0 0 0 1 4.75 2.84 2.84 0 0 0 2.41 1.58 2.41 2.41 0 0 0 1.9-.85l-2-1.44 1.52-2.66m4.24 52.65 2 1.29-1.36 3.16-2-1.44a4.78 4.78 0 0 1-4 2.34 5.08 5.08 0 0 1-4.48-2.46 12.52 12.52 0 0 1-1.73-6.91 12.5 12.5 0 0 1 1.62-6.88 5.15 5.15 0 0 1 8.79 0 12.5 12.5 0 0 1 1.59 6.88c0 3.18-.43 4.02-.43 4.02Zm-2.37-1.33a13.51 13.51 0 0 0 .24-2.69 9.25 9.25 0 0 0-.94-4.7 2.76 2.76 0 0 0-5 0 9.22 9.22 0 0 0-1 4.69 9.44 9.44 0 0 0 1 4.75 2.84 2.84 0 0 0 2.41 1.58 2.41 2.41 0 0 0 1.9-.85l-2-1.44 1.52-2.66"/>
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M97 84.25h18.75"/>
<path d="M37.5 40.79H43a8.67 8.67 0 0 1 2.84.35 5 5 0 0 1 2.25 1.7 8.56 8.56 0 0 1 1.42 3 16.43 16.43 0 0 1 .49 4.35 14.62 14.62 0 0 1-.46 3.93A8.69 8.69 0 0 1 48 57.39a5.17 5.17 0 0 1-2.12 1.47 7.44 7.44 0 0 1-2.66.39H37.5Zm3 3.12v12.23h2.25a6.53 6.53 0 0 0 1.83-.14 2.53 2.53 0 0 0 1.21-.77 4.06 4.06 0 0 0 .79-1.78 14.31 14.31 0 0 0 .31-3.45 13.2 13.2 0 0 0-.31-3.29 4.48 4.48 0 0 0-.85-1.71 2.7 2.7 0 0 0-1.4-.87 10.82 10.82 0 0 0-2.47-.18Zm27.75-6.38 3.14-.34a4.57 4.57 0 0 0 1.15 2.63 3.23 3.23 0 0 0 2.34.84 3.3 3.3 0 0 0 2.35-.75 2.32 2.32 0 0 0 .77-1.75 1.79 1.79 0 0 0-.33-1.09 2.7 2.7 0 0 0-1.16-.79c-.38-.14-1.24-.41-2.59-.79a8.24 8.24 0 0 1-3.62-1.79 5 5 0 0 1-1.47-3.64 5.1 5.1 0 0 1 .69-2.59 4.49 4.49 0 0 1 2-1.84 7.19 7.19 0 0 1 3.14-.63 6.19 6.19 0 0 1 4.53 1.5 5.55 5.55 0 0 1 1.6 4l-3.23.16a3.2 3.2 0 0 0-.89-2 2.94 2.94 0 0 0-2-.61 3.39 3.39 0 0 0-2.2.65 1.37 1.37 0 0 0-.52 1.13 1.47 1.47 0 0 0 .48 1.1 7.91 7.91 0 0 0 3 1.21 14.32 14.32 0 0 1 3.48 1.3 4.74 4.74 0 0 1 1.77 1.84 5.94 5.94 0 0 1 .64 2.89 5.86 5.86 0 0 1-.76 2.92 4.8 4.8 0 0 1-2.16 2 8.12 8.12 0 0 1-3.48.66 6.39 6.39 0 0 1-4.66-1.59 7.31 7.31 0 0 1-2.01-4.63Zm.5 87.47v-18.46h5.91a7.88 7.88 0 0 1 3.24.49 3.65 3.65 0 0 1 1.61 1.77 6.62 6.62 0 0 1 .61 2.91 6 6 0 0 1-.92 3.43 4 4 0 0 1-2.75 1.71A7.06 7.06 0 0 1 78 118.4a21.07 21.07 0 0 1 1.6 3l1.7 3.6h-3.41l-2-4a25.94 25.94 0 0 0-1.48-2.71 2.14 2.14 0 0 0-.84-.77 3.53 3.53 0 0 0-1.41-.21h-.57V125Zm2.81-10.66h2.07a8.35 8.35 0 0 0 2.53-.22 1.64 1.64 0 0 0 .78-.78 3 3 0 0 0 .29-1.39 2.69 2.69 0 0 0-.38-1.5 1.61 1.61 0 0 0-1-.73 18.74 18.74 0 0 0-2-.06h-2.29Z"/>
<path fill="none" stroke="#000" stroke-width="5" d="M75.28 0v12.5M74.72 150v-12.5"/>
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M25 87.5 50 100l-25 12.5v-25z"/>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M25 12.5h100v125H25zM25 50H0m25 50H0m125-50h25m-25 50h25"/>
<path d="m111.57 53.9 2 1.29-1.36 3.16-2-1.44a4.78 4.78 0 0 1-4 2.34 5.08 5.08 0 0 1-4.48-2.46 12.52 12.52 0 0 1-1.73-6.91 12.5 12.5 0 0 1 1.62-6.88 5.15 5.15 0 0 1 8.79 0 12.5 12.5 0 0 1 1.59 6.88c0 3.18-.43 4.02-.43 4.02Zm-2.37-1.33a13.51 13.51 0 0 0 .24-2.69 9.25 9.25 0 0 0-.94-4.7 2.76 2.76 0 0 0-5 0 9.22 9.22 0 0 0-1 4.69 9.44 9.44 0 0 0 1 4.75 2.84 2.84 0 0 0 2.41 1.58 2.41 2.41 0 0 0 1.9-.85l-2-1.44 1.52-2.66m4.24 52.65 2 1.29-1.36 3.16-2-1.44a4.78 4.78 0 0 1-4 2.34 5.08 5.08 0 0 1-4.48-2.46 12.52 12.52 0 0 1-1.73-6.91 12.5 12.5 0 0 1 1.62-6.88 5.15 5.15 0 0 1 8.79 0 12.5 12.5 0 0 1 1.59 6.88c0 3.18-.43 4.02-.43 4.02Zm-2.37-1.33a13.51 13.51 0 0 0 .24-2.69 9.25 9.25 0 0 0-.94-4.7 2.76 2.76 0 0 0-5 0 9.22 9.22 0 0 0-1 4.69 9.44 9.44 0 0 0 1 4.75 2.84 2.84 0 0 0 2.41 1.58 2.41 2.41 0 0 0 1.9-.85l-2-1.44 1.52-2.66"/>
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M97 84.25h18.75M25 62.5 50 75 25 87.5v-25zM0 74.53h25.06"/>
<path d="M46.13 40.5h3.93v11.67a11.4 11.4 0 0 1-.42 3.52 5.12 5.12 0 0 1-2.08 2.59 7.23 7.23 0 0 1-4 1 6.11 6.11 0 0 1-4.46-1.53c-1-1-1.56-3.75-1.57-5.72h3.72a9.46 9.46 0 0 0 .49 3.07 2.16 2.16 0 0 0 1.95 1 2.21 2.21 0 0 0 1.86-.71 5.29 5.29 0 0 0 .55-3ZM37.56 109V90.5h2.8v8.2L46 90.5h3.76l-5.22 7.19L50.06 109h-3.62l-3.81-8.66-2.27 3.08V109Z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M25 12.5h100v125H25zM25 50H0m25 50H0m125-50h25m-25 50h25"/>
<path d="m111.57 53.9 2 1.29-1.36 3.16-2-1.44a4.78 4.78 0 0 1-4 2.34 5.08 5.08 0 0 1-4.48-2.46 12.52 12.52 0 0 1-1.73-6.91 12.5 12.5 0 0 1 1.62-6.88 5.15 5.15 0 0 1 8.79 0 12.5 12.5 0 0 1 1.59 6.88c0 3.18-.43 4.02-.43 4.02Zm-2.37-1.33a13.51 13.51 0 0 0 .24-2.69 9.25 9.25 0 0 0-.94-4.7 2.76 2.76 0 0 0-5 0 9.22 9.22 0 0 0-1 4.69 9.44 9.44 0 0 0 1 4.75 2.84 2.84 0 0 0 2.41 1.58 2.41 2.41 0 0 0 1.9-.85l-2-1.44 1.52-2.66m4.24 52.65 2 1.29-1.36 3.16-2-1.44a4.78 4.78 0 0 1-4 2.34 5.08 5.08 0 0 1-4.48-2.46 12.52 12.52 0 0 1-1.73-6.91 12.5 12.5 0 0 1 1.62-6.88 5.15 5.15 0 0 1 8.79 0 12.5 12.5 0 0 1 1.59 6.88c0 3.18-.43 4.02-.43 4.02Zm-2.37-1.33a13.51 13.51 0 0 0 .24-2.69 9.25 9.25 0 0 0-.94-4.7 2.76 2.76 0 0 0-5 0 9.22 9.22 0 0 0-1 4.69 9.44 9.44 0 0 0 1 4.75 2.84 2.84 0 0 0 2.41 1.58 2.41 2.41 0 0 0 1.9-.85l-2-1.44 1.52-2.66"/>
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M97 84.25h18.75M25 87.5 50 100l-25 12.5v-25z"/>
<path d="M42.17 59.25V43.67H37.5V40.5H50v3.17h-4.66v15.58Z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M25 12.5h100v125H25zM25 50H0m25 50H0m125-50h25m-25 50h25"/>
<path d="m111.57 53.9 2 1.29-1.36 3.16-2-1.44a4.78 4.78 0 0 1-4 2.34 5.08 5.08 0 0 1-4.48-2.46 12.52 12.52 0 0 1-1.73-6.91 12.5 12.5 0 0 1 1.62-6.88 5.15 5.15 0 0 1 8.79 0 12.5 12.5 0 0 1 1.59 6.88c0 3.18-.43 4.02-.43 4.02Zm-2.37-1.33a13.51 13.51 0 0 0 .24-2.69 9.25 9.25 0 0 0-.94-4.7 2.76 2.76 0 0 0-5 0 9.22 9.22 0 0 0-1 4.69 9.44 9.44 0 0 0 1 4.75 2.84 2.84 0 0 0 2.41 1.58 2.41 2.41 0 0 0 1.9-.85l-2-1.44 1.52-2.66m4.24 52.65 2 1.29-1.36 3.16-2-1.44a4.78 4.78 0 0 1-4 2.34 5.08 5.08 0 0 1-4.48-2.46 12.52 12.52 0 0 1-1.73-6.91 12.5 12.5 0 0 1 1.62-6.88 5.15 5.15 0 0 1 8.79 0 12.5 12.5 0 0 1 1.59 6.88c0 3.18-.43 4.02-.43 4.02Zm-2.37-1.33a13.51 13.51 0 0 0 .24-2.69 9.25 9.25 0 0 0-.94-4.7 2.76 2.76 0 0 0-5 0 9.22 9.22 0 0 0-1 4.69 9.44 9.44 0 0 0 1 4.75 2.84 2.84 0 0 0 2.41 1.58 2.41 2.41 0 0 0 1.9-.85l-2-1.44 1.52-2.66"/>
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M97 84.25h18.75"/>
<path d="M37.5 109.21V90.75h12.19v3.12h-8.87V98h8.25v3.11h-8.25v5H50v3.11Zm0-68.42H43a8.67 8.67 0 0 1 2.84.35 5 5 0 0 1 2.25 1.7 8.56 8.56 0 0 1 1.42 3 16.43 16.43 0 0 1 .49 4.35 14.62 14.62 0 0 1-.46 3.93A8.69 8.69 0 0 1 48 57.39a5.17 5.17 0 0 1-2.12 1.47 7.44 7.44 0 0 1-2.66.39H37.5Zm3 3.12v12.23h2.25a6.53 6.53 0 0 0 1.83-.14 2.53 2.53 0 0 0 1.21-.77 4.06 4.06 0 0 0 .79-1.78 14.31 14.31 0 0 0 .31-3.45 13.2 13.2 0 0 0-.31-3.29 4.48 4.48 0 0 0-.85-1.71 2.7 2.7 0 0 0-1.4-.87 10.82 10.82 0 0 0-2.47-.18Z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M25 12.5h100v125H25zM25 50H0m25 50H0m125-50h25m-25 50h25"/>
<path d="m111.57 53.9 2 1.29-1.36 3.16-2-1.44a4.78 4.78 0 0 1-4 2.34 5.08 5.08 0 0 1-4.48-2.46 12.52 12.52 0 0 1-1.73-6.91 12.5 12.5 0 0 1 1.62-6.88 5.15 5.15 0 0 1 8.79 0 12.5 12.5 0 0 1 1.59 6.88c0 3.18-.43 4.02-.43 4.02Zm-2.37-1.33a13.51 13.51 0 0 0 .24-2.69 9.25 9.25 0 0 0-.94-4.7 2.76 2.76 0 0 0-5 0 9.22 9.22 0 0 0-1 4.69 9.44 9.44 0 0 0 1 4.75 2.84 2.84 0 0 0 2.41 1.58 2.41 2.41 0 0 0 1.9-.85l-2-1.44 1.52-2.66M37 53.05l3.14-.35a4.54 4.54 0 0 0 1.15 2.63 3.23 3.23 0 0 0 2.34.84 3.3 3.3 0 0 0 2.37-.75 2.32 2.32 0 0 0 .79-1.74 1.79 1.79 0 0 0-.33-1.09 2.7 2.7 0 0 0-1.16-.79c-.38-.14-1.24-.41-2.59-.79a8.35 8.35 0 0 1-3.64-1.78 5 5 0 0 1-1.47-3.64 5.09 5.09 0 0 1 .67-2.59 4.47 4.47 0 0 1 2-1.83 7.19 7.19 0 0 1 3.15-.63A6.19 6.19 0 0 1 47.94 42a5.54 5.54 0 0 1 1.6 4l-3.23.16a3.15 3.15 0 0 0-.89-2 2.94 2.94 0 0 0-2-.61 3.39 3.39 0 0 0-2.2.65 1.35 1.35 0 0 0-.52 1.12 1.46 1.46 0 0 0 .48 1.1 7.91 7.91 0 0 0 3 1.21A14.32 14.32 0 0 1 47.59 49a4.67 4.67 0 0 1 1.77 1.84 6.32 6.32 0 0 1-.12 5.78 4.74 4.74 0 0 1-2.16 2 8.12 8.12 0 0 1-3.48.66 6.43 6.43 0 0 1-4.66-1.58A7.3 7.3 0 0 1 37 53.05Zm.5 56.2V90.79h5.91a7.88 7.88 0 0 1 3.24.49 3.65 3.65 0 0 1 1.61 1.77 6.62 6.62 0 0 1 .61 2.95 6 6 0 0 1-.87 3.39 4 4 0 0 1-2.75 1.71 7.06 7.06 0 0 1 1.5 1.55 21.07 21.07 0 0 1 1.6 3l1.7 3.6h-3.41l-2-4a25.94 25.94 0 0 0-1.48-2.71 2.14 2.14 0 0 0-.84-.77 3.53 3.53 0 0 0-1.41-.21h-.57v7.71Zm2.81-10.66h2.07a8.35 8.35 0 0 0 2.53-.22 1.64 1.64 0 0 0 .78-.78A3 3 0 0 0 46 96.2a2.69 2.69 0 0 0-.38-1.5 1.61 1.61 0 0 0-1.07-.7 18.74 18.74 0 0 0-2-.06h-2.24Zm71.26 5.31 2 1.29-1.36 3.16-2-1.44a4.78 4.78 0 0 1-4 2.34 5.08 5.08 0 0 1-4.48-2.46 12.52 12.52 0 0 1-1.73-6.91 12.5 12.5 0 0 1 1.62-6.88 5.15 5.15 0 0 1 8.79 0 12.5 12.5 0 0 1 1.59 6.88c0 3.18-.43 4.02-.43 4.02Zm-2.37-1.33a13.51 13.51 0 0 0 .24-2.69 9.25 9.25 0 0 0-.94-4.7 2.76 2.76 0 0 0-5 0 9.22 9.22 0 0 0-1 4.69 9.44 9.44 0 0 0 1 4.75 2.84 2.84 0 0 0 2.41 1.58 2.41 2.41 0 0 0 1.9-.85l-2-1.44 1.52-2.66"/>
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M97 84.25h18.75M25 75H0"/>
<path d="M37.48 84.31V65.85h12.19V69H40.8v4.09h8.25v3.11H40.8v5H50v3.11Z"/>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M25 12.5h100v125H25zM25 50H0m25 50H0m125-50h25m-25 50h25"/>
<path d="m111.57 53.9 2 1.29-1.36 3.16-2-1.44a4.78 4.78 0 0 1-4 2.34 5.08 5.08 0 0 1-4.48-2.46 12.52 12.52 0 0 1-1.73-6.91 12.5 12.5 0 0 1 1.62-6.88 5.15 5.15 0 0 1 8.79 0 12.5 12.5 0 0 1 1.59 6.88c0 3.18-.43 4.02-.43 4.02Zm-2.37-1.33a13.51 13.51 0 0 0 .24-2.69 9.25 9.25 0 0 0-.94-4.7 2.76 2.76 0 0 0-5 0 9.22 9.22 0 0 0-1 4.69 9.44 9.44 0 0 0 1 4.75 2.84 2.84 0 0 0 2.41 1.58 2.41 2.41 0 0 0 1.9-.85l-2-1.44 1.52-2.66M37 53l3.14-.34a4.57 4.57 0 0 0 1.15 2.63 3.23 3.23 0 0 0 2.34.84 3.3 3.3 0 0 0 2.37-.72 2.32 2.32 0 0 0 .79-1.75 1.79 1.79 0 0 0-.33-1.09 2.7 2.7 0 0 0-1.16-.79c-.38-.14-1.24-.41-2.59-.79a8.24 8.24 0 0 1-3.64-1.79 5 5 0 0 1-1.47-3.64 5.1 5.1 0 0 1 .67-2.56 4.49 4.49 0 0 1 2-1.84 7.19 7.19 0 0 1 3.15-.63A6.19 6.19 0 0 1 47.94 42a5.55 5.55 0 0 1 1.6 4l-3.23.16a3.2 3.2 0 0 0-.89-2 2.94 2.94 0 0 0-2-.61 3.39 3.39 0 0 0-2.2.65 1.37 1.37 0 0 0-.52 1.13 1.47 1.47 0 0 0 .48 1.1 7.91 7.91 0 0 0 3 1.21 14.32 14.32 0 0 1 3.48 1.3 4.74 4.74 0 0 1 1.77 1.84 5.94 5.94 0 0 1 .57 2.87 5.86 5.86 0 0 1-.76 2.92 4.8 4.8 0 0 1-2.16 2 8.12 8.12 0 0 1-3.48.66 6.39 6.39 0 0 1-4.66-1.59A7.31 7.31 0 0 1 37 53Z"/>
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M34.5 34.25h18.75"/>
<path d="M37.5 109.25V90.79h5.91a7.88 7.88 0 0 1 3.24.49 3.65 3.65 0 0 1 1.61 1.77 6.62 6.62 0 0 1 .61 2.95 6 6 0 0 1-.87 3.39 4 4 0 0 1-2.75 1.71 7.06 7.06 0 0 1 1.5 1.55 21.07 21.07 0 0 1 1.6 3l1.7 3.6h-3.41l-2-4a25.94 25.94 0 0 0-1.48-2.71 2.14 2.14 0 0 0-.84-.77 3.53 3.53 0 0 0-1.41-.21h-.57v7.71Zm2.81-10.66h2.07a8.35 8.35 0 0 0 2.53-.22 1.64 1.64 0 0 0 .78-.78A3 3 0 0 0 46 96.2a2.69 2.69 0 0 0-.38-1.5 1.61 1.61 0 0 0-1.07-.7 18.74 18.74 0 0 0-2-.06h-2.24Z"/>
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M34.5 84.25h18.75"/>
<path d="m111.57 103.9 2 1.29-1.36 3.16-2-1.44a4.78 4.78 0 0 1-4 2.34 5.08 5.08 0 0 1-4.48-2.46 12.52 12.52 0 0 1-1.73-6.91 12.5 12.5 0 0 1 1.62-6.88 5.15 5.15 0 0 1 8.79 0 12.5 12.5 0 0 1 1.59 6.88c0 3.18-.43 4.02-.43 4.02Zm-2.37-1.33a13.51 13.51 0 0 0 .24-2.69 9.25 9.25 0 0 0-.94-4.7 2.76 2.76 0 0 0-5 0 9.22 9.22 0 0 0-1 4.69 9.44 9.44 0 0 0 1 4.75 2.84 2.84 0 0 0 2.41 1.58 2.41 2.41 0 0 0 1.9-.85l-2-1.44 1.52-2.66"/>
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M97 84.25h18.75"/>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M31.25 37.5h25c18.75 0 56.25 0 56.25 37.5S75 112.5 56.25 112.5h-25ZM0 49.81h31.25M0 100.06h31.25M112.5 75H150"/>
</svg>

After

Width:  |  Height:  |  Size: 262 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M25 37.5v75L112.5 75 25 37.5zM25 75H0m112.5 0H150"/>
</svg>

After

Width:  |  Height:  |  Size: 202 B

View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<g fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5">
<path d="M22 37.5v75L112.5 75 22 37.5zM22 75H0m137.75 0H150"/>
<circle cx="128.13" cy="74.88" r="9.38"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 274 B

View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<g fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5">
<path d="M31.25 37.5h25c18.75 0 56.25 0 56.25 37.5S75 112.5 56.25 112.5h-25ZM0 49.81h31.25M0 100.06h31.25M134.5 75H150"/>
<circle cx="124.88" cy="74.88" r="9.38"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 333 B

View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<g fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5">
<path d="M31.25 37.5h25c37.5 0 56.25 37.5 56.25 37.5s-18.75 37.5-56.25 37.5h-25s12.5-18.75 12.5-37.5-12.5-37.5-12.5-37.5ZM0 49.81h37.5M0 100.06h37.5m97-24.93H150"/>
<circle cx="124.88" cy="75" r="9.38"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 373 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M31.25 37.5h25c37.5 0 56.25 37.5 56.25 37.5s-18.75 37.5-56.25 37.5h-25s12.5-18.75 12.5-37.5-12.5-37.5-12.5-37.5ZM0 49.81h37.5M0 100.06h37.5m75-25.06H150"/>
</svg>

After

Width:  |  Height:  |  Size: 305 B

View File

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<g fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5">
<path d="M31.25 37.5h25c37.5 0 56.25 37.5 56.25 37.5s-18.75 37.5-56.25 37.5h-25s12.5-18.75 12.5-37.5-12.5-37.5-12.5-37.5ZM0 49.81h37.5M0 100.06h37.5m97-24.93H150"/>
<circle cx="124.88" cy="75" r="9.38"/>
<path d="M18.75 112.5s12.5-18.75 12.5-37.5-12.5-37.95-12.5-37.95"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 449 B

View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<g fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5">
<path d="M31.25 37.5h25c37.5 0 56.25 37.5 56.25 37.5s-18.75 37.5-56.25 37.5h-25s12.5-18.75 12.5-37.5-12.5-37.5-12.5-37.5ZM0 49.81h37.5M0 100.06h37.5m75-25.06H150"/>
<path d="M18.75 113s12.5-18.75 12.5-37.5-12.5-38-12.5-38"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 394 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M25 25v100l100-50L25 25zm0 25H0m125 25h25M0 100h25m9.5-47H53m-9.25-9.25v18.5M34.5 97H53M74.69 0v50m.37 100v-50"/>
</svg>

After

Width:  |  Height:  |  Size: 263 B

View File

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<g fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5">
<path d="M19 25v100l100-50L19 25zm0 50H0m137.5 0H150"/>
<path d="M31.5 65.75h31.25V84.5"/>
<path d="M78.5 84.5H47V65.75"/>
<circle cx="131.5" cy="75" r="6.25"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 346 B

View File

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<g fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5">
<path d="M25 25v100l100-50L25 25zm0 50H0m125 0h25"/>
<path d="M37.5 84.5h31.25V65.75"/>
<path d="M84.5 65.75H53V84.5"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 297 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-linejoin="round" stroke-width="5" d="M0 75.13h12.5s0-18.82 15.63-18.82S43.75 75 43.75 75s0-18.75 15.63-18.75S75 75 75 75s0-18.75 15.63-18.75S106.25 75 106.25 75s0-18.75 15.63-18.75S137.5 75 137.5 75H150"/>
</svg>

After

Width:  |  Height:  |  Size: 319 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="m78.35 19.2 43.3 25-50 86.6-43.3-25zM0 75.13 45.75 75M150 75h-45.75"/>
</svg>

After

Width:  |  Height:  |  Size: 220 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-linejoin="round" stroke-width="5" d="M0 75.13h12.5s0-18.82 15.63-18.82S43.75 75 43.75 75s0-18.75 15.63-18.75S75 75 75 75s0-18.75 15.63-18.75S106.25 75 106.25 75s0-18.75 15.63-18.75S137.5 75 137.5 75H150M12.5 43.75h125m-125-12.5h125"/>
</svg>

After

Width:  |  Height:  |  Size: 348 B

View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<g fill="none" stroke="#000" stroke-width="5">
<path stroke-linejoin="round" d="M0 75.13h12.5s0-18.82 15.63-18.82S43.75 75 43.75 75s0-18.75 15.63-18.75S75 75 75 75s0-18.75 15.63-18.75S106.25 75 106.25 75s0-18.75 15.63-18.75S137.5 75 137.5 75H150"/>
<path stroke-miterlimit="10" d="M75 75v75m31.25-75v75"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 405 B

View File

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-linejoin="round" stroke-width="5" d="M0 75.13h12.5s0-18.82 15.63-18.82S43.75 75 43.75 75s0-18.75 15.63-18.75S75 75 75 75s0-18.75 15.63-18.75S106.25 75 106.25 75s0-18.75 15.63-18.75S137.5 75 137.5 75H150"/>
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="m25 100 85.65-64.24"/>
<path d="M115.21 47.92 125 25l-24.75 2.98 14.96 19.94z"/>
</svg>

After

Width:  |  Height:  |  Size: 483 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="m25 75.06 37.5-37.5H125v75H62.5L25 75.06zm-25-.37h25m100 .37h25"/>
</svg>

After

Width:  |  Height:  |  Size: 216 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M50 25h50v100H50zM37.5 43.75v62.5m75-62.5v62.5M0 74.63h37.5m75 .37H150"/>
</svg>

After

Width:  |  Height:  |  Size: 223 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="m125 75.06-37.5-37.5H25v75h62.5l37.5-37.5zM0 74.69h25m100 .37h25"/>
</svg>

After

Width:  |  Height:  |  Size: 217 B

View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<g fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5">
<circle cx="75" cy="75" r="50"/>
<path d="M0 75h50s0-25 25-25 25 25 25 25h50"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 249 B

View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<g fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5">
<circle cx="75" cy="75" r="50"/>
<path d="M0 75.25h25M125 75h25M39.5 39.5l71 71m-71 0 71-71"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 264 B

View File

@ -0,0 +1,18 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M25 62.5h25l-12.5 25-12.5-25zm-3 25h31M0 24.56l37.5.44v37.5M0 124.69l37.5.31V87.5M93.75 50v50M150 24.94l-37.5.06v25L93.75 62.5M150 124.88l-37.5.12v-25L93.75 87.5"/>
<path d="m106.58 87.84-7.67 11.27 13.62.91-5.95-12.18z"/>
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M58.44 62.5h18.3"/>
<path d="M74.55 69.98 87.5 62.5l-12.95-7.48v14.96z"/>
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M58.44 87.5h18.3"/>
<path d="M74.55 94.98 87.5 87.5l-12.95-7.48v14.96z"/>
<g fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5">
<path d="M137.5 138.75v5h-5"/>
<path stroke-dasharray="10.45 10.45" d="M122.05 143.75H22.73"/>
<path d="M17.5 143.75h-5v-5"/>
<path stroke-dasharray="9.81 9.81" d="M12.5 128.94V16.15"/>
<path d="M12.5 11.25v-5h5"/>
<path stroke-dasharray="10.45 10.45" d="M27.95 6.25h99.32"/>
<path d="M132.5 6.25h5v5"/>
<path stroke-dasharray="9.81 9.81" d="M137.5 21.06v112.79"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<g fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5">
<circle cx="75" cy="75" r="18.75"/>
<path d="M0 75.19h56.25m37.5-.19H150"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 245 B

View File

@ -0,0 +1,14 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M25 12.5h100v25H25zM125 25h25M0 24.81h25M0 99.69h25"/>
<circle cx="31.25" cy="100" r="6.25" fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5"/>
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M150 75.63H93.75"/>
<path d="M93.75 78h12.5L100 87.5 93.75 78z"/>
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="m37.25 104 75.25 8.5"/>
<g fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5">
<path d="M74.88 37.5V40"/>
<path stroke-dasharray="4.9 4.9" d="M74.88 44.9v56.4"/>
<path d="M74.88 103.75v2.5"/>
</g>
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M150 124.38H93.75"/>
<path d="M93.75 122h12.5l-6.25-9.5-6.25 9.5z"/>
</svg>

After

Width:  |  Height:  |  Size: 937 B

View File

@ -0,0 +1,11 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M25 37.5h100v25H25zM125 50h25M0 49.81h25m125 50.07H93.75M0 99.69h25"/>
<circle cx="31.25" cy="100" r="6.25" fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5"/>
<path d="M93.75 102.25h12.5l-6.25 9.5-6.25-9.5z"/>
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="m37.25 102 75.25 10.5"/>
<g fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5">
<path d="M75 62.5V65"/>
<path stroke-dasharray="5.5 5.5" d="M75 70.5v30.25"/>
<path d="M75 103.5v2.5"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 699 B

View File

@ -0,0 +1,11 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M25 37.5h100v25H25zM125 50h25M0 49.81h25m125 50.07H93.75M0 99.69h25"/>
<circle cx="31.25" cy="100" r="6.25" fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5"/>
<path d="M93.75 102.25h12.5l-6.25 9.5-6.25-9.5z"/>
<path fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5" d="M37.25 104 100 137.5"/>
<g fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5">
<path d="M74.88 62.5V65"/>
<path stroke-dasharray="5 5" d="M74.88 70v47.5"/>
<path d="M74.88 120v2.5"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 698 B

View File

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<g fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5">
<path d="M62.5 6.25h25v37.5h-25zm0 18.75H0m150 0H87.5M0 99.88l50-.13 62.5 18.75"/>
<path stroke-dasharray="5" d="M75 43.75v62.5"/>
<path d="M100 106v18.75h50M150 75h-50"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 349 B

View File

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<g fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5">
<path d="M62.5 31.25h25v37.5h-25zm0 18.75H0m150 0H87.5M0 99.88l50 .12 62.5 12.5"/>
<path stroke-dasharray="5" d="M75 68.75v37.5"/>
<path d="M100 118.75V100h50"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 339 B

View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<g fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="5">
<path d="M62.5 31.25h25v37.5h-25zm0 18.75H0m150 0H87.5M0 99.88l50 .12 50-18.75m0 18.75h50"/>
<path stroke-dasharray="5" d="M75 68.75V87.5"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 310 B

View File

@ -0,0 +1,18 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<g fill="none" stroke="#000" stroke-width="5">
<path stroke-linejoin="round" d="M0 25h12.5s0 18.81 15.63 18.81 15.62-18.68 15.62-18.68 0 18.75 15.63 18.75S75 25.13 75 25.13s0 18.75 15.63 18.75 15.62-18.75 15.62-18.75 0 18.75 15.63 18.75 15.62-18.75 15.62-18.75H150M12.5 56.25h125"/>
<g stroke-miterlimit="10">
<circle cx="37.5" cy="99" r="6.25"/>
<path d="M0 99.06h31.25"/>
</g>
<g stroke-miterlimit="10">
<circle cx="112.5" cy="75" r="6.25"/>
<path d="M150 74.94h-31.25"/>
</g>
<path stroke-miterlimit="10" d="m43.75 102.25 87.5 16.5"/>
<g stroke-miterlimit="10">
<circle cx="112.5" cy="125" r="6.25"/>
<path d="M150 124.94h-31.25"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 859 B

View File

@ -0,0 +1,11 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<g fill="none" stroke="#000" stroke-width="5">
<path stroke-linejoin="round" d="M0 25h12.5s0 18.81 15.63 18.81 15.62-18.68 15.62-18.68 0 18.75 15.63 18.75S75 25.13 75 25.13s0 18.75 15.63 18.75 15.62-18.75 15.62-18.75 0 18.75 15.63 18.75 15.62-18.75 15.62-18.75H150M12.5 56.25h125"/>
<g stroke-miterlimit="10">
<circle cx="37.5" cy="99" r="6.25"/>
<path d="M0 99.06h31.25"/>
<circle cx="112.5" cy="99" r="6.25"/>
<path d="M150 98.94h-31.25m-75 3.31 81.25 4"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 619 B

View File

@ -0,0 +1,11 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150">
<g fill="none" stroke="#000" stroke-width="5">
<path stroke-linejoin="round" d="M0 25h12.5s0 18.81 15.63 18.81 15.62-18.68 15.62-18.68 0 18.75 15.63 18.75S75 25.13 75 25.13s0 18.75 15.63 18.75 15.62-18.75 15.62-18.75 0 18.75 15.63 18.75 15.62-18.75 15.62-18.75H150M12.5 56.25h125"/>
<g stroke-miterlimit="10">
<circle cx="37.5" cy="99" r="6.25"/>
<path d="M0 99.06h31.25"/>
<circle cx="112.5" cy="99" r="6.25"/>
<path d="M150 98.94h-31.25m-75 3.31 81.25 29"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 620 B

Some files were not shown because too many files have changed in this diff Show More