16 Commits

Author SHA1 Message Date
cd7bfe5c42 Merge pull request 'Smol refactor' (#1) from smol_refactor into master
Reviewed-on: #1
2021-10-30 13:31:11 +00:00
34ed0a2168 thanks clippy 2021-10-30 15:28:57 +02:00
b24daeec6e replace serde with miniserde 2021-10-30 15:24:05 +02:00
40c147e9c1 upgrade to async rocket 2021-10-30 15:12:44 +02:00
0bf7192ac0 update support page 2021-08-26 16:09:48 +02:00
2832a21d7d update projects 2021-08-26 16:08:14 +02:00
5b7ee353a0 update mycology reading list 2021-08-26 16:04:27 +02:00
ba55447149 update lists page 2021-08-26 15:52:42 +02:00
957f6a66c7 Update reading lists 2021-01-15 14:08:00 +00:00
3bdd79de62 Update reading lists, support and copyright year 2021-01-14 13:21:04 +00:00
e68f94ae24 Update reading lists 2021-01-14 12:44:17 +00:00
0490e56c06 Add October 2020 artwork 2020-11-29 17:36:12 +00:00
4ccbd14d2f Add auto overflow to fix formatting 2020-11-29 15:26:28 +00:00
971e5d4907 Add Xiao drawing and order artwork by year 2020-09-14 14:02:04 +01:00
3a47c81af6 Add template for future mycomaterials guide 2020-09-14 13:50:15 +01:00
f6ead0ddc5 Update meta and home page descriptions, update lists 2020-09-09 16:54:47 +01:00
18 changed files with 1492 additions and 622 deletions

1833
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -1,22 +1,14 @@
[package]
name = "mycelial_technology"
version = "0.1.0"
version = "0.2.0"
authors = ["glyph <glyph@mycelial.technology>"]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
log = "0.4"
regex = "1"
rocket = "0.4"
rocket = "0.5.0-rc.1"
rocket_dyn_templates = { version = "0.1.0-rc.1", features = ["tera"] }
rss = "1"
serde = "1"
serde_derive = "1"
serde_json = "1"
miniserde = "0.1"
tera = "1"
[dependencies.rocket_contrib]
version = "0.4"
default-features = false
features = ["json", "tera_templates"]

View File

@ -1,12 +1,12 @@
extern crate regex;
extern crate rss;
use regex::Regex;
use rss::{ChannelBuilder, Item};
use std::error;
use std::fs;
use std::fs::File;
use std::io::prelude::*;
use regex::Regex;
use rss::{ChannelBuilder, Item};
fn main() -> Result<(), Box<dyn error::Error>> {
// create rss channel for mycelial.technology
@ -25,11 +25,7 @@ fn main() -> Result<(), Box<dyn error::Error>> {
let plants = "./templates/plants";
// add directories to a vector
let mut dirs = Vec::new();
dirs.push(bacteria);
dirs.push(computers);
dirs.push(fungi);
dirs.push(plants);
let dirs = vec![bacteria, computers, fungi, plants];
// create vectors for item fields
let mut titles = Vec::new();
@ -46,8 +42,7 @@ fn main() -> Result<(), Box<dyn error::Error>> {
// populate item url vector from article filenames
let re_url = Regex::new("./templates/(.*).html.tera")?;
let caps_url = re_url.captures(
&path
.to_str()
path.to_str()
.expect("Failed to convert file path to string slice for regex capture"),
);
if let Some(url) = caps_url {

View File

@ -1,18 +1,16 @@
#![feature(proc_macro_hygiene, decl_macro)]
#[macro_use]
extern crate log;
#[macro_use]
extern crate rocket;
extern crate rocket_contrib;
#[macro_use]
extern crate serde_derive;
extern crate tera;
use std::path::{Path, PathBuf};
use rocket::response::NamedFile;
use rocket_contrib::templates::Template;
use miniserde::{json, Serialize};
use rocket::{
fs::{relative, FileServer},
get, routes,
};
use rocket_dyn_templates::Template;
#[derive(Debug, Serialize)]
struct FlashContext {
@ -20,18 +18,13 @@ struct FlashContext {
flash_msg: Option<String>,
}
#[get("/<file..>")]
fn files(file: PathBuf) -> Option<NamedFile> {
NamedFile::open(Path::new("static/").join(file)).ok()
}
#[get("/art")]
fn art() -> Template {
let context = FlashContext {
flash_name: None,
flash_msg: None,
};
Template::render("art", &context)
Template::render("art", json::to_string(&context))
}
#[get("/background")]
@ -40,7 +33,7 @@ fn background() -> Template {
flash_name: None,
flash_msg: None,
};
Template::render("background", &context)
Template::render("background", json::to_string(&context))
}
#[get("/bacteria")]
@ -49,7 +42,7 @@ fn bacteria() -> Template {
flash_name: None,
flash_msg: None,
};
Template::render("bacteria", &context)
Template::render("bacteria", json::to_string(&context))
}
#[get("/bacteria/sauerkraut-beginnings")]
@ -58,7 +51,7 @@ fn bacteria_sauerkraut_beginnings() -> Template {
flash_name: None,
flash_msg: None,
};
Template::render("bacteria/sauerkraut_beginnings", &context)
Template::render("bacteria/sauerkraut_beginnings", json::to_string(&context))
}
#[get("/bacteria/sauerkraut-bottled")]
@ -67,7 +60,7 @@ fn bacteria_sauerkraut_bottled() -> Template {
flash_name: None,
flash_msg: None,
};
Template::render("bacteria/sauerkraut_bottled", &context)
Template::render("bacteria/sauerkraut_bottled", json::to_string(&context))
}
#[get("/computers")]
@ -76,7 +69,7 @@ fn computers() -> Template {
flash_name: None,
flash_msg: None,
};
Template::render("computers", &context)
Template::render("computers", json::to_string(&context))
}
#[get("/computers/esp8266-dht11")]
@ -85,7 +78,7 @@ fn computers_esp8266_dht11() -> Template {
flash_name: None,
flash_msg: None,
};
Template::render("computers/esp8266_dht11", &context)
Template::render("computers/esp8266_dht11", json::to_string(&context))
}
#[get("/computers/i2c-adventures")]
@ -94,7 +87,7 @@ fn computers_i2c_adventures() -> Template {
flash_name: None,
flash_msg: None,
};
Template::render("computers/i2c_adventures", &context)
Template::render("computers/i2c_adventures", json::to_string(&context))
}
#[get("/computers/rust-compilation")]
@ -103,7 +96,7 @@ fn computers_rust_compilation() -> Template {
flash_name: None,
flash_msg: None,
};
Template::render("computers/rust_compilation", &context)
Template::render("computers/rust_compilation", json::to_string(&context))
}
#[get("/fungi")]
@ -112,7 +105,7 @@ fn fungi() -> Template {
flash_name: None,
flash_msg: None,
};
Template::render("fungi", &context)
Template::render("fungi", json::to_string(&context))
}
#[get("/fungi/design-patterns")]
@ -121,7 +114,7 @@ fn fungi_design_patterns() -> Template {
flash_name: None,
flash_msg: None,
};
Template::render("fungi/design_patterns", &context)
Template::render("fungi/design_patterns", json::to_string(&context))
}
#[get("/fungi/glossary")]
@ -130,7 +123,7 @@ fn fungi_glossary() -> Template {
flash_name: None,
flash_msg: None,
};
Template::render("fungi/glossary", &context)
Template::render("fungi/glossary", json::to_string(&context))
}
#[get("/fungi/grow-forests")]
@ -139,7 +132,7 @@ fn fungi_grow_forests() -> Template {
flash_name: None,
flash_msg: None,
};
Template::render("fungi/grow_forests", &context)
Template::render("fungi/grow_forests", json::to_string(&context))
}
#[get("/fungi/grow-together")]
@ -148,7 +141,7 @@ fn fungi_grow_together() -> Template {
flash_name: None,
flash_msg: None,
};
Template::render("fungi/grow_together", &context)
Template::render("fungi/grow_together", json::to_string(&context))
}
#[get("/fungi/lichen-space")]
@ -157,7 +150,7 @@ fn fungi_lichen_space() -> Template {
flash_name: None,
flash_msg: None,
};
Template::render("fungi/lichen_space", &context)
Template::render("fungi/lichen_space", json::to_string(&context))
}
#[get("/fungi/network-resilience")]
@ -166,7 +159,7 @@ fn fungi_network_resilience() -> Template {
flash_name: None,
flash_msg: None,
};
Template::render("fungi/network_resilience", &context)
Template::render("fungi/network_resilience", json::to_string(&context))
}
#[get("/fungi/photo-guide")]
@ -175,7 +168,16 @@ fn fungi_photo_guide() -> Template {
flash_name: None,
flash_msg: None,
};
Template::render("fungi/photo_guide", &context)
Template::render("fungi/photo_guide", json::to_string(&context))
}
#[get("/fungi/reading-list")]
fn fungi_reading_list() -> Template {
let context = FlashContext {
flash_name: None,
flash_msg: None,
};
Template::render("fungi/reading_list", json::to_string(&context))
}
#[get("/")]
@ -184,7 +186,7 @@ fn home() -> Template {
flash_name: None,
flash_msg: None,
};
Template::render("home", &context)
Template::render("home", json::to_string(&context))
}
#[get("/lists")]
@ -193,7 +195,7 @@ fn lists() -> Template {
flash_name: None,
flash_msg: None,
};
Template::render("lists", &context)
Template::render("lists", json::to_string(&context))
}
#[get("/meditation")]
@ -202,7 +204,7 @@ fn meditation() -> Template {
flash_name: None,
flash_msg: None,
};
Template::render("meditation", &context)
Template::render("meditation", json::to_string(&context))
}
#[get("/plants")]
@ -211,7 +213,7 @@ fn plants() -> Template {
flash_name: None,
flash_msg: None,
};
Template::render("plants", &context)
Template::render("plants", json::to_string(&context))
}
#[get("/plants/aloe-there")]
@ -220,7 +222,7 @@ fn plants_aloe_there() -> Template {
flash_name: None,
flash_msg: None,
};
Template::render("plants/aloe_there", &context)
Template::render("plants/aloe_there", json::to_string(&context))
}
#[get("/plants/blueberry-dance")]
@ -229,7 +231,7 @@ fn plants_blueberry_dance() -> Template {
flash_name: None,
flash_msg: None,
};
Template::render("plants/blueberry_dance", &context)
Template::render("plants/blueberry_dance", json::to_string(&context))
}
#[get("/plants/botanical-deceptions")]
@ -238,7 +240,7 @@ fn plants_botanical_deceptions() -> Template {
flash_name: None,
flash_msg: None,
};
Template::render("plants/botanical_deceptions", &context)
Template::render("plants/botanical_deceptions", json::to_string(&context))
}
#[get("/plants/potato-tech")]
@ -247,7 +249,7 @@ fn plants_potato_tech() -> Template {
flash_name: None,
flash_msg: None,
};
Template::render("plants/potato_tech", &context)
Template::render("plants/potato_tech", json::to_string(&context))
}
#[get("/projects")]
@ -256,7 +258,7 @@ fn projects() -> Template {
flash_name: None,
flash_msg: None,
};
Template::render("projects", &context)
Template::render("projects", json::to_string(&context))
}
#[get("/support")]
@ -265,7 +267,7 @@ fn support() -> Template {
flash_name: None,
flash_msg: None,
};
Template::render("support", &context)
Template::render("support", json::to_string(&context))
}
#[catch(404)]
@ -275,15 +277,15 @@ fn not_found() -> Template {
flash_name: Some("error".to_string()),
flash_msg: Some("No resource found for given URL".to_string()),
};
Template::render("not_found", context)
Template::render("not_found", json::to_string(&context))
}
fn main() {
rocket::ignite()
#[launch]
fn rocket() -> _ {
rocket::build()
.mount(
"/",
routes![
files,
art,
background,
bacteria,
@ -301,6 +303,7 @@ fn main() {
fungi_lichen_space,
fungi_network_resilience,
fungi_photo_guide,
fungi_reading_list,
home,
lists,
meditation,
@ -313,7 +316,7 @@ fn main() {
support
],
)
.register(catchers![not_found])
.mount("/", FileServer::from(relative!("static")))
.register("/", catchers![not_found])
.attach(Template::fairing())
.launch();
}

BIN
static/art/archer.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
static/art/beetle.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
static/art/ninja.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

BIN
static/art/xiao_wen_ju.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

View File

@ -2,16 +2,18 @@
{% block title %}mycelial technology | art{% endblock title %}
{% block content %}
<h2>Art</h2>
<h3>2020</h3>
<div class="flex-grid">
<img class="col" alt="Line drawing of an aloe plant" src="art/aloe.jpg" title="Aloe plant" />
<img class="col" alt="Line drawing of an American kestrel" src="art/kestrel.jpg" title="American kestrel" />
<img class="col" alt="Line drawing of a black oval surrounded by two rings of glyphs" src="art/obsidian_artifact.jpg" title="Obsidian Artifact" />
<img class="col" alt="Line drawing of a Japanese archer with a longbow" src="art/archer.jpg" title="Archer" />
<img class="col" alt="Pen and ink drawing of a tiger beetle with mesas and clouds in the background" src="art/beetle.jpg" title="Beetle" />
<img class="col" alt="Pen and ink drawing of a man standing with his hands in his pockets. He has a katana slung across his back and there are rocks scattered around and hills in the background" src="art/ninja.jpg" title="Ninja" />
</div>
<div class="flex-grid">
<img class="col" alt="Line drawing of a mountain with a teardrop-shaped symbol above it, with mountains and clouds in the background" src="art/mystic_mountain.jpg" title="Mystic Mountain" />
<img class="col" alt="Line drawing of an ant with a long, antenna-like mushroom growing from its thorax" src="art/cordyceps_ant.jpg" title="Ophiocordyceps unilateralis on ant host" />
<img class="col" alt="Line drawing of a meditating figure with haloes of glyphs surrounding them" src="art/halo.svg" title="Halo" />
<img class="col" alt="Inked portrait of a beautiful young person" src="art/xiao_wen_ju.jpg" title="Xiao Wen Ju" />
<img class="col" alt="Black and white event poster of a spacecraft, astronaut and planet" src="art/extrasolar.jpg" title="Extrasolar" />
<img class="col" alt="Line drawing of a woman in a hooded parka" src="art/parka.jpg" title="Parka" />
</div>
<h3>2019</h3>
<div class="flex-grid">
<img class="col" alt="Line drawing of a humyn skull with mushrooms growing from it and text beneath reading 'Death is not the End'" src="art/death_is_not_the_end.jpg" title="Death is not the End" />
<img class="col" alt="Line drawing of a monk ringing a bell" src="art/ring_monk.jpg" title="Ring" />
@ -27,9 +29,16 @@
<img class="col" alt="Line drawing of a physalis fruit" src="art/physalis.jpg" title="Frail" />
<img class="col" alt="Line drawing of a humyn hand reaching out to touch a mycelial network" src="art/hyphal_fusion.svg" title="Hyphal Fusion" />
</div>
<h3>2018</h3>
<div class="flex-grid">
<img class="col" alt="Black and white event poster of a spacecraft, astronaut and planet" src="art/extrasolar.jpg" title="Extrasolar" />
<img class="col" alt="Line drawing of a woman in a hooded parka" src="art/parka.jpg" title="Parka" />
<img class="col" alt="Line drawing of an aloe plant" src="art/aloe.jpg" title="Aloe plant" />
<img class="col" alt="Line drawing of an American kestrel" src="art/kestrel.jpg" title="American kestrel" />
<img class="col" alt="Line drawing of a black oval surrounded by two rings of glyphs" src="art/obsidian_artifact.jpg" title="Obsidian Artifact" />
</div>
<div class="flex-grid">
<img class="col" alt="Line drawing of a mountain with a teardrop-shaped symbol above it, with mountains and clouds in the background" src="art/mystic_mountain.jpg" title="Mystic Mountain" />
<img class="col" alt="Line drawing of an ant with a long, antenna-like mushroom growing from its thorax" src="art/cordyceps_ant.jpg" title="Ophiocordyceps unilateralis on ant host" />
<img class="col" alt="Line drawing of a meditating figure with haloes of glyphs surrounding them" src="art/halo.svg" title="Halo" />
</div>
<hr>
{%- endblock %}

View File

@ -3,10 +3,10 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="shortcut icon" type="image/png" href="favicon.png"/>
<link rel="shortcut icon" type="image/png" href="/favicon.png"/>
<title>{% block title %}{% endblock title %}</title>
<meta name="author" content="glyph">
<meta name="description" content="The personal website of glyph.">
<meta name="description" content="Welcome to the personal website of glyph: a mycelial technologist coding and cultivating a decentralized, multispecies future. On my site you will find art, musings and projects relating to carbon-based and silicon-based technologies. Sowing seeds of symbiosis, weaving webs of wu wei.">
<meta name="keywords" content="botany, coding, electronics, fermentation, fungi, meditation, mycology, plants">
<style>
a {
@ -58,6 +58,7 @@
.col {
flex: 1;
padding: 1rem;
overflow: auto;
}
@media (max-width: 400px) {

View File

@ -19,5 +19,11 @@
<li><a href="/fungi/photo-guide">Photographing Mushrooms for Identification</a> - <i>25 August, 2020</i></li>
</ul>
</div>
<h3>Reading List</h3>
<div class="card">
<ul>
<li><a href="/fungi/reading-list">Mycology Reading List</a></li>
</ul>
</div>
<hr>
{%- endblock %}

View File

@ -0,0 +1,55 @@
{% extends "nav" %}
{% block title %}mycelial technology | Photographing Mushrooms{% endblock title %}
{% block content %}
<article>
<h2>Guide to Photographing Mushrooms for Identification</h2>
<i>25 August, 2020</i>
<h3>Introduction</h3>
<p>The blessing and curse of becoming known for your interest in a particular topic is the increasing number of questions you receive. As a keen mycophile, I am frequently sent photos of mushrooms and asked for assistance in identifying them. More often than not, I receive a single photo taken from directly above the mushroom, without any mention of contextual data such as where the photo was taken and during which season. This derth of data makes it very difficult to positively identify the mushroom to genus or species level. With that in mind, I thought it might be useful to write a short guide on photography for the purposes of mushroom identification.</p>
<p class="bordered"><i>When first beginning your journey into mushroom identification, it may be tempting to take a field guide with you to assist with identifications - I know this is how I started off. However, I've found that I prefer taking photos while in the field and doing the identification work and research at home. This allows me to focus on observation while in the field and avoid the frustration of paging through often-inadequate field guides. Find what works for you.</i></p>
<h3>Capturing Morphological Traits</h3>
<p>Mushrooms are often best identified by observing and listing their morphological traits. These may include the shape of the cap - both from above and in profile, the structure and colour of the hymenium, the colouration of the stem, the structure of the ring (if present) etc. Species within a genus often look identical at a glance and may require careful delineation based on a single characteristic. As such, it's very important to take clear photographs which collectively capture all of these characteristics (or the lack thereof). A minimum of three photos should do the trick:</p>
<p><b>Top-view</b>: captures the shape, colour and texture of the mushroom as seen from above.</p>
<figure>
<img src="/fungi/photo_guide/top_view.jpg" style="width: 100%;" alt="Large brown and white mushroom growing from a birch log on the forest floor. A black-gloved hand with fingers spread is next to the mushroom. The forest floor is covered with wet leaves and English ivy" />
<figcaption>Here we see a birch polypore mushroom (<i>Fomitopsis betulina</i>) from above, including a humyn hand for scale. As a bonus, we can also see the substrate from which the fungus is fruiting (a birch tree on the forest floor).</figcaption>
</figure>
<p><b>Side-view</b>: captures the profile of the cap, the cap margin and the shape and colour of the stem (including patterns and any bruising which might be present).</p>
<figure>
<img src="/fungi/photo_guide/side_view.jpg" style="width: 100%;" alt="Little brown mushroom (LBM) with a green clover attached to the base, as seen from the side on a white background" />
<figcaption>The profile of a single mushroom from the Panaeolus genus.</figcaption>
</figure>
<p><b>Bottom-view</b>: captures the colour and structure of the hymenium (gills, pores or teeth), as well as the way in which the cap is attached to the stem (if present).</p>
<figure>
<img src="/fungi/photo_guide/bottom_view.jpg" style="width: 100%;" alt="Mushroom with white gills and a beige stem" />
<figcaption>The gills of a mushroom I've yet to identify, including the top part of the stem.</figcaption>
</figure>
<p>Your identification process will be further aided by taking the extra steps to capture two more photos:</p>
<p><b>Developmental diversity</b>: captures several examples of the mushroom at various phases of development, including a mature mushroom and primorida. Mushrooms can change colour and shape with age, and may lose key identification features - hence the utility of being able to identify using several phases of development.</p>
<figure>
<img src="/fungi/photo_guide/development.jpg" style="width: 100%;" alt="Tetraptych showing four phases in the development of coprinoid mushrooms amongst mulch; from primordium to mature fruitbody" />
<figcaption>Four phases in the development of a coprinoid mushroom.</figcaption>
</figure>
<p><b>Spore-print</b>: captures the colour of the spores (an important characteristic with which to narrow your search). You will probably have to take a mushroom cap home / back to your campsite to create the sporeprint (takes 12 - 24 hours).</p>
<figure>
<img src="/fungi/photo_guide/spore_print.jpg" style="width: 100%;" alt="Black sporeprint on white, ruled paper" />
<figcaption>Black spores from a mushroom in the Panaeolus genus.</figcaption>
</figure>
<p class="bordered"><i>Bear in mind that you don't need fancy equipment to photograph mushrooms for the purpose of identification. I've been using the same simple Sony digital point-and-shoot since 2011. Also, don't be afraid to get close-up to your subject (the mushroom). The details often prove to be very important!</i></p>
<h3>Capturing Ecological Context</h3>
<p>In addition to photos of the mushroom itself, it can be incredibly helpful to collect data concerning the context in which the mushroom is growing. The key considerations in this regard are the substrate and habitat: What is the mushroom growing on? Where is it growing? And what is growing or living around it? Having photos of these contextual factors can make a big difference when identifying a mushroom or genus or species-level. A minimum of two photos will suffice:</p>
<p><b>Substrate-attachment</b>: captures the substrate on which the mushroom is growing. Try to observe beyond the obvious: if it's growing from the ground, is it growing on mulch, dung or from beneath the soil?</p>
<figure>
<img src="/fungi/photo_guide/substrate.jpg" style="width: 100%;" alt="Cluster of mushrooms with beige-orange caps and brown stems, growing on a wet, decomposing log in a forest" />
<figcaption>A cluster of mushrooms growing on a wet, decomposing log.</figcaption>
</figure>
<p><b>Habitat</b>: captures the environmental conditions and some of the species which may be copresent with the mushroom.</p>
<figure>
<img src="/fungi/photo_guide/habitat.jpg" style="width: 100%;" alt="Birch forest with grass covering the forest floor" />
<figcaption>A grassland birch forest.</figcaption>
</figure>
<h3>Conclusion</h3>
<p>There you have it, with 5 - 7 photos you can capture a great deal of data about a given species. Whether you're asking someone for help with identification or working through the process yourself, having these morphological and ecological data to draw on will enrich your learning experience and enhance your chances of making a successful identification. You may even notice things in the photos which you missed while in the field, for example, a beetle crawling amongst the gills (what ecological relationship might it have with the fungus?). I hope you've found this guide helpful and that it facilitates many fun identification forays in your near-future!</p>
</article>
<hr>
{%- endblock %}

View File

@ -0,0 +1,24 @@
{% extends "nav" %}
{% block title %}mycelial technology | reading list{% endblock title %}
{% block content %}
<h2>Mycology Literature Reading List</h2>
<h3>2021</h3>
<p>I'm aiming to read 100 mycology journal articles and textbook chapters this year. Any entries marked with a * have been read and discussed as part of the Hyphal Fusion Reading Group.</p>
<ol>
<li>Hiscox J, O'Leary J, Boddy L (2018). Fungus wars: basidiomycete battles in wood decay. <i>Studies in Mycology</i> <b>89</b>: 117124. *</li>
<li>Crowther TW, Boddy L, Maynard DS (2018). The use of artificial media in fungal ecology. <i>Fungal Ecology</i> <b>32</b>: 8791.</li>
<li>Parfitt D, Hunt J, Dockrell D, <i>et al.</i> (2010). Do all trees carry the seeds of their own destruction? PCR reveals numerous wood decay fungi latently present in sapwood of a wide range of angiosperm trees. <i>Fungal Ecology</i>, <b>3</b>: 338346.</li>
<li>Boddy L, Crockatt ME, Ainsworth AM (2011). Ecology of Hericium cirrhatum, H. coralloides and H. erinaceus in the UK. <i>Fungal Ecology</i>, <b>4</b>(2): 163173.</li>
<li>Heaton L, Obara B, Grau V, <i>et al.</i> (2012). Analysis of fungal networks. <i>Fungal Biology Reviews</i>, <b>26</b>(1): 12-29.</i></li>
<li>Mueller U, Kardish M, Ishak H, <i>et al.</i> (2018). Phylogenetic patterns of antfungus associations indicate that farming strategies, not only a superior fungal cultivar, explain the ecological success of leafcutter ants. <i>Molecular Ecology</i>, <b>27</b>(10): 2414-2434.</li>
<li>Yang D, Liang J, Wang Y, <i>et al.</i> (2016). Tea waste: an effective and economic substrate for oyster mushroom cultivation. <i>Journal of the Science of Food and Agriculture</i>, <b>96</b>(2), 680-684.</li>
<li>Richter DL, Dixon TG, Smith JK (2016). Revival of saprotrophic and mycorrhizal basidiomycete cultures after 30 years in cold storage in sterile water. <i>Canadian Journal of Microbiology</i>, <b>62</b>(11), 932-937.</li>
<li>Schwartz MW, Hoeksema JD, Gehring CA, <i>et al.</i> (2006). The promise and the potential consequences of the global transport of mycorrhizal fungal inoculum. <i>Ecology Letters</i>, <b>9</b>(5), 501-515.</li>
<li>Kües U & Liu Y (2000). Fruiting body production in basidiomycetes. <i>Applied Microbiology and Biotechnology</i>, <b>54</b>(2), 141-152.</li>
<li>Jusino MA, Lindner DL, Banik MT, <i>et al.</i> (2016). Experimental evidence of a symbiosis between red-cockaded woodpeckers and fungi. <i>Proceedings of the Royal Society B: Biological Sciences</i>, <b>283</b>(1827).
<li>Garibay-Orijel R, Ramírez-Terrazo A & Ordaz-Velázquez M. (2012). Women care about local knowledge, experiences from ethnomycology. <i>Journal of Ethnobiology and Ethnomedicine</i>, <b>8</b>(1), 1-13.</li>
<li>Raudabaugh DB, Matheny PB, Hughes KW, <i>et al.</i> (2020). Where are they hiding? Testing the body snatchers hypothesis in pyrophilous fungi. <i>Fungal Ecology</i>, <b>43</b>, 100870.</li>
<li>Ingham CJ, Kalisman O, Finkelshtein A, Ben-Jacob E (2011). Mutually facilitated dispersal between the nonmotile fungus Aspergillus fumigatus and the swarming bacterium Paenibacillus vortex. <i>Proceedings of the National Academy of Sciences</i>, <b>108</b>(49):19731-6.</li>
</ol>
<hr>
{%- endblock %}

View File

@ -2,7 +2,8 @@
{% block title %}mycelial technology | glyph{% endblock title %}
{% block content %}
<img src="glyph.svg" style="width: 175px;" />
<p>Welcome to the personal website of glyph.</p>
<p>Welcome to the personal website of glyph: a mycelial technologist coding and cultivating a decentralized, multispecies future. On my site you will find art, musings and projects relating to carbon-based and silicon-based technologies.</p>
<p>[ sowing seeds of symbiosis | weaving webs of wu wei ]</p>
<h2>Contact Information</h2>
<ul style="padding: 0;">
<li class="list-item">Email: <a href="mailto:glyph@mycelial.technology" title="glyph's Email address">glyph@mycelial.technology</a></li>

View File

@ -5,12 +5,17 @@
<h3>Books</h3>
<p>Currently Reading</p>
<ul>
<li><i>A Closed and Common Orbit</i> - Becky Chambers</li>
<li><i>Finding the Mother Tree</i> - Suzanne Simard</li>
<li><i>Radical Mycology</i> - Peter McCoy</li>
<li><i>Jonathan Strange & Mr Norrell</i> - Susanna Clarke</li>
</ul>
<p>Previously Read</p>
<ul>
<li><i>How to be Good</i> - Nick Hornby</li>
<li><i>Aurora</i> - Kim Stanley Robinson</li>
<li><i>Seveneves</i> - Neal Stephenson</li>
<li><i>Agency</i> - William Gibson</li>
<li><i>A Closed and Common Orbit</i> - Becky Chambers</li>
<li><i>Ready Player One</i> - Ernest Cline</li>
<li><i>Red Moon</i> - Kim Stanley Robinson</li>
<li><i>Mythago Wood</i> - Robert Holdstock</li>
@ -18,7 +23,18 @@
</ul>
<p>Wishlist</p>
<ul>
<li><i>The Mushroom at the End of the World</i> - Anna Lowenhaupt Tsing</li>
<li><i>Earth Repair</i> - Leila Darwish</li>
</ul>
<h3>Manga (漫画)</h3>
<p>Currently Reading</p>
<ul>
<li><i>Dragonball, Vol. 1</i> - 鳥山 明 (Akira Toriyama)</li>
<li><i>日常 (Nichijou), Vol. 2</i> - あらゐけいいち (Keiichi Arawi)</li>
</ul>
<p>Previously Read</p>
<ul>
<li><i>日常 (Nichijou), Vol. 1</i> - あらゐけいいち (Keiichi Arawi)</li>
<li><i>ナルト (Naruto), Vol. 1</i> - 岸本 斉史 (Masashi Kishimoto)</li>
</ul>
<h3>Graphic Novels</h3>
<p>Currently Reading</p>
@ -28,6 +44,9 @@
</ul>
<p>Previously Read</p>
<ul>
<li><i>Seven to Eternity, Vol. 1</i> - Rick Remender, Jerome Opeña and Matt Hollingsworth</li>
<li><i>Extremity, Vol. 1</i> - Daniel Warren Johnson and Mike Spicer</li>
<li><i>Descender, Vol. 1</i> - Jeff Lemire and Dustin Nguyen</li>
<li><i>Invisible Kingdom, Vol. 1</i> - G. Willow Wilson and Christian Ward</li>
<li><i>Isola, Vol. 1</i> - Brenden Fletcher and Karl Kerschl</li>
</ul>
@ -49,8 +68,12 @@
<h3>Podcasts</h3>
<p>Currently Listening</p>
<ul>
<li><a href="https://www.embedded.fm/" title="Embedded FM"><i>Embedded FM</i></a> - Elecia White and Chris White</li>
<li><a href="https://anchor.fm/sayurisaying" title="Everyday-Japanese Podcast"><i>Sayuri Saying Everyday-Japanese Podcast</i></a> - Sayuri</li>
<li><a href="https://www.indefenseofplants.com/podcast" title="In Defense of Plants podcast"><i>In Defense of Plants</i></a> - Matt</li>
</ul>
<p>Previously Listened</p>
<ul>
<li><a href="https://www.embedded.fm/" title="Embedded FM"><i>Embedded FM</i></a> - Elecia White and Chris White</li>
</ul>
<hr>
{%- endblock %}

View File

@ -18,6 +18,6 @@
</nav>
{%- block content %}{%- endblock %}
<footer style="display: flex;">
<p>&#169; 2020 glyph<p>
<p>&#169; 2021 glyph<p>
</footer>
{%- endblock %}

View File

@ -5,13 +5,14 @@
<p>I'm a tortoise and I shuffle between projects in eccentric orbits; sometimes I complete one.</p>
<h3>Active</h3>
<ul>
<li><a href="https://github.com/ssb-ngi-pointer">Next Generation Internet (NGI) Pointer</a>: Scuttlebutt protocol upgrades</li>
<li><a href="https://opencollective.com/peachcloud">PeachCloud</a>: solarpunk social hardware with Scuttlebutt</li>
<li><a href="https://hyphalfusion.network">Hyphal Fusion Network</a>: a forum for distributed mycology research</li>
<li><a href="https://git.sr.ht/~glyph/myka">myka</a>: culture library & cultivation log for tracking the expansion of mycelia</li>
<li><a href="https://git.sr.ht/~glyph/spore">spore</a>: a manual for the mycelial arts</li>
</ul>
<h3>On-hold</h3>
<ul>
<li><a href="https://git.sr.ht/~glyph/myka">myka</a>: culture library & cultivation log for tracking the expansion of mycelia</li>
<li><a href="https://git.sr.ht/~glyph/spore">spore</a>: a manual for the mycelial arts</li>
<li><a href="https://two.camp.scuttlebutt.nz/">Scuttlecamp 2</a>: gathering of the Butts</li>
</ul>
<h3>Complete</h3>

View File

@ -11,8 +11,7 @@
<h2>Supporting</h2>
<p>These are the projects and friends I currently contribute to:</p>
<ul>
<li>@cel - $5 per month for <a href="https://celehner.com/projects.html" title="cel's Projects">Scuttlebutt</a> development</li>
<li>@SoapDog - $5 per month for <a href="http://patchfox.org" title="PatchFox Website">PatchFox</a> development</li>
<li>Yuki Kimura - $5 per month for <a href="https://cijapanese.com" title="Comprehensive Japanese">Comprehensive Japanese</a></li>
<li>Joey Santore - $5 per month for <a href="https://www.patreon.com/CrimePaysButBotanyDoesnt" title="Crime Pays But Botany Doesn't Patreon">Crime Pays But Botany Doesn't</a></li>
</ul>
<hr>