initial commit, set up sveltekit with static rendering and markdown posts for Rants section, add rss feed

This commit is contained in:
2023-05-07 14:15:27 -04:00
commit 26dca03745
150 changed files with 10538 additions and 0 deletions

13
.eslintignore Normal file
View File

@@ -0,0 +1,13 @@
.DS_Store
node_modules
/build
/.svelte-kit
/package
.env
.env.*
!.env.example
# Ignore files for PNPM, NPM and YARN
pnpm-lock.yaml
package-lock.json
yarn.lock

20
.eslintrc.cjs Normal file
View File

@@ -0,0 +1,20 @@
module.exports = {
root: true,
parser: '@typescript-eslint/parser',
extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'prettier'],
plugins: ['svelte3', '@typescript-eslint'],
ignorePatterns: ['*.cjs'],
overrides: [{ files: ['*.svelte'], processor: 'svelte3/svelte3' }],
settings: {
'svelte3/typescript': () => require('typescript')
},
parserOptions: {
sourceType: 'module',
ecmaVersion: 2020
},
env: {
browser: true,
es2017: true,
node: true
}
};

10
.gitignore vendored Normal file
View File

@@ -0,0 +1,10 @@
.DS_Store
node_modules
/build
/.svelte-kit
/package
.env
.env.*
!.env.example
vite.config.js.timestamp-*
vite.config.ts.timestamp-*

1
.npmrc Normal file
View File

@@ -0,0 +1 @@
engine-strict=true

13
.prettierignore Normal file
View File

@@ -0,0 +1,13 @@
.DS_Store
node_modules
/build
/.svelte-kit
/package
.env
.env.*
!.env.example
# Ignore files for PNPM, NPM and YARN
pnpm-lock.yaml
package-lock.json
yarn.lock

9
.prettierrc Normal file
View File

@@ -0,0 +1,9 @@
{
"useTabs": true,
"singleQuote": true,
"trailingComma": "none",
"printWidth": 100,
"plugins": ["prettier-plugin-svelte"],
"pluginSearchDirs": ["."],
"overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }]
}

1
.tool-versions Normal file
View File

@@ -0,0 +1 @@
nodejs 18.12.0

106
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,106 @@
{
"eslint.format.enable": true,
"editor.formatOnSave": true,
"eslint.lintTask.enable": true,
"prettier.enable": true,
"prettier.documentSelectors": [
"**/*.svelte"
],
"[svelte]": {
"editor.defaultFormatter": "svelte.svelte-vscode"
},
"tailwindCSS.classAttributes": [
"class",
"accent",
"active",
"background",
"badge",
"bgBackdrop",
"bgDark",
"bgDrawer",
"bgLight",
"blur",
"border",
"button",
"buttonAction",
"buttonBack",
"buttonClasses",
"buttonComplete",
"buttonDismiss",
"buttonNeutral",
"buttonNext",
"buttonPositive",
"buttonTextCancel",
"buttonTextConfirm",
"buttonTextNext",
"buttonTextPrevious",
"buttonTextSubmit",
"caretClosed",
"caretOpen",
"chips",
"color",
"cursor",
"display",
"element",
"fill",
"fillDark",
"fillLight",
"flex",
"gap",
"gridColumns",
"height",
"hover",
"invalid",
"justify",
"meter",
"padding",
"position",
"regionBackdrop",
"regionBody",
"regionCaption",
"regionCaret",
"regionCell",
"regionCone",
"regionContent",
"regionControl",
"regionDefault",
"regionDrawer",
"regionFoot",
"regionFooter",
"regionHead",
"regionHeader",
"regionIcon",
"regionInterface",
"regionInterfaceText",
"regionLabel",
"regionLead",
"regionLegend",
"regionList",
"regionNavigation",
"regionPage",
"regionPanel",
"regionRowHeadline",
"regionRowMain",
"regionTrail",
"ring",
"rounded",
"select",
"shadow",
"slotDefault",
"slotFooter",
"slotHeader",
"slotLead",
"slotMessage",
"slotMeta",
"slotPageContent",
"slotPageFooter",
"slotPageHeader",
"slotSidebarLeft",
"slotSidebarRight",
"slotTrail",
"spacing",
"text",
"track",
"width"
]
}

38
README.md Normal file
View File

@@ -0,0 +1,38 @@
# create-svelte
Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/master/packages/create-svelte).
## Creating a project
If you're seeing this, you've probably already done this step. Congrats!
```bash
# create a new project in the current directory
npm create svelte@latest
# create a new project in my-app
npm create svelte@latest my-app
```
## Developing
Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:
```bash
npm run dev
# or start the server and open the app in a new browser tab
npm run dev -- --open
```
## Building
To create a production version of your app:
```bash
npm run build
```
You can preview the production build with `npm run preview`.
> To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment.

6401
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

43
package.json Normal file
View File

@@ -0,0 +1,43 @@
{
"name": "silentsilas",
"version": "0.0.1",
"private": true,
"scripts": {
"dev": "vite dev",
"build": "vite build",
"preview": "vite preview",
"test": "playwright test",
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
"test:unit": "vitest",
"lint": "prettier --plugin-search-dir . --check . && eslint .",
"format": "prettier --plugin-search-dir . --write ."
},
"devDependencies": {
"@playwright/test": "^1.28.1",
"@skeletonlabs/skeleton": "^1.2.5",
"@sveltejs/adapter-auto": "^2.0.0",
"@sveltejs/adapter-static": "^2.0.2",
"@sveltejs/kit": "^1.5.0",
"@tailwindcss/forms": "^0.5.3",
"@tailwindcss/typography": "^0.5.9",
"@typescript-eslint/eslint-plugin": "^5.45.0",
"@typescript-eslint/parser": "^5.45.0",
"autoprefixer": "^10.4.14",
"eslint": "^8.28.0",
"eslint-config-prettier": "^8.5.0",
"eslint-plugin-svelte3": "^4.0.0",
"mdsvex": "^0.10.6",
"postcss": "^8.4.23",
"prettier": "^2.8.0",
"prettier-plugin-svelte": "^2.8.1",
"svelte": "^3.54.0",
"svelte-check": "^3.0.1",
"tailwindcss": "^3.3.2",
"tslib": "^2.4.1",
"typescript": "^5.0.0",
"vite": "^4.2.0",
"vitest": "^0.25.3"
},
"type": "module"
}

11
playwright.config.ts Normal file
View File

@@ -0,0 +1,11 @@
import type { PlaywrightTestConfig } from '@playwright/test';
const config: PlaywrightTestConfig = {
webServer: {
command: 'npm run build && npm run preview',
port: 4173
},
testDir: 'tests'
};
export default config;

6
postcss.config.cjs Normal file
View File

@@ -0,0 +1,6 @@
module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
}

9
src/app.d.ts vendored Normal file
View File

@@ -0,0 +1,9 @@
// See https://kit.svelte.dev/docs/types#app
// for information about these interfaces
// and what to do when importing types
declare namespace App {
// interface Locals {}
// interface PageData {}
// interface Error {}
// interface Platform {}
}

12
src/app.html Normal file
View File

@@ -0,0 +1,12 @@
<!DOCTYPE html>
<html lang="en" class="dark">
<head>
<meta charset="utf-8" />
<link rel="icon" href="%sveltekit.assets%/favicon.png" />
<meta name="viewport" content="width=device-width" />
%sveltekit.head%
</head>
<body data-sveltekit-preload-data="hover" data-theme="skeleton">
<div style="display: contents" class="h-full overflow-hidden">%sveltekit.body%</div>
</body>
</html>

2
src/app.postcss Normal file
View File

@@ -0,0 +1,2 @@
/*place global styles here */
html, body { @apply h-full overflow-hidden; }

7
src/index.test.ts Normal file
View File

@@ -0,0 +1,7 @@
import { describe, it, expect } from 'vitest';
describe('sum test', () => {
it('adds 1 + 2 to equal 3', () => {
expect(1 + 2).toBe(3);
});
});

View File

@@ -0,0 +1,3 @@
/* PrismJS 1.29.0
https://prismjs.com/download.html#themes=prism-tomorrow&languages=markup+css+clike+javascript */
code[class*=language-],pre[class*=language-]{color:#ccc;background:0 0;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}

69
src/lib/utils/index.ts Normal file
View File

@@ -0,0 +1,69 @@
export interface Metadata {
title: string;
date: string;
content: string;
categories?: string[];
section?: 'rants' | 'writes' | 'works';
}
export interface Post {
meta: Metadata;
path: string;
}
interface Data {
metadata: Metadata;
}
function isData(obj: unknown): obj is Data {
if (typeof obj !== 'object' || obj === null) {
return false;
}
const dataObj = obj as Data;
return (
'metadata' in dataObj &&
typeof dataObj.metadata.title === 'string' &&
typeof dataObj.metadata.date === 'string'
);
}
export const fetchMarkdownPosts = async (
section: 'rants' | 'writes' | 'works'
): Promise<Post[]> => {
let posts: Record<string, () => Promise<unknown>>;
switch (section) {
case 'rants':
posts = import.meta.glob('/src/routes/rants/*.md');
break;
case 'writes':
posts = import.meta.glob('/src/routes/writes/*.md');
break;
case 'works':
posts = import.meta.glob('/src/routes/works/*.md');
break;
default:
throw new Error('Could not find this section');
}
// const allPostFiles = import.meta.glob(`/src/routes/${section}/*.md`);
const iterablePostFiles = Object.entries(posts);
const allPosts = await Promise.all(
iterablePostFiles.map(async ([path, resolver]) => {
const data = await resolver();
if (isData(data)) {
const { metadata } = data;
const postPath = path.slice(11, -3);
return {
meta: { ...metadata, section: section },
path: postPath
};
} else {
throw new Error('Could not properly parse this post');
}
})
);
return allPosts;
};

35
src/routes/+layout.svelte Normal file
View File

@@ -0,0 +1,35 @@
<script lang="ts">
// The ordering of these imports is critical to your app working properly
import '@skeletonlabs/skeleton/themes/theme-skeleton.css';
// If you have source.organizeImports set to true in VSCode, then it will auto change this ordering
import '@skeletonlabs/skeleton/styles/all.css';
// Most of your app wide CSS should be put in this file
import '../app.postcss';
import '$lib/styles/tomorrow-night.css';
import { AppShell, AppBar } from '@skeletonlabs/skeleton';
import { fade } from 'svelte/transition';
export let data;
</script>
<!-- App Shell -->
<AppShell>
<svelte:fragment slot="header">
<!-- App Bar -->
<AppBar>
<svelte:fragment slot="lead">
<strong class="text-xl">silentsilas</strong>
</svelte:fragment>
<svelte:fragment slot="trail">
<a class="btn btn-sm variant-ghost-surface" href="/rants"> Rants </a>
<a class="btn btn-sm variant-ghost-surface" href="/writes"> Writes </a>
<a class="btn btn-sm variant-ghost-surface" href="/works"> Works </a>
</svelte:fragment>
</AppBar>
</svelte:fragment>
<!-- Page Route Content -->
{#key data.currentRoute}
<main in:fade={{ duration: 150, delay: 150 }} out:fade={{ duration: 150 }}>
<slot />
</main>
{/key}
</AppShell>

9
src/routes/+layout.ts Normal file
View File

@@ -0,0 +1,9 @@
export const prerender = true;
export const load = ({ url }) => {
const currentRoute = url.pathname;
return {
currentRoute
};
};

71
src/routes/+page.svelte Normal file
View File

@@ -0,0 +1,71 @@
<!-- YOU CAN DELETE EVERYTHING IN THIS PAGE -->
<div class="container h-full mx-auto flex justify-center items-center">
<div class="space-y-10 text-center">
<h2 class="font-bold">Welcome to Skeleton.</h2>
<!-- Animated Logo -->
<figure>
<section class="img-bg" />
<svg
class="fill-token -scale-x-[100%]"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 200 200"
>
<path
fill-rule="evenodd"
d="M98.77 50.95c25.1 0 46.54 8.7 61.86 23a41.34 41.34 0 0 0 5.19-1.93c4.35-2.02 10.06-6.17 17.13-12.43-1.15 10.91-2.38 18.93-3.7 24.04-.7 2.75-1.8 6.08-3.3 10a80.04 80.04 0 0 1 8.42 23.33c6.04 30.3-4.3 43.7-28.33 51.18.18.9.32 1.87.42 2.9.86 8.87-3.62 23.19-9 23.19-3.54 0-5.84-4.93-8.3-12.13-.78 8.34-4.58 17.9-8.98 17.9-4.73 0-7.25-8.84-10.93-20.13a214 214 0 0 1-.64 2.93l-.16.71-.16.71-.17.71c-1.84 7.58-4.46 15.07-8.5 15.07-5.06 0-2.29-15.9-10.8-22.63-43.14 2.36-79.43-13.6-79.43-59.62 0-8.48 2-16.76 5.69-24.45a93.72 93.72 0 0 1-1.77-3.68c-2.87-6.32-6.3-15.88-10.31-28.7 10.26 7.66 18.12 12.22 23.6 13.68.5.14 1.02.26 1.57.36 14.36-14.44 35.88-24.01 60.6-24.01Zm-9.99 62.3c-14.57 0-26.39 11.45-26.39 25.58 0 14.14 11.82 25.6 26.39 25.6s26.39-11.46 26.39-25.6c0-13.99-11.58-25.35-25.95-25.58Zm37.45 31.95c-4.4 0-6.73 9.4-6.73 13.62 0 3.3 1.1 5.12 2.9 5.45 4.39.4 3.05-5.97 5.23-5.97 1.06 0 2.2 1.35 3.34 2.73l.34.42c1.25 1.52 2.5 2.93 3.64 2.49 2.7-1.61 1.67-5.12.74-7.88-3.3-6.96-5.05-10.86-9.46-10.86Zm-36.85-28.45c12.57 0 22.76 9.78 22.76 21.85 0 12.07-10.2 21.85-22.76 21.85-.77 0-1.53-.04-2.29-.11 11.5-1.1 20.46-10.42 20.46-21.74 0-11.32-8.97-20.63-20.46-21.74.76-.07 1.52-.1 2.3-.1Zm65.54-5c-10.04 0-18.18 10.06-18.18 22.47 0 12.4 8.14 22.47 18.18 22.47s18.18-10.06 18.18-22.47c0-12.41-8.14-22.48-18.18-22.48Zm.6 3.62c8.38 0 15.16 8.4 15.16 18.74 0 10.35-6.78 18.74-15.16 18.74-.77 0-1.54-.07-2.28-.21 7.3-1.36 12.89-9.14 12.89-18.53 0-9.4-5.6-17.17-12.89-18.53.74-.14 1.5-.2 2.28-.2Zm3.34-72.27.12.07c.58.38.75 1.16.37 1.74l-2.99 4.6c-.35.55-1.05.73-1.61.44l-.12-.07a1.26 1.26 0 0 1-.37-1.74l2.98-4.6a1.26 1.26 0 0 1 1.62-.44ZM39.66 42l.08.1 2.76 3.93a1.26 1.26 0 0 1-2.06 1.45l-2.76-3.94A1.26 1.26 0 0 1 39.66 42Zm63.28-42 2.85 24.13 10.62-11.94.28 29.72-2.1-.47a77.8 77.8 0 0 0-16.72-2.04c-4.96 0-9.61.67-13.96 2l-2.34.73L83.5 4.96l9.72 18.37L102.94 0Zm-1.87 13.39-7.5 17.96-7.3-13.8-1.03 19.93.22-.06a51.56 51.56 0 0 1 12.1-1.45h.31c4.58 0 9.58.54 15 1.61l.35.07-.15-16.54-9.79 11-2.21-18.72Zm38.86 19.23c.67.2 1.05.89.86 1.56l-.38 1.32c-.17.62-.8 1-1.42.89l-.13-.03a1.26 1.26 0 0 1-.86-1.56l.38-1.32c.19-.66.88-1.05 1.55-.86ZM63.95 31.1l.05.12.7 2.17a1.26 1.26 0 0 1-2.34.9l-.04-.12-.71-2.17a1.26 1.26 0 0 1 2.34-.9Z"
/>
</svg>
</figure>
<!-- / -->
<div class="flex justify-center space-x-2">
<a
class="btn btn-filled"
href="https://skeleton.dev/"
target="_blank"
rel="noreferrer"
>
Launch Documentation
</a>
</div>
<div class="space-y-2">
<p>Try editing the following:</p>
<p><code>/src/routes/+layout.svelte</code></p>
<p><code>/src/routes/+page.svelte</code></p>
</div>
</div>
</div>
<style lang="postcss">
figure {
@apply flex relative flex-col;
}
figure svg,
.img-bg {
@apply w-64 h-64 md:w-80 md:h-80;
}
.img-bg {
@apply absolute z-[-1] rounded-full blur-[50px] transition-all;
animation: pulse 5s cubic-bezier(0, 0, 0, 0.5) infinite,
glow 5s linear infinite;
}
@keyframes glow {
0% {
@apply bg-primary-400/50;
}
33% {
@apply bg-secondary-400/50;
}
66% {
@apply bg-tertiary-400/50;
}
100% {
@apply bg-primary-400/50;
}
}
@keyframes pulse {
50% {
transform: scale(1.5);
}
}
</style>

View File

@@ -0,0 +1,12 @@
import { fetchMarkdownPosts } from '$lib/utils';
import { json } from '@sveltejs/kit';
export const GET = async () => {
const allPosts = await fetchMarkdownPosts('rants');
const sortedPosts = allPosts.sort((a, b) => {
return new Date(b.meta.date).getTime() - new Date(a.meta.date).getTime();
});
return json(sortedPosts);
};

View File

@@ -0,0 +1,23 @@
<script>
export let data;
</script>
<h1>Rants</h1>
<svelte:head>
<title>silentsilas - Rants</title>
<meta property="og:title" content={'Rants'} />
</svelte:head>
<ul>
{#each data.posts as post}
<li>
<h2>
<a href={post.path}>
{post.meta.title}
</a>
</h2>
Published {post.meta.date}
</li>
{/each}
</ul>

View File

@@ -0,0 +1,8 @@
export const load = async ({ fetch }) => {
const response = await fetch(`/api/rants`);
const posts = await response.json();
return {
posts
};
};

View File

@@ -0,0 +1,30 @@
<script>
export let data;
const { title, date, Content, categories } = data;
</script>
<svelte:head>
<title>silentsilas - {title}</title>
<meta property="og:title" content={title} />
</svelte:head>
<article>
<h1>{title}</h1>
<p>Published: {date}</p>
<Content />
</article>
{#if categories && categories.length}
<aside>
<h2>Posted in:</h2>
<ul>
{#each categories as category}
<li>
<a href="/rants/category/{category}">
{category}
</a>
</li>
{/each}
</ul>
</aside>
{/if}

View File

@@ -0,0 +1,14 @@
import type { Metadata } from '$lib/utils/index.js';
export async function load({ params }) {
const post = await import(`../${params.slug}.md`);
const { title, date, categories } = post.metadata as Metadata;
const Content = post.default;
return {
Content,
title,
date,
categories
};
}

View File

@@ -0,0 +1,42 @@
---
categories:
- blog
date: 2019-03-04 23:04:08 +0000
tags:
- Consciousness
title: Altered States Of Consciousness
year: 2019
---
I've been obsessed with neuroscience as of late. What follows are just a few points I found remarkable in my reading of <a href="https://mitpress.mit.edu/books/altered-states-consciousness">Altered States of Consciousness - Experiences Out of Time and Self</a> by Marc Wittmann.
In a life or death situation, it's quite blurry whether people truly experience time in slow motion, or if they only remember their emotionally-charged event that way. It's a difficult phenomenon to replicate in a laboratory setting for obvious reasons. Witmann's theory, however, is that precisely this "perception of bodily processes is connected to time consciousness". Their mind is fully-engaged and recording every detail of these precious moments. [p.11]
"Subjective time can be quantified [...] only by comparison with external factors." [p.19] As Whittmann explores later, this gives credence to the idea that the mind-body keeps track of time through the act of keeping tabs on itself. In Computer Science lingo, it "pings" for a response from the different areas of the body, which is part of the puzzle to produce subjective time.
With substance withdrawal, "one lives unhappily in the present, and one's relationship to the present is heightened." [p.22] There's a drastic overestimation of the passing of time.
The mystical is experienced by focusing primarily on the now, foregoing the past and future. On this subject, Wittmann also includes a dope Epicurus quote: "While we exist, death is not present, and when death is present we no longer exist."
Yet, don't be too obsessed with the present. Instead, the ideal "present" attitude is an "individual who is not predominantly oriented toward the past (unable to let go), toward the present (impulsively reward-oriented), or toward the future (purely deadline-oriented), but rather who can switch freely between time orientations, who can exercise temporal freedom." [p.43]
<img src="/imgs/urimpression.png" />
Protention: What we expect to experience.
Urimpression: What we experience now.
Retention: Memories not quite in the past; still held in the now.
Together, all three influence how the others are perceived. [p.48]
<a href="/imgs/time_chart.jpg"><img src="/imgs/time_chart.jpg" /></a>
<img src="/imgs/necker_cube.svg" style="background: #efefef" />
The "experienced moment" is best illustrated by the time it takes for the mind to switch perspective of the "necker cube" optical illusion.
Whittmann also presents a good bit of evidence that mindfulness meditation gives rise to time expansion, along with improved working memory. The theory is that if you are more aware of the moment, you remember more of your experienced moments, and thusly subjective time expands. [p.55] Most notably, experienced meditators can hold a perspective of the Necker Cube for longer, and were found to <a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4294119/">feel that the past few weeks/months passed more slowly compared to a control group</a>.
The mystical experience of "Timelessness" might perhaps be the experience of pure _urimpression_, untouched by preconceptions. Neither protention nor retention remains. No guide for the past or future. The self dissipates. [p.72]
"Boredom actually means that we find ourselves boring. It's the intensive self-reference: we are bored with ourselves. We are tired of ourselves." [p.85]
"There is no sense organ for time. Subjective time as a sense of self is a physically and emotionally felt wholeness of our entire self through time."[p.85] We can see this most clearly in studies of schizophrenia. The patients are "stuck" in the present. This disruption of perceived temporal flow collapses the self into "fragments of now." [p.99] Their "functional moment" lengthens. Their "experienced moment" is lost.

View File

@@ -0,0 +1,25 @@
<script>
export let data;
const { category, posts } = data;
</script>
<svelte:head>
<title>silentsilas - {category}</title>
<meta property="og:title" content={category} />
</svelte:head>
<article>
<h1>{category}</h1>
<ul>
{#each posts as post}
<li>
<h2>
<a href={post.path}>
{post.meta.title}
</a>
</h2>
Published {post.meta.date}
</li>
{/each}
</ul>
</article>

View File

@@ -0,0 +1,14 @@
import type { Post } from '$lib/utils/index.js';
export const load = async ({ fetch, params }) => {
const { category } = params;
const response = await fetch(`/api/rants`);
const allPosts: Post[] = await response.json();
const posts = allPosts.filter((post) => post.meta.categories?.includes(category));
return {
category,
posts
};
};

View File

@@ -0,0 +1,25 @@
---
categories:
- blog
date: 2019-03-10 23:04:08 +0000
tags:
- Privacy
title: How To Not Get Hacked
year: 2019
draft: true
---
Alright, it's near the end of 2019. We've had plenty of time to figure out how to get rid of passwords. But we haven't. They're still here. So it's about time we admit that they're here to stay, and that we must better acquaint ourselves with them.
I'm here to make the case for _you_ to change a few of your digital habits. You will no longer <a href="https://en.wikipedia.org/wiki/Password_fatigue" target="_blank">release an exasperated sigh</a> when you see the dreaded "Sign Up" button for Yet Another Website. Your friends will no longer need to spend 15 minutes wrestling with your foggy memory to figure out your WiFi password, or perhaps your Netflix credentials, you dirty account-sharing lawbreakers. You will no longer need to hit the "Forgot Password" button for every site you only use once in a blue moon. Your hair will grow back and its color regain vibrancy. Your friends will respect you, and your enemies will fear you. Some of your friends will also fear you, but that's okay. They were always afraid.
Most importantly: You will no longer get hacked.
And no, I don't mean the kind where a friend posts a dumb status on your Facebook wall while you went to the bathroom. I mean the kind where you get a scary email that someone in Romania tried to access your Pinterest account at 2am EST. The kind where your computer starts to slow down and opens weird windows at random intervals. The kind where thousands of dollars were charged to your bank account, and you have to replace your credit card after proving the charges weren't made by you.
## Password Managers
## Footnotes
<span id="ref0">[0]</span> test

View File

@@ -0,0 +1,109 @@
---
categories:
- blog
date: 2019-03-10 23:04:08 +0000
tags:
title: Lol, Aren't I So Random?
year: 2019
---
How random do you think you are?<a href="#ref0">[0]</a>
On the surface, randomness seems pretty straight-forward. But it gets messy pretty quick once you try to pin down what it actually _is_. But before we dive down that <a href="#philosophy">philosophical rabbit hole</a>, let us first take a gander at this little t-shirt:
<a href="/imgs/illegal_rsa_shirt.jpg"><img src="/imgs/illegal_rsa_shirt.jpg" style="display:block; margin: 0 auto;" /></a>
### A Bit Too Cryptic
It used to be illegal to wear this shirt outside of the States. The math which we now depend on for logging into our bank accounts and securely processing credit card numbers was thought of as a military weapon. Why is that? Simply because it ensures that no outside parties can eavesdrop on your conversations. All of the information is _encrypted_, which means it looks like random gibberish in transit. The recipient, however, can _decrypt_ it to reveal what was written.
<p style="text-align: center"><img src='/imgs/cryption_graph.png' style='display:block; margin: 0 auto;' /><span style="font-size: x-small;">A real-world example of military-grade encryption put to good use.</span></p>
The usefulness of such technology in a military setting should be obvious. Conversely, it is obviously in our militant government's best interests that only they can use this technology - everyone else, both citizen and enemy, should ideally not have the ability to encrypt their messages. This way their communications can be intercepted, and any espionage may be thwarted. None of this technology is new; mankind has been utilizing encryption for as long as our written record can remember<a href="#ref1">[1]</a>. The only difference with the situation today is that our communications are nearly instantaneous, and the encryption is much tougher to break.
### A Bit Too Random
Alright, so maybe all of that is going a bit overboard. Let's say we're just developing a game. For the intro scene, you want the protagonist to feel absolutely helpless as she's surrounded by a torrent of randomly-placed enemies. Which of these distributions seem to pull that off the best?
<p style="text-align: center"><img src='/imgs/50_random.png' style='display:block; margin: 0 auto;' />
<span style="font-size: x-small;">Hmm, I think I can probably take em.</span></p>
<p style="text-align: center"><img src="/imgs/50_distributed_quasirandom.png" style="display:block; margin: 0 auto;" />
<span style="font-size: x-small;">Welp, it was a good life while it lasted.</span></p>
Both have the same amount of red dots. A truly random distribution _could_ potentially look like the second image, but it's actually much more likely for it to have properties in the first image that seem anti-random to our pattern-seeking minds. How could those red dots cluster up like that? Paradoxically, it would seem that the first distribution is a bit _too random_. Instead, our game is in need of _evenly-distributed quasi-randomness_.
<p style="text-align: center"><a href="/imgs/quasi_random.gif"><img src="/imgs/quasi_random.gif" style="display:block; margin: 0 auto;" /></a>
<span style="font-size: x-small;">I could watch an evenly-distributed quasi-random number generator all day</span></p>
This is almost _always_ the type of randomness you want, because it just seems so random to us. You're in a completely different ballgame, however, once you want your number generator to be so random, that no one is able to guess the next number it generates, _even if_ they already know every number its generated thus far. You probably have money or lives at stake here.
### Bits Byte Back
And so back to the military we go! One of the oldest and most commonly-known methods of encryption is called the <a href="https://www.xarg.org/tools/caesar-cipher/">Caesar Cipher</a>, named after Julius Caesar, who apparently used it for military matters. It was likely that his enemies were illiterate or would think his gibberish was a foreign language, so it was secure enough. Otherwise, it takes only 25 tries to guess the message correctly if you knew the methodology. Essentially, you'd choose a number, and then offset every letter in your message by that number. So if you chose 3, then all A's would become D's, all B's would become E's, and so on. Not only was it easy to figure out the number you offset everything by, but just like most other old-school ciphers, it quickly breaks under frequency analysis: some letters are used much more often than others in the English language, and some letters are much more likely to be found before/after certain letters (like 'u' following a 'q'). So once you see that the gibberish has a lot of H's and S's, you could try swapping those with perhaps A's, E's, or T's, and figure out the rest from there.
<p style="text-align: center"><img src="/imgs/frequency_analysis.svg" style="display:block; margin: 0 auto; background:#efefef;" />
<span style="font-size: x-small;">After reading this, your mind will notice how many e's are in this article.</span></p>
We didn't really get too fancy with encryption until we could build machines to automate it all for us. Encryption was simply a lot of scrambling of words/letters, and making sure your recipient knows the trick to undo those operations. This then brings us to the legendary <a href="https://en.wikipedia.org/wiki/Enigma_machine">Enigma Machine</a>, whose algorithm was first broken only due to operational errors, and was used with great success by Nazi Germany in WWII. Up until the era of the Enigma, cracking ciphers required mainly only linguistic and literary prowess. These machines and their increasingly complex algorithms took us deep into the mathematical realm as they resisted our older methods of <a href="https://en.wikipedia.org/wiki/Cryptanalysis">cryptanalysis</a>, like the aforementioned frequency analysis. This developed into a theory called <a href="https://en.wikipedia.org/wiki/Confusion_and_diffusion">Confusion and Diffusion</a> which details the two properties ciphers must have to be impervious to pure cryptanalysis. It should be noted that we're still using the same techniques of scrambling & substituting letters like in Ye Olden Days - machinery simply allows us to do many more complex patterns without too much work on the recipient's end to undo it.
### Speak 'Friend', Press Enter
Which finally brings us back to that t-shirt I showed you earlier! Basically, some smart dudes in the late 70's came up with the <a href="https://en.wikipedia.org/wiki/RSA_(cryptosystem)">RSA algorithm</a>. Its security is based on the fact that it's really difficult to figure out <a href="https://en.wikipedia.org/wiki/Factoring_problem">what two numbers constitute a very large composite number</a>.
<p style="text-align: center"><img src="/imgs/rsa_algorithm.jpg" style="display:block; margin: 0 auto;" />
<span style="font-size: x-small;">Don't worry if this looks confusing. Just know that RSA's got maths.</span></p>
This algorithm gives you a public key which you can show to everyone, and then a private key which you keep only to yourself. Now if you wanted to talk to your homie Rivest, you'd look for his public key and use it to encrypt your message to him. Rivest then receives this encrypted message, and thanks to some unique mathematical properties of RSA, his private key is able to decrypt your message!
With sufficiently large RSA keys, it takes literally thousands of years for computers to crack it<a href="#ref2">[2]</a>. It's not just how long it takes to crack an RSA key that makes it so groundbreaking; we've had things like the <a href="https://en.wikipedia.org/wiki/One-time_pad">One-Time Pad</a>, which is truly uncrackable. No, it's the fact that you don't need to give your intended recipient a key beforehand. Imagine that your public key is essentially your house address, and everyone on the planet can now talk to you with complete security by simply looking you up on Yellow Pages.
## Cracking The Code
Let's take a quick look at the math that makes RSA so difficult to crack. The first thing you need to know is the concept of _Entropy_. If you search for the term, you'll probably get a lot of physics-related results; but it plays a huge role in the field of cryptography as well. In physics terms, entropy is how chaotic a given system is. i.e., an event is considered to have _0 bits of entropy_ if there's no chaos; we're absolutely certain of what's going to happen next. Conversely, an event is considered to have _1 bit of entropy_ if we're 50% certain of what's going to happen next, like whether a coin will land heads or tails.
<p style="text-align: center"><img src="/imgs/entropy_alg.png" style="display:block; margin: 0 auto;" />
<span style="font-size: x-small;">Don't worry 'bout why we use this algorithm. Programmers and computers just like 1's and 0's.</span></p>
So let's say you're trying to figure out someone's password. You know it has uppercase, lowercase, and decimal characters. This means that one character in their password could be in 1 of 62 possible states (26 uppercase + 26 lowercase + 10 digits). You'd plug that number in our handy-dancy algorithm, and we get ~5.95 bits of entropy. Now let's say that you know this person's password is exactly 10 characters long. We can multiply the entropy of one character (~5.95) by the length of the password (10) to get us ~59.5 bits of entropy.
The importance of this number is that it allows us to easily figure out how crackable this password is. Let's check that number against this chart:
<p style="text-align: center"><a href="https://i.imgur.com/e3mGIFY.png"><img src="https://i.imgur.com/e3mGIFY.png" style="display:block; margin: 0 auto;" /></a>
<span style="font-size: x-small;">We're under the UPPER + lower + 0-9 column. Scroll down to 10 for our password length. Now to the right, you can see how much time it takes to crack, on average, depending on how many guesses the attacker can make per second.</span></p>
So if you can make 100 billion guesses per second, then on average, you can crack this password in somewhere between 33 days and 4.4 months. That's not too shabby. If you have access to the database <a href="https://haveibeenpwned.com/">(which is much more common than one might think)</a>, and they didn't use a good hashing algorithm to slow you down, then your target doesn't have much time to change their password before you can get into their account. Not only that, but people are prone to re-use passwords, so you can likely try your newly obtained username & password on different services your target might be using. Great work, black hat!
Now let's make more sense of these numbers. This 10 character password of ours could be in 1 of 839,299,365,868,340,200 possible states (i.e., 62 possible states per character, raised to the power of 10 for our password length). This means that, on average, you will need to try about half of those possibilities before you finally stumble across the correct one<a href="#ref3">[3]</a>. If you have a handful of Nvidia GTX 1080 GPU's working on the same password, then <a href="https://gist.github.com/epixoip/a83d38f412b4737e99bbef804a270c40">it can be cracked pretty much instantaneously</a> (with exceptions for databases using <a href="https://auth0.com/blog/hashing-in-action-understanding-bcrypt/">newer hashing algorithms specifically designed to thwart the parallelization of GPUs</a>).
To put RSA into perspective, data encrypted with 1024-bit RSA can be in 1 of ~3.2317 × 10^309 possible states. It took two years for researchers with many, many computers to <a href="https://thehackernews.com/2017/07/gnupg-libgcrypt-rsa-encryption.html">crack one of those keys</a>. For the curious, you can try out <a href="https://test.silentsilas.com/passgen/">my password generator</a> to interactively test the cracking speeds of various lengths/types of passwords. If it took a team of researchers two years to crack 1024 bits of entropy, imagine how fast you could crack it if you had the power of Big Brother in your hands!
### Randomness Is Tricky
Alright, so all this encryption stuff is cool and all. But let's tie this back in to the concept of randomness. You see, to generate keys for RSA and the like, we need to feed the key-generating algorithms strings of "randomness". It doesn't matter if you have 1024bit RSA keys if your attacker knows you always use the same numbers to generate them. In the real world, using a flawed number generator to produce keys will result in the encrypted data to not be as random as it should be; attackers can predict the output because the number generator has a few patterns that the attackers have picked up on.
And so to be a <a href="https://en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_number_generator">cryptographically-secure random number generator</a>, it only needs two properties:
<span style="font-size: large; font-weight: bold;">Uniformity</span> - each number is equally-probably to appear next. It's not more likely for a "7" to appear next compared to a "4", for instance.
<span style="font-size: large; font-weight: bold;">Independence</span> - Each number generated tells you nothing about any previous or future values. If a "7" appears, then that shouldn't mean there was definitely a "4" before it, or a non "7" number after it.
To determine if your number generator has these two properties, you run it through what is called the <a href="https://en.wikipedia.org/wiki/Next-bit_test">Next-Bit Test</a>. You'd have your number generator spit out 1's and 0's (which is what we call bits). If an attacker knows every bit that you've generated, it passes the test if they can't determine the next bit it generates without more than 50% accuracy. They should be wrong about half the time on whether it spits out a 1 or 0.
<p style="text-align: center"><img src="/imgs/take_your_bets.png" style="display:block; margin: 0 auto;" />
<span style="font-size: x-small;">My money is on 1; 0 hasn't been doing too well this season.</span></p>
Ideally, you wouldn't want your source of randomness to come from a number generator at all. If the attacker knows your algorithm, and <a href="https://en.wikipedia.org/wiki/Random_seed">which values you first inputted into that algorithm</a>, then they can determine _every single number it generates_. Instead, you'd want to rely on getting your random values from chaotic systems outside of the computer. This could be the noise generated by the fan, your exact mouse movements, the times at which you press certain keys, and so on. It's hard to get tons of random values from these sources, since they're limited by time. So in the real world, we use a hybrid method to generate keys. First you get "truly random" numbers from outside the computer, and then use those numbers to initialize your number generator. This way, it's very difficult for an attacker to know which values you started with, and you're free to generate as much randomness as your transistors desire.
<span id="philosophy"></span>
### A Completely Random Bit
I could go on and on about randomness. Hopefully it's apparent that we need separate words for the different types of "random" that we use in life. In fact, all of the randomness I've spoken about thus far are technically "quasi-random." They're simply larger and larger levels of complexity. There's no such thing as truly "random," at least for anything we'll come across in our day-to-day lives. I'm not a physicist, but the following is my current understanding of how quantum mechanics plays into the matter.
True randomness can be derived from an indeterministic system, but we've yet to prove whether such a <a href="https://en.wikipedia.org/wiki/Indeterminism">system can exist</a>. Heisenburg's <a href="https://www.britannica.com/science/uncertainty-principle/media/614029/216617">Uncertainty Principle</a> is probably our best argument that quantum mechanics is an indeterministic system. It states that, at the subatomic level, "the more precisely the position of some particle is determined, the less precisely its momentum can be known, and vice versa."<a href="#ref4">[4]</a> Therefore it's impossible for us to know the state of every particle in the universe and "predict" the future. We could perhaps figure out a pretty likely future, but <a href="https://en.wikipedia.org/wiki/Chaos_theory">chaos theory</a> throws a wrench in that plan. The implications of this Uncertainty Principle <a href="https://en.wiktionary.org/wiki/God_does_not_play_dice_with_the_universe">freaked Einstein out</a>. He insisted that quantum mechanics is simply missing a local<a href="#ref5">[5]</a> hidden variable, and upon knowing that variable, we can then accurately predict quantum interactions. But it wasn't long before we hit another <a href="/imgs/epr_paradox.PNG">roadblock</a> with <a href="/imgs/bells_theorem.PNG">Bell's Theorem</a>, whereby no theory with local hidden variables can reproduce quantum mechanic's predictions. This means there's either something that can <a href="https://en.wikipedia.org/wiki/Tachyon">travel faster than the speed of light</a> to influence these particles, or the underlying laws of the universe are truly indeterministic. I won't be <a href="/writes/wanderlust/">making any bets</a> on the matter. But in the meantime, we're good to use quantum (radioactive decay in particular) to generate random bits so long as it's undetermined whether quantum mechanics is indeterministic.
## Footnotes
<span id="ref0">[0]</span> <a href="https://www.expunctis.com/2019/03/07/Not-so-random.html">This interactive site</a> has you repeatedly press left or right, while the computer guesses what moves you make. There's also a button to have a pseudo-random algorithm choose for you, and it will assuredly fare better than you (unless you really know your math and feed it a <a href="https://en.wikipedia.org/wiki/De_Bruijn_sequence">6-gram De Bruijn sequence</a>)
<span id="ref1">[1]</span> You can even find encryption tips in an <a href="https://en.wikipedia.org/wiki/Mlecchita_vikalpa">ancient Hindu text</a> on sexuality. It seems that all is **** in love and war.
<span id="ref2">[2]</span> It should be noted that it's still unproven whether RSA's math is truly difficult to solve. Any day now, someone may come up with a mathemetical technique to quickly factor large numbers. Or we may develop a quantum computer with enough qubits to blow through every possible solution in a moment.
<span id="ref3">[3]</span> If you're doubtful that anyone is out there trying to crack your password in particular, then let <a href="https://hashes.org/leaks.php">this site</a> be a sobering wake-up call; It's an entire community dedicated to cracking passwords from database leaks, including the most recent & legendary <a href="https://www.troyhunt.com/the-773-million-record-collection-1-data-reach/">Collection #1</a> leak. It's very, very likely that you have credentials in one of these leaks. You can see for yourself with Troy Hunt's <a href="https://haveibeenpwned.com/">Have I Been Pwned</a> service. It's a safe site; Troy Hunt is a well-known security researcher, and this service of his is built-in to the amazing 1Password app.
<span id="ref4">[4]</span> <a href="https://en.wikipedia.org/wiki/Uncertainty_principle">The Uncertainty Principle</a> - Should also be noted that this differs from the <a href="https://en.wikipedia.org/wiki/Observer_effect_(physics)">Observer Effect</a>, wherein the act of observation disturbs the state of the particle (since the light we must use to observe the state interacts with it). Heisenburg himself originally thought his Uncertainty Principle was the mathematical explanation of the observer effect, but it's actually a mathematical explanation of how much information can be gleaned from the particle-wave duality, which we can now experientially test.
<span id="ref5">[5]</span> Local, in this context, means it can only be influenced by its immediate surroundings. Nonlocality scares Einstein, because it means that _something_ can travel faster than the speed of light, breaking the theory of relativity. For more info, look up "Spooky Action At A Distance".

View File

@@ -0,0 +1,18 @@
---
categories:
- blog
date: 2018-07-29 23:04:08 +0000
tags:
- Introduction
title: Silence Is Golden
year: 2018
---
Hey there! Welcome to <a href="/writes/silent-silas/">Silent Silas</a>. I write code during the day, and poetry at night. This is my playground.
This section in particular is where I'll discuss my terrible opinions on life, the universe, and the <a href="https://pastebin.com/raw/QUMSr4q5">objectification of humanity</a>.
For the web developers out there, this is a static site built with <a href="https://gohugo.io/">Hugo</a>, styled with <a href="http://tachyons.io/">Tachyons</a>, sped up with <a href="https://github.com/turbolinks/turbolinks">Turbolinks</a>, and animated with both <a href="https://threejs.org/">ThreeJS</a> and <a href="https://greensock.com/">GreenSock</a>. It'll eventually use <a href="https://github.com/GoogleChromeLabs/sw-toolbox">Service Workers</a> so that the entirety of the site is available offline.
As with most computer scientists, I stand on the <a href="/imgs/cs_abstraction.jpg">shoulders of giants</a>.
The code is on <a href="https://github.com/Poeticode/silentsilas.com">Github</a> under the MIT license (while the poetry is under a restrictive Creative Commons license).

View File

@@ -0,0 +1,81 @@
---
categories:
- blog
date: 2022-03-27 12:04:08 +0000
tags:
title: The Science of Tea
year: 2022
---
Tea is filled to the brim with a rich history spanning several millenia. We have historical documents which show that tea was produced and appreciated as early as 1,100 BC in southwest China<a href="#ref1">[1]</a>. And according to legends, it's believed that in 2737 BC, the servants of the mythic emperor Shennong were boiling water to remove its impurities for him to drink. A dead leaf from a tea bush fell in, and was presented to the emperor with its brownish color gone unnoticed. The emperor took a liking to the taste, and thus tea was born.
<p style="text-align: center; padding: 16px 0px;"><a target="_blank" href="/imgs/lithograph.jpg"><img src='/imgs/lithograph.jpg' style='display:block; margin: 0 auto;' /></a><span style="font-size: x-small;">Photo-lithograph of the Huayang Guozhi—Bazhi, the oldest document to mention tea</span></p>
One might think it's simply a matter of plucking leaves and steeping them in hot water, akin to the legend, but every aspect of its production and preparation is nailed down to a science to chemically and biologically alter the leaves to produce the tastiest and least-bitter cup possible. In 760 CE, Lu Yu, an orphan adopted by a Buddhist monk (and promptly ran away to join the circus), dedicated years of his life to chronicle all of his knowledge on tea believing it to be an expression of the harmony and unity of the universe.
*A Thousand mountains will greet my departing friend,*
*When the spring teas blossom again.*
*With such breadth and wisdom,*
*Serenely picking tea—*
*Through morning mists*
*Or crimson evening clouds—*
*His solitary journey is my envy.*
*We rendezvous at a remote mountain temple,*
*Where we enjoy tea by a clear pebble fountain.*
*In that silent night,*
*Lit only by candlelight,*
*I struck a marble bell—*
*Its chime carrying me*
*A hidden man*
*Deep into thoughts of ages past.*
— "The Day I Saw Lu Yu off to Pick Tea" by Huangfu Zeng (~700 CE)
## Types of Tea
The most crucial aspect of harvesting tea, and what differentiates a green tea from a red tea (which is what the West calls black tea<a href="#ref2">[2]</a>, but will be refered to here as red tea from henceforth), is how long the leaves are **oxidized**. When the tea leaves are plucked and exposed to oxygen, their cell walls break down and gradually blacken in color. Through this process, the bitter polyphenols, catechins, are converted into less bitter polyphenols, tannins, which are richer and astringent, often giving a malty or fruity taste.<a href="#ref3">[3]</a>
Once the leaves reach the desired level of oxidization, they are heated up to stop the oxidization process, usually by steaming or roasting which has its own impact on how the tea will taste. Japanese green teas are generally steamed, which helps retain its green hue and vegetal taste, while Chinese green teas are roasted imparting a toasty flavor and a more yellow hue. Red teas are gently dried in the sun to reach the highest levels of oxidization without it going stale. A fun outlier is lapsang souchong, a chinese red tea roasted over a fire of pine, resulting in a very smoky aroma and taste.
<p style="text-align: center; padding: 16px 0px;"><a target="_blank" href="/imgs/tea_process.png"><img src='/imgs/tea_process.png' style='display:block; margin: 0 auto;' /></a><span style="font-size: x-small;">There are quite a lot of steps before tea makes it to your cup.</span></p>
<a target="_blank" rel="noopener noreferrer" href="https://wendigotea.com/products/bigfoot-tea">Red</a> teas are the most oxidized (80% - 95% oxidized). They are rolled upon plucking to damage them, speeding up the oxidization process. They can have the widest range of flavor, as less bitter catechins remain to mask the flavors picked up from their environment.
<a target="_blank" rel="noopener noreferrer" href="https://wendigotea.com/products/wendigo-green-tea">Green</a> teas are the least oxidized (1% - 3% oxidized), and are heated up immediately after they're plucked. They taste vegetal and grassy, and are steeped at a lower water temperature to extract less of the bitter catechins.
<a target="_blank" rel="noopener noreferrer" href="https://wendigotea.com/products/king-dragon-oolong">Oolong</a> teas have the broadest range of oxidization (10% to 80% oxidized). Consequently, their flavor widely varies. A less oxidized oolong will taste more vegetal and floral like a green tea, while one on the higher end of oxidization might be rich and malty like a red tea.
<a target="_blank" rel="noopener noreferrer" href="https://wendigotea.com/products/skunk-ape-aged-oolong">Black</a> tea (again, not what the West calls black tea) brings an entirely new element to the mix. It's not determined by its level of oxidization, but whether the leaves are fermented. Microbes break down compounds in the leaves, altering their flavor profile. There are two different methods to age the tea. <span style="color: #3cdc3c;">Raw</span> black tea refers to the traditional method where you simply stow the tea away to slowly ferment over the years, peaking at roughly 50 years before the leaves begin to degrade. <span style="color: #3cdc3c;">Ripe</span> black tea refers to a new technique discovered in 1973, where the leaves are stored in large piles in a humid environment and splashed with water, turning them every other day for up to a month. They're then stowed away like a raw black tea, but peak in quality in only 20 years. These fermented teas tend to have a musty smell and taste earthier as the years go by. They are the aged wines of tea, and can be just as expensive.
<p style="text-align: center; padding: 16px 0px;"><a target="_blank" href="/imgs/black_tea.png"><img src='/imgs/black_tea.png' style='display:block; margin: 0 auto;' /></a><span style="font-size: x-small;">Pu-erh is fermented tea from Yunnan, China</span></p>
<span style="color: #3cdc3c;">CTC</span> tea, or bagged tea, is what you'll find at your grocery store. They are <span style="color: #3cdc3c;">crushed</span>, <span style="color: #3cdc3c;">teared</span>, and <span style="color: #3cdc3c;">curled</span> by machinery into small pellets. It was invented in 1930 to meet the increasing demand for tea in a global economy. They tend to use low quality leaves, which are then stressed and heavily damaged by the CTC process, and take months before they land on a store's shelf, resulting in unavoidable bitterness that mask the more desirable flavors.
## Other Factors
Which <span style="color: #3cdc3c;">season</span> the tea is harvested plays a significant role in their quality. With a spring harvest, the leaves have weathered through winter and pick up a lot more flavors from their environment. With a late-spring/summer harvest, the tea plants grow rapidly, but have less time to capture as much flavor. For autumn harvests, the plants are dying as winter approaches and are the least desirable.
<span style="color: #3cdc3c;">Sunlight exposure</span> has its own chemical reaction that influences the taste of the tea. Exposure during growth lowers the amount of full/creamy-tasting amino acids. Gyokuro, the highest grade of Japanese green tea, must be harvested in the spring and partially shaded during growth.
There will also be differences in tea by their <span style="color: #3cdc3c;">location</span>, due to the climate they're grown in and which varietal of tea plant species they are. For example, teas grown in India generally produce a stronger red tea than those grown in the various provinces of China. There's even a relatively new varietal grown in Kenya called Purple Tea, named for their vibrant purple leaves.
And of course, the <span style="color: #3cdc3c;">tea to water ratio</span>, <span style="color: #3cdc3c;">steeping time</span>, and <span style="color: #3cdc3c;">water temperature</span><a href="#ref4">[4]</a> are integral to getting the perfect cup of tea. Red teas are tougher due to their high oxidization and thus can be steeped at a boiling temperature for 3-5 minutes, extracting the most out of the leaves. Oolong can generally handle 190 - 200f, with green tea the most sensitive at 170 - 180f. If they're steeped for too long, more of the bitter catechins will be extracted and take over. This is also why it's important to be sure to filter out any small particulates of the leaves to prevent oversteeping. High quality leaves will have less "dust" you need to filter out due to their freshness and tenderness; the leaves turn more brittle as time passes.
## Gongfu Cha
To get the most out of your finest red or black tea, you can also try your hand at <span style="color: #3cdc3c;">gongfu cha</span>. It essentially means skillful brewing of tea, and is an artform in itself. Instead of the traditional Western method of brewing a teaspoon of tea in a cup's worth of water for a few minutes, you brew ~1.5 teaspoons of tea in half a cup of water and let it steep for only a few seconds<a href="#ref5">[5]</a>. This first steep opens up the leaves to bring out more flavor, but the liquor will be weak and unimpressive. It's only used to warm up your teaware before finally pouring it out. You then heat up the water again and steep the leaves for ~10 seconds, adding 10 to 15 seconds with each subsequential steep. You will be able to taste the different flavor profiles of the tea with every steep until you tire out the leaves and the strength of the flavors weaken.
<p style="text-align: center; padding: 16px 0px;"><a target="_blank" href="/imgs/gongfu.png"><img src='/imgs/gongfu.png' style='display:block; margin: 0 auto;' /></a><span style="font-size: x-small;">A slotted tray for gongfu cha, to capture the first discarded pour and any accidental spills.</span></p>
There's a lot more to be said on the production and preparation of tea, but hopefully this whets your appetite to dive into the world of loose leaf teas! If you're interested in giving it a try, I use this <a target="_blank" rel="noopener noreferrer" href="https://wendigotea.com/collections/teaware/products/lucidity-brew-in-cup-with-stainless-infuser-lid-12-oz">single-serve cup infuser</a> on a daily basis.
## Footnotes
<span id="ref1">[1]</span> Found in the Huayang Guozhi—Bazhi - A local gazetter from ~350AD in southwest China consisting of biographies of various rulers, including King Wu of the Zhou Dynasty and his 1066 BC expedition against eight principalities, whereby tea was used as tribute offerings.
<span id="ref2">[2]</span> The East classified their teas by the color of the liquid after it's brewed. It's thought that a simple mistranslation between western and eastern traders resulted in the West believing the distinction was based on the color of the leaves. To add to the confusion, red teas in the West are now associated with rooibos tea. And finally, there's debate on how oolong got its name (literally "black dragon"), but it's likely referring to the color and shape of the leaves, breaking the usual system of classification.
<span id="ref3">[3]</span> Heavier polyphenols, known as tannins, taste less bitter than lighter ones like catechins. The reason for this is still a mystery to this day!
<span id="ref4">[4]</span> It's also very important to use clean purified/spring water. You will notice a night and day difference in taste using filtered water versus unfiltered tap water. The hardness of tap water will simply make it taste funky.
<span id="ref5">[5]</span> The ratio of tea to water actually varies by the shape of the tea leaves and whether it's compressed (which is common for fermented teas as they are stored this way), but these measurements should get you in the right ballpark. Ideally you should use a scale to measure the tea's weight, as teaspoons are unreliable to determine how much tea is in your cup.

View File

@@ -0,0 +1,34 @@
---
categories:
- blog
date: 2018-08-06 23:04:08 +0000
tags:
- Privacy
- Surveillance State
title: Whispers in the Wind
year: 2018
---
<div id="fingerprint" style="font-size: xx-small; padding-bottom: 20px;">
</div>
The information above is just a small snippet of your browser's fingerprint. It's the data that websites can collect about the device you're using. (They're also able to <span id="geolocation" style="color: #3cdc3c;cursor: pointer;">access your GPS</span> if you're silly enough to let them.)
At first glance, the data looks pretty innocuous. Who cares if people know what browser you're using, or what plugins you've installed? Is it the end of the world if they know that you're a Mac user?
Well, individually, the data _is_ indeed innocuous. The original purpose in giving site owners this information is so that they can adapt their application to better suit the device it's run on. My homepage animations, for instance, adapt to the size of the screen and whether it's run on a mobile or desktop device.
#### United, I am. Divided, Unknown.
Once you put all of the information together, however, there's a potential for misuse. It's very easy to be the only person on the digital planet running that exact version of browser on that exact OS with those exact plugins/fonts installed, et cetera.
Using this information, it's possible to <span id="uuid" style="color: #3cdc3c; cursor:pointer; overflow-wrap: break-word;">derive a Unique User Identification Number</span>[0] and use it to track you across the internet, regardless of where you're connecting from.
An advertisement network will check if they have this identification number. If they do, then that means that they already have a list of sites the user has previously visited, along with any other data they've determined about the user. This is then used to display ads relevant to your assumed interests.
This type of invasive tracking, on the other hand, is also used to flag suspicious activity with your online accounts. I'm sure you've encountered sites that require you to click a link in your email to verify that a new device was indeed you. This is a great and highly effective service to thwart malicious login attempts[1].
But it's hard to know what goes on behind the curtains. Those sites providing these security services could also be using that same personal information in many other ways. The EU's <a href="https://www.eugdpr.org/">GDPR</a> is supposed to ensure companies are transparent about what's done with such information, but it's difficult to enforce and easy to evade.
[0]: You put all the information together and run it through a 'hashing algorithm'. The same information will always result in the same string of numbers and letters. A slight change in this information (like if the user updates their browser) will result in a vastly different string, so additional work has to be done for this tracking to be effective.
<br />
A much more effective way to thwart malicious login attempts is to use a password manager so that you don't reuse passwords and/or use easy-to-guess passwords. But that's a post for another day.

46
src/routes/rss/+server.ts Normal file
View File

@@ -0,0 +1,46 @@
import { fetchMarkdownPosts, type Post } from '$lib/utils';
const siteURL = 'https://silentsilas.com';
const siteTitle = 'silentsilas';
const siteDescription = 'Portfolio site for silentsilas';
export const prerender = true;
export const GET = async () => {
const allRantPosts = await fetchMarkdownPosts('rants');
const sortedPosts = allRantPosts.sort(
(a, b) => new Date(b.meta.date).getTime() - new Date(a.meta.date).getTime()
);
const body = render(sortedPosts);
const options = {
headers: {
'Cache-Control': 'max-age=0, s-maxage=3600',
'Content-Type': 'application/xml'
}
};
return new Response(body, options);
};
const render = (posts: Post[]) => `<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>${siteTitle}</title>
<description>${siteDescription}</description>
<link>${siteURL}</link>
<atom:link href="${siteURL}/rss.xml" rel="self" type="application/rss+xml"/>
${posts
.map(
(post) => `<item>
<guid isPermaLink="true">${siteURL}${post.path}</guid>
<title>${post.meta.title}</title>
<link>${siteURL}${post.path}</link>
<description>${post.meta.title}</description>
<pubDate>${new Date(post.meta.date).toUTCString()}</pubDate>
</item>`
)
.join('')}
</channel>
</rss>
`;

16
src/routes/uses/+page.md Normal file
View File

@@ -0,0 +1,16 @@
# Uses
**Here's some stuff I use**
- SvelteKit
- VS Code
- Emojis 😎
```js
// Testing this
const stuff = () => {
console.log('Waddup?');
};
stuff();
```

View File

@@ -0,0 +1,21 @@
---
categories:
- projects
date: 2018-03-28 23:04:08 +0000
tags:
- famitracker
- music
- chiptune
title: Fooling With Famitracker
year: 2018
---
Here are two tracks I made in FamiTracker that I'm actually a bit proud of! They were probably written back in 2011.
{{< audio filepath="/famitracker/3.wav" fileext="wav" >}}
You can check out the raw .ftm file <a href="/famitracker/3.ftm">here</a>, which you would open in Famitracker to see all of the notes laid out.
{{< audio filepath="/famitracker/4.wav" fileext="wav" >}}
Same as above, you can check out the .ftm file <a href="/famitracker/4.ftm">here</a>.

27
src/routes/works/pr1vy.md Normal file
View File

@@ -0,0 +1,27 @@
---
categories:
- projects
date: 2019-04-19 12:00:00 +0000
tags:
- privacy
title: Pr1vy
year: 2019
---
Welp, I released an app! <a href="https://play.google.com/store/apps/details?id=com.silentsilas.pr1vy">Pr1vy</a> was originally just going to be a password generator, with in-depth explanations on what makes a password secure or insecure. But then it came to me that this could be the perfect opportunity to explain countless other privacy-related technologies.
Essentially, the goal of this app is to raise data privacy awareness. We live in a digital world where all of our most private and sensitive information is leaked for all the world to see, then processed for corporations to make bets on what we'll do next. This doesn't have to be the case if you simply adopted a few hygienic digital habits.
In its current state, <a href="https://play.google.com/store/apps/details?id=com.silentsilas.pr1vy">Pr1vy</a> is simply a cool and informative password generator. But over these next few weeks/months, I'd like to greatly expand its feature set:
<div style="padding-left: 25px;">
1) Add an interactive experiment that drives home why reusing passwords is terrible, since it's the most common way for people to get "hacked." I'll propose the solution of using a password manager, and subscribing to <a href="https://haveibeenpwned.com/">Have I Been Pwned</a>.
2) Go step-by-step through the process of creating an RSA key-pair, and show how you can use it to communicate with a friend without any worry of eavesdropping.
3) After creating your key-pair, you can optionally go through a tutorial for generating a session key. It will explain the limitations of RSA keys, and the necessity for a completely different type of key for practical communication purposes.
4) Show how you can make sure that the file a friend sent you wasn't modified in-transit.
5) General internet hygiene detailing the tactics of nefarious ads, trackers, and public WiFi.
</div>
So check out <a href="https://play.google.com/store/apps/details?id=com.silentsilas.pr1vy">Pr1vy</a> if any of this interests you! It's currently on the Play Store, and soon the App Store, for just a dollar. It'll also be free on <a href="https://f-droid.org/en/">F-Droid</a> once I figure out how to deploy to that platform. Every app on there is free, open-source, with reproducible builds. My hope with <a href="https://play.google.com/store/apps/details?id=com.silentsilas.pr1vy">Pr1vy</a> is that it can teach you why that makes <a href="https://f-droid.org/en/">F-Droid</a> so awesome.

View File

@@ -0,0 +1,41 @@
---
categories:
- projects
date: 2020-09-24 23:04:08 +0000
tags:
- coding
title: Current Projects
year: 2020
---
It's easy to work on a side-project for months. It's hard to spend a few evenings writing a blog post about it. To help remedy this, I'll be letting this page serve as a running list of all the projects I've toiled away at.
## In Progress
**[Visions](https://visions.silentsilas.com)**: This might sound weird, but this experiment first began as an anime review site. My original plan was to come up with an intuitive yet creative way to navigate a site. It instead turned into a pretty nifty solar system simulation. I'm currently figuring out how to offload the physics to the GPU so that I can render thousands of planets/stars with gravity and collision to roughly simulate a universe.
**[Intended](https://intended.link)**: This was my senior project for college. It's essentially a secure yet easy way to send sensitive information to someone else without either of you needing to sign up for Yet Another Service™. You'd enter in the secret information, choose an online service you know they use (Perhaps Twitter, Gmail, etc), and enter their username/email for that service. Intended then generates a link that you can safely post _anywhere_. Only someone with access to the account you specified can open the link and decrypt the data.
I'll actually be writing up a full blog post about it once I complete more of its features. Specifically, implementing more online services to choose from, and fixing some of the bugginess with file uploads.
## Completed
**[Privy](https://play.google.com/store/apps/details?id=com.silentsilas.pr1vy)**: This one actually has its own dedicated blog post! It's essentially an educational crypto-toolkit. You can generate passwords, hash files, and create an RSA public key. All while going through all of the steps in a (hopefully) easy-to-understand manner. You can read more about it [here](/works/pr1vy).
**[Syborg](https://play.google.com/store/apps/details?id=com.silentsilas.syborg)**: This one is always difficult to explain. It's the whackiest thing I've built. I first had a bunch of business cards printed. One side has a stylized S symbol. The other simply has a QR code with the text "Follow me." underneath. Upon scanning the QR code with your phone, you're directed to a page to learn what this is, along with a link to the app in the Play Store (and hopefully App Store at some point).
Once the app is installed, you're able to scan the S symbol on the business card to have a 3D model of my head appear out of it. From here, you can either talk to the head to send me a text via speech-to-text, or tap a button to listen to a poem. This poem changes once every day. It is machine generated via GPT-2, trained on all of my writings.
**[Smash](https://smash.silentsilas.com)**: We had a bunch of really nice & accurate 3D models of all of our heads. I knew something quirky could be done with them. The first idea that came to my noggin was "Smash Mouth." An experience where you smash our heads open as Smash Mouth plays in the background. I couldn't handle hearing the song more than a few times, so it quickly pivoted to using much more palatable music, and focused on changing the lighting in reaction to the songs' highs.
## Self Hosted
There are a handful of services I run under the silentsilas.com domain. There are a lot of sites out there who keep their source code open, and actively encourage other developers to host their own version of the site themselves. I like to do that for ones I find useful, or ones I use that handle sensitive information that I'd prefer to have processed on servers I control.
**[SilentBin](https://bin.silentsilas.com)**: "a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted in the browser." - original [project page](https://privatebin.info/).
**[File](https://file.silentsilas.com)**: A really barebones file uploader that generates a simple share url, with automatic file expiration. - original [project page](https://github.com/Rouji/single_php_filehost)
**[Bibliogram](https://gram.silentsilas.com)**: I quit Facebook/Instagram a while back, but I began to miss the posts of my favorite artists & friends. Bibliogram lets you create an RSS feed of any Instagram user, and self-hosting ensures you don't hit Instagram's API rate limit. - original [project page](https://bibliogram.art/)
**[Shuri](https://github.com/pips-/shuri)**: A very barebones URL shortener. It doesn't track clicks or anything of the like. I don't trust any of the URL shortening services out there, so I spun this up. - original [project page](https://github.com/pips-/shuri)

View File

@@ -0,0 +1,13 @@
---
categories:
- Poetry
date: 2014-01-10 00:00:00 +0000
tags:
- Humor
title: Afternoon
---
I spent three quarters
On a whole cookie
To hear its half-baked
Two cents.

View File

@@ -0,0 +1,28 @@
---
categories:
- Poetry
date: 2018-03-10 00:00:00 +0000
tags:
- Friendship
- Toxic
title: Asphyxiate
---
{{< poem >}}
I stopped myself
To take a breather,
But I took it far too late.
My reluctant lungs
Could hardly handle
The second-hand sadness
Yours create.
Each blessing that falls
Into your hand
Soon meets its match
And asphyxiates.
{{< / poem >}}

View File

@@ -0,0 +1,41 @@
---
categories:
- Poetry
date: 2019-12-11 12:00:00 +0000
tags:
- Instrospective
title: Atmospheres
year: 2019
---
{{< poem >}}
Your soul walks the plank
Once your journey begins.
It first could only sink,
But soon learned to swim.
You picked up the pace
At the sight of life's fins,
Headlong and headstrong
Until your head spins.
Your childhood caught up
And took you back under
To remind you
Of the depths
Your soul sunk
While you were younger.
The atmosphere was heavy already,
But now the pressure's compounded.
The soul remembers
Its early cries for help
And cries again
To find its fears unfounded.
We need others
To lift us
Once our siren
Has sounded.
{{< / poem >}}

View File

@@ -0,0 +1,35 @@
---
categories:
- Poetry
date: 2014-11-10 00:00:00 +0000
tags:
- Fall
title: Autumn Synesthesia
---
The trees branch out their reds and yellows.
Their last battle cry before the frost.
The further north, the more pronounced
As they recall the life they lost.
Shouting in color upon deaf ears,
Such beauty produced at a deadly cost.
The reds rage on
With blistering hate.
"Is there no escape
From our inevitable fate?"
The orange reminisce
On the seasons before.
"Winter is knocking,
But Spring is next door."
The yellows enjoy
The weather while it lasts.
"Best to live in the present
Than the future or past."
The browns mutter softly
The last lesson to learn.
"From dust I arose,
So to dust I return."

View File

@@ -0,0 +1,49 @@
---
categories:
- Poetry
date: 2017-08-10 00:00:00 +0000
tags:
- Nostalgia
- Doubt
- Habits
- Smoking
- Chattanooga
title: Bad Behavior
---
{{< poem >}}
Do you happen to have
A cigarette I could bum?
Just to hold in my hand
To help reminisce some
To bring me back to a time
When I had it all together
And the worst of my worries
Was exploring Minecraft's Nether.
In fact, could I please
Borrow your lighter as well?
I won't actually smoke it;
I promise to not inhale.
Just the act of smoking
Puts my mind at ease
And places it in Bear Creek
Enjoying the summer's breeze.
But I've come this far already,
So I think I'll take just a puff
With one good hit of nicotine
I'm sure I'll find to be enough.
I'll savor its flavor
Of late-night party favors
And quick, justified breaks
Between writing papers.
And just like back then,
It seems I still need a Savior
And a few more cigarettes
Before I break this bad behavior.
{{< / poem >}}

View File

@@ -0,0 +1,24 @@
---
categories:
- Poetry
date: 2012-01-11 00:00:00 +0000
tags:
- Christianity
- Creation
title: Booming Voice
---
Silent explosions amidst the stars.
Booming voices that created Mars.
Yet Earth only his finger is placed
And filled it with creatures the devil faced.
All of creation has now withered
Thanks to the one who now slithers.
But a complex plan has been made,
And ages later death is slayed.
God is never seen yet is all-seeing
Of all the actions of human beings.
His guiding voice amidst speeding cars
Now leads our souls beyond the stars.

View File

@@ -0,0 +1,31 @@
---
categories:
- Poetry
date: 2014-05-20 00:00:00 +0000
tags:
- Humor
- Muffins
- Love
- Relationships
title: Breakfast Blue Pt. 2
---
Oh, my good friend, I didn't mean to leave.
It wasn't your fault, so no longer grieve!
If I could, I would run back to your side.
But, alas, a lack of legs slows my stride.
It's been over a year since I've last seen
Your serious face and Chartwell's cuisine.
Often I think this is for the better
\'Til I shed tears as I read your letter.
Fake tears, that is, for I also lack eyes.
In fact, let me unveil my disguise:
I'm an object lacking animation,
Given life through personification.
What words can I say to help you move on
And accept the fact that I am now gone?
Know that I too will miss your sweet lovin'
For I'll always be your chocolate muffin.

View File

@@ -0,0 +1,29 @@
---
categories:
- Poetry
date: 2013-01-10 00:00:00 +0000
tags:
- Humor
- Muffins
title: Breakfast Blues
---
Lost my reason to wake in the morning
Ever since you left me without warning.
We've always seemed to have gotten along
Now I'm wondering if I did you wrong.
Lost my reason to give you thanks and praise.
Each day that passes passes in a daze.
The life I live is a life of decay.
My happiness happens to never stay.
I would have treated you so much better,
Or perhaps branded a scarlet letter
Across my chest and openly confess
That I'm impressed by a snack I love best.
Oh chocolate muffin, why'd you have to leave?
I've learned not to wear my heart on my sleeve.
Instead my love will always be suppressed
As I keep it locked in a chocolate chest.

View File

@@ -0,0 +1,33 @@
---
categories:
- Poetry
date: 2019-01-09 12:00:00 +0000
tags:
- Metaphor
- Realtalk
- Wisdom
title: Catch Up
---
{{< poem >}}
To your disbelief,
This moment passed.
You chased it down,
But it runs too fast.
It's one step ahead
In the wrong direction
Until you're lost
In imperfection.
==
To your relief,
This moment passed.
But you couldn't run
From its aftermath.
You sought out shelter
But had to keep moving
After planting the flowers
You'd never see blooming.
{{< / poem >}}

View File

@@ -0,0 +1,36 @@
---
categories:
- Poetry
date: 2019-03-13 12:00:00 +0000
tags:
- Family
title: Cathy
year: 2019
draft: true
---
{{< poem >}}
"Caffee,
Getcha some coffee!"
My pops called
To my mum.
Names are chopped
And trim'd
Then morph again
Into something new.
The same thing goes
For those of whom
You thought you knew.
You can call me Silas now.
Joseph sounds just so antique.
The "Cup of Joe"
Is getting cold;
It's time to try
Something unique.
Who would I be
If I kept that drink?
{{< / poem >}}

View File

@@ -0,0 +1,21 @@
---
categories:
- Poetry
date: 2015-01-20 00:00:00 +0000
tags:
- Christianity
title: Celestial Stare
---
{{< poem >}}
God and I locked eyes,
But it's hard to look into the face of whom you fear.
So instead, I gazed at the throne beneath Him;
The ulterior motive for my wicked heart to draw near.
God himself broke the stare as well,
For it's hard to look into the face of a disappointing son.
So instead, he gazed at Jesus within me
Who's changing my heart 'til we hold staring contests for fun.
{{< / poem >}}

View File

@@ -0,0 +1,22 @@
---
categories:
- Poetry
date: 2015-02-20 00:00:00 +0000
tags:
- Night
- Secrets
title: Closets
---
{{< poem >}}
Have you a fear of the dark
As I have of the light?
I'm afraid of what tomorrow
Will reveal of tonight.
A new skeleton is forged,
Tucked away from your sight.
But I'm running out of doors
That I may keep locked tight.
{{< / poem >}}

View File

@@ -0,0 +1,23 @@
---
categories:
- Poetry
date: 2016-02-15 00:00:00 +0000
tags:
- Christianity
- Faith
- Conviction
title: Congenealogy
---
{{< poem >}}
I can tell by your withering leaves
And dwindling fruits,
Your outstretched branch
Has lost touch with its roots.
You have overextended
To give wind its due chase,
But the rush that you seek
Will destroy you posthaste.
{{< / poem >}}

View File

@@ -0,0 +1,53 @@
---
categories:
- Poetry
date: 2021-03-16 08:00:00 +0000
tags:
- Christian
title: Contingency
---
{{< poem >}}
Told at a young age
That you're totally
Depraved,
Yet still a nominee
To receive
Eternity.
O, hallelujah,
You hypochondriac.
O, hippocampus,
Remember what you lack.
Told at a young age
You'll be called up
On stage.
If you don't like your task,
Just ask that this cup
Might pass.
O, Adonai,
Save the spotlight for me.
On you, we rely
To believe we're worthy.
{{< / poem >}}
***
<div style="font-size: x-small; padding-bottom: 20px; text-align: left;">To set the tone, I recommend listening to these <a href="https://www.youtube.com/watch?v=5kJ-pIcmjKg" target="_blank">beeps and bops</a>.
This poem is essentially about the tragedy of Total Depravity and Unconditional Election, the first two doctrines of the <a href="https://en.wikipedia.org/wiki/Calvinism#Five_points_of_Calvinism" target="_blank">Five Points of Calvinism</a>.
At the time of writing this, I was playing through the Mana Series. In Secret of Mana, the protagonist is exiled as a kid for pulling out the mythical sword protecting his village. He later learns that monsters didn't start appearing because he pulled out the sword, but that when monsters appeared he was chosen to pull out the sword to protect the world.
The plight of this boy is akin to the situation Christ may have found himself in. He was rejected by his hometown in a similar fashion, seen not as a prophet to fulfill the law, but simply as the son of Joseph.
I found both situations to be similar still to the spiritual struggle Protestants wrestle with; simultaneously condemned for their sins, yet chosen for salvation. Such cognitive dissonance oft gives rise to an inferiority complex when looking inward, and a superiority complex when looking outward to those who haven't yet accepted their inferiority and dependence on God.
If you're in an evangelical sect, this is further compounded with the ever-present guilt for lacking the strength to bare witness to others (or pride if you're outgoing enough to pull it off). Perhaps an additional verse can touch on that subject. Suffice to say, however, these beliefs may leave you a self-loathing hypochondriac in one regard, and a leading role on stage in the other.
</div>

View File

@@ -0,0 +1,49 @@
---
categories:
- Poetry
date: 2015-04-15 00:00:00 +0000
tags:
- Relationships
- Love
- Consciousness
title: Daydreaming Thomas
---
{{< poem >}}
I sort of spaced out
Into an ethereal dream
While she fell back
Into her usual routine
Of noticing
Amidst the material
That
Which my eyes have never seen.
She ponders for a bit in confusion
The possible reasons for my doubt,
But it's the subject of possibility
The inexplicable mind can't figure out
As I soar above the tops of buildings
And dive into the Atlantic ocean
With uncanny buoyancy I believed
As just another preconceived notion
Until I cast that fact
Into the back
Of the recycle bin
After I break
The REM cycle
And consciousness
clocks back in.
And still you ask
Why I've yet
To fall in love again?
{{< / poem >}}

View File

@@ -0,0 +1,19 @@
---
categories:
- Poetry
date: 2017-05-10 00:00:00 +0000
tags:
- Doubt
- Atrophy
title: Despondent
---
{{< poem >}}
The holy spirit
Filled your lungs
At one point.
Now its either
American
Or rolled joints.
{{< / poem >}}

View File

@@ -0,0 +1,20 @@
---
categories:
- Poetry
date: 2019-03-06 12:00:00 +0000
tags:
- Christian
title: Djinn
year: 2019
---
{{< poem >}}
"Jesus dropped by."
My roommate remarked.
"He told me to tell you
His phone fell apart."
I let out a chuckle
And a sigh of relief.
"He didn't holy ghost us
Despite such unbelief."
{{< / poem >}}

View File

@@ -0,0 +1,27 @@
---
categories:
- Poetry
date: 2019-07-24 12:00:00 +0000
tags:
- Religion
title: Down
year: 2019
---
{{< poem >}}
I wish that you were down like me.
To both clown around
And fall apart at the seams.
To take life by the horns
As you shout "C'est la vie!"
To melt in its fire
Then break the mold as you leave.
To cut through the crap
To see if the world bleeds
And once we find it doesn't,
Figure out how it still stings.
{{< / poem >}}

View File

@@ -0,0 +1,15 @@
---
categories:
- Poetry
date: 2011-01-10 00:00:00 +0000
tags:
- Dreams
- Advice
title: Dreams Spill
---
When you wake up,
Be sure to lay still
Lest your dreams spill
Out like a cup
From a drink offering.

View File

@@ -0,0 +1,24 @@
---
categories:
- Poetry
date: 2014-09-10 00:00:00 +0000
tags:
- Realtalk
- Silence
title: Elephants
---
Silence speaks louder than words
At a decibel too loud to be heard
As an abrupt disruption of nothin'
For our conversation consumption.
Its presence is chilling
And instant buzz-killing
Yet still we act
As if it's not there.
Our tongues are untied
As the silence subsides
Yet still its message
Hangs heavy in the air.

View File

@@ -0,0 +1,35 @@
---
categories:
- Poetry
date: 2019-07-15 12:00:00 +0000
tags:
- Introspective
title: Enmity Amnesiac
year: 2019
---
{{< poem >}}
Don't worry!
I've got your back.
I'm an enmity
Amnesiac.
Each stab of yours
Only lowers my standards;
You can't trust a kid
To mind their manners.
Until I found my standards
Couldn't go any lower.
The thermometer couldn't measure
The sheer coldness of your shoulder.
Your rain turns into sleet
Each time you protest my parade
By singing along to hate speech
And calling it a serenade.
You'll still find in me forgiveness;
You'll only lack a lot of trust.
I believe in endless second chances
To break the chains of the unjust.
{{< / poem >}}

View File

@@ -0,0 +1,47 @@
---
categories:
- Poetry
date: 2019-07-01 12:00:00 +0000
tags:
- Christianity
title: Fear And Trembling
year: 2019
---
{{< poem >}}
Where did you go?
I was told to follow, and so I followed,
But now it seems that I'm all alone.
Our footsteps have been washed away.
Leaving me without proof, or a path back home.
I looked away for just one moment,
Which is all it took for you to disappear.
Were you just an imaginary friend
Whom I outgrew over the years?
You had my back.
But maybe you were only
Fulfilling a maintenance request.
Because a wall was built.
It does its job, and you've done yours,
So now the carpenter has left.
Are you a social psychosis
Which we invent
In our times of need?
A necessary neurosis
In order to cope with
The imperfect lives we lead?
Even now,
While I shiver as the air thins and grows colder,
I swear,
I can feel your hand now resting on my shoulder.
{{< / poem >}}

View File

@@ -0,0 +1,22 @@
---
categories:
- Poetry
date: 2019-01-15 12:00:00 +0000
tags:
- Lies
- Wisdom
- Introspective
title: Fool Yourself
---
{{< poem >}}
You knew that they were joking,
But over time, the lies took root.
It's a belief you couldn't shake
Without their "fate" becoming Truth.
You are as they say,
And they've said quite a lot.
The more you fight against it,
The more that must be fought.
{{< / poem >}}

View File

@@ -0,0 +1,15 @@
---
categories:
- Poetry
date: 2015-04-28 00:00:00 +0000
tags:
- Relationships
- Love
- Humor
title: Foolish Heart
---
{{< poem >}}
How redundant.
{{< / poem >}}

View File

@@ -0,0 +1,36 @@
---
categories:
- Poetry
date: 2019-04-29 12:00:00 +0000
tags:
- Introspective
title: Fraudulent Charges
year: 2019
---
{{< poem >}}
His fear of the unforeseen arose,
Which he thought t'was vanquished long ago.
Alas,
He found his faith in illusion:
A financial foundation
To cope with confusion.
Words and the wind
Could now freely hold sway
With the worst of his worries
The most willing to stay:
"Worthless are you,
Workaholic Anonymous!
Heartless are you
To become autonomous!"
They raged until
He raised himself
Back up from the ground.
"I hear you, wind.
I hear you, words."
Until he heard
Only sound.
{{< / poem >}}

View File

@@ -0,0 +1,24 @@
---
categories:
- Poetry
date: 2019-01-21 12:00:00 +0000
tags:
- Introspective
- Realtalk
- Wisdom
- Worry
title: Get A Grip
---
{{< poem >}}
<div style="white-space: pre;">
The future doesn't need me yet,
yet,
Yet I wish I was there now,
now,
Now the past will not forget,
get,
Get a grip if you know how,
How,
How?
</div>
{{< / poem >}}

View File

@@ -0,0 +1,22 @@
---
categories:
- Poetry
date: 2019-04-19 12:00:00 +0000
tags:
- Christian
title: Good Lord, Good Friday
year: 2019
---
{{< poem >}}
The priests cried, "Prophesy!"
After Jesus confessed his plan.
"Who gave this man the right
To sit at Gods right hand?"
The crowd cried, "Crucify!"
After Pilate met the King of Jews.
"What has this man done
To deserve such abuse?"
{{< / poem >}}

View File

@@ -0,0 +1,16 @@
---
categories:
- Poetry
date: 2016-02-25 00:00:00 +0000
tags:
- Haiku
- Terror
title: 'Haiku #12'
---
{{< poem >}}
It still trickles down
Long after the winds swept through.
Tears outlive terror.
{{< / poem >}}

View File

@@ -0,0 +1,15 @@
---
categories:
- Poetry
date: 2017-06-10 00:00:00 +0000
tags:
- Wisdom
- Haiku
title: 'Haiku #13'
---
{{< poem >}}
When you tell a lie,
You tell the truth about you
And your character.
{{< / poem >}}

View File

@@ -0,0 +1,15 @@
---
categories:
- Poetry
date: 2018-02-05 00:00:00 +0000
tags:
- Walking
- Haiku
title: 'Haiku #14'
---
{{< poem >}}
He walks a long ways.
He would have ran, but running
Is conspicuous.
{{< / poem >}}

View File

@@ -0,0 +1,13 @@
---
categories:
- Poetry
date: 2012-02-22 00:00:00 +0000
tags:
- Haiku
- Wind
title: 'Haiku #3'
---
We're in a hurry.
Now by watching us humans,
The cold wind is too.

View File

@@ -0,0 +1,13 @@
---
categories:
- Poetry
date: 2013-03-25 00:00:00 +0000
tags:
- Haiku
- Humor
title: 'Haiku #4'
---
I wish I could draw.
Picture's worth a thousand words;
This has just fourteen.

View File

@@ -0,0 +1,13 @@
---
categories:
- Poetry
date: 2014-09-26 00:00:00 +0000
tags:
- Haiku
- Silence
title: 'Haiku #7'
---
You may interchange
My middle name with either
Silence or solace

View File

@@ -0,0 +1,15 @@
---
categories:
- Poetry
date: 2014-09-26 00:00:00 +0000
tags:
- Haiku
- Humor
- Grounds
- Covenant
title: 'Haiku #8'
---
It is all folly!
The grass withers, flowers fade,
But the weeds still grow.

View File

@@ -0,0 +1,53 @@
---
categories:
- Poetry
date: 2015-05-15 00:00:00 +0000
tags:
- Relationships
- Love
- Friendship
- Covenant
- Nostalgia
title: Homie
---
{{< poem >}}
After we had passed around our time
Like a handout from a middle school teacher
Which left us as curiously disinterested
As the typical middle school kid-creature,
I had begun to realize we all had fun
While I analyzed the past
That I hold beneath my beanie.
With the help of Aladdin's nameless genie,
Tupac, and the also-immortal Houdini,
I relived the photos we claim
Frame us as fresh as a French Martini.
And if you don't believe me,
Well, I'd be quite surprised,
Considering the retina-rays,
Which flashed such a look
From behind your eyes
To broadcast the current thought
That's now crossing your mind
Which you'd otherwise only tell
To your roommate, pet, and/or the Lord divine.
You remember the fun we had, too.
Well, besides the homework, and exams,
And the whole "Hell freezing over"
Which couldn't stop our professor's plans
To take down our GPA's
And No-School snow days.
Comradery through common enemy.
Tomfoolery as tedium's remedy.
{{< / poem >}}

View File

@@ -0,0 +1,29 @@
---
categories:
- Poetry
date: 2014-11-10 00:00:00 +0000
tags:
- Realtalk
- Advice
title: How To Learn
---
Knowledge is a splatter of color
Across the canvas of your brain
To gradually form a masterpiece
With every splatter you gain.
But these splats are not simply skills and facts,
Else you're left with but reds and blues.
For hidden within every facet of life,
Will you find colors of every shade and hue.
But an expansive canvas is required
If you're to create a work of art.
For only to those with a humble mind
Will life have knowledge to impart.
Look at matters from a new perspective,
See the colors others have to show.
Close up not your mind to wisdom;
It's hard to learn if you think you know.

View File

@@ -0,0 +1,23 @@
---
categories:
- Poetry
date: 2015-05-25 00:00:00 +0000
tags:
- Advice
title: How To Tell A Good Joke
---
{{< poem >}}
If you promise not to tell, I have heard a good rumor:
Wisdom walks hand in hand with good humor.
If you're sworn to secrecy, then let it be known:
Let not a word spoken compel nature to groan.
If words of wisdom you believe you can afford,
Then lend me your ear: Your tongue is a sword.
If your lips are sealed, then read from this scroll:
What comes out of your mouth reveals your soul.
{{< / poem >}}

View File

@@ -0,0 +1,22 @@
+++
categories = ["Poetry"]
date = "2018-04-28T16:27:46-04:00"
tags = ["Wisdom", "Lessons"]
title = "I've Seen"
year = 2018
+++
I've seen tears fall
From the face of a giant,
A hint of desperation
In the pleas of a king,
An attempt to forgive
The guilt-tripping violent,
Their genuine surprise
That neither learned a thing.
The wishes of a mother
Remain whispers in the wind,
And the riches of the world
In the words of humbled men.

View File

@@ -0,0 +1,44 @@
---
categories:
- Poetry
date: 2013-04-10 00:00:00 +0000
tags:
- Christianity
- Realtalk
title: Ill With Want
---
I could travel across the land
Searching far and wide,
But the grass will still seem greener
On the other side.
I could be surrounded by people who love me
Yet still feel I don't belong.
I could think I'm a terrible person
Despite how often told I'm wrong.
I could accomplish several amazing feats
Yet still believe I'm inadequate.
I could try my best to be nice
Yet still remain the Devil's Advocate.
I could conquer all of Earth
Yet still wish for Jupiter and Mars.
I could conquer the milky way
Yet still wish upon other stars.
Cause there's an endless wave of want in the air
So what I want I can never obtain.
Every attempt leaves a feeling of despair
As I'm reminded of my ball and chain.
They say that Jesus is the answer
And I know that I am God's child.
Why, then, during my best days
Can I sometimes find no reason to smile?
This is the impossible riddle of Life
That happens to plague all of our minds.
There is no answer that will suffice
Until we're in heaven, body and mind refined.

View File

@@ -0,0 +1,34 @@
---
categories:
- Poetry
date: 2016-03-25 00:00:00 +0000
tags:
- Clever
- Wisdom
title: In Retrospect
---
{{< poem >}}
Countless information's unaccounted for
The second the moment has passed.
The details you do retain are blurred
And the retention itself won't last.
The data chosen to be collected
Is picked by your values and beliefs.
Who's to know
If the changed past guarantees
The desired outcome's
Probability to increase?
(And what of
The endless repercussions it's released?)
In essence,
To put it bluntly,
Hindsight
Is not 20/20.
{{< / poem >}}

View File

@@ -0,0 +1,20 @@
+++
categories = ["Poetry"]
date = "2018-07-08T16:27:46-04:00"
tags = ["Advice"]
title = "Inept"
year = 2018
+++
{{< poem >}}
You can call it unfair.
Is that your final decision?
Inaction is still an act
Oft' deserving derision.
You can say it's no use.
Is that all you can teach?
The complacent are useful
To their ongoing siege.
{{< / poem >}}

View File

@@ -0,0 +1,43 @@
---
categories:
- Poetry
date: 2019-02-02 12:00:00 +0000
tags:
- Love
- Lovers
- Relationships
- Introspective
title: Infrared Homing
---
{{< poem >}}
In a moment
Of relapse,
A desire
For love
Arose.
I gave my heartstrings
To a girl
To knit a warmer
Set of clothes.
I was hoping
For a sweater,
But instead,
Received her mask.
She thanked me kindly
For the coat
And I knew
I shouldn't ask.
Was it
Seasonal depression
That left me seeking
Out a sun?
A candle
Can't replace it,
But any fire
Is better than none.
{{< / poem >}}

View File

@@ -0,0 +1,20 @@
---
categories:
- Poetry
date: 2018-10-29 12:00:00 +0000
tags:
- Introspective
title: Inner Peace
year: 2018
---
{{< poem >}}
What's the point of looking forward
If the future crumbles upon arrival?
There's no such thing as heartache;
The mind creates it for survival.
Once you dash your expectations,
You'll be untethered from the lie
That your inner peace depends upon
The fleeting forces from outside.
{{< / poem >}}

View File

@@ -0,0 +1,39 @@
---
categories:
- Poetry
date: 2019-02-23 12:00:00 +0000
tags:
- Introspective
- Wisdom
- Worry
title: Inside Insight
---
{{< poem >}}
I pine not
For grass or trees.
This pane of glass
Looks fine to me.
Ever present
Is every present
Presented as the moments pass.
Where last is first
And first to class.
First to thirst
For half-full glass.
Fully free
To see worry
As irrational
Impossibility.
For the soul you hold
Can be sold for gold;
You otherwise can't lose control.
Might lose a limb.
Might lose a friend.
Might loss matter
When your matters end?
{{< / poem >}}

View File

@@ -0,0 +1,31 @@
---
categories:
- Poetry
date: 2020-10-01 20:00:00 +0000
tags:
- Neuroscience
- Wisdom
title: Judge Judy
---
{{< poem >}}
With each passing moment,
A court case is held
For our mind to determine
Which actions to compel.
86 billion neurons
Take up the jury seats
And fire off responses
'Til a majority agrees.
"Your Honor, you don't exist,
But as an emergent behavior;
Yet still we reached a verdict
That should work in our favor."
The neurons are dismissed
Then return to jury duty
For another microcosm case
In their show of Judge Judy.
{{< / poem >}}

View File

@@ -0,0 +1,44 @@
---
categories:
- Poetry
date: 2021-10-19 15:30:00 +0000
tags:
- realtalk
- advice
- relationships
title: Jungle Ghosts
---
{{< poem >}}
You claimed to keep us
In your heart.
Are you surprised
To find it scarred?
What better way
To leave our mark?
For our hearts were shattered,
You natural disaster,
In your endless search
For the greenest pasture.
Learn to tend the fields
Already in your care.
It takes some time to yield
The produce growing there.
The city will sustain you
Wherever you may roam,
But what wonders
Will you build
Without a place
To call your home?
{{< / poem >}}
***
<div style="font-size: x-small; padding-bottom: 20px; text-align: left;">A bit of a bitter poem about ghosting. As opposed to smaller towns, cities let you live a much more nomadic lifestyle relationship-wise. The image in my mind is a hunter-gatherer in the city jungle, gathering what they can in any relationship they find, then leaving for they don't know how to plant and tend a field. An unneeded skill in a bounteous jungle.
I also find it funny it's called "ghosting" when leaving is the last thing a ghost would do.
</div>

View File

@@ -0,0 +1,24 @@
+++
categories = ["Poetry"]
date = "2018-06-25T16:27:46-04:00"
tags = ["Chess", "Lessons"]
title = "King's Pin"
year = 2018
+++
{{< poem >}}
You placed my king
In a surprising check
To ensure Im kept
On the tip of my toes.
Only a few
Of our pieces are left,
And each one of my moves
Are presupposed.
Unbeknownst,
Synonymous to beginner.
A satisfying poach
Awarded to the winner.
{{< / poem >}}

View File

@@ -0,0 +1,36 @@
---
categories:
- Poetry
date: 2014-10-27 00:00:00 +0000
tags:
- Humor
title: Klepto Couches
---
My home houses countless couches.
Klepto-couches with pickpocket pouches
That swiftly swipe your cellular phone
Between the cushions of their comfy unknown.
Then your change jingles and jangles
Until they're untangled
From your Wrangler jeans pocket
As you wonder where your socks went.
But your socks and shoes
Were swept under your feet
Right under your nose.
So discreet are these deceitful seats
As they watch you search
For the keys they stole.
At last your quest
Leads you straight to the crook.
"I should have guessed
The klepto-couches had took!"
But still your lesson
Has yet to be learned.
These klepto-couches
Deserve to be burned.

View File

@@ -0,0 +1,28 @@
+++
categories = ["Poetry"]
date = "2018-09-20T16:27:46-04:00"
tags = ["Neighbors", "Shame"]
title = "Lawncare"
year = 2018
+++
{{< poem >}}
The neighbors watched
Our grass grow
As they gossiped about
Us riffraff.
We tried our best
To lay low,
But still felt the scorn
In each laugh.
Even our own
Brought a sense of shame
With no one to blame
On our behalf.
Parsimony
Parts the lonely
Until one has
The last half.
{{< / poem >}}

View File

@@ -0,0 +1,33 @@
---
categories:
- Poetry
date: 2012-02-25 00:00:00 +0000
tags:
- Grounds
- Covenant
title: Leafblower
---
You're the girl sitting on the park bench.
I'm the guy with a leaf blower.
I've gotta do my job,
So would you kindly please move over?
I'm walking right towards you,
So don't say you didn't notice me.
I'd like to get off work soon,
So I'll give you until the count of three.
One
Two
...
Alright, so you've called my bluff.
I'm not really going to do anything.
I just wanted to look real tough,
But this little bee ain't got no sting.
I'll just tell my boss that I missed a spot,
And I'll explain my sad situation.
Then we'll both laugh at the thought
Of me writing poetry about my frustration.

View File

@@ -0,0 +1,24 @@
---
categories:
- Poetry
date: 2013-04-22 00:00:00 +0000
tags:
- Humor
- Covenant
- Grounds
- Fall
title: Leafscaping
---
Hours of raking and blowing of leaves
Only to have twice more fall from the trees
By the friendly frolic of an Autumn breeze.
Yet there in the distance an object appears
By the result of your blood, sweat, and tears;
It's the manifestation of your misplaced fears!
As you creep ever closer to the object in sight,
It's not long before you're filled with delight
As your landlocked body begins to take flight
To crash into a leaf pile of impressive height.

View File

@@ -0,0 +1,21 @@
---
categories:
- Poetry
date: 2017-07-10 00:00:00 +0000
tags:
- Wisdom
- Short
title: Looking Good
---
{{< poem >}}
When things
Are looking good,
You tend
To your mirror.
But the clarity
You seek,
You'll find
To be inferior.
{{< / poem >}}

View File

@@ -0,0 +1,50 @@
---
categories:
- Poetry
date: 2019-10-16 12:00:00 +0000
tags:
- Life
- Advice
title: Loose Change
year: 2019
---
{{< poem >}}
You've gotta stay loose
Like change
Before you're torn
When the goods exchange
For the better
For the worse.
To be used
To the best
Is a curse.
This might not make sense
Or cents
Or millions,
But hindsight's a pretense
At the expense
Of resilience.
Take the tumble
For the worst
Is much better
Than whatever
Your temptors
Purport.
I can change
Thanks to change.
Otherwise,
Remain
And sell short.
{{< / poem >}}

View File

@@ -0,0 +1,49 @@
---
categories:
- Poetry
date: 2019-11-02 12:00:00 +0000
tags:
- Wisdom
title: Lost Connection
---
{{< poem >}}
We live
Well enough alone,
So we left ourselves
Alone.
Our words
Might suggest otherwise,
But our actions
Are what's shown.
We share
Electromagnetic waves
But it might take
A million years
For massless particles
At the speed-of-light
To connect us to our peers.
We curse
Our WiFi connection
The moment
We lose reception,
But it takes some time,
And a few Doing Fine's
Before loneliness
Gets your attention.
We cognitively
Know this well,
Yet our bodies
Still cannot tell.
The modern man
In a tribeless land;
Evolution
Is confused as hell.
{{< / poem >}}

View File

@@ -0,0 +1,25 @@
---
categories:
- Poetry
date: 2019-06-22 12:00:00 +0000
tags:
- Advice
title: Make Your Move
year: 2019
---
{{< poem >}}
Men are meant to move
Lest we wither and waste away
As we wade out in the ocean
In need of a crescent wave.
If you refuse to be moved,
You will sink like a stone.
But if you catch a wave,
You'll see you're not alone.
For we are all mostly water,
Each cell gasping for fresh air.
So why not splash into a wave?
We are waiting for you there.
{{< / poem >}}

View File

@@ -0,0 +1,20 @@
---
categories:
- Poetry
date: 2019-06-20 12:00:00 +0000
tags:
- Love
title: Makeup
year: 2019
---
{{< poem >}}
I'm not too good with faces,
But I've faced you for so long.
I know when your hair changes
And how much makeup you've put on.
When we're under too much pressure,
We protect each other from harm.
For our bond will never sever
As we weather each other's storm.
{{< / poem >}}

View File

@@ -0,0 +1,22 @@
---
categories:
- Poetry
date: 2019-07-13 12:00:00 +0000
tags:
- Religion
title: Mental
year: 2019
---
{{< poem >}}
Mistakes are meant to be made
And mended.
Miracles mistake the mundane
For transcendence.
Brains were built to buffer
The sadness
Until it makes up miracles
From madness.
{{< / poem >}}

View File

@@ -0,0 +1,52 @@
---
categories:
- Poetry
date: 2019-10-26 12:00:00 +0000
tags:
- Wisdom
title: Of Molecules And Men
---
{{< poem >}}
May we lose
All language
That we may see
As it is
And not
As we think,
For cells
Arose
From division
To divide
And conquer
Molecules
And men.
From the
Prokaryote
To the
Proletariat
A conflict
Ensues.
You're so sure
That you're full
Of yourself
As your cells
Dismantle
All that's
Consumed.
We break to build
Each building block
Into a likeness
Worth worshipping to.
To be at peace
Is to decompose.
To cease to be
Is to become
Every friend
And alleged foe.
{{< / poem >}}

View File

@@ -0,0 +1,35 @@
---
categories:
- Poetry
date: 2012-03-01 00:00:00 +0000
tags:
- Grounds
- Covenant
title: Monday Morning Shift
---
These plants look beautiful, but not at this location.
They must be eradicated according to administration.
I brought out my tools; Some gloves and a spade,
Then sat down, Indian style, to begin the raid.
The roots, like little fingers, held on to dear life
As I cut through their homes with an oddly-shaped knife.
To justify these cruel killings
I thought of what they've done:
Suffocated the superior plants
And blocked out the lovely sun.
But what makes one plant superior and the other inferior?
Just the fact that the other has a beautiful exterior?
They are simply trying their best to make a living.
We must see past our differences and be more forgiving.
But these thoughts lead down to a dangerous road;
Let's not personify each seed we've sowed.
The sun now rises and heats the ground.
The ice embedded within melts all around,
And now a nice wet spot on my pants is found
Which leaves me thinking of thoughts more profound:
"I really hope no one's looking at me right now."

View File

@@ -0,0 +1,27 @@
---
categories:
- Poetry
date: 2016-05-10 00:00:00 +0000
tags:
- Work
- Worry
- Self-conscious
title: Morning Commute
---
{{< poem >}}
A few minutes into my morning commute
I had forgotten we can all read minds.
So my thought faucet ran up my brain bill
Spewing a membraneous mess inside.
I didnt notice til I parked the car
And smelled the fumes from under the hood.
I frantically thought of cats and cookies
To clean up the mess, but it did no good.
So I ditched the car and snuck into work,
Though I knew my hopes and dreams would be seen
Swirled amidst my self-doubt and worries
Like creamer mixed in bitter cups of caffeine.
{{< / poem >}}

Some files were not shown because too many files have changed in this diff Show More