Files
website/src/pages/index.astro
Kenneth 3c1a33561e
Some checks failed
/ Deploy website to server (push) Failing after 14s
new poast
2025-10-09 02:12:25 +01:00

129 lines
4.1 KiB
Plaintext

---
import BaseHead from "../components/BaseHead.astro";
import { SITE_TITLE, SITE_DESCRIPTION } from "../consts";
import Link from "../components/Link.astro";
import FormattedDate from "../components/FormattedDate.astro";
import Footer from "../components/Footer.astro";
import LuaLine from "../components/LuaLine.astro";
import { getBlogs } from "../content/blog";
const posts = (await getBlogs()).sort(
(a, b) => b.data.pubDate.valueOf() - a.data.pubDate.valueOf(),
);
---
<!doctype html>
<html lang="en" class="dark:mocha bg-ctp-base">
<head>
<BaseHead title={SITE_TITLE} description={SITE_DESCRIPTION} />
</head>
<body
class="tilde-background text-ctp-text h-screen m-auto sm:flex items-center justify-center sm:overflow-hidden"
>
<div class="visible p-8 sm:hidden">
<header>
<p class="font-bold text-2xl">kennethnym</p>
</header>
<main class="py-8">
<p>
software engineer @ <Link href="https://ona.com">ona</Link>. all
opinions are my own.
</p>
<p>check out <Link href="/read">the books I am reading!</Link></p>
<h1 class="font-bold mt-8 mb-2 text-lg visited">current projects:</h1>
<ul class="not-prose space-y-4 md:space-y-2">
<li>
<Link href="https://polygui.org">poly</Link>: a language-agnostic,
cross-platform GUI framework for building OS-native applications.
</li>
<li>
<Link href="https://github.com/kennethnym/infinifi">infinifi</Link>:
a website that plays gentle, ai-generated lo-fi music indefinitely
</li>
<li>
<Link href="https://github.com/kennethnym/mai">mai</Link>:
multilayer authenticity identifier, an ML model that attempts to
identify synthetic AI images
</li>
</ul>
<h1 class="font-bold mt-8 mb-2 text-lg visited">my thoughts:</h1>
<ul aria-label="recent blog posts" class="space-y-2">
{
posts.map((post) => (
<li class="flex flex-row justify-between hover:bg-opacity-10 hover:bg-text -mx-2 px-2 rounded space-x-4">
<Link href={`/blog/${post.slug}`}>{post.data.title}</Link>
<div class="text-right">
<FormattedDate date={post.data.pubDate} />
</div>
</li>
))
}
</ul>
</main>
<hr class="opacity-20 py-2" />
<Footer />
</div>
<div
class="hidden sm:visible scroll-container w-full h-full overflow-auto sm:flex items-center justify-center"
>
<main
class="py-8 px-4 max-w-4xl flex flex-col items-center space-y-0 leading-tight"
>
<header class="font-bold text-center">KENNETHNYM v24.0</header>
<p class="leading-none">&nbsp;</p>
<p class="text-center">
software engineer @ <Link href="https://ona.com">Ona</Link>. unpaid
hhkb salesman.
</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<Link href="/read" class="w-full">books i am reading</Link>
<p>&nbsp;</p>
<ul
aria-label="recent blog posts"
class="w-full space-y-2 sm:space-y-0"
>
{
posts.map((post) => (
<li class="flex flex-row justify-between hover:bg-opacity-10 hover:bg-text -mx-2 px-2 rounded space-x-8">
<Link href={`/blog/${post.slug}`}>{post.data.title}</Link>
<div class="text-right">
<FormattedDate date={post.data.pubDate} />
</div>
</li>
))
}
</ul>
</main>
</div>
<LuaLine />
<style>
.scroll-container {
margin-bottom: 4ch;
}
@media (min-width: 640px) {
.tilde-background {
background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' width='10' height='20'><text x='0' y='16' fill='%2343465E' font-family='CommitMono'>~</text></svg>");
background-repeat: repeat-y;
}
}
@media (min-width: 640px) and (prefers-color-scheme: dark) {
.tilde-background {
background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' width='10' height='20'><text x='0' y='16' fill='%23C6D1F1' font-family='CommitMono'>~</text></svg>");
background-repeat: repeat-y;
}
}
</style>
<script>
window.addEventListener("closebuffer", () => {
document.body.style.display = "none";
});
</script>
</body>
</html>