--- export const prerender = true; import { Image } from 'astro:assets'; import { getCollection } from 'astro:content'; import Layout from '@layouts/Layout.astro'; import Avatar from '@components/Avatar.astro'; import portrait from '../img/portrait.jpg'; import MastodonIcon from '../img/svg/mastodon.svg'; import BlueskyIcon from '../img/svg/bluesky.svg'; const iconSize = 16; const posts = await getCollection('blog'); const latestPost = posts.sort( (a, b) => new Date(b.data.pubDate).valueOf() - new Date(a.data.pubDate).valueOf() )[0]; ---

My name is Graham (he/him), a full-stack web developer, and tech enthusiast.

When I'm not writing code, I'm usually enjoying one of my other hobbies; video games, board games, music, hiking, photography, art, the list goes on...

I also like writing about stuff, so I put together this site to share whatever's on my mind about the world of tech, gaming, life, web development, and whatever else strikes my fancy.

Read my latest blog post, {latestPost.data.title}, from {new Date(latestPost.data.pubDate).toLocaleDateString()}.

If your interested in checking out my web dev projects, check out my portfolio.

If you want to get in touch, I'm on Mastodon and Bluesky.

My portrait was drawn by Natalia Vazquez.