diff --git a/public/social/bluesky.svg b/public/social/bluesky.svg
new file mode 100644
index 0000000..8d9292b
--- /dev/null
+++ b/public/social/bluesky.svg
@@ -0,0 +1 @@
+
diff --git a/public/social/discord.svg b/public/social/discord.svg
new file mode 100644
index 0000000..24f3739
--- /dev/null
+++ b/public/social/discord.svg
@@ -0,0 +1 @@
+
diff --git a/public/social/email.svg b/public/social/email.svg
new file mode 100644
index 0000000..57b05c9
--- /dev/null
+++ b/public/social/email.svg
@@ -0,0 +1 @@
+
diff --git a/public/social/linkedin.svg b/public/social/linkedin.svg
new file mode 100644
index 0000000..74063f8
--- /dev/null
+++ b/public/social/linkedin.svg
@@ -0,0 +1 @@
+
diff --git a/public/social/x.svg b/public/social/x.svg
new file mode 100644
index 0000000..dc741f7
--- /dev/null
+++ b/public/social/x.svg
@@ -0,0 +1 @@
+
diff --git a/src/components/author.astro b/src/components/author.astro
new file mode 100644
index 0000000..60f95ad
--- /dev/null
+++ b/src/components/author.astro
@@ -0,0 +1,32 @@
+---
+// The sign-off at the bottom of every post: avatar plus wherever you can find me.
+// The icons in public/social/ are placeholders waiting on hand-drawn versions,
+// same as the ones in public/layout/.
+const socials = [
+ { name: "Email", icon: "email", href: "mailto:me@kixel.me" },
+ { name: "X", icon: "x", href: "https://x.com/kixelated" },
+ { name: "Bluesky", icon: "bluesky", href: "https://bsky.app/profile/kixel.me" },
+ { name: "LinkedIn", icon: "linkedin", href: "https://www.linkedin.com/in/luke-curley-635a457/" },
+ { name: "Discord", icon: "discord", href: "https://discord.moq.dev" },
+];
+---
+
+
diff --git a/src/pages/blog/application-first.mdx b/src/pages/blog/application-first.mdx
index 5786ad1..2052859 100644
--- a/src/pages/blog/application-first.mdx
+++ b/src/pages/blog/application-first.mdx
@@ -7,6 +7,8 @@ cover: "/blog/application-first/sun.png"
date: 2025-05-02
---
+import Author from "@/components/author.astro";
+
# Application First
Today was my last day at Discord.
It's a great company with a great product and great people.
@@ -210,4 +212,4 @@ I'm down to scheme too if any companies have a partnership in mind.
Hoping to have a public demo in 3-6 months.
-
+
diff --git a/src/pages/blog/be-the-outlier.mdx b/src/pages/blog/be-the-outlier.mdx
index 2996cd5..a5b9a3c 100644
--- a/src/pages/blog/be-the-outlier.mdx
+++ b/src/pages/blog/be-the-outlier.mdx
@@ -7,6 +7,8 @@ cover: "/blog/be-the-outlier/narwhal.png"
date: 2025-06-07
---
+import Author from "@/components/author.astro";
+
# Your Job Now: Be The Outlier
I've been [working on a startup](/blog/application-first) for the last month.
@@ -97,4 +99,4 @@ What does this have to do with Media over QUIC?
I would set up a personal blog but I'm too busy right now.
Hope you enjoyed something different like comment subscribe.
-
+
diff --git a/src/pages/blog/cars2.mdx b/src/pages/blog/cars2.mdx
index 4c4a382..05b2198 100644
--- a/src/pages/blog/cars2.mdx
+++ b/src/pages/blog/cars2.mdx
@@ -7,6 +7,8 @@ cover: "/blog/cars2/queen.png"
date: 2026-07-14
---
+import Author from "@/components/author.astro";
+
# A Modern Interpretation of Live Streaming in the Cars 2 Cinematic Universe
sup
@@ -226,5 +228,4 @@ No refunds.
If you're interested in more Cars 2 lore, join the [fan club](https://discord.gg/FCYF3p99mr) or email me at `me@kixel.me`.
-Written by [@kixelated](mailto:meself@kixel.me).
-
+
diff --git a/src/pages/blog/demoqed.mdx b/src/pages/blog/demoqed.mdx
index 993cb24..c154b6f 100644
--- a/src/pages/blog/demoqed.mdx
+++ b/src/pages/blog/demoqed.mdx
@@ -6,6 +6,9 @@ description: The first MoQ conference coming soon (October) in San-Fran-cis-co.
cover: "/blog/demoqed/demoqed.png"
date: 2026-08-25
---
+
+import Author from "@/components/author.astro";
+
# DE MOQ ED
[Demuxed](https://www.demuxed.com/) is the best media conference.
@@ -80,5 +83,4 @@ Ur welcome.
If the thought of flying to San Francisco for a half-day conference sounds lame, you can make it lamer and [schedule a coffee](http://meet.kixel.me/) with me.
One lucky guest could even stay in my unfinished ~murder~ basement.
-Written by [@kixelated](mailto:meself@kixel.me).
-
+
diff --git a/src/pages/blog/distribution-at-twitch.mdx b/src/pages/blog/distribution-at-twitch.mdx
index 397b687..2cb5956 100644
--- a/src/pages/blog/distribution-at-twitch.mdx
+++ b/src/pages/blog/distribution-at-twitch.mdx
@@ -7,6 +7,8 @@ cover: "/blog/kixelCat.png"
date: 2022-02-15
---
+import Author from "@/components/author.astro";
+
# Source
[This document](https://docs.google.com/document/d/1OTnJunbpSJchdj8XI3GU9Fo-RUUFBqLO1AhlaKk5Alo/edit?usp=sharing) was originally shared on [MoQ IETF mailing list](https://mailarchive.ietf.org/arch/msg/moq/3-9tqDmEuzij7Iz3Xf7kIsR1ZYo/).
@@ -263,4 +265,4 @@ Prioritization is used to avoid segments fighting for bandwidth, delivering newe
- **(new)** UDP delivery is more expensive than TCP in practice
-
\ No newline at end of file
+
diff --git a/src/pages/blog/first-app.mdx b/src/pages/blog/first-app.mdx
index a90aca5..144b246 100644
--- a/src/pages/blog/first-app.mdx
+++ b/src/pages/blog/first-app.mdx
@@ -7,6 +7,8 @@ cover: "/blog/first-app/demo.png"
date: 2025-08-22
---
+import Author from "@/components/author.astro";
+
# The First MoQ App: hang.live
🚨 It's finally happening! 🚨
@@ -116,5 +118,4 @@ I'm totally open to suggestions and contributions.
*Especially* if you're in the San Francisco area and want to vibe.
[Hit me up](https://discord.moq.dev).
-Written by [@kixelated](https://github.com/kixelated).
-
+
diff --git a/src/pages/blog/first-cdn.mdx b/src/pages/blog/first-cdn.mdx
index e69c0d0..13aa492 100644
--- a/src/pages/blog/first-cdn.mdx
+++ b/src/pages/blog/first-cdn.mdx
@@ -7,6 +7,8 @@ cover: "/blog/first-cdn/cloudflare.png"
date: 2025-08-22
---
+import Author from "@/components/author.astro";
+
# The First MoQ CDN: Cloudflare
🚨 It's finally happening! 🚨
@@ -162,8 +164,7 @@ Somehow there's 900+ people in there.
Ping me and I will do whatever I can to help.
*Especially* if it means putting one more nail in the WebRTC coffin.
-Written by [@kixelated](https://github.com/kixelated).
-
+
## Javascript is an Abomination
Still reading?
diff --git a/src/pages/blog/forward-error-correction.mdx b/src/pages/blog/forward-error-correction.mdx
index 8d800dc..49bcd0d 100644
--- a/src/pages/blog/forward-error-correction.mdx
+++ b/src/pages/blog/forward-error-correction.mdx
@@ -7,6 +7,8 @@ cover: "/blog/forward-error-correction/mfw.jpeg"
date: 2024-02-17
---
+import Author from "@/components/author.astro";
+
# Forward? Error? Correction?
So I absolutely _dunked_ on datagrams in the [last blog post](/blog/never-use-datagrams).
@@ -192,6 +194,4 @@ Do what works best for your users at whatever layer you control.
Just please, never show me a graph based on random packet loss again.
-Written by [@kixelated](https://github.com/kixelated).
-
-
+
diff --git a/src/pages/blog/hash-tag-community.mdx b/src/pages/blog/hash-tag-community.mdx
index ad999a1..3827930 100644
--- a/src/pages/blog/hash-tag-community.mdx
+++ b/src/pages/blog/hash-tag-community.mdx
@@ -7,6 +7,8 @@ cover: "/blog/hash-tag-community/hash.png"
date: 2025-12-20
---
+import Author from "@/components/author.astro";
+
# Hash Tag Community
There's been a LOT of new contributions to the project thanks primarily to the [Montevideo Tech Summer Camp](/blog/monte-video).
It is my job as the official MoQ `#influencer` to give everyone a shoutout.
@@ -190,5 +192,4 @@ This project is my legacy, and I greatly appreciate all of the help from the `#c
Just a reminder that I'm unemployed (on purpose) and available for *unpaid* consulting gigs if you, or your megacorp, are interested in MoQ.
Message me on [Discord](https://discord.moq.dev) if you, or your CTO, or your intern, want to schedule a call and exchange business cards.
-Written by [@kixelated](https://github.com/kixelated).
-
+
diff --git a/src/pages/blog/monte-video.mdx b/src/pages/blog/monte-video.mdx
index 7e08632..8a6f246 100644
--- a/src/pages/blog/monte-video.mdx
+++ b/src/pages/blog/monte-video.mdx
@@ -7,6 +7,8 @@ cover: "/blog/monte-video/uruguay.png"
date: 2025-11-11
---
+import Author from "@/components/author.astro";
+
# Monte\