Christian Grøngaard

Christian Grøngaard

@hamburger.cloud

Father of two children and countless software bugs Currently working on the text editor used in the very core of the @Sanity.io Content Operating System: https://github.com/portabletext/editor.

170 followers108 following107 posts

As expected, it was *incredibly* difficult to delete my Facebook account. However, after some UI debugging and browser switching, I finally succeeded, and it looks like 2026 is off to a flying start.

Christian Grøngaard reposted

you’re right! it feels mostly awful to Go Online™, these days. the internet in a sad state, for reason after reason after reason. but there is a way to fix it; to trade the voidful howling for a quiet & joyful song. here’s how to win the war for the soul of the internet, and build the Web We Want.

henry.codesA Website To End All Websites | Henry From OnlineHow to win the war for the soul of the internet, and build the Web We Want.

Christian Grøngaard reposted

You vibe-coded a site. Content lives in markdown. It works. Then your client asks for a login. The Sanity MCP Server lets your agent set up and manage a real content backend in the same conversation you used to build everything else. www.sanity.io/blog/sanity-...

sanity.ioYou’ll need a CMS eventually. Let your agent set it up. | SanityWith the Sanity MCP server, your AI agent can now create schemas, content, and editorial interfaces from prompts.

Maybe a 🌶️ take, but I generally don't like this trick. If one of your default/known values changes - e.g., "alert" is renamed to "warning" - your call sites won't break, and subtle, hard-to-discover bugs can be introduced. Any string is allowed, remember?

Jamie Kyle@jamie.build

Neat little TypeScript trick: If you have a string or number type that you have some default/known values for: type Role = "alert" | "alertdialog" | string TypeScript will simplify the type to just: Role: string However if you wrap it like `string & {}` you'll preserve the autocompletions

Looks like last.fm still doesn't offer a way to export your data. So... I guess I might as well revive my 20-year-old account for the second(?) time! Do you have one? www.last.fm/user/christi... (I want to listen to more music again, and maybe this can be a weird sort of motivation.)

last.fmchristianhg’s Music Profile | Last.fmListen to music from christianhg’s library (85,044 tracks played). christianhg’s top artists: Radiohead, The Beatles, Tom Waits. Get your own music profile at Last.fm, the world’s largest social music...

It really is a special feeling sitting in your car, listening to a podcast, as you've done so many times before, but this time YOU'RE THE GUEST! Thank you, @simeongriggs.dev, for inviting me on to talk about Portable Text, text editors, Behaviours, Gherkin and state machines and more.

Simeon Griggs@simeongriggs.dev

Have you ever tried building a block editor? I never enjoyed it until the Portable Text Editor arrived, so I had to talk to the guy (@hamburger.cloud) who built it! Watch on YouTube or listen to the podcast: youtu.be/_m_yyQ2HAZc

Very soon, you'll be able to hear @simeongriggs.dev and me talk about the Portable Text Editor—the challenges behind the scenes, as well as the cool new APIs we're cooking up.

Simeon Griggs@simeongriggs.dev

👋 Time to talk content! I'm starting a new podcast for conversations at the intersection of code and content called ... Code && Content!

The Behavior API for @sanity.io's Portable Text Editor will allow you to configure the editor in ways that where previously not possible. Behaviors can be bundled in Plugins to easily turn them on and off. Here's an example of a simple <OneLinePlugin /> that restricts the editor to one block.

So cool that we can finally ship this as the first step towards a more pleasant and modern writing experience in the @sanity.io Studio. For the interested, here's a link to the source code of the markdown behaviours found in the Portable Text Editor repository: github.com/portabletext...

github.comgithub.com
Simeon Griggs@simeongriggs.dev

One of those "finally!" features shipped in yesterday's Sanity Studio release. Markdown formatting shortcuts for the Portable Text Editor!

So proud of this and can't wait to take it even further.

Sanity@sanity.io

Building block content editors is notoriously hard—so we made ours available for everyone. Introducing the standalone Portable Text Editor with our new Behavior API (beta) and specialized testing tooling. See how it works: www.sanity.io/blog/a-block...

I wish GitHub (git?) was better at showing stacked diffs. Me: Let me carefully and surgically refactor this function in one commit and then rename it in the next commit GitHub: EVERYTHING CHANGED

I would be introducing regressions on a daily basis if it wasn't for @vitest.dev. Super stoked that @sanity.io is now sponsoring the project.

Vitest@vitest.dev

Thanks for your generous donation @sanity.io 🙏 We hope more companies follow you (and others in the @opensourcepledge.com) to help making the Open Source ecosystem more sustainable.

Christian Grøngaard reposted

Open source software is crucial to the success of Sanity, so it makes sense to give back to great projects that we and our community use every day. That's why we joined the @opensourcepledge.com with a $112k donation to great projects and maintainers. 🫶 www.sanity.io/blog/sanity-...

sanity.ioSanity joins the Open Source PledgeWe are joining the Open Source Pledge, committing to pay $2,000 per year per full-time developer directly to open source maintainers and foundations.

Skip to the end. Use React Aria.

Devon Govett@devongovett.me

Big React Aria release! 🚀 🎨 7 Color Picker components now GA, with new Tailwind starter kit examples! ⏳ Pending Button state 🚪 New Disclosure component 🪗 DisclosureGroup (aka Accordion) 🌴 Tree beta 📱 Improved Android touch handling Check it out! react-spectrum.adobe.com/releases/202...

Hey, that's my team! ♥️

Sanity@sanity.io

The Sanity Winter Release is coming up on November 19th! On November 21st, the engineers behind the new features joins @kapehe.bsky.social and @knut.fyi for a special Developer Deep Dive. What are you hoping to see? 🔮 www.sanity.io/events/devel...

You are up to date.