diff --git a/README.md b/README.md index 445b5d3..6a1adc9 100644 --- a/README.md +++ b/README.md @@ -69,4 +69,5 @@ At the moment, the `src/assets` directory is copied to the `dist` folder, to app - [ ] Export to PDF with zine layout - [ ] last edited date - [ ] Direct link to the markdown file in git? -- [ ] Markdown page breaks \ No newline at end of file +- [ ] Markdown page breaks +- [ ] Cache issue with CSS files. \ No newline at end of file diff --git a/app.py b/app.py index aa6f3ad..84d9bc0 100644 --- a/app.py +++ b/app.py @@ -2,6 +2,8 @@ import os from pathlib import Path import shutil import csv +import re +import datetime from jinja2 import Environment, PackageLoader, select_autoescape import frontmatter @@ -22,11 +24,37 @@ CONTENT_D = os.path.abspath("src/content") OUTPUT_D = "dist" documents = {} + +def showlist(param): + template = env.select_template(["snippets/show-list.jinja"]) + html = template.render(documents=documents, type=param.strip()) + + return html + + def slugify_filter(value): return slugify(value) -env.filters["slugify"] = slugify_filter +def shortcode_filter(value): + shortcode_callbacks = { + "showlist": showlist + } + + def shortcode_replacer(match): + shortcode_name = match.group(1).strip() + param = match.group(2).strip() + + if shortcode_name in shortcode_callbacks: + return shortcode_callbacks[shortcode_name](param) + + return match.group(0) + + pattern = re.compile(r"{{\s*(\w+)\s+([^{}]+?)\s*}}") + return pattern.sub(shortcode_replacer, value) + +env.filters["shortcode"] = shortcode_filter +env.filters["slugify"] = slugify_filter def render_single_file(template, page, path, dist): html = template.render(documents=documents, page=page) @@ -41,8 +69,11 @@ def render_single_file(template, page, path, dist): def get_page_data(path): filename = Path(path).stem + page = frontmatter.load(path) page['slug'] = slugify(filename) + page.filename = filename + page.body = markdown.markdown(page.content, extensions=['def_list', 'footnotes', markdown_include]) return page @@ -79,12 +110,14 @@ def preload_documents(): elif Path(path).suffix == '.md': documents[Path(path).stem] = get_page_data(path) + def copy_assets(): if os.path.exists("dist/assets"): shutil.rmtree("dist/assets") shutil.copytree("src/assets", "dist/assets") + def get_inventory(): with open("src/content/component-inventory.csv") as f: @@ -92,6 +125,7 @@ def get_inventory(): for line in csv.DictReader(f, fieldnames=('ID', 'Name', 'Value', 'Type', 'Date', 'Where')): documents['inventory'].append(line) + def main(): get_inventory() preload_documents() diff --git a/src/assets/apple-touch-icon.png b/src/assets/apple-touch-icon.png new file mode 100644 index 0000000..42573c9 Binary files /dev/null and b/src/assets/apple-touch-icon.png differ diff --git a/src/assets/components/salvaged-resistors.png b/src/assets/components/salvaged-resistors.png new file mode 100644 index 0000000..050a237 Binary files /dev/null and b/src/assets/components/salvaged-resistors.png differ diff --git a/src/assets/components/salvaged-resistors.webp b/src/assets/components/salvaged-resistors.webp new file mode 100644 index 0000000..7bf4fe5 Binary files /dev/null and b/src/assets/components/salvaged-resistors.webp differ diff --git a/src/assets/favicon-16x16.png b/src/assets/favicon-16x16.png new file mode 100644 index 0000000..425a36e Binary files /dev/null and b/src/assets/favicon-16x16.png differ diff --git a/src/assets/favicon-32x32.png b/src/assets/favicon-32x32.png new file mode 100644 index 0000000..bb73c72 Binary files /dev/null and b/src/assets/favicon-32x32.png differ diff --git a/src/assets/favicon.ico b/src/assets/favicon.ico new file mode 100644 index 0000000..e4dee82 Binary files /dev/null and b/src/assets/favicon.ico differ diff --git a/src/assets/pwa-192x192.png b/src/assets/pwa-192x192.png new file mode 100644 index 0000000..e51abb9 Binary files /dev/null and b/src/assets/pwa-192x192.png differ diff --git a/src/assets/pwa-512x512.png b/src/assets/pwa-512x512.png new file mode 100644 index 0000000..3f25222 Binary files /dev/null and b/src/assets/pwa-512x512.png differ diff --git a/src/assets/pwa-maskable-192x192.png b/src/assets/pwa-maskable-192x192.png new file mode 100644 index 0000000..7365443 Binary files /dev/null and b/src/assets/pwa-maskable-192x192.png differ diff --git a/src/assets/pwa-maskable-512x512.png b/src/assets/pwa-maskable-512x512.png new file mode 100644 index 0000000..7f6b692 Binary files /dev/null and b/src/assets/pwa-maskable-512x512.png differ diff --git a/src/assets/reel-to-reel-recorder.jpeg b/src/assets/reel-to-reel-recorder.jpeg new file mode 100644 index 0000000..bbadc2d Binary files /dev/null and b/src/assets/reel-to-reel-recorder.jpeg differ diff --git a/src/assets/style.css b/src/assets/style.css index 75b4025..5bbe959 100644 --- a/src/assets/style.css +++ b/src/assets/style.css @@ -2,25 +2,41 @@ box-sizing: border-box; } -body, html { +:root { + --background: floralwhite; + --text: black; + --accent: orange; + font-size: 14px; +} + +body, +html { margin: 0 0; padding: 0 0; width: 100%; height: 100%; } +header { + font-family: monospace; +} + +@keyframes cursor-animate { + from { + cursor: url('data:image/svg+xml;utf8,'), + auto; + } + to { + cursor: url('data:image/svg+xml;utf8,'), + auto; + } +} + body { font-family: sans-serif; - background-color: floralwhite; -} - - -a, a[visited] { - color: orange; -} - -ul { - padding-left: 2ch; + background-color: var(--background); + animation: 1s cursor-animate linear infinite; + color: var(--text); } main { @@ -30,6 +46,7 @@ main { max-width: calc(1200px - 2rem); margin: 0rem auto; grid-gap: 1rem; + align-items: start; } aside { @@ -38,24 +55,6 @@ aside { padding: 1rem 1rem 1rem 0; } -@media only screen and (max-width: 600px) or print{ - main { - grid-template-columns: 1fr; - margin: unset; - } -} - -@media (prefers-color-scheme: dark) { - body { - background-color: #1b1b1b; - color: white; - } -} - -aside h2 { - font-size: 1.25rem; -} - article { line-height: 150%; max-width: 80ch; @@ -64,11 +63,66 @@ article { flex-direction: column; } + +@media only screen and (max-width: 600px) { + main { + grid-template-columns: 1fr; + margin: unset; + border: 2px solid red; + } +} + + +@media only print { + main { + grid-template-columns: 1fr; + margin: unset auto; + max-width: 80ch; + } +} + + +@media (prefers-color-scheme: dark) { + body { + --background: #1b1b1b; + --text: white; + --background-invert: teal; + --text-invert: black; + } +} + + + +a, +a[visited] { + color: var(--accent); +} + +ul { + padding-left: 2ch; +} + + +article h1, article h2, article h3, article h4 { + margin-bottom: 0; +} + + + article img { max-width: 90ch; margin-left: -5ch; + margin-top: 2ch; + margin-bottom: 2ch; } +article img::after { + display: block; + content: ' (source: ' attr(alt) ') '; + color: hotpink; +} + + .footnote { order: 99999999999; } @@ -78,6 +132,10 @@ article img { font-size: 80%; } +hr { + width: 100%; +} + table { width: 100%; border-spacing: 0px; @@ -85,8 +143,51 @@ table { text-align: left; } -th, td { - border-bottom: 1px solid rgba(255,255,255,1); - padding: 8px 8px; +th, +td { + border-bottom: var(--text) + padding: 8px 8px; } + +.list--events { + list-style: none; + padding: 0 0; + font-family: monospace; +} + +.list--events li { + border: 2px solid var(--text); + padding: 12px; + margin-bottom: 12px; + display: flex; + gap: 1rem; + align-items: center; + +} + +.list--events .host { + margin-left: auto; + background: var(--background); + padding: 4px; + border-radius: 8px; + color: var(--text); + font-size: 12px; +} + + +h1 { + font-size: 1.5em; +} + +h2 { + font-size: 1.375em; +} + +h3 { + font-size: 1.25em; +} + +h4, h5, h6 { + font-size: 1.125em; +} \ No newline at end of file diff --git a/src/content/component-inventory.csv b/src/content/component-inventory.csv index 1d90fb8..7b1367f 100644 --- a/src/content/component-inventory.csv +++ b/src/content/component-inventory.csv @@ -1,4 +1,84 @@ -ID,Name,Value,Type,Date,Where -1,Resistor,220,Resistor,25/11/2024,Reel to Reel recorder -2,Resistor,440,Resistor,25/11/2024,Reel to Reel recorder -2,Resistor,440,Resistor,25/11/2024,Reel to Reel recorder \ No newline at end of file +ID,Name,Value,Type,Date,Where +1,Electrolytic capacitor,?,Capacitor,25/11/2024,Reel to Reel recorder +2,Electrolytic capacitor,??,Capacitor,25/11/2024,Reel to Reel recorder +3,Electrolytic capacitor,??,Capacitor,25/11/2024,Reel to Reel recorder +4,Electrolytic capacitor,??,Capacitor,25/11/2024,Reel to Reel recorder +5,Electrolytic capacitor,??,Capacitor,25/11/2024,Reel to Reel recorder +6,Film Capacitor,0.033 160,Capacitor,25/11/2024,Reel to Reel recorder +7,Film Capacitor,0.15 100 898,Capacitor,25/11/2024,Reel to Reel recorder +8,Film Capacitor,0.33 63,Capacitor,25/11/2024,Reel to Reel recorder +9,Film Capacitor,0.47 63,Capacitor,25/11/2024,Reel to Reel recorder +10,Film Capacitor,0.47 63 598,Capacitor,25/11/2024,Reel to Reel recorder +11,Film Capacitor,1000 160-89m,Capacitor,25/11/2024,Reel to Reel recorder +12,Electrolytic capacitor,1000 uF,Capacitor,25/11/2024,Reel to Reel recorder +13,Electrolytic capacitor,2500 uF,Capacitor,25/11/2024,Reel to Reel recorder +14,Electrolytic capacitor,25uF,Capacitor,25/11/2024,Reel to Reel recorder +15,Film Capacitor,4700 100-79m,Capacitor,25/11/2024,Reel to Reel recorder +16,Electrolytic capacitor,50uF,Capacitor,25/11/2024,Reel to Reel recorder +17,Film Capacitor,5600 100 79m,Capacitor,25/11/2024,Reel to Reel recorder +18,Film Capacitor,6500-100 89M,Capacitor,25/11/2024,Reel to Reel recorder +19,Film Capacitor,9,47 63 - 259,Capacitor,25/11/2024,Reel to Reel recorder +20,Not sure which type,,Diode,25/11/2024,Reel to Reel recorder +21,3x 5 pin input,,Inputs,25/11/2024,Reel to Reel recorder +22,1x 5 pin input,,Inputs,25/11/2024,Reel to Reel recorder +23,Resistor,10Ω,Resistor,25/11/2024,Reel to Reel recorder +24,Resistor,75Ω,Resistor,25/11/2024,Reel to Reel recorder +25,Resistor,220Ω,Resistor,25/11/2024,Reel to Reel recorder +26,Resistor,220Ω,Resistor,25/11/2024,Reel to Reel recorder +27,Resistor,460Ω,Resistor,25/11/2024,Reel to Reel recorder +28,Resistor,750Ω,Resistor,25/11/2024,Reel to Reel recorder +29,Resistor,750Ω,Resistor,25/11/2024,Reel to Reel recorder +30,Resistor,1.5kΩ,Resistor,25/11/2024,Reel to Reel recorder +31,Resistor,10kΩ,Resistor,25/11/2024,Reel to Reel recorder +32,Resistor,10kΩ,Resistor,25/11/2024,Reel to Reel recorder +33,Resistor,14KΩ,Resistor,25/11/2024,Reel to Reel recorder +34,Resistor,17kΩ,Resistor,25/11/2024,Reel to Reel recorder +35,Resistor,220]Ω,Resistor,25/11/2024,Reel to Reel recorder +36,Resistor,3.2KΩ,Resistor,25/11/2024,Reel to Reel recorder +37,Resistor,4.7KΩ,Resistor,25/11/2024,Reel to Reel recorder +38,Resistor,40kΩ,Resistor,25/11/2024,Reel to Reel recorder +39,Resistor,50kΩ,Resistor,25/11/2024,Reel to Reel recorder +40,Resistor,70KΩ,Resistor,25/11/2024,Reel to Reel recorder +41,Resistor,7kΩ,Resistor,25/11/2024,Reel to Reel recorder +42,Resistor,7kΩ,Resistor,25/11/2024,Reel to Reel recorder +43,Resistor,80kΩ,Resistor,25/11/2024,Reel to Reel recorder +44,Resistor,80KΩ,Resistor,25/11/2024,Reel to Reel recorder +45,Resistor,8KΩ,Resistor,25/11/2024,Reel to Reel recorder +46,Resistor,8kΩ,Resistor,25/11/2024,Reel to Reel recorder +47,Resistor,To measure,Resistor,25/11/2024,Reel to Reel recorder +48,Resistor,To measure,Resistor,25/11/2024,Reel to Reel recorder +49,Resistor,To measure,Resistor,25/11/2024,Reel to Reel recorder +50,Resistor,To measure,Resistor,25/11/2024,Reel to Reel recorder +51,Resistor,To measure,Resistor,25/11/2024,Reel to Reel recorder +52,Resistor,To measure,Resistor,25/11/2024,Reel to Reel recorder +53,Resistor,To measure,Resistor,25/11/2024,Reel to Reel recorder +54,Resistor,To measure,Resistor,25/11/2024,Reel to Reel recorder +55,Resistor,To measure,Resistor,25/11/2024,Reel to Reel recorder +56,Resistor,To measure,Resistor,25/11/2024,Reel to Reel recorder +57,Resistor,To measure,Resistor,25/11/2024,Reel to Reel recorder +58,Resistor,To measure,Resistor,25/11/2024,Reel to Reel recorder +59,Resistor,To measure,Resistor,25/11/2024,Reel to Reel recorder +60,Resistor,To measure,Resistor,25/11/2024,Reel to Reel recorder +61,Resistor,To measure,Resistor,25/11/2024,Reel to Reel recorder +62,Resistor,To measure,Resistor,25/11/2024,Reel to Reel recorder +63,Resistor,To measure,Resistor,25/11/2024,Reel to Reel recorder +64,Resistor,To measure,Resistor,25/11/2024,Reel to Reel recorder +65,Resistor,To measure,Resistor,25/11/2024,Reel to Reel recorder +66,Resistor,To measure,Resistor,25/11/2024,Reel to Reel recorder +67,Resistor,To measure,Resistor,25/11/2024,Reel to Reel recorder +68,Resistor,To measure,Resistor,25/11/2024,Reel to Reel recorder +69,Resistor,To measure,Resistor,25/11/2024,Reel to Reel recorder +70,Resistor,To measure,Resistor,25/11/2024,Reel to Reel recorder +71,Resistor,To measure,Resistor,25/11/2024,Reel to Reel recorder +72,Resistor,To measure,Resistor,25/11/2024,Reel to Reel recorder +73,Resistor,To measure,Resistor,25/11/2024,Reel to Reel recorder +74,Resistor,To measure,Resistor,25/11/2024,Reel to Reel recorder +75,Resistor,To measure,Resistor,25/11/2024,Reel to Reel recorder +76,Resistor,To measure,Resistor,25/11/2024,Reel to Reel recorder +77,BC109B NPN Transistor,,Transistor,25/11/2024,Reel to Reel recorder +78,BC107B NPN Transistor,,Transistor,25/11/2024,Reel to Reel recorder +79,BC107B NPN Transistor,,Transistor,25/11/2024,Reel to Reel recorder +80,BC183c NPN Transistor,,Transistor,25/11/2024,Reel to Reel recorder +81,S277B,,Transistor,25/11/2024,Reel to Reel recorder +82,BC183c NPN Transistor,,,25/11/2024,Reel to Reel recorder +83,About 17 Unidentified parts, Unidentified, Unidentified, 25/11/2024,Reel to Reel recorder \ No newline at end of file diff --git a/src/content/components/capacitors.md b/src/content/components/capacitors.md index 53e47a8..8567d28 100644 --- a/src/content/components/capacitors.md +++ b/src/content/components/capacitors.md @@ -2,8 +2,7 @@ excerpt: tl;dr title: Capacitors type: Capacitor -valueSymbol: unf description: This is the description --- -# A text about capacitors \ No newline at end of file +# A text about capacitors diff --git a/src/content/recipes/two.md b/src/content/components/inputs.md similarity index 55% rename from src/content/recipes/two.md rename to src/content/components/inputs.md index 863675a..6190027 100644 --- a/src/content/recipes/two.md +++ b/src/content/components/inputs.md @@ -1,7 +1,8 @@ --- excerpt: tl;dr -title: Hello, world! +title: Inputs +type: Inputs description: This is the description --- -This is my recipe! \ No newline at end of file +# A text about Inputs diff --git a/src/content/components/resistors.md b/src/content/components/resistors.md index 73cfa1e..6fedc45 100644 --- a/src/content/components/resistors.md +++ b/src/content/components/resistors.md @@ -2,8 +2,10 @@ excerpt: tl;dr title: Resistors type: Resistor -valueSymbol: Ω description: This is the description --- -# A text about resistors \ No newline at end of file +![A scan of salvaged resistors from the [Reel to Reel recorder](/devices/reel-to-reel-recorder.html)](/assets/components/salvaged-resistors.webp) +_A scan of salvaged resistors from the [Reel to Reel recorder](/devices/reel-to-reel-recorder.html)_ + +# A text about resistors diff --git a/src/content/components/transistors.md b/src/content/components/transistors.md new file mode 100644 index 0000000..8371e35 --- /dev/null +++ b/src/content/components/transistors.md @@ -0,0 +1,8 @@ +--- +excerpt: tl;dr +title: Transistors +type: transistor +description: This is the description +--- + +# A text about transistors diff --git a/src/content/components/unidentified.md b/src/content/components/unidentified.md new file mode 100644 index 0000000..979db2c --- /dev/null +++ b/src/content/components/unidentified.md @@ -0,0 +1,9 @@ +--- +excerpt: tl;dr +title: Unidentified +type: Unidentified +description: This is the description + +--- + +Against all odds, I've been discovering a few components that I have no idea what they are! Ideally, I'll figure it out at some point. diff --git a/src/content/devices/reel-to-reel-recorder.md b/src/content/devices/reel-to-reel-recorder.md new file mode 100644 index 0000000..cc87532 --- /dev/null +++ b/src/content/devices/reel-to-reel-recorder.md @@ -0,0 +1,14 @@ +--- +excerpt: tl;dr +title: Reel to Reel recorder +type: Audio device +found: Beginning of November 2024 +where: Interaction Station Trash +description: This is a description +--- + +The Reel to Reel Recorder was found in the trash bin at the Interaction Station. At least half of the parts were already removed. I chose to salvage this device since i could see the components were massive, which makes them easier to desolder and hopefully easier to use. + +Since so many parts were already removed, I'm unable to see which brand the device is from. But some of the components have a "Germany" mark. + +![Reel to Reel Recorder](/assets/reel-to-reel-recorder.jpeg) diff --git a/src/content/events/20250109.md b/src/content/events/20250109.md new file mode 100644 index 0000000..05e50b9 --- /dev/null +++ b/src/content/events/20250109.md @@ -0,0 +1,7 @@ +--- +title: Let's unrepair together +date: 09/01/2025 +host: Cafe +--- + +We had a great time today. \ No newline at end of file diff --git a/src/content/events/20250116.md b/src/content/events/20250116.md new file mode 100644 index 0000000..682389b --- /dev/null +++ b/src/content/events/20250116.md @@ -0,0 +1,7 @@ +--- +title: "Workshop #1: Dismaneteling PCB's for expressive contact pads" +date: 16/01/2025 +host: Rosa +--- + +We had a great time today. \ No newline at end of file diff --git a/src/content/events/20250123.md b/src/content/events/20250123.md new file mode 100644 index 0000000..d094a66 --- /dev/null +++ b/src/content/events/20250123.md @@ -0,0 +1,7 @@ +--- +title: Let's unrepair together +date: 23/01/2025 +host: Cafe +--- + +We had a great time today. \ No newline at end of file diff --git a/src/content/events/20250130.md b/src/content/events/20250130.md new file mode 100644 index 0000000..efcaf2b --- /dev/null +++ b/src/content/events/20250130.md @@ -0,0 +1,7 @@ +--- +title: "Workshop #2: Embodied Software" +date: 30/01/2025 +host: Riviera +--- + +We had a great time today. \ No newline at end of file diff --git a/src/content/events/20250206.md b/src/content/events/20250206.md new file mode 100644 index 0000000..7a5a038 --- /dev/null +++ b/src/content/events/20250206.md @@ -0,0 +1,8 @@ +--- +title: Let's unrepair together +date: 06/02/2025 +host: Cafe +--- + +We had a great time today. + diff --git a/src/content/events/20250213.md b/src/content/events/20250213.md new file mode 100644 index 0000000..d259081 --- /dev/null +++ b/src/content/events/20250213.md @@ -0,0 +1,7 @@ +--- +title: "Workshop #3: Finding motors" +date: 02/13/2025 +host: Rosa +--- + +We had a great time today. diff --git a/src/content/events/20250220.md b/src/content/events/20250220.md new file mode 100644 index 0000000..b49c3ff --- /dev/null +++ b/src/content/events/20250220.md @@ -0,0 +1,8 @@ +--- +title: Let's unrepair together +date: 20/02/2025 +host: Cafe +--- + +We had a great time today. + diff --git a/src/content/events/20250227.md b/src/content/events/20250227.md new file mode 100644 index 0000000..f630cd0 --- /dev/null +++ b/src/content/events/20250227.md @@ -0,0 +1,7 @@ +--- +title: "Workshop #4 Server Install" +date: 02/27/2025 +host: Riviera +--- + +We had a great time today. diff --git a/src/content/events/20250306.md b/src/content/events/20250306.md new file mode 100644 index 0000000..bbb8a8d --- /dev/null +++ b/src/content/events/20250306.md @@ -0,0 +1,8 @@ +--- +title: Let's unrepair together +date: 06/03/2025 +host: Cafe +--- + +We had a great time today. + diff --git a/src/content/events/20250313.md b/src/content/events/20250313.md new file mode 100644 index 0000000..1ad3b5c --- /dev/null +++ b/src/content/events/20250313.md @@ -0,0 +1,7 @@ +--- +title: "Workshop #5: The sequencer drill" +date: 03/13/2025 +host: Rosa +--- + +We had a great time today. diff --git a/src/content/events/20250320.md b/src/content/events/20250320.md new file mode 100644 index 0000000..5cb3cbf --- /dev/null +++ b/src/content/events/20250320.md @@ -0,0 +1,8 @@ +--- +title: Let's unrepair together +date: 20/03/2025 +host: Cafe +--- + +We had a great time today. + diff --git a/src/content/events/20250327.md b/src/content/events/20250327.md new file mode 100644 index 0000000..d68c8ea --- /dev/null +++ b/src/content/events/20250327.md @@ -0,0 +1,8 @@ +--- +title: "Workshop #6" +date: 03/27/2025 +host: Riviera +--- + +We had a great time today. + diff --git a/src/content/events/20250403.md b/src/content/events/20250403.md new file mode 100644 index 0000000..1004898 --- /dev/null +++ b/src/content/events/20250403.md @@ -0,0 +1,8 @@ +--- +title: Let's unrepair together +date: 03/04/2025 +host: Cafe +--- + +We had a great time today. + diff --git a/src/content/events/20250417.md b/src/content/events/20250417.md new file mode 100644 index 0000000..b23c440 --- /dev/null +++ b/src/content/events/20250417.md @@ -0,0 +1,7 @@ +--- +title: Let's unrepair together +date: 17/04/2025 +host: Cafe +--- + +We had a great time today. \ No newline at end of file diff --git a/src/content/index.md b/src/content/index.md index 06f7353..d75e1dd 100644 --- a/src/content/index.md +++ b/src/content/index.md @@ -1,9 +1,88 @@ --- excerpt: A documentation page -title: Homepage +title: Index description: This is the description of the about us page --- -# My documentation +Dear reader, -Well, hello there, world. \ No newline at end of file +This web page includes the WIP version of my thesis. Organisation wise, I'm still exploring out file structures, but hopefully it won't be too messy. Ideally, the sidebar wil act as a TOC, allowing you to navigate to the different sections of the thesis. I'm using this same repository to manage documentation for the unrepair page at [https://unrepair.klank.school](https://unrepair.klank.school) (hence the funky cursor), so it could be that these collide in some spaces. + +The sidebar will also include functionality to export the entire thesis as a PDF, and mediawiki format. + +### links + +- [The Klankschool Calendar](https://calendar.klank.school/) +- [The documentation pages for the unrepair nights](https://unrepair.klank.school) +- [Thesis Proposal (XPUB WIKI)](https://pzwiki.wdka.nl/mediadesign/User:Vitrinekast/Thesis_Proposal) +- [Project Proposal (XPUB WIKI)](https://pzwiki.wdka.nl/mediadesign/User:Vitrinekast/Proposal) + +Not sure where to start the thesis, but better to start somewhere, then not at all. So, starting with the proposed outline, and structuring from there. + +--- + +# Outline + +"A field guide to Salvaging Sound Devices" + +## 1.0 Introduction + +- Setting the scene/context -> If it is indeed a field guide (or a time capsule?), this would be the place to describe that field. +- Here, I would like to mention planned obsolescence & zombie media/media archeology +- Maybe pose the question - what is worth salvaging? +- How salvaging for me is not a (this is what I expect) sustainable practices, in terms of time=money, since parts and products are mostly easily available and replacable. Which is a privileged perspective, compared to [AfroRack explaining the importance of service manuals](https://www.youtube.com/watch?v=qYyGhHUL6sU) + +## 2.0 Quick start guide + +- How to salvage components, +- great places to find them , +- things to look out for. +- The difficulty in salvaging components from modern hardware. +- If it is helpful for the rest of the field guide, it could include a short glossary. + - I think it is. +- What to do with the leftovers? The carcass of a printer? + +## 3.0 Components + +An overview of Resistors, transistors, LED's, capacitors, switches, knobs, speakers, coils, that can be found in the wild. +Of each component, i'll include: + +- Visual representation +- If and where I've found them +- What they could be used for (reference to the recipes later) +- Variants of this component +- Empty space for notes + +Will include a subsection for "rare" components. I expect that chips (counters, 555 timers) will be way more difficult to salvage. What are ways to work around these components? Are there any devices to look out for where these components can be salvaged? + +_I have started to create an inventory of components based on the first found device. The pages in the sidebar are accessible._ + +## 4.0 Recipes for sound devices + +7(?) recipes on making sound devices. Each recipe has been "tested" trough the DIY/DIWO hangouts as part of the project. These are the ones defined now: + +- Creating oscillators using easily salvageable components +- Building sequencers using relays +- Building triggers/LFO's using encoders +- Using motors to create oscillators + +Each recipe has + +- Title +- image/visual representation +- audio example(s) +- description +- schematic +- When/how/with whom i've made them (reference to the DIWO hangouts) +- Recommendations for further development +- empty space for notes + +_I have started to map out the first recipes, and also to discover what recipes could be of interest. These are accessible in the sidebar_ + +## 5.0 Conclusion + +Is salvaging for components a fruitful practice? + + diff --git a/src/content/newsletters/december.md b/src/content/newsletters/december.md index aba278e..e178b82 100644 --- a/src/content/newsletters/december.md +++ b/src/content/newsletters/december.md @@ -7,4 +7,4 @@ Hello world, this is a newsletter being generated for the month December. Keen t ### Repair logs in december -{! repair-logs/21112024.md !} +{! repair-logs/20241031.md !} diff --git a/src/content/recipes/motor-synth.md b/src/content/recipes/motor-synth.md new file mode 100644 index 0000000..645fe03 --- /dev/null +++ b/src/content/recipes/motor-synth.md @@ -0,0 +1,24 @@ +--- +excerpt: tl;dr +title: Motor Synthesizer +description: This is the description +--- + +This recipe has been tested out during the Kunsthal workshop & the collicium! + +![A video](https://pzwiki.wdka.nl/mw-mediadesign/images/e/ea/Vitrinekast_proposal_project_3.mp4) + + + +## Schematic + +I need to scan again the Zine made for this. + +## Components + +- A coil +- A magnet +- A motor +- A battery diff --git a/src/content/recipes/rc-filters.md b/src/content/recipes/rc-filters.md new file mode 100644 index 0000000..cbf1088 --- /dev/null +++ b/src/content/recipes/rc-filters.md @@ -0,0 +1,33 @@ +--- +excerpt: tl;dr +title: Passive RC Filter +--- + +Using a small amount of components an Low or High Pass Filter can be built. This passive filter filters out unwanted frequencies, to create the swooooooooooshh sound. + +Hopefully, this schematic is somewhat easy to build, and therefore I expect that this recipe will be combined with the single-transistor-oscillator recipe. + +The selected Capacitor & Resistor decide at which point specifically the filter is cut off. + +## Schematics + +![Schematic of a Passive Low Pass Filter](https://www.electronics-tutorials.ws/wp-content/uploads/2013/08/fil5.gif?fit=326%2C161?fit=326,226) + +![Schematic of a Passive High Pass Filter](https://www.electronics-tutorials.ws/wp-content/uploads/2018/05/filter-fil11.gif) + +## Components + +- A Capacitor +- A Resistor + +## Sound Examples + +TODO + +## Images + +TODO + +## Used In + +TODO diff --git a/src/content/recipes/sequencers.md b/src/content/recipes/sequencers.md new file mode 100644 index 0000000..7558a46 --- /dev/null +++ b/src/content/recipes/sequencers.md @@ -0,0 +1,7 @@ +--- +excerpt: tl;dr +title: Crank based sequencers +description: This is the description +--- + +In this recipe we are going to built a sequencer that generates (gate) triggers, using any crank to create a rotating disk. diff --git a/src/content/recipes/single-transistor-oscillator.md b/src/content/recipes/single-transistor-oscillator.md new file mode 100644 index 0000000..75bdc79 --- /dev/null +++ b/src/content/recipes/single-transistor-oscillator.md @@ -0,0 +1,25 @@ +--- +excerpt: tl;dr +title: A single transistor Oscillator +description: This is the description +--- + +Transistors are used often used when making sound circuits. The oscillators I am aware of usually combine transistor with some sort of a chip, to create a fast frequency. This specific oscillator however, only uses one transistor. + +_I could talk about the history of electronic music and transistors here, but at the moment I do not think this should happen_ + +Since this schematic uses only a couple of components, I think this recipe could actually be combined with the rc-filter recipe. + +## Schematic + +![Schematic of the Single Transistor Oscillator](http://www.seekic.com/uploadfile/ic-circuit/s201357212933141.jpg) + +## Components + +- 1 Transistor _I need to figure out if transistors are interchangable_ +- 1 Resistor +- A speaker +- A battery +- A Capacitor + +The size of the capacitor and the resistor decide upon the frequency of the pitch. diff --git a/src/content/recipes/using-pcb-s-as-expressive-touch-pads.md b/src/content/recipes/using-pcb-s-as-expressive-touch-pads.md new file mode 100644 index 0000000..f585266 --- /dev/null +++ b/src/content/recipes/using-pcb-s-as-expressive-touch-pads.md @@ -0,0 +1,30 @@ +--- +title: Using PCB's as expressive touch pads +--- + +If you salvage buttons from device, you might come across patterns like the one below in the PCB, below the button. By default, the two traces seen on the PCB, do not touch. But, when pressing a button, a connection is made between the two traces, allowing for a voltage to flow trough. + +![PCB with a Button](https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fibex.tech%2Fwp-content%2Fuploads%2Fsites%2F3%2Fpcb_switch_pads.jpg&f=1&nofb=1&ipt=03d7884aeef82b49dd41bb5dd3ae13d99915b3402011780013d00c97fd5ac12f&ipo=images) + +This idea is applied in the recipe, but by using the entire PCB. By scratching of the green layer, the copper plate becomes visible. Usually the larger areas are `ground`. Now that the copper is exposed, you can directly solder on to the board, and connect the wires in the circuit where you'd like your switch to be. + +## Schematics + +_I do really need images/schematics/drawings to make this more clear!_ + +## Components + +- A componentless PCB! + +## Sound Examples + +TODO + +## Images + +TODO + +## Used In + +TODO +Planned for Workshop #1 at the unrepair nights, 6th of januari 2025. diff --git a/src/content/repair-logs/20241031.md b/src/content/repair-logs/20241031.md new file mode 100644 index 0000000..a4b242f --- /dev/null +++ b/src/content/repair-logs/20241031.md @@ -0,0 +1,8 @@ +--- +excerpt: tl;dr +layout: post +title: 31st October 2024 +description: This is the description +--- + +Repaired an audio amplifier by replacing a switch, a megaphone by cleaning the battery ports, and discovered the fireworks that is blown fuses. \ No newline at end of file diff --git a/src/content/repair-logs/21112024.md b/src/content/repair-logs/21112024.md deleted file mode 100644 index 9edfbd9..0000000 --- a/src/content/repair-logs/21112024.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -excerpt: tl;dr -layout: post -title: Hello, world! -description: This is the description ---- - -# Repair log 21st november 2024 -We had a great time today. \ No newline at end of file diff --git a/src/content/repair-logs/28112024.md b/src/content/repair-logs/28112024.md index 7724ddd..fbc9e16 100644 --- a/src/content/repair-logs/28112024.md +++ b/src/content/repair-logs/28112024.md @@ -5,7 +5,6 @@ title: 28th November 2024 description: Repair Log --- - There were five of us today -- The openproject instance now sends email notifications. +- The openproject instance now sends email notifications. diff --git a/src/content/unrepair.md b/src/content/unrepair.md new file mode 100644 index 0000000..f179083 --- /dev/null +++ b/src/content/unrepair.md @@ -0,0 +1,5 @@ +# Let's unrepair together + +Hello! Every thursday we're hanging out at Cato, to unrepair together. In januari 2025 we're kickstarting a series of hangouts where we'll dive into topics like server maintainance, salvaging electronic components and making sound devices. + +Come hang out! \ No newline at end of file diff --git a/src/templates/base.jinja b/src/templates/base.jinja index f3d8dab..de42d1d 100644 --- a/src/templates/base.jinja +++ b/src/templates/base.jinja @@ -2,51 +2,80 @@ - - Document + + + + + + + + + + + + + + + + + {% block title %} + The title + {% endblock %} + + -
{% block content %}{% endblock %}
- -
+ - - \ No newline at end of file + + \ No newline at end of file diff --git a/src/templates/components.jinja b/src/templates/components.jinja index 90e14be..6b0bf08 100644 --- a/src/templates/components.jinja +++ b/src/templates/components.jinja @@ -1,9 +1,13 @@ {% extends "base.jinja" %} +{% block title %} + {{ page['title'] }} +{% endblock %} + + {% block content %}

template: components.jinja

-

{{page['title']}}

{{ page['body'] }} @@ -12,9 +16,9 @@ {% set ns = namespace(has_inventory=false) %} {% for item in documents.inventory %} - {% if item.Type.capitalize() == page['type'].capitalize() %} + {% if (item.Type.capitalize() | slugify)== (page['type'].capitalize() | slugify)%} {% set ns.has_inventory = true %} - hai + {% endif %} {% endfor %} @@ -23,16 +27,18 @@ Name + Value Where - Date + When {% for item in documents.inventory %} - {% if item.Type.capitalize() == page.type.capitalize() %} + {% if (item.Type.capitalize() | slugify)== (page.type.capitalize() | slugify) %} - {{item.Value}}{{page.valueSymbol}} - {{item.Where}} + {{item.Name}} + {{item.Value}} + {{item.Where}} {{item.Date}} {% endif %} diff --git a/src/templates/devices.jinja b/src/templates/devices.jinja new file mode 100644 index 0000000..4cb2ff2 --- /dev/null +++ b/src/templates/devices.jinja @@ -0,0 +1,57 @@ +{% extends "base.jinja" %} + +{% block title %} + {{ page['title'] }} +{% endblock %} + + +{% block content %} +

template: post.jinja

+ + +
+

{{page['title']}}

+ {{ page['body'] }} + +

Parts salvaged from this device

+ + {% set ns = namespace(has_inventory=false) %} + {% for item in documents.inventory %} + {% if (item.Where.capitalize() | slugify) == (page.title.capitalize() | slugify ) %} + {% set ns.has_inventory = true %} + + {% endif %} + {% endfor %} + + {% if ns.has_inventory %} + + + + + + + + + + {% for item in documents.inventory %} + {% if ( item.Where.capitalize() | slugify ) == ( page.title.capitalize() | slugify ) %} + + + + + + + + {% endif %} + {% endfor %} + + +
NameValueType
{{item.Name}}{{item.Value}}{{item.Type}}
+ + {% else %} + No components were identified yet + {% endif %} + + +
+ {% endblock %} \ No newline at end of file diff --git a/src/templates/index.jinja b/src/templates/index.jinja index 2bea713..6d36a06 100644 --- a/src/templates/index.jinja +++ b/src/templates/index.jinja @@ -1,6 +1,13 @@ {% extends "base.jinja" %} +{% block title %} + {{ page['title'] }} +{% endblock %} + {% block content %} -

This is the index

- +

template: index.jinja

+ +
+ {{ page['body'] }} +
{% endblock %} \ No newline at end of file diff --git a/src/templates/post.jinja b/src/templates/post.jinja index e2e2009..508491b 100644 --- a/src/templates/post.jinja +++ b/src/templates/post.jinja @@ -1,5 +1,10 @@ {% extends "base.jinja" %} +{% block title %} + {{ page['title'] }} +{% endblock %} + + {% block content %}

template: post.jinja

diff --git a/src/templates/snippets/show-list.jinja b/src/templates/snippets/show-list.jinja new file mode 100644 index 0000000..e725feb --- /dev/null +++ b/src/templates/snippets/show-list.jinja @@ -0,0 +1,14 @@ +{% macro render_list(name) -%} + {% if documents[name]|length > 0 %} +

{{ name }}

+
+ {% endif %} +{%- endmacro %} +

{{ render_list(type) }}

diff --git a/src/templates/unrepair.jinja b/src/templates/unrepair.jinja new file mode 100644 index 0000000..a201495 --- /dev/null +++ b/src/templates/unrepair.jinja @@ -0,0 +1,67 @@ +{% extends "base.jinja" %} + + +{% block title %} + Let's unrepair together +{% endblock %} + + + + + +{% block content %} +

template: unrepair.jinja

+ + +
+

{{page['title']}}

+ {{ page['body'] | shortcode}} + + {% if documents['events']|length > 0 %} +

{{ name }}

+ + {% endif %} +
+{% endblock %} + +{% block aside %} + + +{% endblock %} \ No newline at end of file