Compare commits

...

33 commits

Author SHA1 Message Date
Ayo
9c1741aac5 tests: update paths 2026-06-25 08:51:09 +02:00
Ayo
bfed434a4e chore: update package manager 2026-06-24 21:43:23 +02:00
Ayo
3e829f1294 chore: move commands to scripts 2026-06-24 18:53:29 +02:00
Ayo
d057f84a2a chore: update package manager 2026-06-23 21:18:29 +02:00
Ayo
1f2af9aabf 1.3.98 2026-06-21 11:39:05 +02:00
Ayo
b27b67ab13 feat: update link to webtoo.ls 2026-06-21 11:38:56 +02:00
Ayo
fa225670ee 1.3.97 2026-06-20 10:36:12 +02:00
Ayo
a1a9c8645d feat: use mu.social for bsky profile 2026-06-20 10:34:03 +02:00
Ayo
ba91542ecf 1.3.96 2026-06-18 14:27:47 +02:00
Ayo
497ce731e2 feat: fix typo in now page 2026-06-18 14:27:33 +02:00
Ayo
42fa96146b 1.3.95 2026-06-18 14:26:01 +02:00
Ayo
d7fa60c9ab 1.3.94 2026-06-18 14:23:11 +02:00
Ayo
52d4fcd5e1 1.3.93 2026-06-18 14:22:26 +02:00
Ayo
37bb719fcd 1.3.92 2026-06-18 14:21:43 +02:00
Ayo
236ccd8001 1.3.91 2026-06-18 14:19:55 +02:00
Ayo
4735626c48 feat: fix typo on now page 2026-06-18 14:19:42 +02:00
Ayo
df959dd8af 1.3.90 2026-06-18 14:17:01 +02:00
Ayo
ffe45fd82e feat: update now label 2026-06-18 14:16:47 +02:00
Ayo
a9cbb5734d 1.3.89 2026-06-18 14:15:03 +02:00
Ayo
181c951965 feat: new now page content 2026-06-18 14:14:27 +02:00
Ayo
0876ee112c chore: remove post commit push tags 2026-06-18 13:27:02 +02:00
Ayo
1bb0b32304 style: make now label border solid 2026-06-18 13:25:51 +02:00
Ayo
962f2d5dd6 chore: also mirror tags 2026-06-16 08:02:16 +02:00
Ayo
d8a38b60e3 1.3.88 2026-06-10 12:00:34 +02:00
Ayo
1ae9325ace feat: link to blog prod 2026-06-10 11:46:22 +02:00
Ayo
73ecdbe4d8 1.3.87 2026-06-08 11:15:40 +02:00
Ayo
bd65162c70 style: dotted bg for whole page 2026-06-08 11:15:21 +02:00
Ayo
fb93eb7574 1.3.86 2026-06-07 22:26:02 +02:00
Ayo
ed4b091cf1 refactor: remove unneeded style 2026-06-07 22:25:54 +02:00
Ayo
778328d984 1.3.85 2026-06-07 22:25:30 +02:00
Ayo
44e6fe6722 style: dotted bg everywhere 2026-06-07 22:25:03 +02:00
Ayo
271a92c7b3 1.3.84 2026-06-07 22:21:55 +02:00
Ayo
d79e51f1ce style: dotted background 2026-06-07 22:21:38 +02:00
17 changed files with 146 additions and 30 deletions

View file

@ -1,7 +1,7 @@
{
"name": "@ayco/personal-website",
"type": "module",
"version": "1.3.83",
"version": "1.3.98",
"private": true,
"scripts": {
"astro": "astro",
@ -21,7 +21,7 @@
"build:deploy": "npm run build && npm run deploy",
"copy:dist": "npm run build && cp -R dist ../ayco.io-flask/",
"prepare": "husky",
"prep:now": "npx jiti ./commands/prep-now.js",
"prep:now": "npx jiti ./scripts/prep-now.js",
"test": "vitest run ."
},
"devDependencies": {
@ -70,7 +70,7 @@
"prettier . --config prettier.config.mjs --write"
]
},
"packageManager": "pnpm@11.5.2+sha512.71c631e382066efc25625d5cf029075de07b61b37f6e27350fbd84b1bda5864c8c1967adc280776b45c30a715c0359a3be08fef42d5bb09e2b99029979692916",
"packageManager": "pnpm@11.9.0+sha512.bd682d5d03fe525ef7c9fd6780c6884d1e756ac4c9c9fe00c538782824310dcf90e3ddc4f53835f06dfaebd5085e41855e0bcbb3b60de2ac5bbab89e5036f03b",
"dependencies": {
"@ayo-run/status-indicator": "^2.1.2",
"web-component-base": "^4.1.2"

View file

@ -45,7 +45,7 @@ const year = new Date().getFullYear()
<p>
Copyright &#169; 2022-{year}
<a href="/">Ayo Ayco</a>. This website <a
href="https://v1.ayos.blog/stopped-tracking-on-my-sites"
href="https://ayos.blog/stopped-tracking-on-my-sites"
>does not track users</a
>. See the <a href="https://git.ayo.run/ayo/ayco.io-astro">source code.</a>
</p>

View file

@ -0,0 +1,7 @@
{
"title": "Social Web & Web Components",
"description": "Getting into discussions about improving the social web & building components",
"publishDate": "2026-05-12",
"publishedOn": "",
"publishState": ""
}

View file

@ -0,0 +1,13 @@
I bought a pull-up bar, and in addition to a few barbells at home, I am starting to have a mini gym.
Super happy that I am getting healthier as I build my workout routines.
To keep my mind sharp, I find it helpful to have several hobby things I can get back to from time to time.
I am in a few discussions for exploring some things in the open social web. Details can come later as they become more concrete.
Soft launch of my own newsletter is up on the canary version of my blog: https://main.ayos.blog/subscribe -- because email is the first decentralized social platform. Let's explore that idea more in the coming months.
I'm also back on my webcomponents main arc, after some side quests in self-hosting & machine learning.
Links to come later. Cheers!

View file

@ -62,7 +62,7 @@ export const footerLinks: Link[] = [
},
{
text: 'Bluesky',
url: 'http://bsky.app/profile/ayo.run',
url: 'http://mu.social/profile/ayo.run',
icon: 'bluesky',
},
{

View file

@ -1,7 +1,7 @@
{
"title": "Social Web & Web Components",
"description": "Getting into discussions about improving the social web & building components",
"publishDate": "2026-05-12",
"publishedOn": "",
"publishState": ""
"title": "Fam++, Crypto, ~AI, OSS",
"description": "Navigating changes in the family and the tech industry",
"publishDate": "2026-06-18",
"publishedOn": "the 18th of June 2026",
"publishState": "in Amsterdam"
}

View file

@ -1,13 +1,21 @@
I bought a pull-up bar, and in addition to a few barbells at home, I am starting to have a mini gym.
## 2 vs 2 in the house
Super happy that I am getting healthier as I build my workout routines.
A new challenger is entering the game. It is safe to share now that we're expecting a new addition to the family: a baby girl is joining us later this year. I have been enjoying having a mini-me in the form of my lil kiddo, Kahel, and now it's time for Jen to have hers.
To keep my mind sharp, I find it helpful to have several hobby things I can get back to from time to time.
## Cryptography
I am in a few discussions for exploring some things in the open social web. Details can come later as they become more concrete.
The latest rabbit hole for my tech adventures is on [cryptography](https://elk.zone/m.webtoo.ls/@ayo@ayco.io/116667802537651710); particularly OpenPGP stuff and the implementation on signing & verifying emails. Check [my public key](/pgp) if you want to exchange encrypted messages :)
Soft launch of my own newsletter is up on the canary version of my blog: https://main.ayos.blog/subscribe -- because email is the first decentralized social platform. Let's explore that idea more in the coming months.
Technically this key-pair cryptography can be applied to any data exchange, so I naturally have been ruminating on how we can bring this to the decentralized social web.
I'm also back on my webcomponents main arc, after some side quests in self-hosting & machine learning.
## "AI"
Links to come later. Cheers!
I disassembled the eGPU setup I have for experimenting with local LLM inference and built a new PC. It is now a dedicated 24/7 "AI" computer at home that powers my [Open WebUI](https://ai.ayo.run) service. Additionally it runs [hermes](https://hermes-agent.nousresearch.com/) which is a "totally safe private local agentic AI" architecture -- and I got to say, it is the most successful one I've tried yet with local AI stuff.
Where am I using this? I don't know yet. It's purely for understanding the "agentic" stuff
## Open source
- [Elk](https://elk.zone) - I try to help out reviewing PRs and will pick up coding work again
- [Webtoo.ls](https://webtoo.ls/about) - I picked up administration work for this and have BIG dreams on bringing more Web ecosystem open source presence to the Fediverse
- [others](https://git.ayo.run/ayo) - A lot of my other explorations are out in the open

View file

@ -51,13 +51,28 @@ const ogFileType = 'image/png'
font-size: var(--font-size-base);
color: var(--text-color-dark);
background-color: var(--text-color-light);
background-image: radial-gradient(
circle,
hsl(var(--dot-grid-light)) 1px,
transparent 1px
);
background-size: 24px 24px;
background-position: -24px -24px;
}
@media (prefers-color-scheme: dark) {
html,
body,
* {
background: var(--bg-darker);
background-color: var(--bg-darker);
color: var(--text-color-light);
background-image: radial-gradient(
circle,
hsl(var(--dot-grid-dark)) 1px,
transparent 1px
);
}
}

View file

@ -26,4 +26,7 @@
--bg-dark: #343a40;
--bg-darker: #212529;
--bg-darkest: #000;
--dot-grid-light: 214 32% 82%;
--dot-grid-dark: 215 25% 25%;
}

View file

@ -36,9 +36,8 @@ import Footer from '../components/Footer.astro'
<p>
In my spare time, I find it fun building <a href="/showcase">projects</a>,
running self-hosted services at <a href="https://ayo.run">ayo.run</a>, and
volunteering to <a
href="https://v1.ayos.blog/why-fediverse/"
target="_blank">Fediverse</a
volunteering to <a href="https://ayos.blog/why-fediverse/" target="_blank"
>Fediverse</a
> projects like <a href="https://elk.zone">elk.zone</a>,
<a href="https://m.webtoo.ls/public/local">webtoo.ls</a>, and <a
href="https://m.webtoo.ls/@vitest">vitest's fedi presence</a

View file

@ -46,7 +46,7 @@ const avatarSize = 150
</div>
</div>
</section>
<main>
<main class=".dot-grid">
<section class="introduction-section">
<p>
I care about the <em>Web</em>, and I love to <em>create</em> stuff to <em
@ -95,7 +95,6 @@ const avatarSize = 150
&.primary {
border: 1px solid rgba(255, 255, 255, 0.2);
border-style: dotted;
border-radius: 40px;
}
}

View file

@ -0,0 +1,72 @@
---
import Layout from '../../../../layouts/Layout.astro'
import Footer from '../../../../components/Footer.astro'
const title = `Social Web & Web Components`
const description = `Getting into discussions about improving the social web & building components`
let publishedOn = ``
const publishDate = `2026-05-12`
const publishState = ``
const content = `<p>I bought a pull-up bar, and in addition to a few barbells at home, I am starting to have a mini gym.</p>
<p>Super happy that I am getting healthier as I build my workout routines.</p>
<p>To keep my mind sharp, I find it helpful to have several hobby things I can get back to from time to time.</p>
<p>I am in a few discussions for exploring some things in the open social web. Details can come later as they become more concrete.</p>
<p>Soft launch of my own newsletter is up on the canary version of my blog: https://main.ayos.blog/subscribe -- because email is the first decentralized social platform. Let's explore that idea more in the coming months.</p>
<p>I'm also back on my webcomponents main arc, after some side quests in self-hosting &#x26; machine learning.</p>
<p>Links to come later. Cheers!</p>`
publishedOn = publishedOn === '' ? publishDate : publishedOn
---
<Layout title={title} description={description}>
<main>
<h1><span class="text-gradient">{title}</span></h1>
<p>
<small>
Published on
<time datetime={publishDate}>
{publishedOn}
</time>
{publishState}
</small>
</p>
<Fragment set:html={content} />
</main>
<Footer />
</Layout>
<style>
.text-gradient {
font-weight: 900;
background-image: var(--ayo-gradient);
animation: pulse 4s ease-in-out infinite;
background-size: 500% 500%;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-size: 100% 200%;
background-position-y: 100%;
border-radius: 0.4rem;
}
.highlighted-content {
margin: 1rem 0;
background: #4f39fa;
padding: 1rem;
border-radius: 0.4rem;
color: var(--color-bg);
}
.highlighted-content code {
font-size: var(--font-size-base);
border: 0.1em solid var(--color-border);
border-radius: 4px;
padding: 0.15em 0.25em;
}
.link-card-grid {
display: grid;
gap: 1rem;
padding: 0;
}
</style>

View file

@ -11,8 +11,8 @@ import Card from '../components/Card.astro'
<main>
<h1><span class="text-gradient">Hobby Projects</span></h1>
<p>
See more of my previous projects at <a
href="https://v1.ayos.blog/projects">my blog</a
See more of my previous projects at <a href="https://ayos.blog/projects"
>my blog</a
>.
</p>
<ul>

View file

@ -5,7 +5,7 @@ import { dirname, resolve } from 'node:path'
import { describe, it, expect, vi, beforeEach } from 'vitest'
import { consola } from 'consola'
import newNow from '../commands/prep-now'
import newNow from '../scripts/prep-now'
// Mock file system operations
vi.mock('path', () => ({
@ -27,7 +27,7 @@ vi.mock('consola', () => ({
}))
// Mock mdToHTML
vi.mock('../command/md-to-html', () => ({
vi.mock('../scripts/md-to-html', () => ({
mdToHTML: vi.fn(),
}))
@ -56,7 +56,7 @@ describe('prep-now', () => {
it('should create a new now page and clear the original files', async () => {
// Mock the mdToHTML function
const { mdToHTML } = await import('../utils/md-to-html')
const { mdToHTML } = await import('../scripts/md-to-html')
vi.mocked(mdToHTML).mockResolvedValue('<h1>Test Content</h1>')
// Mock file paths
@ -73,8 +73,8 @@ describe('prep-now', () => {
.mockReturnValueOnce('# Test Content')
// Mock file paths
const __filename = '/src/commands/prep-now.ts'
const __dirname = '/src/commands'
const __filename = '/src/scripts/prep-now.ts'
const __dirname = '/src/scripts'
vi.mocked(fileURLToPath).mockReturnValue(__filename)
vi.mocked(dirname).mockReturnValue(__dirname)