Sign in

Chris Pennington

@codinginpublic.dev
364 followers 167 following 337 posts

DX Engineer at Resend. Dad to three. 📺 youtube.com/@codinginpublic 📚 Astro Course: learnastro.dev

PostsRepliesMedia
Chris Pennington @codinginpublic.dev · 07/09/2026
Collecting "crafted arts" in advance of Resend Forward, a dev conference about the craft of building software in SF on October 21st. Starting today with poems. Join us 👇 (use CR4FT43VER for 20% off) forward.resend.com/register/di...
forward.resend.com
Resend Forward • Oct 21, 2026
An event for builders
000
Chris Pennington @codinginpublic.dev · 07/09/2026
If you're seeing this, comment with a link to your favorite poem. I'll start. www.poetryfoundation.org/poems/44106...
poetryfoundation.org
Holy Sonnets: Batter my heart, three-person'd God
Batter my heart, three-person'd God, for you As yet but knock, breathe, shine, and seek to mend; That I may rise and stand, o'erthrow me, and bend Your…
100
Reposted by Chris Pennington
UtahJS @utahjs.com · 30/08/2026
Chris Pennington (Resend, @codinginpublic.dev) on the modern CSS patterns your AI agent doesn't know yet — and how to fix that. #UtahJS, Sept 18 @ 2:35 PM. ti.to/utahjs/2026
ti.to
2026 UtahJS Conference
The 15th Annual UtahJS Conference will be a one-day event with three tracks.
041
Chris Pennington @codinginpublic.dev · 15/08/2026
10/10. No notes. Never change, Adam :)
010
Chris Pennington @codinginpublic.dev · 15/08/2026
👋 I'm speaking at UtahJS! Come join me September 18th! 👇 ti.to/utahjs/2026
031
Chris Pennington @codinginpublic.dev · 06/08/2026
PSA in case you are also going insane looking. Cursor word wrap NOT in settings, but here...
show three dot menu in editor with word wrap
030
Chris Pennington @codinginpublic.dev · 05/08/2026
and it's a progressive enhancement, so it's great for everyone :)
000
Chris Pennington @codinginpublic.dev · 05/08/2026
2️⃣ @⁠starting-style Define the starting style to control the entrance animation. developer.mozilla.org/en-US/docs/...
developer.mozilla.org
@starting-style CSS at-rule - CSS | MDN
The @starting-style CSS at-rule is used to define starting values for properties set on an element that you want to transition from when the element receives its first style update, i.e., when an element is first displayed on a previously loaded page.
030
Chris Pennington @codinginpublic.dev · 05/08/2026
P.S. with dialog, popover, etc. you'll likely need to transition both display and overlay like this 👇
showing both display and overlay in a transition block
140
Chris Pennington @codinginpublic.dev · 05/08/2026
It relies on two properties... 1️⃣ transition-behavior Set it to allow-discrete to allow for discrete animated properties. developer.mozilla.org/en-US/docs/...
developer.mozilla.org
transition-behavior CSS property - CSS | MDN
The transition-behavior CSS property specifies whether transitions will be started for properties whose animation behavior is discrete.
120
Chris Pennington @codinginpublic.dev · 05/08/2026
We've waited like 20 years for this? display: none → display: block; youtu.be/3QUOstYE7-Q
youtube.com
CSS 20 years in the making?
Did you know you can now transition from `display: none` to `displa...
2246
Chris Pennington @codinginpublic.dev · 15/07/2026
A story in 4 parts 1. Needed a chrome extension for showing OG images. 2. Didn't want to find an extension + trust the dev. 3. Open Claude and prompt, then back to work. 4. 1 min later, Claude was done. Think it would've genuinely been slower to find an extension in the store.
010
Chris Pennington @codinginpublic.dev · 14/07/2026
There are lots of extra little details in the API, like position-try-fallbacks for adjusting the position based on whether or not the target can fit, using it with the popover API, etc. All the details are in the video 👇 youtu.be/zfQbVHyv3v4
youtube.com
How Anchors work in Modern CSS
Position elements relative to each other using just HTML and CSS, n...
000
Chris Pennington @codinginpublic.dev · 14/07/2026
The position-area is a quadrant with the anchor in the middle. You can use directional (e.g., left, top) or logical properties (e.g., block-start).
100
Chris Pennington @codinginpublic.dev · 14/07/2026
3️⃣ Target properties The target must be either position absolute or fixed. Then assign it's position-anchor and set it's relative position-area.
100
Chris Pennington @codinginpublic.dev · 14/07/2026
2️⃣ Anchor name In your CSS, give the anchor an "anchor-name", which is a name proceeded with a double dash.
100
Chris Pennington @codinginpublic.dev · 14/07/2026
1️⃣ Structure At the most basic, you need two elements: an anchor and a target.
100
Chris Pennington @codinginpublic.dev · 14/07/2026
How do anchors work in modern CSS? The Anchor Positioning API is deceptively complex. Here's everything you need to know in <8 min 👇 youtu.be/zfQbVHyv3v4
youtube.com
How Anchors work in Modern CSS
Position elements relative to each other using just HTML and CSS, n...
110
Chris Pennington @codinginpublic.dev · 07/07/2026
Watch the video for the full walkthrough 👇 youtu.be/sl_cGD327BY
030
Chris Pennington @codinginpublic.dev · 07/07/2026
Here's my finished code: github.com/coding-in-p...
github.com
GitHub - coding-in-public/popover-basics
Contribute to coding-in-public/popover-basics development by creating an account on GitHub.
110
Chris Pennington @codinginpublic.dev · 07/07/2026
The browser adds default styling, but you can use modern CSS to make it your own: - transition-behavior: allow-discrete - @⁠starting-style - position-area - :popover-open pseudo attribute
110
Chris Pennington @codinginpublic.dev · 07/07/2026
At it's most basic: - Open button: popovertarget pointing to ID - Popover: attribute of popover (with an ID) - Close buttons: same as open, but with popovertargetaction="close"
- Open button: popovertarget pointing to ID
- Popover: attribute of popover (with an ID)
- Close buttons: same as open, but with popovertargetaction="close"
110
Chris Pennington @codinginpublic.dev · 07/07/2026
If you're not using popovers yet...why not!? - Accessible by default - No JavaScript - Baseline 2025 Master popovers in 9 minutes 👇 youtu.be/sl_cGD327BY
131
Chris Pennington @codinginpublic.dev · 01/07/2026
Read all about the new changes 👇 astro.build/blog/astro-7/
astro.build
Astro 7.0 | Astro
Astro 7.0 brings faster builds with Vite 8, a new Rust compiler, Advanced Routing, background dev server support, and structured logging.
000
Chris Pennington @codinginpublic.dev · 01/07/2026
One thing that will trip you up: whitespace is now collapsed automatically. <!-- To preserve the space, use an explicit expression: --> <span>Hello</span>{' '}<span>World</span> Or...you can fix this with a config (to use the old behavior)
compressHTML: true in astro config
110
Chris Pennington @codinginpublic.dev · 01/07/2026
Mostly, it just means everything is faster. Here's a real stress test with 3000 MDX routes (~40% faster). - Astro 7: 17.63 seconds - Astro 6: 29.06 seconds
two logs; one showing 17.63 seconds for Astro 7 and 29.06% with Astro 6
100
Chris Pennington @codinginpublic.dev · 01/07/2026
The new major version of @astro.build is out! Everything is moving to Rust! 🦀 youtu.be/KBOgV7kuSm8
110
Chris Pennington @codinginpublic.dev · 28/06/2026
Super proud of my daughter. - Ran her first 5k yesterday - Topped her age group at 29:41 Special thing to share running with her 🥰
Chris with his daughter holding their medals
040
Chris Pennington @codinginpublic.dev · 27/06/2026
What are you building today? I'm building out a custom API for all my task management with Convex as my backend, Vercel for deployment (I'm building a web interface), and a full MCP server, CLI, skills, etc. We've got full docs and more, too. Hoping to open source it soon.
130
Chris Pennington @codinginpublic.dev · 05/05/2026
Some thoughts on how I plan my days. chrispennington.dev/blog/predict...
chrispennington.dev
Predictability is a Superpower - Chris Pennington
If you can predict how long tasks take you, it gives you a big advantage in daily life.
020
Chris Pennington @codinginpublic.dev · 07/04/2026
Code with AI. Clean up poop. Need I say more? clawdagotchi.com
000
Chris Pennington @codinginpublic.dev · 07/04/2026
clawdagotchi.com
000
Chris Pennington @codinginpublic.dev · 07/04/2026
lol you’re not wrong
000
Chris Pennington @codinginpublic.dev · 07/04/2026
I built a tamagotchi for claude code. - approve/reject requests - clean up poops - try to keep it alive I will not be taking questions at this time clawdagotchi.com
tamagotchi for claude code
120
Chris Pennington @codinginpublic.dev · 01/04/2026
My second annual dumb tradition 👇 youtu.be/xClmQZCJuTk
youtu.be
The channel is changing
YouTube video by Coding in Public
000
Chris Pennington @codinginpublic.dev · 13/03/2026
Try it out yourself! cloudcannon.com/templates/as...
cloudcannon.com
Astro Component Starter
The Astro Component Starter is built on web fundamentals, easy to customize, fast to use, and simple to maintain. Every component is built to work seamlessly in CloudCannon's Visual Editor.
000
Chris Pennington @codinginpublic.dev · 13/03/2026
New Astro Component Starter by @cloudcannon.bsky.social Here's everything you need to know 👇 youtu.be/ZoXyK96nyCg
youtu.be
NEW Astro Component Starter
YouTube video by Coding in Public
112
Chris Pennington @codinginpublic.dev · 12/03/2026
First look at @astro.build 6 🚀 youtu.be/WxUEtNg07gE
youtu.be
(NEW) Astro 6: First Look
YouTube video by Coding in Public
0144
Chris Pennington @codinginpublic.dev · 25/02/2026
When everything in my world keeps telling me to speed up, these thoughts encourage me to move with purpose. chrispennington.dev/blog/learnin...
chrispennington.dev
Learning to Think Differently - Chris Pennington
More and more, I'm realizing that careful thinking and thoughtful direction is today's superpower. Here's how I've been trying to grow.
010
Chris Pennington @codinginpublic.dev · 25/02/2026
5️⃣ Don't forget the people In the end, I'm still here for people. 🔸Cultivate empathy until it’s instinct. 🔸Look at people in the eyes. 🔸Be thankful for others; use your words. 🔸Notice successes; sympathize with loss. 🔸Filter criticism through empathy.
100
Chris Pennington @codinginpublic.dev · 25/02/2026
4️⃣ Pause as a practice Speed feels electric and thinking can destroy momentum, but when slowing down means picking the right heading, it’s always worth it. 🔸Excitement can blind you. 🔸Busyness isn’t always progress. 🔸Taste requires thought. 🔸Quality comes from cultivation.
100
Chris Pennington @codinginpublic.dev · 25/02/2026
3️⃣ Turn the problem Examine problems from multiple angles before devising solutions. 🔸Is the core ask being addressed? 🔸What is our motive? 🔸Is this work important now? 🔸What method should we choose? 🔸Where will this be consumed? 🔸Am I examining all audiences?
100
Chris Pennington @codinginpublic.dev · 25/02/2026
2️⃣ Question assumptions It’s hard to say, “no” and hard to ask, “why?” but both are crucial if I want to have an impact. 🔸Purpose drives action. 🔸Focus on work you can uniquely advance. 🔸You cannot avoid “no”; but you can choose it. 🔸The wrong work is always unproductive.
100
Chris Pennington @codinginpublic.dev · 25/02/2026
1️⃣ Start with intention With so much noise, it’s important to choose your signal. 🔸Urgency does not mean importance. 🔸Plan for margin; expect interruptions. 🔸Aim for impact, not for visibility. 🔸Remember the long-term in the short-term.
100
Chris Pennington @codinginpublic.dev · 25/02/2026
I’m trying to ask the hard questions, to develop a different way of thinking. 5 lessons I’m trying to learn. 👇
og image for "learning to think differently"
120
Chris Pennington @codinginpublic.dev · 24/02/2026
For those still writing CSS 😊 Here's a squishy hover I've been using a lot recently. 👇 youtu.be/HrSnHMaWpGA
youtu.be
Micro-interactions still matter
YouTube video by Coding in Public
010
Chris Pennington @codinginpublic.dev · 23/02/2026
My thoughts on @astro.build joining @cloudflare.social. TLDR; I'm optimistic, still sponsoring the community maintainers, and watching closely :) youtu.be/IISgoIsABs8?...
youtu.be
My thoughts on Astro joining Cloudflare
YouTube video by Coding in Public
0152
Chris Pennington @codinginpublic.dev · 03/01/2026
Craft time
Anavrin bakery miniature partially built
010
Chris Pennington @codinginpublic.dev · 09/12/2025
github.com/coding-in-pu...
github.com
GitHub - coding-in-public/live-content-collections-first-look
Contribute to coding-in-public/live-content-collections-first-look development by creating an account on GitHub.
020
Chris Pennington @codinginpublic.dev · 09/12/2025
Something ✨ NEW ✨ is coming... LIVE content collections in @astrodotbuild 6.0. Here's an early sneak peak 👇 youtu.be/wgIYciR0hvk
youtu.be
Live content collections (first look)
YouTube video by Coding in Public
110