Compare commits

..

18 Commits

Author SHA1 Message Date
35b8e07833 changed a few things
All checks were successful
Deploy on push / deploy (push) Has been skipped
2025-10-23 03:28:11 -07:00
f8a79f0c1a added post 7
All checks were successful
Deploy on push / deploy (push) Has been skipped
2025-10-23 03:04:44 -07:00
Ryan Chou
9839fab5ea added post 6
All checks were successful
Deploy on push / deploy (push) Has been skipped
2025-10-14 01:24:13 -07:00
5e9d3c35b0 test
All checks were successful
Deploy on push / deploy (push) Has been skipped
2025-09-22 21:17:04 -07:00
c2c1656c5c test
All checks were successful
Deploy on push / deploy (push) Has been skipped
2025-09-22 21:01:36 -07:00
c89c6e155c updated
All checks were successful
Deploy on push / deploy (push) Has been skipped
2025-09-22 20:54:17 -07:00
377b0676c2 added post 5 tips in america
All checks were successful
Deploy on push / deploy (push) Has been skipped
2025-09-22 05:41:51 -07:00
851c773295 post 4
All checks were successful
Deploy on push / deploy (push) Has been skipped
2025-09-19 03:05:21 -07:00
2a322f53c4 rchou.org -> rchou.net [deploy] 2025-08-19 22:38:02 +08:00
6cb54cd422 added .gitignore
All checks were successful
Deploy on push / deploy (push) Has been skipped
2025-08-19 22:37:35 +08:00
18418f261b leaner runner image [deploy]
All checks were successful
Deploy on push / deploy (push) Successful in 13s
2025-08-18 01:53:17 +08:00
8cd2ac9b77 [deploy]
All checks were successful
Deploy on push / deploy (push) Successful in 11s
2025-08-12 03:11:02 +08:00
f486d592b6 added posts source
All checks were successful
Deploy on push / deploy (push) Has been skipped
2025-08-12 03:08:04 +08:00
0ea0263711 added post template 2025-08-12 03:07:48 +08:00
7faaf5fcbc added styles 2025-08-12 03:07:19 +08:00
20e8de1b70 added index 2025-08-12 03:06:52 +08:00
246abb2d54 added assets 2025-08-12 03:06:24 +08:00
09f01a1ff4 added pipeline 2025-08-12 03:06:16 +08:00
23 changed files with 511 additions and 0 deletions

View File

@@ -0,0 +1,35 @@
name: Deploy on push
on:
push:
branches: [ "main" ]
jobs:
deploy:
runs-on: alpine-rsync
if: contains(gitea.event.head_commit.message, '[deploy]')
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup SSH
env:
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
run: |
mkdir -p ~/.ssh
echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
ssh-keyscan -p 22 "rchou.net" >> ~/.ssh/known_hosts
chmod 644 ~/.ssh/known_hosts
- name: Rsync to server
env:
SSH_TARGET_DIR: /home/cab/docker/websites/blog-src
RSYNC_SOURCE: .
run: |
rsync -rz --delete \
--no-times --no-perms --no-owner --no-group \
--omit-dir-times --mkpath \
-e "ssh -i ~/.ssh/id_ed25519 -p 22" \
"$RSYNC_SOURCE"/ "deploy@rchou.net:${SSH_TARGET_DIR}/"

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
.DS_Store

BIN
assets/.DS_Store vendored Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
assets/apple-touch-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

BIN
assets/cabby.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
assets/favicon-16x16.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 690 B

BIN
assets/favicon-32x32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
assets/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

1
assets/site.webmanifest Normal file
View File

@@ -0,0 +1 @@
{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}

32
index.html Normal file
View File

@@ -0,0 +1,32 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Ryan's Blog</title>
<link rel="stylesheet" href="styles.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Spectral:ital,wght@0,200;0,300;0,400;0,500;0,600;0,700;0,800;1,200;1,300;1,400;1,500;1,600;1,700;1,800&display=swap" rel="stylesheet">
<link rel="apple-touch-icon" sizes="180x180" href="./assets/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="./assets/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="./assets/favicon-16x16.png">
<link rel="manifest" href="./assets/site.webmanifest">
</head>
<body>
<main-header>
<h1>My Blog</h1>
<p>A collection of my posts.</p>
</main-header>
<main>
<section id="post-list">
<!-- Blog posts will be dynamically added here -->
</section>
</main>
<footer>
<p>© 2025 Ryan Chou</p>
</footer>
<script src="script.js"></script>
</body>
</html>

32
post.html Normal file
View File

@@ -0,0 +1,32 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Yap Sesh</title>
<link rel="stylesheet" href="styles.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Spectral:ital,wght@0,200;0,300;0,400;0,500;0,600;0,700;0,800;1,200;1,300;1,400;1,500;1,600;1,700;1,800&display=swap" rel="stylesheet">
<link rel="apple-touch-icon" sizes="180x180" href="./assets/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="./assets/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="./assets/favicon-16x16.png">
<link rel="manifest" href="./assets/site.webmanifest">
</head>
<body>
<header>
<a href="index.html">
<img src="assets/cabby.jpg" alt="Home" class="home-button">
</a>
</header>
<main id="content">
<article id="post"></article>
</main>
<footer>
<p>© 2025 Ryan Chou</p>
</footer>
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
<script src="script.js"></script>
</body>
</html>

28
posts/post1.md Normal file
View File

@@ -0,0 +1,28 @@
#### Meaningful Action
### wow this is barely comprehensible
## Jan 23, 2025
---
[Mirror neurons](https://www.wikiwand.com/en/articles/Mirror_neuron). Their entire role is to evoke the emotional response that we perceive in another being. They are considered a foundation for empathetic understanding. Your brain is, in essence, simulating the other persons experience.
Yet once our bodies shift into flight or flight response, meaningful learning becomes almost impossible. In that heightened state, we can certainly feel emotions like anger, relief, or righteousness, but our minds are geared towards immediate survival. Not deeper reflection or growth. Harmful responses, often rationalized as fair or just, only reinforce this dynamic. When someone does something harmful, we might think that harming them in return will bring resolution, but in reality, it just perpetuates the cycle of pain.
Harm is never going to help. Its hard to understand and embody in a culture as addicted to harm as ours is under the guise of punishment and fairness. By perpetrating the harm, or even by witnessing it, not a single human beings emotional response is going to be “Wow! I better bravely and vulnerably heal all my most painful internalized multi-generational traumas so that I never have any harmful thoughts or actions that might slip out in a way that would result in my community harming me.” If Im on the offense, then Im not the cornered one. Im safe. I would also conceal my wounds as much as possible by performing adherents to community norms to avoid harm in a way that makes our wounds feel disconnected and distant, but actually doesnt heal them and makes it harder for us to access them.
Thanks to our mirror neurons, witnessing or enacting harm impacts us on a visceral level. We instinctively experience a measure of that harm ourselves. Many people today, especially men, distance ourselves from that by adopting this tough “Well they got this coming for them” attitude. But these men are terrified. They have no idea what repair would actually look like. They have no idea what successful conflict mediation looks like, what forgiveness looks like, what community looks like. Theyve never seen anything other than deeply wounded people who are addicted to punishing others as thinly veiled attempts to validate the harm that theyve experienced. Reactive harm is never constructive, even if they are ideologically correct. All it leads to is them repressing their true ideologies in public, and would guarantee to bury those incorrect thought patterns and make them express them in more insidious ways against others who are more vulnerable. This is the cycle of harm. When we, as a culture, use punishment to suppress behavior, we dont solve underlying believes or even make that behavior go away. We just make it harder for anyone to see or access or change.
This doesnt mean we should tolerate damaging behavior. We should address it in ways that actually help the community heal. The fact that people cant even imagine what intervention without punishment is evidence of how deeply normalized how punishment is in our community. No part of this is saying we should tolerate minimize downplay or excuse problematic behavior. Im saying we need to break our internalized cycles of violence to the point where we can actually address the believes that lead to the behavior, instead of just making ourselves feel safe and superior by defaulting to punishment, making the perpetrator identify as a victim now.
Nowadays on the internet, we are crafting a shared narrative and understanding of the world. When we see things that are mistaken, we feel a strong pressure to correct them. The way you treat other, imperfect people, is the way you treat yourself, an imperfect person. You're telling yourself that the world is dangerous and that you better not get caught youll be crucified too. When you go after other people, youre going after yourself, and reinforcing the idea that you have to be perfect or else youll never be safe or loved. Youre locking yourself into your own wounds, and cutting off opportunities for growth and healing. Punishment is not educating. You do not deserve to suffer, life is not suffering.
Thats all easier said than done. Considering current events, we are clearly moving towards a fascist society.
Karl Marx states,
> “Under no pretext should arms and ammunition be surrendered; any attempt to disarm the workers must be frustrated, by force if necessary.”
Collective self-defense. If the ruling class uses violence to suppress us, we have a right, maybe a duty, to defend ourselves.
I personally struggle with the distinction between self-defense and retaliatory violence. Im still in the process of healing and growing myself. Im still learning to stop fighting in the TikTok comments, and have an open diaglog with someone face to face. I understand that if someone in my community is facing oppression, stepping in is a form of solidarity.
Whats clear is that something needs to be done. If a kid grows up in an abusive household, the kid will grow up hating the parent that abused them, and the parent that sat back and let it happen just as much. We must reject passive complicity. Standing idly by when people are harmed can enable further violence. We must move beyond performative activism in online echo chambers. Engage with people in real life. Listen to your neighbors, attend local events. Find tangile ways to make life better in your immediate community. Personal involvment humanizes both you and those who might be drawn to harmful beliefs.

18
posts/post2.md Normal file
View File

@@ -0,0 +1,18 @@
#### Scars, Sadness, and Soulmates
### Healing isn't a prerequisite for love, being human is.
## Jan 26, 2025
---
If youve ever felt like youre not “healed enough” or “whole enough” to love or be loved, you arent alone. Culture has this misconception in which you shouldnt date unless youre perfectly stitched together, free of scars, immune of the bouts of sadness that makes us human.
Why?????
Why is it acceptable to lean on friends and community when were struggling, but not a romantic partner? **Why is love the one connection behind a paywall, locked behind the unrealistic expectation of being spotless and ideal?**
You dont need to be perfect to deserve love. Love isnt about presenting yourself as some flawless version of who you think you should be. Its about showing up. Scars, struggles, and all. And letting someone see you. Because in love, we heal. We grow. We transform. The beauty of romance is that it holds up a mirror to the parts of ourselves we didnt even know needed attention, and through that reflection, we can become more whole.
Love is powerful because it doesnt require us to be ready, it helps us become ready. Love accepts every inch of who you are, and you deserve that. A love that listens when you share your ugliest truths and doesnt flinch. A love that chooses you, fights for you, and celebrats the divine light in you, even when you cant see it yourself.
You deserve to be caressed, considered, and held in all your humanity. You deserve love that reminds you, every single day, that you are enough. Exactly as you are. And if you want that, its okay to want it. Its okay to open yourself to it. Because no mattery where youre at in your healing, you are worthy of love.
Always.

34
posts/post3.md Normal file
View File

@@ -0,0 +1,34 @@
#### Hemming the Divide
### Everything I create lives on a screen.
## Jul 28, 2025
---
Growing up as a CS major in a hyper digitized world, Ive often found myself caught in a quiet discomfort,, a creeping sense of detachment from the physical world. Everything I create lives on screens. It runs in the cloud, floats in GitHub repos, is parsed, compiled, and rendered in pixels. Its a strange dissonance: Im building things, but I never touch them.
Lately, Ive been thinking about this more seriously, especially through the lens of Marx and his critique of the division of labor. For Marx, the division of labor was both a historical necessity and a source of alienation. In the capitalist mode of production, labor becomes fragmented. Workers are separated from the product of their work, and work itself becomes divorced from the full spectrum of human creativity.
>“The worker therefore only feels himself outside his work, and in his work feels outside himself.”
— Karl Marx, Economic and Philosophic Manuscripts of 1844
The more I read, the more I feel implicated. Not in a self flagellating way, but in a deeply personal, uneasy way. As a programmer, Im rewarded for thinking: for abstract problem solving, systems design, optimization. I am, by all accounts, doing “mental labor.” And Ive started to notice how this classification, this distinction between mental and manual work, carries a moral weight in how society values people.
Ill be honest: sometimes I find myself buying into it. Ive caught myself thinking, “At least Im not flipping burgers.” Or nodding along when my dad, who now lives in Taiwan/China, says he hires people to run errands so he can use that time to “think.” Because thinking, to him, is high-status. Its intellectual. Clean. Efficient.
But thats exactly what scares me. Because it creates a hierarchy of value where brain beats body. Where abstraction beats creation. And where I, and people like me, start to believe that we're worth more. Not because we contribute more, but because our contribution is seen as more “intelligent.”
It wasnt always like this. Think about the artisan. The shoemaker. The woodworker. The tailor. People who not only conceived of something but also made it. There was no distinction between designer and laborer. No sharp line between the thinker and the doer. You needed both. You sketched, measured, cut, stitched, refined. The idea didnt exist without the hand.
And I think thats what Im craving. Not just a hobby, but a reintegration. A way to stitch myself back into a more holistic relationship with labor.
Thats why I want to sew.
Not just because I thrift and want my clothes to fit better (though I do), and not just because embroidery looks cool (though it does). I want to sew because Im tired of existing in the abstract. I want to think of something and then make it, not by clicking, but by touching. I want to bring something into existence with my hands, not just my mind.
Theres something radical about that. Especially now, when even “eco friendliness” has been co-opted by consumerism. People flaunt their green products, their recycled cotton hoodies and stainless steel water bottles, as though buying better is the same as living better. But were still buying. Were still outsourcing. Still alienated from the process.
Repairing, reusing, repurposing, these arent just sustainable acts. Theyre political ones. They resist the logic of disposability. They refuse the idea that labor is something to be offloaded to someone “lower” on the chain.
So this is my quiet rebellion. A needle, a thread, a pile of thrifted clothes. Its not much. But its a start.
I want to learn to sew because I want to remember that making isnt beneath me. That labor, real labor, with cuts and pricks and mess, isnt lesser than thinking. That I am not better because I work with my brain. I am just incomplete without my hands.

31
posts/post4.md Normal file
View File

@@ -0,0 +1,31 @@
#### Home is a Moving Target
## Sep 18, 2025
---
The first thing I notice when I land in Taipei isnt the humidity, its the English.
The customs officer glances at my U.S. passport, smiles politely, and greets me with a crisp, "hello".
Its friendly, but its also a signal: foreigner.
Back home in the States, the signals run the other way.
Strangers will tilt their heads and ask, “Where are you really from?”
To them, my black hair and last name are proof that I dont fully belong.
Two countries, two kinds of distance.
In Taiwan, my Mandarin carries a soft American lilt.
In America, my face carries a history I cant shed.
The result is a strange elasticity of self: Im stretched across the Pacific, always a little too much and a little not enough.
And yet, in that stretch, there is unexpected abundance.
I love the late night chaos of a Taiwanese night market, the smoky perfume of oyster omelets, the sugar crust on fried sweet potatoes.
I also love the messy creativity of American diners, where pancakes arrive bigger than the plate and coffee refills never stop.
My playlists swing from Faye Wong ballads to Kendrick Lamar verses; my shelves hold both pu'er tea leaves and prepackaged mac and cheese.
These arent contradictions. Theyre coordinates.
Belonging, Ive learned, isnt a single address.
Its a moving target, a constellation of tastes, sounds, and memories that shift as I do.
I may always be a foreigner in Taipei and a hyphenated question mark in California, but I carry the best of both with me, like dual passports of the heart.
Maybe thats the quiet gift of being Asian American:
To stand in the middle of two cultures, to love them both fiercely, and to know that home isnt where people decide you fit.
Home is everything you refuse to give up.

28
posts/post5.md Normal file
View File

@@ -0,0 +1,28 @@
#### Tipping in America
## Sep 25, 2025
---
# 1. Why tipping exists in U.S. restaurants
### Sub-minimum wage:
In most U.S. states, servers are legally allowed to be paid below the normal minimum wage (the federal "tipped minimum" is only $2.13/hr). The assumption is that tips will bring them up to at least regular minimum wage.
California is one of the few states where employers must pay full minimum wage, but even here, servers still depend heavily on tips because restaurant owners factor tips into scheduling and raise decisions.
### Tip-out culture:
The server does not keep every dollar. At the end of each shift they "tip out" a percentage of their sales (not just their tips) to runners, bussers, bartenders, and hosts. A 15% tip might leave the server with far less after sharing.
### Historical roots:
Tipping in the U.S. grew after the Civil War. Employers, especially in hospitality, used tipping as an excuse to avoid paying formerly enslaved Black workers a fair wage.
# 2. Social expectations
Restaurants with table service:
- Excellent service or fancy dining: 2025%.
- Good service: ~1820% of the pre-tax bill is standard.
- Okay but not terrible: ~15% is still expected unless something was truly bad.
Bars: $12 per simple drink or 20% of the tab.
Coffee shops/counter service: optional, but $1 in a tip jar is nice if they made something complex.
Take-out/fast casual: rounding up or $12 is polite but not required.
# 3. Where you can save a bit as a student
- Counter service / grab-and-go: you can skip or leave coins without being rude.
- Delivery apps: still tip (~1015%) because drivers rely on it, but you can pick up your food yourself to avoid the fee and higher tip.
- Bars during happy hour: $1 per drink is acceptable if its a simple pour.
- Large groups: check for automatic gratuity—dont double-tip by accident.

18
posts/post6.md Normal file
View File

@@ -0,0 +1,18 @@
#### The Weight of Wanting
## Oct 14, 2025
---
At the gym, I am not a man or a woman or a queer body. I am a collection of movements. A set of repetitions. A calculus of effort and symmetry. The mirrors line the walls like an endless chorus of judges, and I study myself through them: the slope of a shoulder, the softness of a face that never quite leans masculine enough, the hint of fat that clings with memory. I used to be fat. Not in the nostalgic, “glow up” sense, but in the way that teaches you to apologize for existing in space. Now I am less fat. But my body remembers. The roundness lingers in my face, the old shame in my posture. Its a strange inheritance, to lose weight, but not escape its ghost.
The gym is supposed to be a temple of transformation. For me, its also a confessional booth. Every rep feels like repentance, a small absolution for the sin of softness, of effeminacy, of wanting too much to be seen. The iron never lies, but it doesnt forgive either. When the weight rises above my chest, I imagine Im lifting something more abstract: the part of me that still flinches when someone calls me “fag.” The part that wants to be desired but not categorized. The part that keeps trying to reconcile masculinity and queerness in a world that demands they be kept apart.
In Santa Cruz, queerness is ambient, it hangs in the air like the mist from the ocean. Everyone is soft, ethereal, performing care. But softness doesnt feel like safety to me. My bisexuality collapses under the gaze here. I become “the gay boy,” a decorative character in someone elses narrative of radical inclusion. To belong, I have to lean in: to exaggerate the curve, the tone, the cadence. Its not malicious, just exhausting. I leave each queer gathering feeling like Ive betrayed some quieter version of myself. Every woman I've loved becomes a footnote, a phase, evidence of my confusion rather than my wholeness.
In San Jose, the pendulum swings the other way. I blend in too easily. Stussy hoodie, silver chain, jeans that sag just right. I am one of many: boys who talk about bulking and ratios, who go to raves "for the music," who hide softness under creatine and slang. Here, my queerness recedes into the background. Tolerated, not examined. Theres a freedom in that invisibility, but also a loss. I am seen as “normal,” which means I am not seen at all.
Between these two cities, my body becomes a site of negotiation. Every pound lifted, every calorie tracked, is an act of translation between two worlds that cant seem to hold me whole. The gym becomes the only place where both versions coexist: the gayboy chasing twinkness, the abb chasing defintion. In that liminal space, aggression feels holy. A ritual through which I can access something wordless. Power, maybe. Or control. Or just the relief of motion.
But liberation has its own cruelty. There is a kind of spiritual violence in self-improvement: the belief that salvation lies on the other side of progress. That if I sculpt myself long enough, Ill arrive somewhere better. More real. More lovable. More deserving of belonging. Its the same old theology of the before and after photo: proof that the body is a problem to be solved, not a language to be spoken.
Sometimes, when Im racking plates alone late at night, I catch my reflection in the darkened glass. The gym is empty, and the air hums with fluorescent fatigue. I see myself, neither saint nor sinner, neither gay nor straight. Just a body, suspended in the act of becoming.
And for a moment, thats enough. Not freedom exactly, but something adjacent: the quiet grace of being seen by no one, and still showing up.

20
posts/post7.md Normal file
View File

@@ -0,0 +1,20 @@
#### The Intimacy of Never Speaking Again
## Oct 22, 2025
---
There is a certain intimacy in never speaking again. Not the soft kind people romanticize in love stories, but a quieter, stranger intimacy. The kind that comes only after being fully seen. Because intimacy isnt just late night conversations or bodies curled on a couch. Its the rare moment two people allow themselves to be known without performance. Its layered, deliberate. Its to be truly, dangerously known.
People love the idea of “right person, wrong time,” but fate wasnt the author here. There was no cosmic theft and no tragic inevitability. I made the choice. I ended it. I didnt give you a say, or a vote, or even the dignity of mutual unraveling. I walked away first. Not because I didnt care, but because I cared more than I was capable of holding. You were the kind of person life doesnt hand you twice. Not perfect. Not destined. Just unrepeatable in a way that will follow me for the rest of my life. And that scared me. You took me back once. You pulled the thread of us through the tear I made and laid it, carefully, across the seam. That kind of grace is not the sort of thing you ask for a second time. So this silence is mine to keep. Not because it is merciful, or easy, or even right in any comforting way. But because I closed the door and I do not get to knock. Regret does not entitle me to return. The ending is my work. Carrying it is, too.
The silence that followed became its own intimacy, sharper than touch, heavier than memory. Silence is not forgetting. Silence is remembering without relief. It is choosing not to reopen a wound, not because the feeling is gone, but because its still too alive. Silence after intimacy is both a boundary and a burial ground. Some people do not come around twice, and when they do, you do not keep testing the earth where youve already buried something sacred.
And so we carry a private universe no one else will ever witness. To speak now would dilute it. Casual contact would cheapen it. Small talk would vandalize what was once sacred. When two people who knew each other that deeply choose not to speak, the silence becomes the final shared secret. It means you will build a life that has nothing to do with me, and I will do the same. One day, someone will ask about you, and Ill shrug like your name is just another name. They wont know there was a time my whole world bent around you. They wont know the cost of what I keep in silence.I wont call. Not in the bright hours when I feel brave, not in the dark ones when I dont. I wont send a message on an anniversary only we would recognize. I wont reach for an excuse to ask about your job, the small weather of your days, or a holiday greeting. I wont ask for a meeting under the pretense of returning something that doesnt matter. The truth is simple. I ended us. And now my part is to keep the ending intact.
This is not penance dressed up as principle. It is acceptance. There is a line I crossed that cannot be uncrossed, and a door that stays closed because I closed it. I can love what we were and still refuse to disturb it. I can grieve without petitioning for relief. I can choose the kind of silence that protects the best of us from the worst of me.
So I will carry you the way a wallflower holds its silence at the edge of the room. I will go on building a life that has nothing to do with you, not because you were small, but because you were singular. And singular things do not survive rehearsal. They belong to their moment, and then to memory.
But I will know. And that knowing will stay, quiet as snowfall, heavy as stone.
We will not speak again. That is our last intimacy. Not closure. Not peace.
Just the echoing truth that <br> I lost something irreplaceable, <br> and I was the one who ended it.

16
posts/template.md Normal file
View File

@@ -0,0 +1,16 @@
#### Title
### Excerpt
## Date
---
yap
** bold **
* italic *
> quote
`code`
- list
- list
1. one
2. two
---
[link](link.com)

56
script.js Normal file
View File

@@ -0,0 +1,56 @@
document.addEventListener("DOMContentLoaded", function () {
let lastScrollY = window.scrollY;
const header = document.querySelector("header");
window.addEventListener("scroll", () => {
if (window.scrollY > lastScrollY) {
// Scrolling down
header.classList.add("hide-header");
} else {
// Scrolling up
header.classList.remove("hide-header");
}
lastScrollY = window.scrollY;
});
// Dynamically load posts on the home page
if (document.getElementById("post-list")) {
const posts = [
{ title: "The Intimacy of Never Speaking Again", date: "Oct 22, 2025", excerpt: "", file: "post7.md" },
{ title: "The Weight of Wanting", date: "Oct 14, 2025", excerpt: "", file: "post6.md" },
{ title: "Home is a Moving Target.", date: "Sep 18, 2025", excerpt: "The first thing I notice when I land in Taipei isnt the humidity, its the English.", file: "post4.md" },
{ title: "Hemming", date: "Jul 28, 2025", excerpt: "Everything I create lives on screens", file: "post3.md" },
{ title: "Scars, Sadness, and Soulmates", date: "Jan 26, 2025", excerpt: "Healing isn't a prerequisite for love, being human is.", file: "post2.md" },
{ title: "Meaningful Action", date: "Jan 23, 2025", excerpt: "wow this is barely comprehensible", file: "post1.md" },
];
const postList = document.getElementById("post-list");
posts.forEach(post => {
const postElement = document.createElement("div");
postElement.classList.add("post-card");
postElement.innerHTML = `
<h4>${post.title}</h4>
<h3>${post.date}</h3>
<p>${post.excerpt}</p>
`;
postElement.addEventListener("click", () => {
window.location.href = `post.html?file=posts/${post.file}`;
});
postList.appendChild(postElement);
});
}
// Load specific post content on the post page
const urlParams = new URLSearchParams(window.location.search);
const postFile = urlParams.get("file");
if (postFile) {
fetch(postFile)
.then(response => response.text())
.then(text => {
document.getElementById("post").innerHTML = marked.parse(text);
});
}
});

161
styles.css Normal file
View File

@@ -0,0 +1,161 @@
html, body {
font-family: 'Spectral', serif;
line-height: 1.6;
margin: 0;
padding: 0;
background: #121212; /* Dark background */
color: #eee; /* Light text */
display: flex;
flex-direction: column;
height: 100%;
}
/* Header */
main-header {
text-align: center;
padding: 10px;
background: black; /* Dark header */
position: sticky;
z-index: 100;
top: 0;
}
header {
text-align: center;
padding: 10px;
background: black; /* Dark header */
position: fixed;
top: 0;
left: 0;
width: 100%;
transition: transform 0.3s ease-in-out;
}
.hide-header {
transform: translateY(-100%);
}
/* Main Content */
main {
max-width: 700px;
margin: 40px auto;
padding: 20px;
background: #121212; /* Dark content background */
flex: 1;
}
/* Buttons */
button {
font-size: 1rem;
padding: 10px 20px;
border: none;
border-radius: 5px;
background: #007BFF;
color: white;
cursor: pointer;
margin: 10px;
}
button:hover {
background: #0056b3;
}
/* Footer */
footer {
text-align: center;
padding: 20px;
margin-top: 40px;
background: #1e1e1e;
}
h4 {
font-size: 32px;
margin: 0;
padding: 0;
padding-top: 45px;
}
h3 {
font-size: 18px;
color: grey;
margin: 0;
padding: 0;
}
h2 {
font-size: 11px;
color: grey;
margin: 0;
padding: 0;
}
p {
font-size: 19px;
line-height: 1.6;
}
a {
color: #eee; /* Light text */
text-decoration: underline;
}
a:hover {
text-decoration: none;
}
blockquote {
margin-top: 10px;
margin-bottom: 10px;
margin-left: 15px;
padding-left: 15px;
border-left: 3px solid #ccc;
}
/* Home Page: Clickable Post Cards */
.post-card {
background: #1e1e1e;
padding: 20px;
border-radius: 8px;
margin-bottom: 20px;
cursor: pointer;
transition: background 0.3s ease, transform 0.2s ease;
box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.4);
}
.post-card p {
margin: 0;
}
.post-card h4 {
padding-top: 0;
}
.post-card:hover {
background: #292929;
transform: translateY(-2px);
}
.post-card h2 {
margin: 0;
color: #ffffff;
}
.post-card .post-date {
font-size: 0.9em;
color: #aaa;
}
.post-card .post-excerpt {
color: #ccc;
}
/* Home button (circular image) */
.home-button {
width: 50px; /* Adjust size as needed */
height: 50px;
border-radius: 50%; /* Makes it circular */
object-fit: cover; /* Ensures image fills circle */
border: 2px solid #ccc; /* Optional: adds a subtle border */
cursor: pointer;
transition: transform 0.2s ease, opacity 0.2s ease;
}
.home-button:hover {
transform: scale(1.1); /* Slight zoom effect */
opacity: 0.8;
}