···1+# only run some commands if nix is installed
2+nix="$(command -v nix)"
3+4+if ! has nix_direnv_version || ! nix_direnv_version 2.2.1 && [ -n "$nix" ] ; then
5+ source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/2.2.1/direnvrc" "sha256-zelF0vLbEl5uaqrfIzbgNzJWGmLzCmYAkInj/LNxvKs="
6+fi
7+8+[ -n "$nix" ] && use flake
···1+{{ export function icon_grid(icons) }}
2+ <div class="grid grid-cols-5 gap-2">
3+ {{ for id, lang of icons }}
4+ {{ if typeof lang === "string" }}
5+ {{ devicon(id, lang) }}
6+ {{ else }}
7+ {{> const { name, light, dark } = lang }}
8+ {{ devicon(id, name, light, dark) }}
9+ {{ /if }}
10+ {{ /for }}
11+ </div>
12+{{ /export }}
13+14+{{ function devicon(id, name, light, dark) }}
15+ {{ set parts = [id, light, dark].filter(Boolean).join("/") }}
16+ {{ set style = `"--devicon: url('https://cdn.simpleicons.org/${parts}');"` }}
17+ <div
18+ class="devicon"
19+ style={{ style }}
20+ data-tooltip={{ name }}
21+ ></div>
22+{{ /function }}
23+
+1-1
src/_includes/layouts/base.pug
···1doctype html
2html(lang="en")
3 include ../parts/head
4- body.pt-16(class="dark:bg-zinc-900 dark:text-zinc-200")
5 //- include ../parts/email-modal
6 include ../parts/navbar
7 block content
···1doctype html
2html(lang="en")
3 include ../parts/head
4+ body.pt-navbar(class="dark:bg-zinc-900 dark:text-zinc-200")
5 //- include ../parts/email-modal
6 include ../parts/navbar
7 block content
···1----
2-title: Heya~
3-description: I'm Leah, also known as pluie or pluiedev!
4-5-date: Git Last Modified
6-doNotRenderTitle: true
7-opengraph:
8- og:type: profile
9- profile:first_name: Leah
10- profile:last_name: Chen
11- profile:username: pluie
12- profile:gender: female
13----
14-15-include _includes/comps/devicon.pug
16-17-.grid.gap-20.mb-16(class="grid-cols-[20rem_auto_20rem] grid-rows-[calc(100vh-3*4rem)]")
18- figure.place-self-center
19- img.rounded-full.border-2.border-brand(src="/img/avatar.webp" alt="Avatar" width="320")
20- .col-span-2.place-self-center
21- h1.text-5xl.font-bold.mt-4
22- | Heya~ I’m #[span.text-brand Leah]!
23- span.text-xl
24- span.mx-2 ·
25- a(href="https://pronouns.page/@pluiedev") she/her 🏳️⚧️
26-27- p.text-2xl.mt-4.
28- You may know me by my online aliases,
29- #[span.text-brand pluie] or #[span.text-brand pluiedev].
30-31- .prose.text-justify.col-span-2(class="dark:prose-invert"): :md
32- I'm a Chinese open-source developer 👩🏼💻,
33- community manager 🔨👷🏼♀️,
34- graphics designer and artist 👩🏼🎨,
35- dedicated to making the world of digital technology and design accessible and
36- inclusive for everyone.
37-38- I love coding, drawing, painting, discovering more about myself, and helping others discover and express themselves.
39- Funnily enough, I do most of my productive work in my spare time when I'm supposed to relax—apparently,
40- once I get fixated on something, I can't stop. Not sure if that's a good quality or not! ;)
41-42- More things I like include dogs, traffic cones, history, politics and linguistics.
43- Especially <abbr title="constructed languages, or languages intentionally created by people">conlangs</abbr>.
44- They're _very_ cool.
45-46- I also often think way too hard about narrative video games, to the point
47- I write full articles and reviews about them. I'm not exactly professional,
48- but I still try my best to figure out what does and doesn't tick!
49-50- div
51-52- .text-centered.w-full(class="sm:text-left")
53- h2.text-2xl.font-bold Technologies that...
54-55- .flex.divide-y.gap-4(class="sm:flex-col")
56- each techs in technologies
57- div
58- h3.text-xl.my-3= techs.title
59- +devicons(techs.icons)
60-61- .prose.text-justify.col-span-2(class="dark:prose-invert")
62- h2(class="!mb-0") Current endeavors
63- p Up-to-date as of: #[em= filters.date(date, "HUMAN_DATE")]
64-65- :md
66- Currently, I spend most of my attention and energy on two things:
67- community management and moderation, and contributing to and creating various
68- open-source projects.
69-70- As one of the [community managers](https://quiltmc.org/about/teams/#community-managers)
71- of [the Quilt Project](https://quiltmc.org), a modding toolchain project primarily designed for Minecraft,
72- I work on policies, guidelines and tooling that drives Quilt towards its goal of creating
73- a healthy, diverse, multicultural community striving to accomodate all sorts of minorities,
74- be they ethnic or racial minorities, sexual and/or gender-nonconfirming minorities, neurodivergent minorities,
75- or any other group of people facing various challenges and adversities in world society.
76-77- My unique identity as a queer, lesbian Chinese trans woman with an international,
78- multicultural mindset provides me with ample amounts of lived experience with
79- diversifying communities beyond the dominant Western, mostly Anglophone,
80- predominantly white, cis- and heteronormative culture,
81- which is unfortunately still the sole major cultural environment in most tech-focused communities.
82- I hope that, through my efforts, heterogeneous people from diverse backgrounds can find
83- communities that I manage comfortable, and be free from having to mask their cultural heritage,
84- like when I first ventured into international technical communities.
85-86- As an open-source contributor, I occasionally submit patches and pull requests to
87- projects I find interesting, mostly in Rust, TypeScript and Kotlin.
88- I also maintain Quilt's community tooling, mainly [its official website](https://quiltmc.org)
89- and its [Developer Wiki](https://modder.wiki.quiltmc.org/), and sometimes its own
90- Discord bot called [Cozy](https://github.com/QuiltMC/cozy-discord).
91- I also started some other random projects, one of which is a
92- [Rust rewrite of the `alien` tool](https://github.com/pluiedev/alien),
93- originally a Perl utility script that converts Linux software packages between various formats
94- (e.g.: `.deb`, `.rpm`, `.tgz`, ...) for different package managers (e.g.: `dpkg`/`apt`, `rpm`/`dnf`, ...)
95-96- I'm almost always coding something new, for existing projects or otherwise,
97- and I can't wait to show you more! For now, you'll just have to wait for me to update this
98- portfolio again sometime in the future...
99-
···1+---
2+layout: layouts/base.vto
3+title: Heya~
4+description: I'm Leah, also known as pluie or pluiedev!
5+6+date: Git Last Modified
7+doNotRenderTitle: true
8+opengraph:
9+ og:type: profile
10+ profile:first_name: Leah
11+ profile:last_name: Chen
12+ profile:username: pluie
13+ profile:gender: female
14+---
15+{{ import { icon_grid } from "comps/icon-grid.vto" }}
16+17+<link rel="stylesheet" href="main.css" />
18+19+<div class="top-detector"></div>
20+<main class="grid splash justify-items-center gap-x-16 gap-y-10 mx-auto max-w-screen-lg mb-16 grid-cols-main-screen">
21+ <figure class="intro place-self-center">
22+ <img class="rounded-full border-2 border-brand" src="/img/avatar.webp" alt="Avatar" width="320" height="320" />
23+ </figure>
24+25+ <div class="intro col-span-2 place-self-center flex flex-col gap-y-4">
26+ <h1 class="text-5xl font-bold">
27+ Heya~ I’m <span class="text-brand">Leah</span>!
28+ <span class="text-xl">
29+ <span class="mx-2">·</span>
30+ <a href="https://pronouns.page/@pluiedev">she/her 🏳️⚧️</a>
31+ </span>
32+ </h1>
33+34+ <p class="text-2xl">
35+ You may know me by my online aliases,
36+ <span class="text-brand">pluie</span> or
37+ <span class="text-brand">pluiedev</span>.
38+ </p>
39+ <p class="text-xl">
40+ I'm a Chinese open-source <span class="text-brand">developer 👩🏼💻</span>,
41+ community <span class="text-brand">manager 🔨👷🏼♀️</span>,
42+ graphics designer and <span class="text-brand">artist 👩🏼🎨</span>,
43+ dedicated to making the world of technology and design accessible and
44+ inclusive for <span class="text-brand">everyone</span>.
45+ </p>
46+ </div>
47+48+ <div class="scroll-down">
49+ Scroll down
50+ <div class="bottom-detector"></div>
51+ </div>
52+53+ <div id="scroll-indicator-vanish-point" class="prose text-justify col-span-2 dark:prose-invert">
54+ {{ filter strip_indent |> md }}
55+ I love coding, drawing, painting, discovering more about myself, and helping others discover and express themselves.
56+ Funnily enough, I do most of my productive work in my spare time when I'm supposed to relax—apparently,
57+ once I get fixated on something, I can't stop. Not sure if that's a good quality or not! ;)
58+59+ More things I like include dogs, traffic cones, history, politics and linguistics.
60+ Especially <abbr title="constructed languages, or languages intentionally created by people">conlangs</abbr>.
61+ They're _very_ cool.
62+63+ I also often think way too hard about narrative video games, to the point
64+ I write full articles and reviews about them. I'm not exactly professional,
65+ but I still try my best to figure out what does and doesn't tick!
66+ {{ /filter }}
67+ </div>
68+69+ <div class="flex flex-col w-full place-content-center gap-2">
70+ {{ for link of links }}
71+ {{ set fg = link.fg ?? "white" }}
72+ {{ if link.icon.startsWith("si-") }}
73+ {{ set icon = `https://cdn.simpleicons.org/${link.icon.substring(3)}/${fg}` }}
74+ {{ else }}
75+ {{ set icon = link.icon }}
76+ {{ /if }}
77+78+ <a
79+ href={{ link.link }}
80+ class="button arrow-button has-icon bg-{{ link.color }} py-2 px-3 text-{{ fg }}"
81+ style="--icon: url({{ icon }})"
82+ >
83+ {{ link.text }}
84+ </a>
85+ {{ /for }}
86+ </div>
87+88+ <div class="text-centered w-full sm:text-left">
89+ <h2 class="text-2xl font-bold">Technologies that...</h2>
90+91+ <div class="flex divide-y gap-4 sm:flex-col">
92+ {{ for techs of technologies }}
93+ <div>
94+ <h3 class="text-xl my-3">{{ techs.title }}</h3>
95+ {{ icon_grid(techs.icons) }}
96+ </div>
97+ {{ /for }}
98+ </div>
99+ </div>
100+101+ <div class="prose text-justify col-span-2 dark:prose-invert">
102+ <h2 class="!mb-0">Current endeavors</h2>
103+ <p>Up-to-date as of: <em>{{ it.date |> date("HUMAN_DATE") }}</em></p>
104+105+ {{ filter strip_indent |> md }}
106+ Currently, I spend most of my attention and energy on two things:
107+ community management and moderation, and contributing to and creating various
108+ open-source projects.
109+110+ As one of the [community managers](https://quiltmc.org/about/teams/#community-managers)
111+ of [the Quilt Project](https://quiltmc.org), a modding toolchain project primarily designed for Minecraft,
112+ I work on policies, guidelines and tooling that drives Quilt towards its goal of creating
113+ a healthy, diverse, multicultural community striving to accomodate all sorts of minorities,
114+ be they ethnic or racial minorities, sexual and/or gender-nonconfirming minorities, neurodivergent minorities,
115+ or any other group of people facing various challenges and adversities in world society.
116+117+ My unique identity as a queer, lesbian Chinese trans woman with an international,
118+ multicultural mindset provides me with ample amounts of lived experience with
119+ diversifying communities beyond the dominant Western, mostly Anglophone,
120+ predominantly white, cis- and heteronormative culture,
121+ which is unfortunately still the sole major cultural environment in most tech-focused communities.
122+ I hope that, through my efforts, heterogeneous people from diverse backgrounds can find
123+ communities that I manage comfortable, and be free from having to mask their cultural heritage,
124+ like when I first ventured into international technical communities.
125+126+ As an open-source contributor, I occasionally submit patches and pull requests to
127+ projects I find interesting, mostly in Rust, TypeScript and Kotlin.
128+ I also maintain Quilt's community tooling, mainly [its official website](https://quiltmc.org)
129+ and its [Developer Wiki](https://modder.wiki.quiltmc.org/), and sometimes its own
130+ Discord bot called [Cozy](https://github.com/QuiltMC/cozy-discord).
131+ I also started some other random projects, one of which is a
132+ [Rust rewrite of the \`alien\` tool](https://github.com/pluiedev/alien),
133+ originally a Perl utility script that converts Linux software packages between various formats
134+ (e.g.: \`.deb\`, \`.rpm\`, \`.tgz\`, ...) for different package managers (e.g.: \`dpkg\`/\`apt\`, \`rpm\`/\`dnf\`, ...)
135+136+ I'm almost always coding something new, for existing projects or otherwise,
137+ and I can't wait to show you more! For now, you'll just have to wait for me to update this
138+ portfolio again sometime in the future...
139+ {{ /filter }}
140+ </div>
141+</main>
142+143+<script>
144+ const scroll = document.querySelector('.scroll-down');
145+ const intro = document.querySelector('main');
146+147+ const t = new IntersectionObserver(entries => {
148+ entries.forEach(entry => {
149+ if (entry.isIntersecting) {
150+ scroll.classList.remove('opacity-0');
151+ intro.classList.remove('compact');
152+ }
153+ });
154+ });
155+ const b = new IntersectionObserver(entries => {
156+ entries.forEach(entry => {
157+ if (entry.isIntersecting) {
158+ scroll.classList.add('opacity-0');
159+ intro.classList.add('compact');
160+ }
161+ });
162+ });
163+164+ function init(ev) {
165+ if (window.innerHeight < 600) {
166+ scroll.classList.add('opacity-0');
167+ t.disconnect();
168+ b.disconnect();
169+ } else {
170+ t.observe(document.querySelector('.top-detector'));
171+ b.observe(document.querySelector('.bottom-detector'));
172+ }
173+ }
174+175+ window.addEventListener('resize', init)
176+ window.addEventListener('load', init)
177+</script>
···1---
2title: Works
3description: Projects, artworks, and other things I've done...
000000000000000000000000000000000000000000000000004---
506include _includes/comps/icon
7include _includes/comps/modal
089-h2.title.is-3 Projects
1011-:md
12 Under construction! :purple_heart:
13 (Yeah, I know, it's been ages, gimme some more time)
01415-h2.title.is-3 Artworks
1617-mixin display(id, title, imgid)
18- -const { height, width, aspectRatio, ...rest } = attributes;
1920- figure.display&attributes(rest)
21- label(for=id role="button" tabindex="0")
22- img(
23- src=`https://imagedelivery.net/TLP_u-wyyvTEPKkgbA6Osg/${imgid}/public`
24- alt=title
25- width=width
26- height=height
27- )
28-29- figcaption
30- h3.title.is-4= title
31- block
00032 +modal(id)
33 .image.is-fullwidth(class=aspectRatio)
34 img(
···37 fetchpriority="low"
38 loading="lazy"
39 )
004041-mixin header(date, medium)
42- p.subtitle.is-6
43- span.icon-text
44- +icon("far fa-calendar")
45- span= filters.date(date, "PP")
46- +icon("fas fa-brush")
47- span= medium
04849-+display("tiger", "Ferality", "558e95a4-f685-4dee-32a6-8c33e49d9600").has-frame(
50- size="medium" aspectRatio="is-square" width=400 height=408
51-)
52- +header("2018-12-02", "Oil on canvas")
53- :md
54 One of the older works of mine — I think I'd only spent 2 years dabbling with oil paintings back then,
55 and the technical inexpertise definitely shows — but a brazen and unpolished technique does not
56 necessarily hinder expressiveness. ;)
57-58 I really wanted to capture the anger in the tiger, and as I exaggerated its features and started furiously
59 laying down sweeping strokes of striking orange, I too experienced the feral fury in me.
60 Wish I could experience that again...
006162-+display("altitudinous_blossoms", "Altitudinous blossoms", "170696fd-d9b4-4652-e168-2cc80250d400").has-frame(
63- size="medium" aspectRatio="is-3by5" rtl width=400 height=660
64-)
65- +header("2021-02-11", "Oil on canvas")
66- :md
67 A friend of my mother's is a hobbyist photographer, and I think he took the original photo when he went to Tibet to...
68 well, take pictures of the wild flora and fauna and the majestic landscape.
69 (Y'know, like a photographer? Why else would he be there anyway?)
···76 I did take a while to figure it out though. I also used a toothbrush to ~~paint~~ *spray* the white dots on,
77 which are actually specks of mint-scented toothpaste and not white paint!
78 Although, they look like they hold up just fine on the canvas.
007980-+display("tropical_fish", "A piscine aura in the depths", "278a69c6-ec0a-4461-c3f3-79aa615ad800").has-frame(
81- size="large" aspectRatio="is-4by3" width=500 height=380
82-)
83- +header("2021-06-05", "Oil on canvas")
84- :md
85 Some kind of tropical fish whose name I have completely forgotten. It didn't even occur to past-Leah to write these things down! *sigh*
8687 It's really pretty, especially for its lake-blue scales and blood-red fins! Sure did take a long time to paint though... It was around this time
88 when my style really departed from the raw, emotional expression like *Ferality*, towards a finer sort of aesthetic.
008990-+display("red_cotton", "A flower — what's her name again?", "35db3ba1-542a-46aa-2d10-850d34463e00").has-frame(
91- size="large" aspectRatio="is-4by3" rtl width=500 height=372
92-)
93- +header("2021-12-11", "Oil on canvas")
94- :md
95 Turns out it's a flower of the tree [*Bombax ceiba*](https://en.wikipedia.org/wiki/Bombax_ceiba), better known as
96 the red cotton tree, or <ruby>木棉 <rp>(</rp><rt>mù mián</rt><rp>)</rp></ruby> in Chinese.
97 I was going to leave it unidentified, but my mother's a bonafide botanist and identified it for me.
···99 Its striking red color is honestly captivating, and I still have it displayed on the wall of my room,
100 facing the entrance for I hope any visitors would appreciate its vividity and life force seeping out of the canvas,
101 as much as I would.
00102103-+display("laotie", "老铁 (Laotie)", "d35a98e6-9215-4ca7-ac79-133c93d17700").has-frame(
104- size="medium" aspectRatio="is-3by4" width=400 height=533
105-)
106- +header("2022-03-20", "Oil on canvas")
107- :md
108 He's a corgi in the studio we used to paint in, and his presence made most of our weekly painting hours turn into communal dog-petting sessions.
109 It was lovely to paint with such an adorable cutie around, and time and stress all went away so swiftly with him.
110 I still have like, *so* many photos of him playing around with us... Too bad that that studio was shut down about 2 months ago, on February 2023.
111112 My mother insists I painted Santa Claus in disguise of a dog! But really, he's just wearing some festive clothes...
00113114-+display("mom_and_i", "By the lake, beneath the canopies, in the beforetimes", "34e6b9ba-08a0-4a1a-437c-2e8839591500").has-frame(
115- size="medium" aspectRatio="is-3by4" width=400 height=515
116-)
117- +header("2022-07-23", "Oil on canvas")
118- :md
119 One summer afternoon, on the eastern shore of Jinji Lake, Suzhou. It was an awfully nice day, so my mother and I decided
120 to take a selfie on our daily stroll outside.
121 Originally, I decided to paint this as a work of memorabilia, to make me cherish the good times I spent with my mother at home,
···123124 But now, it has taken an additional level of meaning — this was the last painting I finished before I realized I was a trans woman.
125 That tall silhouette with the masculine build was supposed to be me, but now it's representative of the person I used to be.
126-127 However, I have to remain truthful to myself — regardless of who I am now, I *was* like that back then, and this fossilized image
128- of me is one that I can't, and don't want to change. The past is not to be changed — the future, however, is.000000
···1---
2title: Works
3description: Projects, artworks, and other things I've done...
4+5+artworks:
6+ - id: tiger
7+ name: Ferality
8+ imgid: 558e95a4-f685-4dee-32a6-8c33e49d9600
9+ size: medium
10+ aspect_ratio: square
11+ width: 400
12+ height: 408
13+14+ - id: blossoms
15+ name: Altitudinous blossoms
16+ imgid: 170696fd-d9b4-4652-e168-2cc80250d400
17+ size: medium
18+ aspect_ratio: 3by5
19+ width: 400
20+ height: 660
21+22+ - id: fish
23+ name: A piscine aura in the depths
24+ imgid: 278a69c6-ec0a-4461-c3f3-79aa615ad800
25+ size: large
26+ aspect_ratio: 4by3
27+ width: 500
28+ height: 380
29+30+ - id: red_cotton
31+ name: A flower — what's her name again?
32+ imgid: 35db3ba1-542a-46aa-2d10-850d34463e00"
33+ size: large
34+ aspect_ratio: 4by3
35+ rtl: true
36+ width: 500
37+ height: 372
38+39+ - id: laotie
40+ name: 老铁 (Laotie)
41+ imgid: d35a98e6-9215-4ca7-ac79-133c93d17700
42+ size: medium
43+ aspect_ratio: 3by4
44+ width: 400
45+ height: 533
46+47+ - id: mom_and_i
48+ name: By the lake, beneath the canopies, in the beforetimes
49+ imgid: 34e6b9ba-08a0-4a1a-437c-2e8839591500
50+ size: medium
51+ aspect_ratio: 3by4
52+ width: 400
53+ height: 515
54---
5556+{{#
57include _includes/comps/icon
58include _includes/comps/modal
59+#}}
6061+<h2 class="text-3xl font-bold">Projects</h2>
6263+{{ filter strip_indent |> md }}
64 Under construction! :purple_heart:
65 (Yeah, I know, it's been ages, gimme some more time)
66+{{ /filter }}
6768+<h2 class="text-3xl font-bold">Artworks</h2>
6970+{{ function display(attrs) }}
71+ {{> const { id, title, imgid, height, width, aspect_ratio } = attrs }}
7273+ <figure class="display">
74+ <label for={{ id }} role="button" tabindex="0">
75+ <img
76+ src="https://imagedelivery.net/TLP_u-wyyvTEPKkgbA6Osg/{{ imgid }}/public"
77+ alt={{ title }}
78+ width={{ width }}
79+ height={{ height }}
80+ />
81+ </label>
82+83+ <figcaption>
84+ <h3 class="text-2xl font-bold">{{ title }}</h3>
85+ {{ it[id] }}
86+ </figcaption>
87+ {{#
88 +modal(id)
89 .image.is-fullwidth(class=aspectRatio)
90 img(
···93 fetchpriority="low"
94 loading="lazy"
95 )
96+ #}}
97+{{ /function }}
9899+{{ function header(date, medium) }}
100+ <p class="text-xl">
101+ <i data-lucide="calendar"></i>
102+ {{ date |> date("PP") }}
103+ <i data-lucide="brush"></i>
104+ {{ medium }}
105+ </p>
106+{{ /function }}
107108+{{ set tiger }}
109+ {{ header("2018-12-02", "Oil on canvas") }}
110+ {{ filter strip_indent |> md }}
00111 One of the older works of mine — I think I'd only spent 2 years dabbling with oil paintings back then,
112 and the technical inexpertise definitely shows — but a brazen and unpolished technique does not
113 necessarily hinder expressiveness. ;)
114+115 I really wanted to capture the anger in the tiger, and as I exaggerated its features and started furiously
116 laying down sweeping strokes of striking orange, I too experienced the feral fury in me.
117 Wish I could experience that again...
118+ {{ /filter }}
119+{{ /set }}
120121+{{ set blossoms }}
122+ {{ header("2021-02-11", "Oil on canvas") }}
123+ {{ filter strip_indent |> md }}
00124 A friend of my mother's is a hobbyist photographer, and I think he took the original photo when he went to Tibet to...
125 well, take pictures of the wild flora and fauna and the majestic landscape.
126 (Y'know, like a photographer? Why else would he be there anyway?)
···133 I did take a while to figure it out though. I also used a toothbrush to ~~paint~~ *spray* the white dots on,
134 which are actually specks of mint-scented toothpaste and not white paint!
135 Although, they look like they hold up just fine on the canvas.
136+ {{ /filter }}
137+{{ /set }}
138139+{{ set fish }}
140+ {{ header("2021-06-05", "Oil on canvas") }}
141+ {{ filter strip_indent |> md }}
00142 Some kind of tropical fish whose name I have completely forgotten. It didn't even occur to past-Leah to write these things down! *sigh*
143144 It's really pretty, especially for its lake-blue scales and blood-red fins! Sure did take a long time to paint though... It was around this time
145 when my style really departed from the raw, emotional expression like *Ferality*, towards a finer sort of aesthetic.
146+ {{ /filter }}
147+{{ /set }}
148149+{{ set red_cotton }}
150+ {{ header("2021-12-11", "Oil on canvas") }}
151+ {{ filter strip_indent |> md }}
00152 Turns out it's a flower of the tree [*Bombax ceiba*](https://en.wikipedia.org/wiki/Bombax_ceiba), better known as
153 the red cotton tree, or <ruby>木棉 <rp>(</rp><rt>mù mián</rt><rp>)</rp></ruby> in Chinese.
154 I was going to leave it unidentified, but my mother's a bonafide botanist and identified it for me.
···156 Its striking red color is honestly captivating, and I still have it displayed on the wall of my room,
157 facing the entrance for I hope any visitors would appreciate its vividity and life force seeping out of the canvas,
158 as much as I would.
159+ {{ /filter }}
160+{{ /set }}
161162+{{ set laotie }}
163+ {{ header("2022-03-20", "Oil on canvas") }}
164+ {{ filter strip_indent |> md }}
00165 He's a corgi in the studio we used to paint in, and his presence made most of our weekly painting hours turn into communal dog-petting sessions.
166 It was lovely to paint with such an adorable cutie around, and time and stress all went away so swiftly with him.
167 I still have like, *so* many photos of him playing around with us... Too bad that that studio was shut down about 2 months ago, on February 2023.
168169 My mother insists I painted Santa Claus in disguise of a dog! But really, he's just wearing some festive clothes...
170+ {{ /filter }}
171+{{ /set }}
172173+{{ set mom_and_i }}
174+ {{ header("2022-07-23", "Oil on canvas") }}
175+ {{ filter strip_indent |> md }}
00176 One summer afternoon, on the eastern shore of Jinji Lake, Suzhou. It was an awfully nice day, so my mother and I decided
177 to take a selfie on our daily stroll outside.
178 Originally, I decided to paint this as a work of memorabilia, to make me cherish the good times I spent with my mother at home,
···180181 But now, it has taken an additional level of meaning — this was the last painting I finished before I realized I was a trans woman.
182 That tall silhouette with the masculine build was supposed to be me, but now it's representative of the person I used to be.
183+184 However, I have to remain truthful to myself — regardless of who I am now, I *was* like that back then, and this fossilized image
185+ of me is one that I can't, and don't want to change. The past is not to be changed — the future, however, is.
186+ {{ /filter }}
187+{{ /set }}
188+189+{{ for artwork of artworks }}
190+ {{ display(artwork) }}
191+{{ /for }}