Compare commits
11 Commits
9d0e68f5f6
...
main
Author | SHA1 | Date | |
---|---|---|---|
0509ce9d04
|
|||
3c1a33561e
|
|||
9243522261
|
|||
86919cd64d
|
|||
217f65b090
|
|||
897eb3b07a
|
|||
40b898d544
|
|||
f696554fee | |||
85f91aed49
|
|||
2936ab3384
|
|||
5dc7db36f8
|
@@ -6,5 +6,6 @@ import Link from "./Link.astro";
|
||||
<nav class="flex flex-row items-center space-x-4">
|
||||
<p class="font-bold text-lg">kennethnym</p>
|
||||
<Link href="/">home</Link>
|
||||
<Link href="/read">books</Link>
|
||||
</nav>
|
||||
</header>
|
||||
|
25
src/content/blog/amor-fati.md
Normal file
25
src/content/blog/amor-fati.md
Normal file
@@ -0,0 +1,25 @@
|
||||
---
|
||||
title: amor fati
|
||||
description: love of fate
|
||||
pubDate: Aug 25 2025
|
||||
---
|
||||
|
||||
I am slowing coming to terms that I have little to no control of what will.
|
||||
|
||||
The past few months were nothing short of surprises, good or bad. Through various twists and turns, fate took me to where I am now: living in a bustling city in a cozy flat, while having a fulfilling job in an environment where I can thrive and grow. Look back at the windy path behind me: puddles of tears I shed, stench of sweats that ran down from me, trails of blood from all the injuries that I endured. It is true: the only way out was through, and Fate was my navigator.
|
||||
|
||||
At times, I hated them. I could not understand why they would take me through such a strenuous path. Every moment of disappointments, exhaustions and heartbreaks felt like a dead end, and it would make me question whether Fate was sabotaging me. Fate is a patient one, however. Despite my doubts, they remained undeterred, and fought through all the troubles together.
|
||||
|
||||
Eventually, we saw light. The light came from a peaceful sanctuary where fellow travellers rest and heal before they move on. Before we could enter, Fate said:
|
||||
|
||||
"Before we could enter, you must give up something that is dear to you. What you give up changes the path that the Sanctuary leads you. I get to decide what it is, but you can trus that I will make the best decision for you."
|
||||
|
||||
Before I could open my mouth, Fate did it. They put their hands straight through my chest, and ripped away my heart. They placed it on the alter before the Sanctuary. The gates slowly widened as my heart evaporated into thin air.
|
||||
|
||||
Now, Fate and I are in the Sanctuary. I am healing from the missing heart that was forcefully ripped away and from the damages I took from the journey to here. I finally get to settle down and rest.
|
||||
|
||||
"We are slightly closer to the top of the mountain now." Fate told me, "enjoy your rest - you deserved it."
|
||||
|
||||
"Where are we going next?" I asked, to which they replied, "to your destination."
|
||||
|
||||
Fate is mysterious. Fate is unforgiving. Fate is also loyal, and only Fate knows the way. Tell Fate where you want to go, fight by them, and Fate will bring you there.
|
13
src/content/blog/fear-of-falling-behind.md
Normal file
13
src/content/blog/fear-of-falling-behind.md
Normal file
@@ -0,0 +1,13 @@
|
||||
---
|
||||
title: fear of falling behind
|
||||
description: The looming pressure of keeping up with everything
|
||||
pubDate: Oct 1 2025
|
||||
---
|
||||
|
||||
I am lucky enough to be in an [environment](https://kennethnym.com/blog/your-environment-dictates-everything/) where I am surrounded by bright-minded, high-achieving people that are doing incredible work every day, and they are nothing short of inspiring. Safe to say - I am the dumbest person in the room. On one hand, I get to learn from them every day, driving myself to get better. On the other, comparison inevitably arises within myself, and it has been slowly getting onto me recently: will I ever be good enough?
|
||||
|
||||
There is always a looming pressure within me to work hard to prove myself to people; to prove that I belong in the room; to prove that I am equally capable of brilliance. I always tell myself: if I ever slack off, I will fall behind, and I will be vacated from the room of smarts.
|
||||
|
||||
Truthfully, no matter how hard I work, it will never feel enough. In the same vein that [validations](https://kennethnym.com/blog/the-pathological-desire-for-validation/) numb my insecurity and my wounds, working numbs the fear (which stems from my insecurity.) Neither makes the source of the problems go away. The answer to this is obvious: one should work not out of insecurity, but for the love of the game; for self-improvement; for themselves and **themselves only**.
|
||||
|
||||
The problem now lies within addressing insecurities and wounds within each of us. For many, including myself, this is a life-long journey of self discovery: processing past events, learning from failures, powering through traumas, and sitting with discomforts. Regardless of what one does, always remember: symptom relieves are never the solution.
|
54
src/content/blog/kenneth-v24-released-today.md
Normal file
54
src/content/blog/kenneth-v24-released-today.md
Normal file
@@ -0,0 +1,54 @@
|
||||
---
|
||||
title: Kenneth v24.0 released today
|
||||
description: Release note for Kenneth v24.0
|
||||
pubDate: Oct 8 2025
|
||||
---
|
||||
|
||||
I am happy to announce that I have officially released v24.0 of myself today. Kenneth v24 is the biggest release ever, containing heaps of improvements and new features. This blog post serves as a release note of what has changed since v23. For the impatient, here are several notable breaking changes:
|
||||
|
||||
- New job @ [Ona](https://ona.com) working on coding agents
|
||||
- Migrated home location to /uk/london
|
||||
- Drastically improved appearance
|
||||
- Many important (heartbreaking) life lessons learned
|
||||
- Kenneth is about 20% more self-aware
|
||||
- Met many friends from x dot com
|
||||
|
||||
Please read on for more technical details.
|
||||
|
||||
---
|
||||
|
||||
Enough tech gibberish. I would like to use this blog post as a reflection of the past year since my last birthday.
|
||||
|
||||
## Software Engineer @ Ona
|
||||
|
||||
Last birthday, I made a wish that I would get another job and move to London. Little did I know that I smashed that wish.
|
||||
|
||||
Ever since I was a teenager, I have always wanted to work at a startup. The idea that I get full autonomy over my work and that I get to work on something that I deeply care about is what motivates me to get up to work every day. Since then, I had applied to numerous positions at various companies of varying sizes, but to no avail.
|
||||
|
||||
Everything changed in June. I went to a pub event in London hosted by the nice folks at (Scaling Devtools)[https://scalingdevtools.com/], expecting that I would get to meet like-minded people, chat about tech, and exchange details. Suddenly, 2 people at Ona (known as Gitpod back then) showed up, and my mind *lit up*. I have known Gitpod for a long time, and to be able to meet the people behind it in a pub was mind-blowing. "How on earth did Gitpod, out of all companies, manage to find us here??" I thought to myself. We began introducing ourselves, and I got to talk about [tesseract](https://github.com/kennethnym/tesseract), a CDE that I built for my own use. My enthusiasm touched them, and they decided to give me a chance. The rest is history.
|
||||
|
||||
This, for me, has been the biggest turning point of my career. Being able to work alongside like-minded and smart people on a product that I am passionate about is something that I deeply cherish. I am and will forever be grateful for Ona for having me on the team, and I am honored to be on the team.
|
||||
|
||||
## Important life lessons
|
||||
|
||||
I won't go into details here, but many, many life events have happened since my last birthday. I am processing and healing through them, and I have also learned several important lessons. The biggest of them all is that one should take action on addressing their insecurities and be gentle with them at the same time.
|
||||
|
||||
I am a deeply insecure person, and my insecurities show up in all kinds of places. With people, they show up as my anxiety and my constant chase for validation. This has ruined friendships that I very very very very highly valued, which further reinforces my core beliefs, forming a vicious cycle. With work, they put unnecessary stress on myself, leading me to think that I am not good enough or that I am not working enough.
|
||||
|
||||
I have since started therapy, and the biggest progress I have made is the fact that this blog post exists! It has made me a lot more self-reflective and identity thinking patterns, which helps me process traumas and events (in ways that I did not expect when I signed up for it initially.)
|
||||
|
||||
Even though they are painful, I am still glad that they happened, because they have fundamentally changed me as a person. I am more outgoing, more compassionate, and more mature. They are memories that I will forever cherish.
|
||||
|
||||
## Maybe friends are oomfs we met on x dot com
|
||||
|
||||
I managed to meet many oomfs on x dot com and somehow managed to convince one of them to be my neighbor. Every meet up is nothing short of awesomeness. Unfortunately, most of them are not based around London, so I won't be able to see them again any time soon. If you are reading this and you are one of them, I will come see you again!
|
||||
|
||||
## The one constant birthday wish
|
||||
|
||||
Yes... the Achilles heel. We all know what it is. This year is no different. This is a part of life where I genuinely feel stuck and helpless. Being single has its perks, but I also long for the someone. The person with whom I can be vulnerable. The person with whom I can experience life until the end of the universe. I have made so much progress in other parts of life, but when it comes to this, I am absolutely clueless. I will build literal rockets that take me to the Moon before I figure this out.
|
||||
|
||||
Oh to be loved.
|
||||
|
||||
## Plans for v25
|
||||
|
||||
Aside from the obvious answer, my big plan is to release the *very secret thing* that I have been building. I want to refrain myself from talking about it, because then it will demotivate me from actually finishing it. I also wish for the friends I have made along the way to stay with me.
|
@@ -14,4 +14,13 @@ const blog = defineCollection({
|
||||
}),
|
||||
});
|
||||
|
||||
export const collections = { blog };
|
||||
const read = defineCollection({
|
||||
type: "content",
|
||||
schema: z.object({
|
||||
title: z.string(),
|
||||
author: z.string(),
|
||||
goodReadLink: z.string().optional(),
|
||||
}),
|
||||
});
|
||||
|
||||
export const collections = { blog, read };
|
||||
|
6
src/content/read/being-you.md
Normal file
6
src/content/read/being-you.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
title: Being You
|
||||
author: Anil Seth
|
||||
---
|
||||
|
||||
I am still organizing my notes for this book.
|
34
src/content/read/the-creative-act.md
Normal file
34
src/content/read/the-creative-act.md
Normal file
@@ -0,0 +1,34 @@
|
||||
---
|
||||
title: The Creative Act
|
||||
author: Rick Rubin
|
||||
goodReadLink: https://www.goodreads.com/book/show/60965426-the-creative-act
|
||||
---
|
||||
|
||||
## Everyone is a creator
|
||||
|
||||
- To live as an artist is a way of being in the world
|
||||
|
||||
## Tuning in
|
||||
|
||||
- We are all participating in a larger creative act we are not conducting. We are being conducted. The artist is on a cosmic timetable, just like all of nature.
|
||||
- In this great unfolding, ideas and thoughts, themes and songs and other works of art exist in the aether and ripen on schedule, ready to find expression in the physical world.
|
||||
As artists, it is our job to draw down this information, transmute it, and share it.
|
||||
- We are all antennae for creative thought.
|
||||
- To pick up on signals, don't look for it, or try to predict and analyze our way into it. Instead, create an open space that allows it. A space so free of the normal overpacked condition of our minds that it functions as a vacuum.
|
||||
- Practicing a way of being that allows you to see the world through uncorrupted, innocent eyes can free you to act in concert with the universe's timetable.
|
||||
|
||||
## The source of creativity
|
||||
|
||||
- The Source is out there. A wisdom surrounding us, an inexhaustible offering that is always available.
|
||||
- Art is a circulation of energetic ideas. What makes them appear new is that they are combining differently each time they come back.
|
||||
|
||||
## Awareness
|
||||
|
||||
- The universe is only as large as our perception of it. When we cultivate our awareness, we are expanding the universe.
|
||||
|
||||
## The Vessal and the Filter
|
||||
|
||||
- The vessel holds the sum of our thoughts, feelings, dreams, and experiences in the world.
|
||||
- Information is filtered uniquely for each person before entering the vessel.
|
||||
- Artists seek to restore childlike perceptions, a more innocent state of wonder and appreciation untethered to utility or survival.
|
||||
- One can think of the creative act as taking the sum of our vessel's contents as potential material, selecting for elements that seem useful or significant in the moment, and re-representing them.
|
7
src/content/read/user-friendly.md
Normal file
7
src/content/read/user-friendly.md
Normal file
@@ -0,0 +1,7 @@
|
||||
---
|
||||
title: User Friendly
|
||||
author: Cliff Kuang, Robert Fabricant
|
||||
goodReadLink: https://www.goodreads.com/book/show/41940285-user-friendly
|
||||
---
|
||||
|
||||
I will start making notes here when I start reading this book.
|
7
src/content/read/zero-to-one.md
Normal file
7
src/content/read/zero-to-one.md
Normal file
@@ -0,0 +1,7 @@
|
||||
---
|
||||
title: Zero to One
|
||||
author: Peter Thiel, Blake Masters
|
||||
goodReadLink: https://www.goodreads.com/book/show/18050143-zero-to-one
|
||||
---
|
||||
|
||||
I will start making notes here when I start reading this book.
|
@@ -35,7 +35,9 @@ const {
|
||||
<Header />
|
||||
<main class="py-10">
|
||||
<article>
|
||||
<div class="prose prose-lg dark:prose-invert">
|
||||
<div
|
||||
class="prose prose-lg dark:prose-invert prose-headings:text-ctp-text prose-headings:font-medium"
|
||||
>
|
||||
<div>
|
||||
<div class="opacity-60">
|
||||
<FormattedDate date={pubDate} />
|
||||
|
58
src/layouts/BookRead.astro
Normal file
58
src/layouts/BookRead.astro
Normal file
@@ -0,0 +1,58 @@
|
||||
---
|
||||
import type { CollectionEntry } from "astro:content";
|
||||
import BaseHead from "../components/BaseHead.astro";
|
||||
|
||||
type Props = CollectionEntry<"read">["data"];
|
||||
|
||||
const { title, author, goodReadLink } = Astro.props;
|
||||
---
|
||||
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<BaseHead
|
||||
title={`Kenneth's Read - ${title}`}
|
||||
description={`Notes I made for the book ${title}`}
|
||||
/>
|
||||
</head>
|
||||
<body
|
||||
class="w-full reads -z-2 bg-stone-200 dark:bg-stone-900 flex justify-center dark:text-stone-300 pt-20 md:py-40"
|
||||
>
|
||||
<header
|
||||
class="fixed scroll-to-blur w-full -z-1 top-0 left-0 right-0 flex justify-center"
|
||||
>
|
||||
<div
|
||||
class="w-full max-w-[calc(65ch+var(--spacing)*24)] px-8 md:px-12 py-4 md:py-12 opacity-80"
|
||||
>
|
||||
<h1 class="font-bold text-sm">Kenneth's Read</h1>
|
||||
<h2 class="text-sm">Quotes and notes from my readings.</h2>
|
||||
</div>
|
||||
</header>
|
||||
<main
|
||||
class="relative w-full max-w-[calc(65ch+var(--spacing)*24)] px-8 md:px-12 py-10 rounded-t-2xl md:rounded-2xl shadow-lg border border-stone-300 dark:border-stone-600 bg-stone-100 dark:bg-stone-800 min-h-[calc(100vh-var(--spacing)*28)]"
|
||||
>
|
||||
<article>
|
||||
<div class="flex justify-between items-center w-full mb-10">
|
||||
<header class="flex flex-col">
|
||||
<h1 class="font-bold">{title}</h1>
|
||||
<h2 class="font-medium">{author}</h2>
|
||||
</header>
|
||||
<a href={goodReadLink} class="underline">GoodRead</a>
|
||||
</div>
|
||||
<div
|
||||
class="prose dark:prose-invert prose-headings:font-medium prose-headings:tracking-tight prose-h2:mb-0.5 dark:prose-headings:text-stone-300 dark:text-stone-300 dark:marker:text-stone-300 prose-ul:list-none prose-ul:p-0 prose-li:p-0 prose-li:before:content-['•'] prose-li:relative prose-li:before:absolute prose-li:before:left-0 prose-li:before:-translate-x-4"
|
||||
>
|
||||
<slot />
|
||||
</div>
|
||||
</article>
|
||||
<div
|
||||
class="absolute left-6 top-0 -translate-y-1/2 transition-all rounded-lg bg-stone-100 dark:bg-stone-800 border border-stone-300 dark:border-stone-700 shadow-lg h-min"
|
||||
>
|
||||
<a
|
||||
class="block px-2 py-0.5 text-sm opacity-80 transition-all"
|
||||
href="/read"><- All books</a
|
||||
>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
@@ -1,15 +1,15 @@
|
||||
---
|
||||
import { type CollectionEntry, getCollection } from 'astro:content';
|
||||
import BlogPost from '../../layouts/BlogPost.astro';
|
||||
import { type CollectionEntry, getCollection } from "astro:content";
|
||||
import BlogPost from "../../layouts/BlogPost.astro";
|
||||
|
||||
export async function getStaticPaths() {
|
||||
const posts = await getCollection('blog');
|
||||
const posts = await getCollection("blog");
|
||||
return posts.map((post) => ({
|
||||
params: { slug: post.slug },
|
||||
props: post,
|
||||
}));
|
||||
}
|
||||
type Props = CollectionEntry<'blog'>;
|
||||
type Props = CollectionEntry<"blog">;
|
||||
|
||||
const post = Astro.props;
|
||||
const { Content } = await post.render();
|
||||
|
@@ -25,7 +25,11 @@ const posts = (await getBlogs()).sort(
|
||||
<p class="font-bold text-2xl">kennethnym</p>
|
||||
</header>
|
||||
<main class="py-8">
|
||||
<p>dumping ground for my thoughts. all opinions are my own.</p>
|
||||
<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>
|
||||
@@ -66,11 +70,16 @@ const posts = (await getBlogs()).sort(
|
||||
<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 v23.5</header>
|
||||
<header class="font-bold text-center">KENNETHNYM v24.0</header>
|
||||
<p class="leading-none"> </p>
|
||||
<p class="text-center">software engineer. unpaid hhkb salesman.</p>
|
||||
<p class="text-center">
|
||||
software engineer @ <Link href="https://ona.com">Ona</Link>. unpaid
|
||||
hhkb salesman.
|
||||
</p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<Link href="/read" class="w-full">books i am reading</Link>
|
||||
<p> </p>
|
||||
<ul
|
||||
aria-label="recent blog posts"
|
||||
class="w-full space-y-2 sm:space-y-0"
|
||||
|
94
src/pages/read.astro
Normal file
94
src/pages/read.astro
Normal file
@@ -0,0 +1,94 @@
|
||||
---
|
||||
import { getCollection } from "astro:content";
|
||||
import BaseHead from "../components/BaseHead.astro";
|
||||
|
||||
const nowReading = {
|
||||
title: "The Creative Act",
|
||||
slug: "the-creative-act",
|
||||
};
|
||||
const quote = {
|
||||
content:
|
||||
"Practicing a way of being that allows you to see the world through uncorrupted, innocent eyes can free you to act in concert with the universe's timetable.",
|
||||
bookTitle: "The Creative Act",
|
||||
};
|
||||
|
||||
const books = (await getCollection("read")).filter(
|
||||
(book) => book.slug !== nowReading.slug,
|
||||
);
|
||||
---
|
||||
|
||||
<!doctype html>
|
||||
<html
|
||||
lang="en"
|
||||
class="bg-stone-200 dark:bg-stone-900 text-stone-700 dark:text-stone-400"
|
||||
>
|
||||
<head>
|
||||
<BaseHead
|
||||
title="Kenneth's Reads"
|
||||
description="Quotes and notes from my readings."
|
||||
/>
|
||||
</head>
|
||||
<body class="reads px-8">
|
||||
<main class="mt-8 mb-20 md:mt-0 max-w-4xl grid grid-cols-11">
|
||||
<header class="col-span-11 grid grid-cols-11">
|
||||
<h1
|
||||
class="col-span-10 md:col-span-3 md:justify-self-end text-lg font-bold mt-8"
|
||||
>
|
||||
<a href="/" class="hover:underline">Kenneth</a>'s Reads
|
||||
</h1>
|
||||
<p
|
||||
class="col-span-10 md:col-span-8 text-lg font-medium mb-10 md:mb-20 md:ml-12 md:mt-8"
|
||||
>
|
||||
Quotes and notes from my readings.
|
||||
</p>
|
||||
</header>
|
||||
|
||||
<div class="md:justify-self-end col-span-10 md:col-span-3">
|
||||
<div class="flex items-center opacity-70 mb-2 md:mb-20">
|
||||
<div
|
||||
class="w-3 h-3 bg-green-500 border-green-200 dark:bg-green-500 border-2 dark:border-green-300 rounded-full animate-pulse mr-2"
|
||||
>
|
||||
</div>
|
||||
<h2 class="tracking-tight">Now Reading</h2>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-span-10 md:col-span-8 md:ml-12 mb-16 md:mb-20">
|
||||
<a class="font-medium underline" href={`/read/${nowReading.slug}`}
|
||||
>{nowReading.title}</a
|
||||
>
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="md:justify-self-end col-span-10 md:col-span-3 flex flex-col md:items-end opacity-70"
|
||||
>
|
||||
<p class="text-6xl leading-none font-black select-none">“</p>
|
||||
<h2 class="leading-none -translate-y-8 tracking-tight">
|
||||
{quote.bookTitle}
|
||||
</h2>
|
||||
</div>
|
||||
<p
|
||||
class="col-span-10 md:col-span-8 max-w-prose md:ml-12 text-2xl md:text-4xl tracking-tight mb-20"
|
||||
>
|
||||
{quote.content}
|
||||
</p>
|
||||
|
||||
<h2
|
||||
class="col-span-10 md:col-span-3 tracking-tight md:justify-self-end mb-4"
|
||||
>
|
||||
All Books
|
||||
</h2>
|
||||
<ul class="col-span-10 md:col-span-8 md:ml-12 space-y-2">
|
||||
{
|
||||
books.map((book) => (
|
||||
<li>
|
||||
<a class="underline" href={`/read/${book.slug}`}>
|
||||
{book.data.title}
|
||||
</a>
|
||||
</li>
|
||||
))
|
||||
}
|
||||
</ul>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
20
src/pages/read/[...slug].astro
Normal file
20
src/pages/read/[...slug].astro
Normal file
@@ -0,0 +1,20 @@
|
||||
---
|
||||
import { type CollectionEntry, getCollection } from "astro:content";
|
||||
import BookRead from "../../layouts/BookRead.astro";
|
||||
|
||||
export async function getStaticPaths() {
|
||||
const posts = await getCollection("read");
|
||||
return posts.map((post) => ({
|
||||
params: { slug: post.slug },
|
||||
props: post,
|
||||
}));
|
||||
}
|
||||
type Props = CollectionEntry<"read">;
|
||||
|
||||
const post = Astro.props;
|
||||
const { Content } = await post.render();
|
||||
---
|
||||
|
||||
<BookRead {...post.data}>
|
||||
<Content />
|
||||
</BookRead>
|
@@ -1,5 +1,6 @@
|
||||
@import "tailwindcss";
|
||||
@import "@catppuccin/tailwindcss/mocha.css";
|
||||
@import url("https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap");
|
||||
|
||||
@plugin "@tailwindcss/typography";
|
||||
|
||||
@@ -84,6 +85,34 @@ body.blog {
|
||||
font-family: "Source Serif 4", "Georgia", serif;
|
||||
}
|
||||
|
||||
body.reads * {
|
||||
font-family: "Inter", sans-serif;
|
||||
}
|
||||
|
||||
.nf {
|
||||
font-family: "NerdFont";
|
||||
}
|
||||
|
||||
.scroll-to-blur {
|
||||
animation-name: scroll-to-blur;
|
||||
animation-duration: 1ms; /* Firefox requires this to apply the animation */
|
||||
animation-timeline: scroll(block nearest);
|
||||
}
|
||||
|
||||
@keyframes scroll-to-blur {
|
||||
0% {
|
||||
filter: blur(0px);
|
||||
}
|
||||
|
||||
20% {
|
||||
filter: blur(5px);
|
||||
transform: scale(0.99);
|
||||
opacity: 0%;
|
||||
}
|
||||
|
||||
100% {
|
||||
filter: blur(5px);
|
||||
transform: scale(0.99);
|
||||
opacity: 0%;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user