Compare commits
42 Commits
8cbee214cc
...
v2.0.0-alp
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
68263b1bad | ||
|
|
b8f65f2ce4 | ||
|
|
820a1f357a | ||
|
|
5fde9a2754 | ||
|
|
fba35705e9 | ||
|
|
2f09ca4a61 | ||
|
|
1c00979274 | ||
|
|
2af6bd1ed7 | ||
|
|
63c3b16bda | ||
|
|
a0d89676a8 | ||
|
|
3c7a687cab | ||
|
|
bd67b51325 | ||
|
|
e0d8a71e99 | ||
|
|
415182edae | ||
|
|
fb7cb1b73c | ||
|
|
60cd0f9850 | ||
|
|
81b854d32a | ||
|
|
a2c7d72ecf | ||
|
|
bc66ede0e1 | ||
|
|
7d1dfd0a5f | ||
|
|
dd199d7d5f | ||
|
|
9e59f22448 | ||
|
|
4662c8261c | ||
|
|
a97ec550fa | ||
|
|
8d2f472935 | ||
|
|
d9c47c0403 | ||
|
|
d6b689e0f6 | ||
|
|
7ba55567e8 | ||
|
|
4f1873b775 | ||
|
|
561048c93b | ||
|
|
ffb1bfdc30 | ||
|
|
643b2adb38 | ||
|
|
bf19ff876e | ||
|
|
ec1947376f | ||
|
|
d02026bd55 | ||
|
|
30938fe9d1 | ||
|
|
863355cd1c | ||
|
|
5bc1d2ecd9 | ||
|
|
5bde31a42f | ||
|
|
5f4049c10c | ||
|
|
aafa982faf | ||
|
|
5ba0e0408a |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1 +1,2 @@
|
|||||||
**/target
|
**/target
|
||||||
|
**/__pycache__
|
||||||
|
|||||||
12
build.sh
12
build.sh
@@ -83,17 +83,13 @@ do
|
|||||||
|
|
||||||
elif [ "$x" == 'copy' ]
|
elif [ "$x" == 'copy' ]
|
||||||
then
|
then
|
||||||
cmd='cp -R'
|
|
||||||
|
|
||||||
files=(
|
|
||||||
'src/.well-known/security.txt'
|
|
||||||
'src/feed/rss.xml'
|
|
||||||
'src/robots.txt'
|
|
||||||
)
|
|
||||||
|
|
||||||
mkdir -p target/.well-known
|
mkdir -p target/.well-known
|
||||||
mkdir -p target/feed
|
mkdir -p target/feed
|
||||||
|
|
||||||
|
cp 'src/feed/rss.xml' 'target/feed/rss.xml'
|
||||||
|
cp 'src/robots.txt' 'target/robots.txt'
|
||||||
|
cp 'src/.well-known/security.txt' 'target/.well-known/security.txt'
|
||||||
|
|
||||||
action=Copying...
|
action=Copying...
|
||||||
|
|
||||||
elif [ "$x" == 'conv-img' ]
|
elif [ "$x" == 'conv-img' ]
|
||||||
|
|||||||
13
src/.well-known/public.asc
Normal file
13
src/.well-known/public.asc
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
xjMEaNawyhYJKwYBBAHaRw8BAQdARXZA94pLJ9NqMFGi2g4mgC+JhsDccsjC5YZL
|
||||||
|
FFrXyVfNK09saXZpYSBCcm9va3MgPG9saXZpYS5hLmJyb29rczc3QGdtYWlsLmNv
|
||||||
|
bT7CiQQTFggAMRYhBNHb+MmfTznTILS7fUanaquYTswnBQJo1rDKAhsDBAsJCAcF
|
||||||
|
FQgJCgsFFgIDAQAACgkQRqdqq5hOzCdoOQEAwF3dlYsoaiAKuD1xv2R45QAWobHG
|
||||||
|
hI41JuUnAGPHWh4BAPilFDXQv3PbYOIS/fVqrNVZI9ZPbNpT0ZlQeLCFm48AzjgE
|
||||||
|
aNawyxIKKwYBBAGXVQEFAQEHQPMiRn06nv5gWZNYHjtKmshLWKlcnwOcOH1WRWE7
|
||||||
|
VREvAwEIB8J4BBgWCAAgFiEE0dv4yZ9POdMgtLt9Rqdqq5hOzCcFAmjWsMsCGwwA
|
||||||
|
CgkQRqdqq5hOzCfc9wD5AV4m9zFPoipKQNfZpll62bdI9zdtAT3QYS5XzwGCz1EA
|
||||||
|
/1Km4cYgieqk10A7X1Zpz2tP5miNyaAW48D5QiWd7GUD
|
||||||
|
=jPqw
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
Contact: mailto:olivia.a.brooks77@gmail.com
|
Contact: mailto:olivia.a.brooks77@gmail.com
|
||||||
Expires: 2026-06-01T04:00:00.000Z
|
Encryption: https://www.cutieguwu.ca/.well-known/public.asc
|
||||||
Acknowledgments: https://www.cutieguwu.ca/acknowledgements.html
|
Acknowledgments: https://www.cutieguwu.ca/acknowledgements.html
|
||||||
Preferred-Languages: en, fr
|
Preferred-Languages: en, fr
|
||||||
|
Expires: 2027-01-01T04:00:00.000Z
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<include src="includes/nav_header.html" />
|
<include src="includes/nav_header.html" />
|
||||||
<include src="includes/nav_menu.html" />
|
<include src="includes/nav_menu.html" />
|
||||||
<div class="location">
|
<div class="location">
|
||||||
<h4 class="header">You are here:</h4>
|
<header><h4>You are here:</h4></header>
|
||||||
<h5 class="page">About</h5>
|
<h5 class="page">About</h5>
|
||||||
</div>
|
</div>
|
||||||
<include src="includes/nav_quick_links.html" />
|
<include src="includes/nav_quick_links.html" />
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<include src="includes/nav_header.html" />
|
<include src="includes/nav_header.html" />
|
||||||
<include src="includes/nav_menu.html" />
|
<include src="includes/nav_menu.html" />
|
||||||
<div class="location">
|
<div class="location">
|
||||||
<h4 class="header">You are here:</h4>
|
<header><h4>You are here:</h4></header>
|
||||||
<h5 class="page">Acknowledgements</h5>
|
<h5 class="page">Acknowledgements</h5>
|
||||||
</div>
|
</div>
|
||||||
<include src="includes/nav_quick_links.html" />
|
<include src="includes/nav_quick_links.html" />
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<include src="includes/nav_header.html" />
|
<include src="includes/nav_header.html" />
|
||||||
<include src="includes/nav_menu.html" />
|
<include src="includes/nav_menu.html" />
|
||||||
<div class="location">
|
<div class="location">
|
||||||
<h4 class="header">You are here:</h4>
|
<header><h4>You are here:</h4></header>
|
||||||
<h5 class="page">Blog</h5>
|
<h5 class="page">Blog</h5>
|
||||||
</div>
|
</div>
|
||||||
<include src="includes/nav_quick_links.html" />
|
<include src="includes/nav_quick_links.html" />
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<include src="includes/nav_header.html" />
|
<include src="includes/nav_header.html" />
|
||||||
<include src="includes/nav_menu.html" />
|
<include src="includes/nav_menu.html" />
|
||||||
<div class="location">
|
<div class="location">
|
||||||
<h4 class="header">You are here:</h4>
|
<header><h4>You are here:</h4></header>
|
||||||
<h5 class="page">Blog - Divergent Pathways</h5>
|
<h5 class="page">Blog - Divergent Pathways</h5>
|
||||||
</div>
|
</div>
|
||||||
<include src="includes/nav_quick_links.html" />
|
<include src="includes/nav_quick_links.html" />
|
||||||
@@ -53,7 +53,7 @@
|
|||||||
teachers certainly made sure of that, and ultimately helped lead me down a
|
teachers certainly made sure of that, and ultimately helped lead me down a
|
||||||
path of being the teacher's pet. Maybe I'll talk about my experiences and
|
path of being the teacher's pet. Maybe I'll talk about my experiences and
|
||||||
struggles related to that another time, but the short of it is that I am a
|
struggles related to that another time, but the short of it is that I am a
|
||||||
high-acheiving workaholic as a result. My ex-boyfriend on the other hand,
|
high-achieving workaholic as a result. My ex-boyfriend on the other hand,
|
||||||
didn't have that kind of an experience, and ultimately was led down the
|
didn't have that kind of an experience, and ultimately was led down the
|
||||||
college-level course stream in high school.
|
college-level course stream in high school.
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<include src="includes/nav_header.html" />
|
<include src="includes/nav_header.html" />
|
||||||
<include src="includes/nav_menu.html" />
|
<include src="includes/nav_menu.html" />
|
||||||
<div class="location">
|
<div class="location">
|
||||||
<h4 class="header">You are here:</h4>
|
<header><h4>You are here:</h4></header>
|
||||||
<h5 class="page">Blog - Unsure U.</h5>
|
<h5 class="page">Blog - Unsure U.</h5>
|
||||||
</div>
|
</div>
|
||||||
<include src="includes/nav_quick_links.html" />
|
<include src="includes/nav_quick_links.html" />
|
||||||
|
|||||||
162
src/blog/posts/2_buyers_anxiety.html
Normal file
162
src/blog/posts/2_buyers_anxiety.html
Normal file
@@ -0,0 +1,162 @@
|
|||||||
|
<!doctype html>
|
||||||
|
|
||||||
|
<html lang="en-ca">
|
||||||
|
<head>
|
||||||
|
<title>Buyer's Anxiety | Cutieguwu</title>
|
||||||
|
<include src="includes/meta.html" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<nav class="pane">
|
||||||
|
<include src="includes/nav_header.html" />
|
||||||
|
<include src="includes/nav_menu.html" />
|
||||||
|
<div class="location">
|
||||||
|
<header><h4>You are here:</h4></header>
|
||||||
|
<h5 class="page">Blog - Buyer's Anxiety</h5>
|
||||||
|
</div>
|
||||||
|
<include src="includes/nav_quick_links.html" />
|
||||||
|
</nav>
|
||||||
|
<main class="pane blog">
|
||||||
|
<div class="body">
|
||||||
|
<header>
|
||||||
|
<h1 class="title">Buyer's Anxiety</h1>
|
||||||
|
<p class="date">Posted: 11 September, 2025</p>
|
||||||
|
<p class="date">Last Edited: 14 September, 2025</p>
|
||||||
|
</header>
|
||||||
|
<div class="body">
|
||||||
|
<img
|
||||||
|
alt="Katie's old laptop, seated upon her clean desk, struggling on. Although, you can't tell how broken the hinge is or the parts that her kitten chewed. I swear, it's in worse condition than it looks."
|
||||||
|
src="/img/blog/posts/2_buyers_anxiety.webp"
|
||||||
|
/>
|
||||||
|
<p>
|
||||||
|
I can't say that I'm thrilled that my blog posts have only been when I'm
|
||||||
|
down or struggling with something. But, here we are: the third one.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I'm stuck with an internal conflict. It feels like remorse, but before the
|
||||||
|
poor choice has happened, as opposed to fear? But it is fear.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
It's no secret that I love my Framework 16, the company's values, and Linux.
|
||||||
|
</p>
|
||||||
|
<p>I also want to support my friends whenever and however I can.</p>
|
||||||
|
<p>But what if those two things clash?... Spoiler: they have.</p>
|
||||||
|
<p>
|
||||||
|
To preface this whole thing, my friend is looking for a new laptop. She
|
||||||
|
bought her old one because it was in her price range. Four years later,
|
||||||
|
it's... struggling. The enshittification of the tech industry took hold, one
|
||||||
|
hinge died a couple years ago, the whole body is weak, the system is
|
||||||
|
relatively underpowered for her needs, and it's not going to survive
|
||||||
|
university in any good condition, if even that. As a two-time published
|
||||||
|
author, she needs to be able to type and open this system a lot. That means
|
||||||
|
a good keyboard and good hinges. She also wants to play Minecraft, Roblox,
|
||||||
|
and probably Uno on it too. Thus, GPU demands aren't high and she'll want at
|
||||||
|
least a 15" display. She treats her devices well and cares for their
|
||||||
|
longevity.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
To me, this sounds like a great place for a Framework laptop. Expensive
|
||||||
|
upfront, sure. But the 16" model has an iGPU that runs Minecraft and Roblox
|
||||||
|
just fine, has a super easy to replace input module system to replace the
|
||||||
|
keyboard, good hinges, a CPU that's total overkill (even for the stuff I do;
|
||||||
|
I wanted a six-core), and it wears like a tank. A guy at our high school
|
||||||
|
proved that unintentionally. I have the dent in the lid and the pristene
|
||||||
|
display to prove it. It also has some added benefits, like the hardware
|
||||||
|
switches for the camera and mic, overall modular design, repairability, and
|
||||||
|
the upgrade paths, which save her from spending more money to buy a full
|
||||||
|
tower or another laptop. Framework recently announced the new generation
|
||||||
|
boards for the FW 16, and knocked down the price of the 7040 series boards
|
||||||
|
slightly, but that's a nice-to-have. Even if you're a non-techie, you won't
|
||||||
|
need to get into the hardware unless you're building it or repairing
|
||||||
|
something, and Framework's guides have only gotten better. Even when trying
|
||||||
|
to replace the liquid metal, or solve an issue that I thought was a loose
|
||||||
|
display cable (it was a linux software issue of some kind), the guides got
|
||||||
|
me through the wholly unknown to me.
|
||||||
|
</p>
|
||||||
|
<p>This makes it sound perfect.</p>
|
||||||
|
<p>
|
||||||
|
The downside? Well, I feel like I'm just succumbing to brand loyalty. A
|
||||||
|
total shill. The whole above paragraph sounds like a sales pitch without the
|
||||||
|
company's values explicitly spouted. The one thing I envy of Apple fans, is
|
||||||
|
their ability to convince others that Apple is great and feel no conflict.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Is this what a parent feels like when buying for a child? Probably not?
|
||||||
|
After all, the child likely isn't knowledgeable upon the context, or doesn't
|
||||||
|
care enough to question the rationale leading to the purchase. But here, I'm
|
||||||
|
buying for a friend. Someone smart (Before someone starts, I'm not saying
|
||||||
|
that a child can't be smart or that the rest of my friends are dumb). Sure,
|
||||||
|
she's not a techie the way I am, but she is more than capable of questioning
|
||||||
|
things for herself. What's the price? What's the rationale? Are you just
|
||||||
|
pushing me into an ecosystem that you love? Are you buying my friendship?
|
||||||
|
...and so on down the rabbit hole my train of thought hops.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I've already convinced two friends to try Linux, but their hardware and
|
||||||
|
personal needs caused too many problems. I also convinced a family member of
|
||||||
|
mine, who was an Apple fan, to shift to a Framework 13 running Linux.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I feel like a manipulator. I left my proud, cheerful "switch to Linux"
|
||||||
|
chanting phase a while ago. But did I really? Am I so moral-driven that I'm
|
||||||
|
blind? Is this really a selfless gift to a friend? Is this because I'm
|
||||||
|
afraid of losing my friends? Or do I subconciously hold an agenda to migrate
|
||||||
|
everyone to Framework and Linux? As stupid as it sounds, I mean this
|
||||||
|
literally.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Even if you consider the idea that "only a good person would think like
|
||||||
|
that, because a bad person would know it," it doesn't help.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
To make things worse again, I've long spouted buying something with the
|
||||||
|
intent to run it long term, instead of buying a bunch of cheap somethings
|
||||||
|
that die super fast. My previous laptop, which I got from my father, ran for
|
||||||
|
nearly 12 years before the display started dying; now it's a server. So
|
||||||
|
imagine a teenager with that kind of a background in keeping a computer
|
||||||
|
running for so long, sees a 3-year old laptop already in a far worse
|
||||||
|
condition than their 10/11-year old one (with comparable specs). I was that
|
||||||
|
teenager, and I started a "joke" once I got my new laptop, about it's easily
|
||||||
|
replaceable hinges... and so on. Of course, I was prideful in a sense, and I
|
||||||
|
kept that "joke" going too long... So how will it look when the laptop who's
|
||||||
|
death I foretold gets replaced by the exact laptop that it was compared to?
|
||||||
|
(Assuming that I didn't start the "joke" about the purchase decisions, age,
|
||||||
|
and condition of my previous one.)
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The only consolation I get for now, is that I have a few days to see how
|
||||||
|
Katie likes the FW 13, which is loaned off the aforementioned family member
|
||||||
|
of mine. The trouble, because of course there's more, is that I need to
|
||||||
|
discern between her impressions of the computer, and the OS, since it's
|
||||||
|
Manjaro Linux. Because of that, my plan is to dual boot the gifted system.
|
||||||
|
That way she can finish her computer science stuff in the same environment,
|
||||||
|
and then decide whether or not to scrap the Linux partition.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Of course, as always, my troubles start just after having had a counselling
|
||||||
|
session. So, I'm left to deal with this myself for a few weeks.
|
||||||
|
</p>
|
||||||
|
<p>Sometimes I wonder why things can't just be simple for me in life...</p>
|
||||||
|
<hr />
|
||||||
|
<p>
|
||||||
|
Now, as a note, I'm not saying that Framework is perfect. They've had, and
|
||||||
|
continue to have, their issues. The difference is that they actually listen
|
||||||
|
and work on them. The guides, the incorrect QR codes, the support system,
|
||||||
|
FW16 keyboard deflection, late UEFI updates, the FW16 keyboard wake-up issue
|
||||||
|
with the screen closed, the first-gen display expansion cards power draw
|
||||||
|
issue, and so on. And sure, they can be slow. But they're small, and they
|
||||||
|
try to do it right the first time. They release the software and hardware
|
||||||
|
patches to affected systems, and listen on to further critique in the
|
||||||
|
interest of improving.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<include src="includes/tailer.html" />
|
||||||
|
</main>
|
||||||
|
<div class="pane spacer">
|
||||||
|
<include src="./includes/blog_recent_posts.html" />
|
||||||
|
<div class="spacer_container"><p>#AD</p></div>
|
||||||
|
</div>
|
||||||
|
<include src="includes/footer.html" />
|
||||||
|
<include src="includes/scripts.html" />
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
142
src/blog/posts/3_closing_chapters.html
Normal file
142
src/blog/posts/3_closing_chapters.html
Normal file
@@ -0,0 +1,142 @@
|
|||||||
|
<!doctype html>
|
||||||
|
|
||||||
|
<html lang="en-ca">
|
||||||
|
<head>
|
||||||
|
<title>Closing Chapters | Cutieguwu</title>
|
||||||
|
<include src="includes/meta.html" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<nav class="pane">
|
||||||
|
<include src="includes/nav_header.html" />
|
||||||
|
<include src="includes/nav_menu.html" />
|
||||||
|
<div class="location">
|
||||||
|
<header><h4>You are here:</h4></header>
|
||||||
|
<h5 class="page">Blog - Closing Chapters</h5>
|
||||||
|
</div>
|
||||||
|
<include src="includes/nav_quick_links.html" />
|
||||||
|
</nav>
|
||||||
|
<main class="pane blog">
|
||||||
|
<div class="body">
|
||||||
|
<header>
|
||||||
|
<h1 class="title">Closing Chapters</h1>
|
||||||
|
<p class="date">Posted: 18 December, 2025</p>
|
||||||
|
<p class="date">Last Edited: 18 December, 2025</p>
|
||||||
|
</header>
|
||||||
|
<div class="body">
|
||||||
|
<p>
|
||||||
|
I'm not sure why I'm suddenly writing another blog post. Particularly when I
|
||||||
|
still have an exam to do, for which I need to read two chapters of the
|
||||||
|
textbook.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Perhaps it's because I've just come out of a counselling session, and once
|
||||||
|
again, find something I need to talk about <em>after</em> it's finished.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Perhaps it's because I feel a need to prove to myself that I'm still a good
|
||||||
|
writer, even if I barely pass my Creative Writing course...
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Maybe it's because I'm just generally tired but I've been awake long enough
|
||||||
|
that I've progressed into my first period of creative brain waves. Yes,
|
||||||
|
apparently that's a thing.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Anyway, this post's idea stems from the sentiments I've been experiencing
|
||||||
|
since graduating high school.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I feel like I keep wanting to run back to my childhood, as awful as it was
|
||||||
|
in many respects. It's not just my overwhelming fear of death, and general
|
||||||
|
existential dread, it's my nostalgia.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Yesterday, I went to see my old high school band and jazz band perform their
|
||||||
|
annual Holiday Concert. It was great getting to see my old buddies, have a
|
||||||
|
couple laughs while berating the Audio-Visual equipment team for their awful
|
||||||
|
cable management in the few months that I've been gone now.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
But, as I listened to them play the biggest set list the band has done since
|
||||||
|
the pandemic, I found myself melancholy. I wanted to be back with them,
|
||||||
|
playing in the pink lighting, learning solos that I couldn't as a result of
|
||||||
|
COVID, setting up equipment, taping cables down to comply with safety
|
||||||
|
policies, digging into the hows and whys of DMX-512, managing my old tech
|
||||||
|
team, shooting the shit.
|
||||||
|
</p>
|
||||||
|
<p>I can't really do that now.</p>
|
||||||
|
<p>
|
||||||
|
Picking up the hobbies again, joining a music group on Campus, finding an
|
||||||
|
A/V equipment team to join... it just wouldn't be the same.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I have more demanding courses to come, and I just don't have the time
|
||||||
|
anymore. I, like many others, already treat the Carleton Cybersecurity Club
|
||||||
|
as an extra course.
|
||||||
|
</p>
|
||||||
|
<p>The workshops; our lectures.</p>
|
||||||
|
<p>The weekly challenges; our quizzes and textbook readings.</p>
|
||||||
|
<p>The competitions; our midterms.</p>
|
||||||
|
<p>
|
||||||
|
After my showing in the past semester alone, it's likely that I'll take on
|
||||||
|
running a couple workshops in the future.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I can keep going back to the band's events, and catch up with old profs
|
||||||
|
during reading week, but for how long?
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
How long until everyone has moved on? How long until all the staff rotate,
|
||||||
|
and nothing but the U-shape of the building remains?
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Even if I step back and question why, why am I so attached to these
|
||||||
|
memories, I don't know.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I know a lot of people who, like myself, left this school having experienced
|
||||||
|
the absolute worst periods of their life.
|
||||||
|
</p>
|
||||||
|
<p>They never went back. Not for anything.</p>
|
||||||
|
<p>
|
||||||
|
But I'm practically desperate to return, to jump back in time to grade 9 and
|
||||||
|
fuck everything up again, run through depression, experience the worst days
|
||||||
|
of my dysphoria, and tolerate every bitch and asshole who decided to spend
|
||||||
|
their time splinkling on a bit more shit all the while.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I've run out of things to say at this point. I wish this was better
|
||||||
|
structured than just a brain dump, but I'm too tired and emotional to work
|
||||||
|
on it further.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
So, with the loss of my non-existent PG-13 rating, I shall conclude this
|
||||||
|
post, and begin [hopefully] immediately on another post that will outline
|
||||||
|
what I hope to do over the winter break, and what posts I hope to have lined
|
||||||
|
up.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
So, to my only reader, stay tuned! I want to get out of the doom and gloom
|
||||||
|
real soon.
|
||||||
|
</p>
|
||||||
|
<hr />
|
||||||
|
<p>
|
||||||
|
OKAY, so, as per usual, I know a guy, FOR EVERYTHING. He's directed me
|
||||||
|
towards contacting another guy on campus who works with A/V stuff. So, maybe
|
||||||
|
I can find a way to keep that chapter open, despite everything else I have
|
||||||
|
going on these days. It also seems that there might be a way to take an
|
||||||
|
elective course that looks into A/V equipment. I will have to hunt around
|
||||||
|
and see if I can fit that into my program
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<include src="includes/tailer.html" />
|
||||||
|
</main>
|
||||||
|
<div class="pane spacer">
|
||||||
|
<include src="./includes/blog_recent_posts.html" />
|
||||||
|
<div class="spacer_container"><p>#AD</p></div>
|
||||||
|
</div>
|
||||||
|
<include src="includes/footer.html" />
|
||||||
|
<include src="includes/scripts.html" />
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
149
src/blog/posts/4_pointless_plans.html
Normal file
149
src/blog/posts/4_pointless_plans.html
Normal file
@@ -0,0 +1,149 @@
|
|||||||
|
<!doctype html>
|
||||||
|
|
||||||
|
<html lang="en-ca">
|
||||||
|
<head>
|
||||||
|
<title>Pointless Plans | Cutieguwu</title>
|
||||||
|
<include src="includes/meta.html" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<nav class="pane">
|
||||||
|
<include src="includes/nav_header.html" />
|
||||||
|
<include src="includes/nav_menu.html" />
|
||||||
|
<div class="location">
|
||||||
|
<header><h4>You are here:</h4></header>
|
||||||
|
<h5 class="page">Blog - Pointless Plans</h5>
|
||||||
|
</div>
|
||||||
|
<include src="includes/nav_quick_links.html" />
|
||||||
|
</nav>
|
||||||
|
<main class="pane blog">
|
||||||
|
<div class="body">
|
||||||
|
<header>
|
||||||
|
<h1 class="title">Pointless Plans</h1>
|
||||||
|
<p class="date">Posted: 18 December, 2025</p>
|
||||||
|
<p class="date">Last Edited: 18 December, 2025</p>
|
||||||
|
</header>
|
||||||
|
<div class="body">
|
||||||
|
<p>
|
||||||
|
So... remember my first post where I said that "a meaningless 'Welcome to my
|
||||||
|
Blog' filled with my hopes and aspirations that inevitably would never come
|
||||||
|
to light was something I knew I didn't want." Well...
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I've been stuck in a doom and gloom phase here, and with me hopefully
|
||||||
|
concluding my counselling soon, I definitely don't want to dwell in it.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
As a result, I'm making a little list of things that I'd love to write
|
||||||
|
about, and that you can hopefully expect to read about sometime soon!
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<p>CyberSci</p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
I had the fortune to participate at the Regional level,
|
||||||
|
representing Carleton University. (Spoiler: We won, barely)
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
This will probably have a follow up once Nationals happens in
|
||||||
|
the summer.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p>Creative Writing Work</p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
I've written some good things and some really bad things for the
|
||||||
|
Creative Writing course this term. Obviously, I'll only publish
|
||||||
|
works that I believe are well polished.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p>Poetry</p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
I want to get back to writing poetry, but for now I have some
|
||||||
|
things that are still unpublished.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
They're nothing like Building Up, so if you can't read [bad]
|
||||||
|
Rust, don't worry. They're also far less whacky than Falling
|
||||||
|
Down.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a
|
||||||
|
href="https://gitea.cutieguwu.ca/cutieguwu/falling_down_building_up"
|
||||||
|
>Falling Down & Building Up</a
|
||||||
|
>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<p>
|
||||||
|
Also, I've come to realise that I have a thing for memoirs. I never actually
|
||||||
|
realised it because I usually read book series, but I now have four memoirs
|
||||||
|
in my library.
|
||||||
|
</p>
|
||||||
|
<ol>
|
||||||
|
<li>
|
||||||
|
<em>Fatty Legs</em> by Christy Jordan-Fenton and Margaret Pokiak-Fenton
|
||||||
|
</li>
|
||||||
|
<li>its sequel, <em>A Stranger At Home</em></li>
|
||||||
|
<li><em>The Glass Castle</em> by Jeannette Walls</li>
|
||||||
|
<li><em>Tomboy Survival Guide</em> by Ivan Coyote</li>
|
||||||
|
</ol>
|
||||||
|
<p>
|
||||||
|
So, after a creative non-fiction flash writing assignment just didn't work
|
||||||
|
out well, even after reworking it heavily for the exam, I decided that I
|
||||||
|
should actually take it in the direction of a full memoir, rather than the
|
||||||
|
poetic form that it currently has.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The problem is that I mean, a <em>full</em> memoir. And the problem with
|
||||||
|
that is that memory is a complex thing. Many important and relevant things
|
||||||
|
for a memoir are episodic, iconic, flashbulb memories, which can be
|
||||||
|
difficult to just retrieve on the spot. (Yes, I referenced my textbook, no I
|
||||||
|
am not a credible source for interpreting this information.)
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
A lot of the time, my writing, particularly my poetry, comes from what can
|
||||||
|
best be described as state-dependent memory. If I'm lucky, some random
|
||||||
|
stimulus or set of stimuli will trigger a recollection of these memories,
|
||||||
|
and give me an image from which to write. The problem is that this also
|
||||||
|
means I cannot write sequentially.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
And just to make things even more difficult, memory is unreliable and easily
|
||||||
|
influenced. So I need to review and consider how much I trust my own
|
||||||
|
recollection of events, and work to mitigate my biases whenever possible by
|
||||||
|
asking someone else to recount the event and compare details.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
So, in the background, I'm going to start working on that. Almost like
|
||||||
|
forgetting to write in a diary for a week, then trying to catch up while you
|
||||||
|
still remember.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Hopefully this will have the added benefit of holding back some of the
|
||||||
|
future doom and gloom from the blog.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
And finally, I'm going to try to finish up my blog generator,
|
||||||
|
<a href="https://gitea.cutieguwu.ca/cutieguwu/cutinews">cutinews</a>. It's
|
||||||
|
about time I got back and actually finished a programming project. Chances
|
||||||
|
are that I'll be live on Twitch (yes, eww, ik) working on the code.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<include src="includes/tailer.html" />
|
||||||
|
</main>
|
||||||
|
<div class="pane spacer">
|
||||||
|
<include src="./includes/blog_recent_posts.html" />
|
||||||
|
<div class="spacer_container"><p>#AD</p></div>
|
||||||
|
</div>
|
||||||
|
<include src="includes/footer.html" />
|
||||||
|
<include src="includes/scripts.html" />
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
144
src/blog/posts/5_optical_recovery.html
Normal file
144
src/blog/posts/5_optical_recovery.html
Normal file
@@ -0,0 +1,144 @@
|
|||||||
|
<!doctype html>
|
||||||
|
|
||||||
|
<html lang="en-ca">
|
||||||
|
<head>
|
||||||
|
<title>Optical Recovery | Cutieguwu</title>
|
||||||
|
<include src="includes/meta.html" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<nav class="pane">
|
||||||
|
<include src="includes/nav_header.html" />
|
||||||
|
<include src="includes/nav_menu.html" />
|
||||||
|
<div class="location">
|
||||||
|
<header><h4>You are here:</h4></header>
|
||||||
|
<h5 class="page">Blog - Optical Recovery</h5>
|
||||||
|
</div>
|
||||||
|
<include src="includes/nav_quick_links.html" />
|
||||||
|
</nav>
|
||||||
|
<main class="pane blog">
|
||||||
|
<div class="body">
|
||||||
|
<header>
|
||||||
|
<h1 class="title">Optical Recovery</h1>
|
||||||
|
<p class="date">Posted: 10 January, 2026</p>
|
||||||
|
<p class="date">Last Edited: 10 January, 2026</p>
|
||||||
|
</header>
|
||||||
|
<div class="body">
|
||||||
|
<p>
|
||||||
|
Data preservation is increasingly threatened in the digital age. That almost
|
||||||
|
sounds backwards, until you dig into modern architecture.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Once upon a time, the greatest threat to information preservation was nature
|
||||||
|
and memory retrieval errors. The digital age introduced denser,
|
||||||
|
longer-lasting forms of data storage. As we progressed from punch card, to
|
||||||
|
tape, to 8 inch floppies, to flash and optical, and ever denser forms of
|
||||||
|
all, we got better at preventing data loss. Quality control, error
|
||||||
|
correction techniques bundled with file systems, and redundancy (parity) in
|
||||||
|
storage virtualizations, like RAID.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
But in the modern age, the Enshittocene<sup>1</sup>, some would call it,
|
||||||
|
consumers are ever strongarmed into corporate-controlled cloud storage. With
|
||||||
|
that, comes a lack of ownership.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Now, normally that's the lead-up to advocating for homelabbing, FOSS, and
|
||||||
|
de-Googling. However, in this instance, it's the lead up to optical media
|
||||||
|
preservation. Why? Because optical media remains a great storage medium
|
||||||
|
today. Even if you don't believe that, many old games in their original
|
||||||
|
form, or other preserved media, are still only available on discs.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
However, discs are subject to natural degradation through scratches,
|
||||||
|
delamination, and disc rot. Especially as the quality control on these discs
|
||||||
|
dwindles. Thus, there must be additional work put into caring for this
|
||||||
|
medium.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
RAID arrays are great as alternatives too, as they already have parity,
|
||||||
|
ddrescue, and error-correcting filesystems available. The problem is that
|
||||||
|
the arrays themselves are not. At least not right now. Once again, partly
|
||||||
|
thanks to AI datacentres demanding obscene amounts of resources, the cost of
|
||||||
|
hard drives has gone up significantly since the pandemic.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
With that, we segue into my latest project, temporarily named
|
||||||
|
<em>Kramer</em>. I know I did some research to come up with that name, but I
|
||||||
|
genuinely don't recall who it was in reference to. In fact, having tried
|
||||||
|
tracking down who it's in reference to, I may have messed up when I picked
|
||||||
|
the name. My best guess is that it's in reference to Kane Kramer, but he
|
||||||
|
helped design the Digital Audio Player, not optical media.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Regardless, it's always been a working name while I figure out if I can
|
||||||
|
finish the project.
|
||||||
|
</p>
|
||||||
|
<p>So, what is Kramer?</p>
|
||||||
|
<p>
|
||||||
|
Kramer is a recovery utility. Conceptually, it's meant to be akin to
|
||||||
|
ddrescue<sup>2</sup>, but optimized for recovering data from optical media.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
There are two main problems I've experienced while trying to use ddrescue
|
||||||
|
with optical drives, and both stem from the drive's firmware. Now, I don't
|
||||||
|
know if me using the <code>--reset-slow</code> flag is contributing to these
|
||||||
|
issues or not, but I experience more problems without it.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
If you've ever tried working with optical media in Linux, you may be
|
||||||
|
familiar with <em>The Sleep Bug</em>. Normally, this is when a drive's
|
||||||
|
firmware decides to sleep after two minutes, and never wakes. In the case of
|
||||||
|
ddrescue, I've noticed that the drive often sleeps after read errors. When
|
||||||
|
this happens, I can't kill ddrescue, and it just hangs. Even if I forcefully
|
||||||
|
disconnect the drive, it just hangs, awaiting a response from the block
|
||||||
|
device.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
For the record, Kramer still has this issue. I've only recently gotten
|
||||||
|
mapping working alongside directIO to get around the Linux kernel's read
|
||||||
|
poisoning.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Keep in mind that I know very little C, and I don't play this low in the
|
||||||
|
system much yet. So, I don't know why, but without the
|
||||||
|
<code>O_DIRECT</code> flag to bypass the kernel's buffer (and whatever else
|
||||||
|
directIO technically bypasses), after a single IO error, the kernel will
|
||||||
|
refuse to return anything but that same IO error until the parent process is
|
||||||
|
restarted. I tried doing the C calls directly through FFI, since poisoning
|
||||||
|
is something that Rust employs in some places for safety. That didn't work,
|
||||||
|
so I tried spawning a child process to execute the read, but that also
|
||||||
|
didn't work. Thankfully, I know a guy, and with his help I was able to track
|
||||||
|
down not only how to implement directIO, but also without using FFI to call
|
||||||
|
<code>posix_memalign</code>.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Back on track, the other issue is the spin-down. As ddrescue reads smaller
|
||||||
|
clusters and/or starts hitting a particularly poor section of the disc, some
|
||||||
|
drives' firmware is too quick to spin down, causing the spindle to
|
||||||
|
constantly speed up and slow down, increasing wear.
|
||||||
|
</p>
|
||||||
|
<hr />
|
||||||
|
<ol>
|
||||||
|
<li>
|
||||||
|
I would recommend reading <em>Enshittification</em> by Cory Doctorow.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
As I'm writing Kramer in Rust, I also have to stress the point that this
|
||||||
|
project is not intended as a ddrescue rewrite in rust, for the sake of a
|
||||||
|
rewrite in rust. I'm not trying to clone or replace ddrescue. Kramer has
|
||||||
|
a different target, and ddrescue is a resource for me to learn from and
|
||||||
|
use as a guide while I dig deeper into the system than I ever have.
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<include src="includes/tailer.html" />
|
||||||
|
</main>
|
||||||
|
<div class="pane spacer">
|
||||||
|
<include src="./includes/blog_recent_posts.html" />
|
||||||
|
<div class="spacer_container"><p>#AD</p></div>
|
||||||
|
</div>
|
||||||
|
<include src="includes/footer.html" />
|
||||||
|
<include src="includes/scripts.html" />
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
<include src="includes/nav_header.html" />
|
<include src="includes/nav_header.html" />
|
||||||
<include src="includes/nav_menu.html" />
|
<include src="includes/nav_menu.html" />
|
||||||
<div class="location">
|
<div class="location">
|
||||||
<h4 class="header">You are here:</h4>
|
<header><h4>You are here:</h4></header>
|
||||||
<h5 class="page">Disclosure</h5>
|
<h5 class="page">Disclosure</h5>
|
||||||
</div>
|
</div>
|
||||||
<include src="includes/nav_quick_links.html" />
|
<include src="includes/nav_quick_links.html" />
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<include src="includes/nav_header.html" />
|
<include src="includes/nav_header.html" />
|
||||||
<include src="includes/nav_menu.html" />
|
<include src="includes/nav_menu.html" />
|
||||||
<div class="location">
|
<div class="location">
|
||||||
<h4 class="header">You are here:</h4>
|
<header><h4>You are here:</h4></header>
|
||||||
<h5 class="page">Error - 400</h5>
|
<h5 class="page">Error - 400</h5>
|
||||||
</div>
|
</div>
|
||||||
<include src="includes/nav_quick_links.html" />
|
<include src="includes/nav_quick_links.html" />
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<include src="includes/nav_header.html" />
|
<include src="includes/nav_header.html" />
|
||||||
<include src="includes/nav_menu.html" />
|
<include src="includes/nav_menu.html" />
|
||||||
<div class="location">
|
<div class="location">
|
||||||
<h4 class="header">You are here:</h4>
|
<header><h4>You are here:</h4></header>
|
||||||
<h5 class="page">Error - 401</h5>
|
<h5 class="page">Error - 401</h5>
|
||||||
</div>
|
</div>
|
||||||
<include src="includes/nav_quick_links.html" />
|
<include src="includes/nav_quick_links.html" />
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<include src="includes/nav_header.html" />
|
<include src="includes/nav_header.html" />
|
||||||
<include src="includes/nav_menu.html" />
|
<include src="includes/nav_menu.html" />
|
||||||
<div class="location">
|
<div class="location">
|
||||||
<h4 class="header">You are here:</h4>
|
<header><h4>You are here:</h4></header>
|
||||||
<h5 class="page">Error - 403</h5>
|
<h5 class="page">Error - 403</h5>
|
||||||
</div>
|
</div>
|
||||||
<include src="includes/nav_quick_links.html" />
|
<include src="includes/nav_quick_links.html" />
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<include src="includes/nav_header.html" />
|
<include src="includes/nav_header.html" />
|
||||||
<include src="includes/nav_menu.html" />
|
<include src="includes/nav_menu.html" />
|
||||||
<div class="location">
|
<div class="location">
|
||||||
<h4 class="header">You are here:</h4>
|
<header><h4>You are here:</h4></header>
|
||||||
<h5 class="page">Error - 404</h5>
|
<h5 class="page">Error - 404</h5>
|
||||||
</div>
|
</div>
|
||||||
<include src="includes/nav_quick_links.html" />
|
<include src="includes/nav_quick_links.html" />
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<include src="includes/nav_header.html" />
|
<include src="includes/nav_header.html" />
|
||||||
<include src="includes/nav_menu.html" />
|
<include src="includes/nav_menu.html" />
|
||||||
<div class="location">
|
<div class="location">
|
||||||
<h4 class="header">You are here:</h4>
|
<header><h4>You are here:</h4></header>
|
||||||
<h5 class="page">Error - 500</h5>
|
<h5 class="page">Error - 500</h5>
|
||||||
</div>
|
</div>
|
||||||
<include src="includes/nav_quick_links.html" />
|
<include src="includes/nav_quick_links.html" />
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<include src="includes/nav_header.html" />
|
<include src="includes/nav_header.html" />
|
||||||
<include src="includes/nav_menu.html" />
|
<include src="includes/nav_menu.html" />
|
||||||
<div class="location">
|
<div class="location">
|
||||||
<h4 class="header">You are here:</h4>
|
<header><h4>You are here:</h4></header>
|
||||||
<h5 class="page">Error - 501</h5>
|
<h5 class="page">Error - 501</h5>
|
||||||
</div>
|
</div>
|
||||||
<include src="includes/nav_quick_links.html" />
|
<include src="includes/nav_quick_links.html" />
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<include src="includes/nav_header.html" />
|
<include src="includes/nav_header.html" />
|
||||||
<include src="includes/nav_menu.html" />
|
<include src="includes/nav_menu.html" />
|
||||||
<div class="location">
|
<div class="location">
|
||||||
<h4 class="header">You are here:</h4>
|
<header><h4>You are here:</h4></header>
|
||||||
<h5 class="page">Error - 502</h5>
|
<h5 class="page">Error - 502</h5>
|
||||||
</div>
|
</div>
|
||||||
<include src="includes/nav_quick_links.html" />
|
<include src="includes/nav_quick_links.html" />
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<include src="includes/nav_header.html" />
|
<include src="includes/nav_header.html" />
|
||||||
<include src="includes/nav_menu.html" />
|
<include src="includes/nav_menu.html" />
|
||||||
<div class="location">
|
<div class="location">
|
||||||
<h4 class="header">You are here:</h4>
|
<header><h4>You are here:</h4></header>
|
||||||
<h5 class="page">Error - 503</h5>
|
<h5 class="page">Error - 503</h5>
|
||||||
</div>
|
</div>
|
||||||
<include src="includes/nav_quick_links.html" />
|
<include src="includes/nav_quick_links.html" />
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<include src="includes/nav_header.html" />
|
<include src="includes/nav_header.html" />
|
||||||
<include src="includes/nav_menu.html" />
|
<include src="includes/nav_menu.html" />
|
||||||
<div class="location">
|
<div class="location">
|
||||||
<h4 class="header">You are here:</h4>
|
<header><h4>You are here:</h4></header>
|
||||||
<h5 class="page">Error - 504</h5>
|
<h5 class="page">Error - 504</h5>
|
||||||
</div>
|
</div>
|
||||||
<include src="includes/nav_quick_links.html" />
|
<include src="includes/nav_quick_links.html" />
|
||||||
|
|||||||
@@ -4,12 +4,57 @@
|
|||||||
<channel>
|
<channel>
|
||||||
<title>Cutieguwu Yaps</title>
|
<title>Cutieguwu Yaps</title>
|
||||||
<link>https://www.cutieguwu.ca/</link>
|
<link>https://www.cutieguwu.ca/</link>
|
||||||
<description
|
<description>
|
||||||
>Cutieguwu's blog where she discusses various things.</description>
|
Cutieguwu's blog where she discusses various things.
|
||||||
|
</description>
|
||||||
<language>en-ca</language>
|
<language>en-ca</language>
|
||||||
<category>Technology/IT/Life/Mental Health/Health</category>
|
<category>Technology/IT/Life/Mental Health/Health</category>
|
||||||
|
<item>
|
||||||
|
<title>Optical Recovery</title>
|
||||||
|
<pubDate>10 January, 2026</pubDate>
|
||||||
|
<link>https://www.cutieguwu.ca/blog/posts/5_optical_recovery.html</link>
|
||||||
|
<description>
|
||||||
|
Introducing my optical media recovery utility, and some challenges in development.
|
||||||
|
</description>
|
||||||
|
<category>Coding</category>
|
||||||
|
<category>Programming</category>
|
||||||
|
<category>Optical Media</category>
|
||||||
|
<category>Rust</category>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<title>Pointless Plans</title>
|
||||||
|
<pubDate>18 December, 2025</pubDate>
|
||||||
|
<link>https://www.cutieguwu.ca/blog/posts/4_pointless_plans.html</link>
|
||||||
|
<description>Winter Break plans</description>
|
||||||
|
<category>Life</category>
|
||||||
|
<category>Mental Health</category>
|
||||||
|
<category>Health</category>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<title>Closing Chapters</title>
|
||||||
|
<pubDate>18 December, 2025</pubDate>
|
||||||
|
<link>https://www.cutieguwu.ca/blog/posts/3_closing_chapters.html</link>
|
||||||
|
<description>
|
||||||
|
Things go, and others come in. Sometimes, we don't want to move forward, but we must.
|
||||||
|
</description>
|
||||||
|
<category>Life</category>
|
||||||
|
<category>Mental Health</category>
|
||||||
|
<category>Health</category>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<title>Buyer's Anxiety</title>
|
||||||
|
<pubDate>11 September, 2025</pubDate>
|
||||||
|
<link>https://www.cutieguwu.ca/blog/posts/2_buyers_anxiety.html</link>
|
||||||
|
<description>
|
||||||
|
Discussing my fears regarding a purchase for a friend.
|
||||||
|
</description>
|
||||||
|
<category>Life</category>
|
||||||
|
<category>Mental Health</category>
|
||||||
|
<category>Health</category>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<title>Unsure U.</title>
|
<title>Unsure U.</title>
|
||||||
|
<pubDate>09 August, 2025</pubDate>
|
||||||
<link>https://www.cutieguwu.ca/blog/posts/1_unsure_u.html</link>
|
<link>https://www.cutieguwu.ca/blog/posts/1_unsure_u.html</link>
|
||||||
<description>Discussing my fears for University.</description>
|
<description>Discussing my fears for University.</description>
|
||||||
<category>Life</category>
|
<category>Life</category>
|
||||||
@@ -18,8 +63,10 @@
|
|||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<title>Splitting Pathways</title>
|
<title>Splitting Pathways</title>
|
||||||
<link
|
<pubDate>29 July, 2025</pubDate>
|
||||||
>https://www.cutieguwu.ca/blog/posts/0_divergent_pathways.html</link>
|
<link>
|
||||||
|
https://www.cutieguwu.ca/blog/posts/0_divergent_pathways.html
|
||||||
|
</link>
|
||||||
<description>Discussing my struggles in love.</description>
|
<description>Discussing my struggles in love.</description>
|
||||||
<category>Life</category>
|
<category>Life</category>
|
||||||
<category>Mental Health</category>
|
<category>Mental Health</category>
|
||||||
|
|||||||
BIN
src/img/blog/posts/2_buyers_anxiety.jpg
Normal file
BIN
src/img/blog/posts/2_buyers_anxiety.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 10 MiB |
@@ -23,3 +23,6 @@
|
|||||||
<a class="title" href="https://pronoms.fr/@Cutieguwu">French</a>
|
<a class="title" href="https://pronoms.fr/@Cutieguwu">French</a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<!-- Public Facing Webcheck -->
|
||||||
|
<li><a class="title" href="https://webcheck.cutieguwu.ca">Web Check</a></li>
|
||||||
|
|||||||
@@ -1,13 +1,49 @@
|
|||||||
<div class="spacer_container blog_recent_posts">
|
<div class="spacer_container blog_recent_posts">
|
||||||
<h2>Recent Posts</h2>
|
<h2>Recent Posts</h2>
|
||||||
<div class="section_list">
|
<div class="section_list">
|
||||||
|
<section>
|
||||||
|
<header>
|
||||||
|
<div>
|
||||||
|
<h3 class="name">Optical Recovery</h3>
|
||||||
|
<span class="subtitle">10 January, 2026</span>
|
||||||
|
</div>
|
||||||
|
<a href="/blog/posts/5_optical_recovery.html" class="status">View</a>
|
||||||
|
</header>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<header>
|
||||||
|
<div>
|
||||||
|
<h3 class="name">Pointless Plans</h3>
|
||||||
|
<span class="subtitle">18 December, 2025</span>
|
||||||
|
</div>
|
||||||
|
<a href="/blog/posts/4_pointless_plans.html" class="status">View</a>
|
||||||
|
</header>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<header>
|
||||||
|
<div>
|
||||||
|
<h3 class="name">Closing Chapters</h3>
|
||||||
|
<span class="subtitle">18 December, 2025</span>
|
||||||
|
</div>
|
||||||
|
<a href="/blog/posts/3_closing_chapters.html" class="status">View</a>
|
||||||
|
</header>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<header>
|
||||||
|
<div>
|
||||||
|
<h3 class="name">Buyer's Anxiety</h3>
|
||||||
|
<span class="subtitle">11 September, 2025</span>
|
||||||
|
</div>
|
||||||
|
<a href="/blog/posts/2_buyers_anxiety.html" class="status">View</a>
|
||||||
|
</header>
|
||||||
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<header>
|
<header>
|
||||||
<div>
|
<div>
|
||||||
<h3 class="name">Unsure U.</h3>
|
<h3 class="name">Unsure U.</h3>
|
||||||
<span class="subtitle">09 August, 2025</span>
|
<span class="subtitle">09 August, 2025</span>
|
||||||
</div>
|
</div>
|
||||||
<a href="/blog/posts/1_unsure_u.html" class="status"> View </a>
|
<a href="/blog/posts/1_unsure_u.html" class="status">View</a>
|
||||||
</header>
|
</header>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
@@ -16,7 +52,7 @@
|
|||||||
<h3 class="name">Divergent Pathways</h3>
|
<h3 class="name">Divergent Pathways</h3>
|
||||||
<span class="subtitle">29 July, 2025</span>
|
<span class="subtitle">29 July, 2025</span>
|
||||||
</div>
|
</div>
|
||||||
<a href="/blog/posts/0_divergent_pathways.html" class="status"> View </a>
|
<a href="/blog/posts/0_divergent_pathways.html" class="status">View</a>
|
||||||
</header>
|
</header>
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -8,6 +8,9 @@
|
|||||||
<!-- See: https://github.com/ai-robots-txt/ai.robots.txt/issues/111 -->
|
<!-- See: https://github.com/ai-robots-txt/ai.robots.txt/issues/111 -->
|
||||||
<meta name="bingbot" content="noarchive" />
|
<meta name="bingbot" content="noarchive" />
|
||||||
|
|
||||||
|
<!-- Mastodon Author Attribution -->
|
||||||
|
<meta name="fediverse:creator" content="@OliveTheFemboy@mastodon.online" />
|
||||||
|
|
||||||
<link rel="icon" type="image/x-icon" href="img/test-favicon.jpg" />
|
<link rel="icon" type="image/x-icon" href="img/test-favicon.jpg" />
|
||||||
|
|
||||||
<link rel="stylesheet" type="text/css" href="style.css" />
|
<link rel="stylesheet" type="text/css" href="style.css" />
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<input type="checkbox" id="toggle" />
|
<input id="toggle_nav" type="checkbox" />
|
||||||
<label for="toggle" class="nav_header">
|
<label for="toggle_nav" class="nav_header">
|
||||||
<h2 class="logo">Cutieguwu</h2>
|
<h2 class="logo">Cutieguwu</h2>
|
||||||
<ion-icon name="menu-outline"></ion-icon>
|
<ion-icon name="menu-outline"></ion-icon>
|
||||||
</label>
|
</label>
|
||||||
|
|||||||
@@ -18,12 +18,14 @@
|
|||||||
|
|
||||||
<!-- External Links -->
|
<!-- External Links -->
|
||||||
<li class="dropdown">
|
<li class="dropdown">
|
||||||
<header class="item">
|
<input type="checkbox" id="toggle_ext_links" />
|
||||||
|
<label for="toggle_ext_links" class="item">
|
||||||
<p class="title">External Links</p>
|
<p class="title">External Links</p>
|
||||||
<ion-icon name="chevron-forward-outline"></ion-icon>
|
<ion-icon name="chevron-forward-outline"></ion-icon>
|
||||||
</header>
|
</label>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a class="title" href="https://github.com/Cutieguwu">Github (Mirror)</a></li>
|
<li><a class="title" href="https://github.com/Cutieguwu">Github (Mirror)</a></li>
|
||||||
|
<li><a class="title" href="https://play.picoctf.org/users/cutieguwu">picoCTF</a></li>
|
||||||
<li><a class="title" href="https://www.twitch.tv/cutieguwu">Twitch</a></li>
|
<li><a class="title" href="https://www.twitch.tv/cutieguwu">Twitch</a></li>
|
||||||
<li><a class="title" href="https://www.youtube.com/@Cutieguwu">YouTube</a></li>
|
<li><a class="title" href="https://www.youtube.com/@Cutieguwu">YouTube</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
@@ -33,21 +35,23 @@
|
|||||||
|
|
||||||
<!-- Public Services -->
|
<!-- Public Services -->
|
||||||
<li class="dropdown">
|
<li class="dropdown">
|
||||||
<header class="item">
|
<input type="checkbox" id="toggle_srv_pub" />
|
||||||
|
<label for="toggle_srv_pub" class="item">
|
||||||
<p class="title">Public Services</p>
|
<p class="title">Public Services</p>
|
||||||
<ion-icon name="chevron-forward-outline"></ion-icon>
|
<ion-icon name="chevron-forward-outline"></ion-icon>
|
||||||
</header>
|
</label>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a class="title" href="https://webcheck.cutieguwu.ca">Web Check</a></li>
|
<li><a class="title" href="https://cyberchef.cutieguwu.ca">CyberChef</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<!-- Services -->
|
<!-- Services -->
|
||||||
<li class="dropdown">
|
<li class="dropdown">
|
||||||
<header class="item">
|
<input type="checkbox" id="toggle_srv_priv" />
|
||||||
|
<label for="toggle_srv_priv" class="item">
|
||||||
<p class="title">Services</p>
|
<p class="title">Services</p>
|
||||||
<ion-icon name="chevron-forward-outline"></ion-icon>
|
<ion-icon name="chevron-forward-outline"></ion-icon>
|
||||||
</header>
|
</label>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a class="title" href="https://gitea.cutieguwu.ca/Cutieguwu">Gitea</a></li>
|
<li><a class="title" href="https://gitea.cutieguwu.ca/Cutieguwu">Gitea</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@@ -14,5 +14,8 @@
|
|||||||
<a href="https://www.cutieguwu.ca/feed/rss.xml" title="RSS Feed" download>
|
<a href="https://www.cutieguwu.ca/feed/rss.xml" title="RSS Feed" download>
|
||||||
<ion-icon name="logo-rss" alt="RSS Feed" class="orange"></ion-icon>
|
<ion-icon name="logo-rss" alt="RSS Feed" class="orange"></ion-icon>
|
||||||
</a>
|
</a>
|
||||||
<a class="phantom"></a>
|
|
||||||
|
<!-- Mastodon Verification -->
|
||||||
|
<!-- Doubles as the spacer -->
|
||||||
|
<a rel="me" href="https://mastodon.online/@OliveTheFemboy" class="phantom"></a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,2 +1,3 @@
|
|||||||
<script type="module" src="https://unpkg.com/ionicons@7.1.0/dist/ionicons/ionicons.esm.js"></script>
|
<script type="module" src="https://unpkg.com/ionicons@7.1.0/dist/ionicons/ionicons.esm.js"></script>
|
||||||
<script nomodule src="https://unpkg.com/ionicons@7.1.0/dist/ionicons/ionicons.js"></script>
|
<script nomodule src="https://unpkg.com/ionicons@7.1.0/dist/ionicons/ionicons.js"></script>
|
||||||
|
<script src="https://keepandroidopen.org/banner.js"></script>
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<include src="includes/nav_header.html" />
|
<include src="includes/nav_header.html" />
|
||||||
<include src="includes/nav_menu.html" />
|
<include src="includes/nav_menu.html" />
|
||||||
<div class="location">
|
<div class="location">
|
||||||
<h4 class="header">You are here:</h4>
|
<header><h4>You are here:</h4></header>
|
||||||
<h5 class="page">Home</h5>
|
<h5 class="page">Home</h5>
|
||||||
</div>
|
</div>
|
||||||
<include src="includes/nav_quick_links.html" />
|
<include src="includes/nav_quick_links.html" />
|
||||||
@@ -22,6 +22,7 @@
|
|||||||
<p class="date">Last Edited: 03 August, 2025</p>
|
<p class="date">Last Edited: 03 August, 2025</p>
|
||||||
</header>
|
</header>
|
||||||
<div class="body">
|
<div class="body">
|
||||||
|
<p>People, this is under development. Live with the lorem ipsum.</p>
|
||||||
<p>lorem ipsum idk what else there is in this latin phrase</p>
|
<p>lorem ipsum idk what else there is in this latin phrase</p>
|
||||||
<p>
|
<p>
|
||||||
Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex
|
Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<include src="includes/nav_header.html" />
|
<include src="includes/nav_header.html" />
|
||||||
<include src="includes/nav_menu.html" />
|
<include src="includes/nav_menu.html" />
|
||||||
<div class="location">
|
<div class="location">
|
||||||
<h4 class="header">You are here:</h4>
|
<header><h4>You are here:</h4></header>
|
||||||
<h5 class="page">Bearock SMP</h5>
|
<h5 class="page">Bearock SMP</h5>
|
||||||
</div>
|
</div>
|
||||||
<include src="includes/nav_quick_links.html" />
|
<include src="includes/nav_quick_links.html" />
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<include src="includes/nav_header.html" />
|
<include src="includes/nav_header.html" />
|
||||||
<include src="includes/nav_menu.html" />
|
<include src="includes/nav_menu.html" />
|
||||||
<div class="location">
|
<div class="location">
|
||||||
<h4 class="header">You are here:</h4>
|
<header><h4>You are here:</h4></header>
|
||||||
<h5 class="page">Minecraft</h5>
|
<h5 class="page">Minecraft</h5>
|
||||||
</div>
|
</div>
|
||||||
<include src="includes/nav_quick_links.html" />
|
<include src="includes/nav_quick_links.html" />
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<include src="includes/nav_header.html" />
|
<include src="includes/nav_header.html" />
|
||||||
<include src="includes/nav_menu.html" />
|
<include src="includes/nav_menu.html" />
|
||||||
<div class="location">
|
<div class="location">
|
||||||
<h4 class="header">You are here:</h4>
|
<header><h4>You are here:</h4></header>
|
||||||
<h5 class="page">Rebirth SMP</h5>
|
<h5 class="page">Rebirth SMP</h5>
|
||||||
</div>
|
</div>
|
||||||
<include src="includes/nav_quick_links.html" />
|
<include src="includes/nav_quick_links.html" />
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
@use "a_chunk_list";
|
@use "_a_colours.css";
|
||||||
@use "a_colours";
|
|
||||||
@use "a_footer";
|
@use "a_footer";
|
||||||
@use "a_layouts";
|
@use "a_layouts";
|
||||||
@use "a_pane";
|
@use "a_pane";
|
||||||
@use "a_quick_links";
|
@use "a_quick_links";
|
||||||
|
@use "a_section_list";
|
||||||
|
|
||||||
:root {
|
:root {
|
||||||
// 0: Base of an element. Example: the viewport class.
|
// 0: Base of an element. Example: the viewport class.
|
||||||
@@ -12,7 +13,7 @@
|
|||||||
// it should be visually, meaning more nested in the cascade.
|
// it should be visually, meaning more nested in the cascade.
|
||||||
//
|
//
|
||||||
// Odd numbers should be used as intermediate colours between the
|
// Odd numbers should be used as intermediate colours between the
|
||||||
// fore and back elements. Excepting white--white's special.
|
// fore and back elements.
|
||||||
//
|
//
|
||||||
// Eg. Current dropdown menu.
|
// Eg. Current dropdown menu.
|
||||||
|
|
||||||
@@ -66,17 +67,18 @@
|
|||||||
|
|
||||||
font-size: var(--font-size-generic);
|
font-size: var(--font-size-generic);
|
||||||
color: var(--white-1);
|
color: var(--white-1);
|
||||||
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
background-color: var(--background-0);
|
display: grid;
|
||||||
|
background-color: var(--background-0);
|
||||||
|
grid-template-rows: min-content auto;
|
||||||
|
|
||||||
// Adds a margin otherwise for some reason.
|
// Adds a margin otherwise for some reason.
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
|
||||||
display: grid;
|
.kao-banner {
|
||||||
grid-auto-flow: column dense;
|
grid-area: banner;
|
||||||
grid-template-columns: min-content 1fr min-content;
|
|
||||||
grid-template-areas: "nav main spacer";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -106,15 +108,15 @@ a {
|
|||||||
font-family: var(--font-family-generic);
|
font-family: var(--font-family-generic);
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 500px) {
|
// Mobile
|
||||||
|
@media (max-width: 600px) {
|
||||||
:root {
|
:root {
|
||||||
--spacing-large: var(--spacing-small);
|
--spacing-large: var(--spacing-small);
|
||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
grid-auto-flow: row;
|
|
||||||
grid-template-columns: none;
|
grid-template-columns: none;
|
||||||
grid-template-areas: "nav" "main" "spacer";
|
grid-template-areas: "banner" "nav" "main" "spacer";
|
||||||
|
|
||||||
// Compress spacings to maximize useable area.
|
// Compress spacings to maximize useable area.
|
||||||
// padding: var(--spacing-small);
|
// padding: var(--spacing-small);
|
||||||
@@ -129,3 +131,19 @@ a {
|
|||||||
right: auto;
|
right: auto;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Tablets and Intermediary
|
||||||
|
@media (min-width: 601px) and (max-width: 1023px) {
|
||||||
|
body {
|
||||||
|
grid-template-columns: min-content 1fr;
|
||||||
|
grid-template-areas: "banner banner" "nav main" "spacer main";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Desktops and Laptops
|
||||||
|
@media (min-width: 1024px) {
|
||||||
|
body {
|
||||||
|
grid-template-columns: min-content 1fr min-content;
|
||||||
|
grid-template-areas: "banner banner banner" "nav main spacer";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
margin-top: var(--spacing-small);
|
margin-top: var(--spacing-small);
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 500px) {
|
@media (max-width: 600px) {
|
||||||
.layout_row {
|
.layout_row {
|
||||||
grid-auto-flow: row;
|
grid-auto-flow: row;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,18 +6,18 @@
|
|||||||
margin: var(--spacing-large);
|
margin: var(--spacing-large);
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 500px) {
|
@media (max-width: 600px) {
|
||||||
.pane {
|
.pane {
|
||||||
width: 100%;
|
width: calc((50% - var(--spacing-small)) * 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
nav.pane,
|
@media (min-width: 601px) {
|
||||||
.pane.spacer {
|
nav.pane,
|
||||||
width: min-content;
|
.pane.spacer {
|
||||||
gap: var(--spacing-medium);
|
gap: var(--spacing-medium);
|
||||||
|
|
||||||
position: sticky;
|
position: sticky;
|
||||||
top: var(--spacing-large);
|
top: var(--spacing-large);
|
||||||
right: var(--spacing-large);
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,3 @@
|
|||||||
/*
|
|
||||||
All specificities to do with Chunk Lists are a disaster.
|
|
||||||
|
|
||||||
Hopefully, I will attempt to clean up this steaming pile of shit so that I don't have to deal with conflicts (.main_body .body vs. .chunk .body in particular), but we'll see.
|
|
||||||
*/
|
|
||||||
|
|
||||||
.section_list {
|
.section_list {
|
||||||
display: grid;
|
display: grid;
|
||||||
|
|
||||||
@@ -81,14 +75,14 @@ Hopefully, I will attempt to clean up this steaming pile of shit so that I don't
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 500px) {
|
@media (max-width: 600px) {
|
||||||
.section_list section {
|
.section_list section {
|
||||||
> header {
|
> header {
|
||||||
column-gap: var(--spacing-small);
|
column-gap: var(--spacing-small);
|
||||||
}
|
}
|
||||||
|
|
||||||
> .body {
|
> .body {
|
||||||
/* Collapse the L/R padding to maximize usable space */
|
// Collapse the L/R padding to maximize usable space
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
.dropdown {
|
.dropdown {
|
||||||
> header {
|
> label.item {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 1fr min-content;
|
grid-template-columns: 1fr min-content;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@@ -22,23 +22,41 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.dropdown:hover {
|
@media (max-width: 600px) {
|
||||||
> header {
|
.dropdown {
|
||||||
transform: var(--transform-scale-x);
|
> label.item > ion-icon {
|
||||||
|
margin-right: var(--padding-mobile);
|
||||||
> ion-icon {
|
|
||||||
rotate: 90deg;
|
|
||||||
transition-duration: 0.25s;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
> ul {
|
// Use a toggle for menu entries on mobile and intermediary devices.
|
||||||
display: grid;
|
@media (max-width: 1023px) {
|
||||||
|
.dropdown {
|
||||||
|
> input:checked + label {
|
||||||
|
color: var(--highlight-hover);
|
||||||
|
|
||||||
|
+ ul {
|
||||||
|
display: grid;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 500px) {
|
// Use a hover state for menu entries on large screens.
|
||||||
.dropdown > header > ion-icon {
|
@media (min-width: 1024px) {
|
||||||
margin-right: var(--padding-mobile);
|
.dropdown:hover {
|
||||||
|
> label.item {
|
||||||
|
transform: var(--transform-scale-x);
|
||||||
|
|
||||||
|
> ion-icon {
|
||||||
|
rotate: 90deg;
|
||||||
|
transition-duration: 0.25s;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
> ul {
|
||||||
|
display: grid;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ nav.pane > .nav_header {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 500px) {
|
@media (max-width: 600px) {
|
||||||
nav.pane > .nav_header {
|
nav.pane > .nav_header {
|
||||||
grid-template-columns: min-content 1fr min-content;
|
grid-template-columns: min-content 1fr min-content;
|
||||||
grid-template-areas: "logo blank hamburger";
|
grid-template-areas: "logo blank hamburger";
|
||||||
|
|||||||
@@ -1,13 +1,11 @@
|
|||||||
.location {
|
.location {
|
||||||
grid-area: location;
|
|
||||||
|
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: var(--spacing-small);
|
padding: var(--spacing-small);
|
||||||
background-color: var(--background-2);
|
background-color: var(--background-2);
|
||||||
border-radius: var(--border-radius-leaf);
|
border-radius: var(--border-radius-leaf);
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|
||||||
> .header {
|
> header h4 {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
margin: 0 0 0.5rem;
|
margin: 0 0 0.5rem;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,8 +2,6 @@
|
|||||||
@use "nav_title";
|
@use "nav_title";
|
||||||
|
|
||||||
nav .menu {
|
nav .menu {
|
||||||
grid-area: menu;
|
|
||||||
|
|
||||||
// Remove default padding and style applied to ul for bullets.
|
// Remove default padding and style applied to ul for bullets.
|
||||||
padding: 0;
|
padding: 0;
|
||||||
list-style: none;
|
list-style: none;
|
||||||
@@ -47,7 +45,7 @@ nav .menu {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 500px) {
|
@media (max-width: 600px) {
|
||||||
.menu {
|
.menu {
|
||||||
.item {
|
.item {
|
||||||
padding: var(--padding-mobile);
|
padding: var(--padding-mobile);
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
nav.pane .quick_links {
|
nav.pane .quick_links {
|
||||||
grid-area: quick_links;
|
|
||||||
|
|
||||||
--item-padding: 0.25rem;
|
--item-padding: 0.25rem;
|
||||||
|
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
@@ -37,7 +35,7 @@ nav.pane .quick_links {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 500px) {
|
@media (max-width: 600px) {
|
||||||
nav.pane .quick_links {
|
nav.pane .quick_links {
|
||||||
margin-bottom: var(--spacing-small);
|
margin-bottom: var(--spacing-small);
|
||||||
|
|
||||||
|
|||||||
@@ -13,15 +13,15 @@
|
|||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
.menu .title:hover {
|
@media (max-width: 600px) {
|
||||||
color: var(--highlight-hover);
|
|
||||||
transition: var(--transition-cut);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
@media only screen and (max-width: 500px) {
|
|
||||||
.nav_title {
|
.nav_title {
|
||||||
padding: var(--padding-mobile);
|
padding: var(--padding-mobile);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
@media (min-width: 1024px) {
|
||||||
|
.menu .title:hover {
|
||||||
|
color: var(--highlight-hover);
|
||||||
|
transition: var(--transition-cut);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -34,7 +34,7 @@
|
|||||||
grid-template-columns: 60% auto;
|
grid-template-columns: 60% auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 500px) {
|
@media (max-width: 600px) {
|
||||||
.awards,
|
.awards,
|
||||||
.certifications,
|
.certifications,
|
||||||
.education,
|
.education,
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 500px) {
|
@media (max-width: 600px) {
|
||||||
.pane.blog .body > .body {
|
.pane.blog .body > .body {
|
||||||
padding: var(--spacing-small);
|
padding: var(--spacing-small);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 500px) {
|
@media (max-width: 600px) {
|
||||||
.pane.error {
|
.pane.error {
|
||||||
margin-top: var(--spacing-large);
|
margin-top: var(--spacing-large);
|
||||||
margin-bottom: var(--spacing-large);
|
margin-bottom: var(--spacing-large);
|
||||||
|
|||||||
@@ -24,16 +24,13 @@ nav.pane {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 500px) {
|
@media (max-width: 600px) {
|
||||||
nav.pane {
|
nav.pane {
|
||||||
width: calc(
|
|
||||||
calc(50% - var(--spacing-large) + var(--spacing-small)) * 2
|
|
||||||
);
|
|
||||||
|
|
||||||
background-color: var(--background-2);
|
background-color: var(--background-2);
|
||||||
|
border-radius: var(--border-radius-leaf);
|
||||||
padding: 0 var(--spacing-small);
|
padding: 0 var(--spacing-small);
|
||||||
|
|
||||||
.nav_menu,
|
.menu,
|
||||||
.quick_links,
|
.quick_links,
|
||||||
.location {
|
.location {
|
||||||
display: none;
|
display: none;
|
||||||
@@ -44,16 +41,14 @@ nav.pane {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
nav.pane > #toggle:checked {
|
nav.pane > input:checked + label {
|
||||||
+ .nav_header {
|
color: var(--highlight-hover);
|
||||||
color: var(--highlight-hover);
|
|
||||||
|
|
||||||
+ .menu {
|
+ .menu {
|
||||||
display: grid;
|
display: grid;
|
||||||
|
|
||||||
+ .location + .quick_links {
|
+ .location + .quick_links {
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
.pane.spacer {
|
.pane.spacer {
|
||||||
grid-area: spacer;
|
grid-area: spacer;
|
||||||
|
|
||||||
|
width: min-content;
|
||||||
height: calc(100vh - calc(var(--spacing-large) * 2));
|
height: calc(100vh - calc(var(--spacing-large) * 2));
|
||||||
|
|
||||||
display: grid;
|
display: grid;
|
||||||
|
|||||||
2
src/quotes.txt
Normal file
2
src/quotes.txt
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
A flower may only bloom once every three years, but that does not mean it is undeserving of watering. - Cutieguwu Sept. 11, 2025 14:39
|
||||||
|
Don't wait for your future to happen. The time will never be just right. - Unknown
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
<include src="includes/nav_header.html" />
|
<include src="includes/nav_header.html" />
|
||||||
<include src="includes/nav_menu.html" />
|
<include src="includes/nav_menu.html" />
|
||||||
<div class="location">
|
<div class="location">
|
||||||
<h4 class="header">You are here:</h4>
|
<header><h4>You are here:</h4></header>
|
||||||
<h5 class="page">Resume</h5>
|
<h5 class="page">Resume</h5>
|
||||||
</div>
|
</div>
|
||||||
<include src="includes/nav_quick_links.html" />
|
<include src="includes/nav_quick_links.html" />
|
||||||
@@ -20,14 +20,14 @@
|
|||||||
<div class="body">
|
<div class="body">
|
||||||
<header>
|
<header>
|
||||||
<h1 class="title">Olivia Brooks</h1>
|
<h1 class="title">Olivia Brooks</h1>
|
||||||
<p class="date">Last Edited: 08 August, 2025</p>
|
<p class="date">Last Edited: 21 February, 2026</p>
|
||||||
</header>
|
</header>
|
||||||
<div class="body">
|
<div class="body">
|
||||||
<div class="about_me">
|
<div class="about_me">
|
||||||
<p>
|
<p>
|
||||||
Hello, I'm Olivia Brooks. I am a passionate, hard-working, and
|
Hello, I'm Olivia Brooks. I am a passionate, hard-working, and
|
||||||
dependable individual with an inate interest in sharing and expanding my
|
dependable individual with an innate interest in sharing and expanding
|
||||||
knowledge and expertise.
|
my knowledge and expertise.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
For the better part of a decade, I've specced, built, identified and
|
For the better part of a decade, I've specced, built, identified and
|
||||||
@@ -87,7 +87,7 @@
|
|||||||
weather patterns.
|
weather patterns.
|
||||||
</li>
|
</li>
|
||||||
<li>Additionally handled equipment maintenance.</li>
|
<li>Additionally handled equipment maintenance.</li>
|
||||||
<li>Acted as administrative liason.</li>
|
<li>Acted as administrative liaison.</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
@@ -151,7 +151,7 @@
|
|||||||
<p>Bachelor of Arts (Honours)</p>
|
<p>Bachelor of Arts (Honours)</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Major in Psychology</li>
|
<li>Major in Psychology</li>
|
||||||
<li>[Intended] Minor in Women's and Gender Studies</li>
|
<li>[Intended] Minor in Computer Science</li>
|
||||||
<li>Concentration in Social/Personality Psychology</li>
|
<li>Concentration in Social/Personality Psychology</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
@@ -227,6 +227,16 @@
|
|||||||
<h3 class="status">x2</h3>
|
<h3 class="status">x2</h3>
|
||||||
</header>
|
</header>
|
||||||
</section>
|
</section>
|
||||||
|
<section>
|
||||||
|
<header>
|
||||||
|
<div>
|
||||||
|
<h3 class="name">CyberSci Regional Winner</h3>
|
||||||
|
<span class="subtitle"
|
||||||
|
>The Off-By-Ones - Ottawa, 2025</span
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
</section>
|
||||||
<h3 class="early_history">
|
<h3 class="early_history">
|
||||||
Queries about other awards available by request.
|
Queries about other awards available by request.
|
||||||
</h3>
|
</h3>
|
||||||
@@ -460,7 +470,7 @@
|
|||||||
<header>
|
<header>
|
||||||
<div>
|
<div>
|
||||||
<h3 class="name">
|
<h3 class="name">
|
||||||
<a href="mailto:olivia.a.brooks77@gmail.com"> Email </a>
|
<a href="mailto:olivia.a.brooks77@gmail.com">Email</a>
|
||||||
</h3>
|
</h3>
|
||||||
<span class="subtitle">olivia.a.brooks77@gmail.com</span>
|
<span class="subtitle">olivia.a.brooks77@gmail.com</span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
11
templates/device_queries.css
Normal file
11
templates/device_queries.css
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
/* Mobile Phone */
|
||||||
|
@media (max-width: 600px) {
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Tablets and other weird intermediary stuff. */
|
||||||
|
@media (min-width: 601px) and (max-width: 1023) {
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Desktops and Laptops */
|
||||||
|
@media (min-width: 1024) {
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user