Compare commits
3 Commits
first_draf
...
add_i2c_po
Author | SHA1 | Date | |
---|---|---|---|
d91d85cffd | |||
63875daddf | |||
e2d7fafccb |
70
src/main.rs
@ -52,6 +52,24 @@ fn bacteria() -> Template {
|
||||
Template::render("bacteria", &context)
|
||||
}
|
||||
|
||||
#[get("/bacteria/sauerkraut-beginnings")]
|
||||
fn bacteria_sauerkraut_beginnings() -> Template {
|
||||
let context = FlashContext {
|
||||
flash_name: None,
|
||||
flash_msg: None,
|
||||
};
|
||||
Template::render("bacteria/sauerkraut_beginnings", &context)
|
||||
}
|
||||
|
||||
#[get("/bacteria/sauerkraut-bottled")]
|
||||
fn bacteria_sauerkraut_bottled() -> Template {
|
||||
let context = FlashContext {
|
||||
flash_name: None,
|
||||
flash_msg: None,
|
||||
};
|
||||
Template::render("bacteria/sauerkraut_bottled", &context)
|
||||
}
|
||||
|
||||
#[get("/computers")]
|
||||
fn computers() -> Template {
|
||||
let context = FlashContext {
|
||||
@ -61,6 +79,33 @@ fn computers() -> Template {
|
||||
Template::render("computers", &context)
|
||||
}
|
||||
|
||||
#[get("/computers/esp8266-dht11")]
|
||||
fn computers_esp8266_dht11() -> Template {
|
||||
let context = FlashContext {
|
||||
flash_name: None,
|
||||
flash_msg: None,
|
||||
};
|
||||
Template::render("computers/esp8266_dht11", &context)
|
||||
}
|
||||
|
||||
#[get("/computers/i2c-adventures")]
|
||||
fn computers_i2c_adventures() -> Template {
|
||||
let context = FlashContext {
|
||||
flash_name: None,
|
||||
flash_msg: None,
|
||||
};
|
||||
Template::render("computers/i2c_adventures", &context)
|
||||
}
|
||||
|
||||
#[get("/computers/rust-compilation")]
|
||||
fn computers_rust_compilation() -> Template {
|
||||
let context = FlashContext {
|
||||
flash_name: None,
|
||||
flash_msg: None,
|
||||
};
|
||||
Template::render("computers/rust_compilation", &context)
|
||||
}
|
||||
|
||||
#[get("/fungi")]
|
||||
fn fungi() -> Template {
|
||||
let context = FlashContext {
|
||||
@ -115,6 +160,15 @@ fn plants() -> Template {
|
||||
Template::render("plants", &context)
|
||||
}
|
||||
|
||||
#[get("/plants/aloe-there")]
|
||||
fn plants_aloe_there() -> Template {
|
||||
let context = FlashContext {
|
||||
flash_name: None,
|
||||
flash_msg: None,
|
||||
};
|
||||
Template::render("plants/aloe_there", &context)
|
||||
}
|
||||
|
||||
#[get("/plants/blueberry-dance")]
|
||||
fn plants_blueberry_dance() -> Template {
|
||||
let context = FlashContext {
|
||||
@ -151,15 +205,6 @@ fn support() -> Template {
|
||||
Template::render("support", &context)
|
||||
}
|
||||
|
||||
#[get("/travel")]
|
||||
fn travel() -> Template {
|
||||
let context = FlashContext {
|
||||
flash_name: None,
|
||||
flash_msg: None,
|
||||
};
|
||||
Template::render("travel", &context)
|
||||
}
|
||||
|
||||
#[catch(404)]
|
||||
fn not_found() -> Template {
|
||||
debug!("404 Page Not Found");
|
||||
@ -179,17 +224,22 @@ fn main() {
|
||||
art,
|
||||
background,
|
||||
bacteria,
|
||||
bacteria_sauerkraut_beginnings,
|
||||
bacteria_sauerkraut_bottled,
|
||||
computers,
|
||||
computers_esp8266_dht11,
|
||||
computers_i2c_adventures,
|
||||
computers_rust_compilation,
|
||||
fungi,
|
||||
fungi_grow_together,
|
||||
fungi_lichen_space,
|
||||
home,
|
||||
lists,
|
||||
plants,
|
||||
plants_aloe_there,
|
||||
plants_blueberry_dance,
|
||||
plants_potato_tech,
|
||||
meditation,
|
||||
travel,
|
||||
support
|
||||
],
|
||||
)
|
||||
|
BIN
static/bacteria/sauerkraut_jar.jpeg
Normal file
After Width: | Height: | Size: 89 KiB |
BIN
static/bacteria/sauerkraut_mountain.jpeg
Normal file
After Width: | Height: | Size: 81 KiB |
BIN
static/computers/debian_pi_pros_cons.png
Normal file
After Width: | Height: | Size: 36 KiB |
BIN
static/computers/esp8266_temp.jpeg
Normal file
After Width: | Height: | Size: 96 KiB |
BIN
static/computers/i2c_working.jpeg
Normal file
After Width: | Height: | Size: 67 KiB |
BIN
static/computers/pi_rtc.jpeg
Normal file
After Width: | Height: | Size: 54 KiB |
BIN
static/plants/aloe_flowers.jpg
Normal file
After Width: | Height: | Size: 83 KiB |
BIN
static/plants/tree_aloe.jpg
Normal file
After Width: | Height: | Size: 150 KiB |
@ -1,5 +1,9 @@
|
||||
{% extends "nav" %}
|
||||
{% block content %}
|
||||
<h2>Bacteria</h2>
|
||||
<ul>
|
||||
<li><a href="/bacteria/sauerkraut-bottled">Sauerkraut: Bottled</a> - <i>31 October, 2019</i></li>
|
||||
<li><a href="/bacteria/sauerkraut-beginnings">Sauerkraut: Beginnings</a> - <i>22 October, 2019</i></li>
|
||||
</ul>
|
||||
<hr>
|
||||
{%- endblock %}
|
||||
|
14
templates/bacteria/sauerkraut_beginnings.html.tera
Normal file
@ -0,0 +1,14 @@
|
||||
{% extends "nav" %}
|
||||
{% block content %}
|
||||
<article>
|
||||
<h2>Sauerkraut: Beginnings</h2>
|
||||
<i>22 October, 2019</i>
|
||||
<figure>
|
||||
<img src="/bacteria/sauerkraut_jar.jpeg" alt="Colour photo in portrait orientation of a 3L jar filled with purple sauerkraut-in-the-making. The jar is on a wooden countertop and is covered by a blue and white cloth. A glass jar with water is visible inside the bigger jar. Bubbles can be seen forming on the surface of the sauerkraut mixture / solution." style="width: 100%;" />
|
||||
<figcaption>Counter-top fermentation factory</figcaption>
|
||||
</figure>
|
||||
<p>I started my first batch of sauerkraut on Sunday - something I’ve been meaning to do for a few months.</p>
|
||||
<p>1 red cabbage, 1/2 apple, 1 carrot, cut finely, sprinkled with salt, massaged and pressed down into a 3L jar. I had to add a little brine after 24 hours to ensure the vegetables were completely covered. I also added a glass jar with water to act as a weight.</p>
|
||||
<p>It’s already bubbling and smelling delicious. Fermentation is like hospitality management for microbes.
|
||||
<hr>
|
||||
{%- endblock %}
|
14
templates/bacteria/sauerkraut_bottled.html.tera
Normal file
@ -0,0 +1,14 @@
|
||||
{% extends "nav" %}
|
||||
{% block content %}
|
||||
<article>
|
||||
<h2>Sauerkraut: Bottled</h2>
|
||||
<i>31 October, 2019</i>
|
||||
<p>Today I bottled up some of the sauerkraut from my first batch. It has been going for 11 days; no taste of cabbage anymore and it tastes super tangy. Intrigued to see how the flavour develops.</p>
|
||||
<p>Also transferred some chaga (Inonotus obliquus), reishi (Ganoderma lucidum) and turkey tail (Trametes versicolor)-infused coconut oil to a smaller jar.</p>
|
||||
<p>All of it will be gifted to friends in the valley; gifted by the combined efforts of the sun, soil, water, plants, bacteria and humyns.</p>
|
||||
<figure>
|
||||
<img src="/bacteria/sauerkraut_mountain.jpeg" alt="Colour photo showing five glass jars, one small and four large, in a row on a wooden handrail. The first jar contains a cream-coloured mixture of coconut oil, while the other jars are filled with purple sauerkraut. Trees and a mountain can be seen in the background on the right. A brick building appears along the left margin of the photo." style="width: 100%;" />
|
||||
<figcaption>Vibrant delights in the valley</figcaption>
|
||||
</figure>
|
||||
<hr>
|
||||
{%- endblock %}
|
@ -33,6 +33,12 @@
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
code {
|
||||
background-color: #111;
|
||||
color: #fff;
|
||||
margin-left: 0.5rem;
|
||||
}
|
||||
|
||||
.col {
|
||||
flex: 1;
|
||||
padding: 1rem;
|
||||
|
@ -1,5 +1,10 @@
|
||||
{% extends "nav" %}
|
||||
{% block content %}
|
||||
<h2>Computers</h2>
|
||||
<ul>
|
||||
<li><a href="/computers/rust-compilation">Cross-Compiling Rust for Debian Buster on Raspberry Pi 3B+</a> - <i>18 May, 2020</i></li>
|
||||
<li><a href="/computers/esp8266-dht11">ESP8266 with DHT11 and LCD Display</a> - <i>5 August, 2019</i></li>
|
||||
<li><a href="/computers/i2c-adventures">Adventures with I²C</a> - <i>26 January, 2019</i></li>
|
||||
</ul>
|
||||
<hr>
|
||||
{%- endblock %}
|
||||
|
22
templates/computers/esp8266_dht11.html.tera
Normal file
@ -0,0 +1,22 @@
|
||||
{% extends "nav" %}
|
||||
{% block content %}
|
||||
<article>
|
||||
<h2>ESP8266 with DHT11 and LCD Display</h2>
|
||||
<i>5 August, 2019</i>
|
||||
<p>I had fun putting together a simple electronics project over the weekend: NodeMCU dev board (ESP8266) with a DHT11 temperature and humidity sensor and DF Robot RGB LCD display.</p>
|
||||
<figure>
|
||||
<img src="/computers/esp8266_temp.jpeg" alt="Black and white photo in portrait orientation showing electronics on a striped table-cloth. A NodeMCU dev board appears in the lower-right, DHT11 sensor in the top-left, and an LCD in the top-right. Text on the display reads: temp: 18.0 and humidity: 64. The display is propped-up by a white pyramid (mycelium) and a wooden floor is just visible in the background." style="width: 100%;" />
|
||||
<figcaption>The basic setup</figcaption>
|
||||
</figure>
|
||||
<p>The code is quite simple: connect to the local WiFi network and create a UDP server. Respond to UDP requests on port 3210 with a temperature and humidity reading from the sensor. Write the temperature and humidity to the display every two seconds.</p>
|
||||
<p>Arduino (C++) code: <a href="https://github.com/mycognosist/esp8266_dht11_udp">mycognosist/esp8266_dht11_udp</a></p>
|
||||
<p>I’ll be using this setup to monitor environmental conditions in my cultivation space. I plan on doing another version with LoRa for the main lab up the road. Will be great to do some remote-sensing from the comfort of my living room.</p>
|
||||
<p>One thing you can’t see in the photo is the sweet pink pastel backlight. I’d been thinking about lunarpunk aesthetics (thanks to a post by @Jackalope) - and, in particular, how I associate pastel tones with lunarpunk. I wanted to try out pastel colours on this display and ended up checking out the Wikipedia entry on Pastel (color). Lo and behold, it mentions:</p>
|
||||
<blockquote cite="https://en.wikipedia.org/wiki/Pastel_(color)">
|
||||
<p>There is also a type of goth style called pastel goth which combines the pastel color palette with classical goth fashion elements.</p>
|
||||
<footer>- <a href="https://en.wikipedia.org/wiki/Pastel_(color)"><cite>Pastel (color) Wikipedia page</cite></a></footer>
|
||||
</blockquote>
|
||||
<p>I did not know that. Rad.</p>
|
||||
</article>
|
||||
<hr>
|
||||
{%- endblock %}
|
49
templates/computers/i2c_adventures.html.tera
Normal file
@ -0,0 +1,49 @@
|
||||
{% extends "nav" %}
|
||||
{% block content %}
|
||||
<article>
|
||||
<h2>Adventures with I²C</h2>
|
||||
<i>26 January, 2019</i>
|
||||
<p>I went to London last weekend to attend the Agorama Web Jam and had a super groovy time. Everyone was so friendly and welcoming. Felt great to be hanging with cypherhomies in proximal timespace, dreaming and growing brighter futures together. I got to meet and chat with @eb4890 about PeachCloud and gained a better understanding of their plans around dyndns with SSB integration. Stoked to see that developing! It was also really encouraging to hear different folx voicing the need / desire for plug-n-plug p2p devices; fuel for the inner fire. Big thanks to all involved.</p>
|
||||
<p>TLDR: Real-Time Clock Module added to Pi / PeachCloud (I²C is working on Debian Buster ARM64)</p>
|
||||
<p>I spent most of my week doing web design work on another project. Finally got that finished and deployed yesterday and decided some hardware hacking would be a nice change of pace. Adding a real-time clock (RTC) felt like an achievable goal - one which would allow me to lean a little further into basic electronics & hardware shenanigans. @mikey already had this on the ‘next steps’ list for PeachCloud:</p>
|
||||
<blockquote>add Real-Time Clock to keep track of time (so you can be off-grid and still know the time)</blockquote>
|
||||
<p>I received a DS1338 RTC module as a Christmas gift for this project (thanks Dad). The datasheet can be accessed <a href="http://www.hobbytronics.co.uk/datasheets/DS1338-RTC.pdf" title="DS1338-RTC Datasheet">here</a>. A note from the retailer’s website:</p>
|
||||
<blockquote>A Real Time Clock Module with battery backup using the easy to use DS1338 chip. The DS1338 is functionally the same as the popular DS1307 chip with the difference being that the DS1338 works at any voltage from 3V to 5V making it easy to use on either 3.3V and 5V systems without modification or logic level conversion. Ideal for your project including Arduino and Raspberry Pi projects.</blockquote>
|
||||
<p>I received my first lesson in soldering last week and attached pins to the RTC. That made it a simple process to plug the module into my breadboard and connect it to the Pi. The module works on I²C and only requires 4 connecting wires (power, ground, SDA, SCL). The I²C pins on the Pi include a fixed 1.8 kohms pull-up resistor to 3.3v, meaning that no additional resistors needed to be included in the wiring setup.</p>
|
||||
<figure>
|
||||
<img src="/computers/pi_rtc.jpeg" alt="DS1338 RTC module plugged-into a breadboard & connected to a Raspberry Pi." style="width: 100%;" />
|
||||
<figcaption>DS1338 RTC module plugged-into a breadboard & connected to a Raspberry Pi</figcaption>
|
||||
</figure>
|
||||
<p>Following the AdaFruit guide to <a href="https://learn.adafruit.com/adding-a-real-time-clock-to-raspberry-pi/set-up-and-test-i2c">Adding a Real Time Clock to Raspberry Pi</a> (with small additions), I was able to run an I²C scan and verify that the module was wired correctly to the Pi:</p>
|
||||
<code>sudo apt-get install python-smbus i2c-tools</code><br>
|
||||
<code>sudo modprobe i2c-dev</code><br>
|
||||
<code>sudo i2cdetect -y 1</code><br>
|
||||
<p>The final command in the sequence prints an array to the console, with 68 denoting the presence of the RTC module. This is a sign that the device is properly wired and connected. Great! This is where things started to get tricky…</p>
|
||||
<p>If we were running Raspbian for this project the next steps would be pretty simple. As it turns out, the process for Debian Buster ARM64 is quite a bit more complicated. A <a href="https://code.overdrivenetworks.com/blog/2018/07/debian-buster-on-a-raspberry-pi-3-model-b-plus/">blog post</a> I found last night neatly summarizes the pros and cons of this choice:</p>
|
||||
<figure>
|
||||
<img src="/computers/debian_pi_pros_cons.png" alt="List of advantages and disadvantages of running Debian Buster ARM64 on Raspberry Pi." style="width: 100%;" />
|
||||
<figcaption>List of advantages and disadvantages of running Debian Buster ARM64 on Raspberry Pi</figcaption>
|
||||
</figure>
|
||||
<p>No kidding! There were, however, a few crumbs along the way to sustain me over the course of the journey. These included <a href="https://raspberrypi.stackexchange.com/questions/41277/what-is-needed-to-get-i%c2%b2c-working-with-debian-jessie">What is needed to get I²C working with Debian Jessie?</a> and <a href="https://raspberrypi.stackexchange.com/questions/60084/i2c-transfer-failed-flooding-the-logs">"I2C transfer failed" flooding the logs.</a></p>
|
||||
<p>I appended <code>dtoverlay=i2c-rtc,ds1307</code> and <code>dtparam=i2c_arm=on</code> to <code>/boot/firmware/config.txt</code> and <code>i2c-dev</code> to <code>/etc/modules</code> but the RTC device was still not coming under control of the kernel driver. When I looked at <code>/var/log/kern.log</code> I found an <code>i2c could not read clock-frequency property</code> error which led me to the second of the two posts linked in the paragraph above. It seemed I would need to decompile, patch and recompile the device tree blob for my Pi. I copied <code>/boot/firmware/bcm2837-rpi-3-b.dtb</code> from the Pi to my laptop for the following steps:</p>
|
||||
<code>sudo apt-get install device-tree-compiler</code><br>
|
||||
<code>cd /place/where/dtb/file/was/pasted</code><br>
|
||||
<code>dtc -I dtb -O dts > bcm2837-rpi-3-b.dts</code><br>
|
||||
<p>That gave me a human-readable decompiled device tree (dts). I then manually added <code>clock-frequency = <0x186a0>;</code> to the generated dts file (line 570 for me).</p>
|
||||
<p>Recompiled the dts to binary blob format:</p>
|
||||
<code>dtc -O dtb -o bcm2837-rpi-3-b.dtb bcm2837-rpi-3-b.dts</code>
|
||||
<p>This left me with a patched dtb to replace the faulty dtb on the Pi. At this point I was thinking: ‘I don’t know what I’m doing but it feels pretty cool’. Once I’d patched the dtb and rebooted my Pi I no longer had clock-frequency errors in the kernel logs - a minor victory! Still, I couldn’t seem to get the RTC kernel driver to work. Eventually I returned to <a href="https://www.raspberrypi.org/forums/viewtopic.php?p=330617">Instructions to Configure DS1307 or DS1338 RTC</a> and had another go:</p>
|
||||
<code>sudo modprobe i2c-bcm2835</code><br>
|
||||
<code>sudo bash</code><br>
|
||||
<code>echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device</code><br>
|
||||
<code>exit</code><br>
|
||||
<code>sudo modprobe rtc-ds1307</code>
|
||||
<p>I ran <code>sudo i2cdetect -y 1</code> for the 234th time and bingo! It works! <i>Running around room celebrating.</i></p>
|
||||
<figure>
|
||||
<img src="/computers/i2c_working.jpeg" alt="Screenshot of terminal showing successful configuration of I²C RTC module." style="width: 100%;" />
|
||||
<figcaption>Screenshot of terminal showing successful configuration of I²C RTC module</figcaption>
|
||||
</figure>
|
||||
<p>This is really exciting because it opens the door to (relatively) easy integration of other I²C devices (sensors, LCD displays etc.). Next step will be to fine-tune the process so that everything loads correctly on boot. If you stuck with me this far - thanks for reading!</p>
|
||||
</article>
|
||||
<hr>
|
||||
{%- endblock %}
|
21
templates/computers/rust_compilation.html.tera
Normal file
@ -0,0 +1,21 @@
|
||||
{% extends "nav" %}
|
||||
{% block content %}
|
||||
<article>
|
||||
<h2>Cross-Compiling Rust for Debian Buster on Raspberry Pi 3B+</h2>
|
||||
<i>18 May, 2020</i>
|
||||
<p>Install target platform:</p>
|
||||
<code>rustup target add aarch64-unknown-linux-gnu</code>
|
||||
<p>Install toolchain:</p>
|
||||
<code>rustup toolchain install nightly-aarch64-unknown-linux-gnu</code>
|
||||
<p>Install aarch64-linux-gnu-gcc:</p>
|
||||
<code>sudo apt-get install gcc-aarch64-linux-gnu</code>
|
||||
<p>Configure the linker*:</p>
|
||||
<code>export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=/usr/bin/aarch64-linux-gnu-gcc</code>
|
||||
<p>Compile release build:</p>
|
||||
<code>cargo build --release --target=aarch64-unknown-linux-gnu</code>
|
||||
<p>* Another approach is to create `cargo-config` in the root directory of the repo and add the following:</p>
|
||||
<code>[target.aarch64-unknown-linux-gnu]</code><br>
|
||||
<code>linker = "aarch64-linux-gnu-gcc"</code>
|
||||
</article>
|
||||
<hr>
|
||||
{%- endblock %}
|
@ -4,9 +4,10 @@
|
||||
<p>Welcome to the personal website of glyph.</p>
|
||||
<h2>Contact Information</h2>
|
||||
<ul style="padding: 0;">
|
||||
<li class="list-item">Email: <a href="mailto:glyph@mycelial.technology">glyph@mycelial.technology</a></li>
|
||||
<li class="list-item">Merveilles: <a href="https://merveilles.town/@glyph" title="@glyph@merveilles.town">@glyph</a></li>
|
||||
<li class="list-item" style="word-wrap: break-word;">Scuttlebutt: @HEqy940T6uB+T+d9Jaa58aNfRzLx9eRWqkZljBmnkmk=.ed25519</li>
|
||||
<li class="list-item">Email: <a href="mailto:glyph@mycelial.technology" title="glyph's Email address">glyph@mycelial.technology</a></li>
|
||||
<li class="list-item">Sourcehut: <a href="https://git.sr.ht/~glyph" title="glyph's Sourcehut repo">@glyph</a></li>
|
||||
<li class="list-item">Merveilles: <a href="https://merveilles.town/@glyph" title="glyph's Fediverse profile">@glyph</a></li>
|
||||
<li class="list-item" style="word-wrap: break-word;" title="glyph's Scuttlebutt profile">Scuttlebutt: @HEqy940T6uB+T+d9Jaa58aNfRzLx9eRWqkZljBmnkmk=.ed25519</li>
|
||||
</ul>
|
||||
<hr>
|
||||
{%- endblock %}
|
||||
|
@ -1,7 +1,6 @@
|
||||
{% extends "nav" %}
|
||||
{% block content %}
|
||||
<h2>Lists</h2>
|
||||
<hr>
|
||||
<h3>Books</h3>
|
||||
<p>Currently Reading</p>
|
||||
<ul>
|
||||
@ -45,4 +44,5 @@
|
||||
<li><a href="https://www.indefenseofplants.com/podcast" title="In Defense of Plants podcast"><i>In Defense of Plants</i></a> - Matt</li>
|
||||
<li><a href="https://www.happinesslab.fm/" title="The Happiness Lab podcast"><i>The Happiness Lab</i></a> - Dr Laurie Santos</li>
|
||||
</ul>
|
||||
<hr>
|
||||
{%- endblock %}
|
||||
|
@ -1,5 +1,9 @@
|
||||
{% extends "nav" %}
|
||||
{% block content %}
|
||||
<h2>Meditation</h2>
|
||||
<img src="art/halo.svg" style="width: 500px; max-width: 90%;" title="Halo" />
|
||||
<article>
|
||||
<h2>Meditation</h2>
|
||||
<img src="art/halo.svg" style="width: 500px; max-width: 90%;" title="Halo" />
|
||||
<p>My current meditation practice includes 20 minutes of qigong each morning, as well as semi-regular <i>suizen</i> shakuhachi practice and club juggling.</p>
|
||||
</article>
|
||||
<hr>
|
||||
{%- endblock %}
|
||||
|
@ -13,11 +13,10 @@
|
||||
<li class="nav-item"><a href="/plants">plants</a></li>
|
||||
<li class="nav-item"><a href="/meditation">meditation</a></li>
|
||||
<li class="nav-item"><a href="/support">support</a></li>
|
||||
<li class="nav-item"><a href="/travel">travel</a></li>
|
||||
</ol>
|
||||
</nav>
|
||||
{%- block content %}{%- endblock %}
|
||||
<footer style="display: flex;">
|
||||
<p>© 2020 glyph</p>
|
||||
<p>© 2020 glyph<p>
|
||||
</footer>
|
||||
{%- endblock %}
|
||||
|
@ -2,6 +2,7 @@
|
||||
{% block content %}
|
||||
<h2>Plants</h2>
|
||||
<ul>
|
||||
<li><a href="/plants/aloe-there">Aloe There</a> - <i>6 June, 2020</i></li>
|
||||
<li><a href="/plants/potato-tech">Potato Tech</a> - <i>31 December, 2017</i></li>
|
||||
<li><a href="/plants/blueberry-dance">I Have Been Invited Into a Dance by a Bush with Purple Berries</a> - <i>20 December, 2017</i></li>
|
||||
</ul>
|
||||
|
23
templates/plants/aloe_there.html.tera
Normal file
@ -0,0 +1,23 @@
|
||||
{% extends "nav" %}
|
||||
{% block content %}
|
||||
<article>
|
||||
<h2>Aloe There</h2>
|
||||
<i>6 June, 2020</i>
|
||||
<figure>
|
||||
<img src="/plants/aloe_flowers.jpg" alt="Dense cones of golden, tubular flowers dominate the frame, with green succulent leaves at the bottom, a bright blue sky above, and a thatched-roof in the background. Bees can be seen amongst the flowers." style="width: 100%;" />
|
||||
<figcaption>Sunshine in the winter time</figcaption>
|
||||
</figure>
|
||||
<p>All the aloes are in full bloom right now and it makes me so happy. The bees are pretty stoked about it too, as are the sunbirds.</p>
|
||||
<blockquote cite="https://en.wikipedia.org/wiki/Sunbird">
|
||||
<p>As nectar is a primary food source for sunbirds, they are important pollinators in African ecosystems. Sunbird-pollinated flowers are typically long, tubular, and red-to-orange in colour, showing convergent evolution with many hummingbird-pollinated flowers in the Americas. A key difference is that sunbirds cannot hover, so sunbird-pollinated flowers and inflorescences are typically sturdier than hummingbird-pollinated flowers, with an appropriate landing spot from which the bird can feed.</p>
|
||||
<footer>- <a href="https://en.wikipedia.org/wiki/Sunbird"><cite>Sunbird Wikipedia page</cite></a></footer>
|
||||
</blockquote>
|
||||
<p>This is likely <i>Aloe ferox</i>, though it should be said that I’m still learning to differentiate species. It’s categorised as a solitary, non-branching tree aloe. There is another one nearby which is easily 5-6 meters tall. Some species have yellow flowers, while others are orange, red or pink. They are wonderful neighbours. I think I will devote a good portion of my life to caring for aloes and learning more about them. If my spirit has a colour, it is that of the flowers above.</p>
|
||||
<figure>
|
||||
<img src="/plants/tree_aloe.jpg" style="width: 100%;" />
|
||||
<figcaption>Majestic tree aloe amongst the succulents</figcaption>
|
||||
</figure>
|
||||
</article>
|
||||
<p>An anecdote: I once drank <i>Huachuma</i> on a farm which had a cactus and succulent garden home to more than 1,000 species. After a good few hours drumming around a bonfire, my friends and I went to walk through the aforementioned garden. The moon was full, the night was still. Of all those species, the aloes were the only ones which appeared to me to be glowing blue-green. Not just reflecting the moonlight…glowing. I shall let the reader interpret that as they wish.</p>
|
||||
<hr>
|
||||
{%- endblock %}
|
@ -10,8 +10,9 @@
|
||||
<h2>Supporting</h2>
|
||||
<p>These are the projects and friends I currently contribute to:</p>
|
||||
<ul>
|
||||
<li>@cel - $5 per month for Scuttlebutt development</li>
|
||||
<li>@SoapDog - $5 per month for PatchFox development</li>
|
||||
<li>Joey Santore - $5 per month for Crime Pays But Botany Doesn't</li>
|
||||
<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>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>
|
||||
{%- endblock %}
|
||||
|