CodePen Blog
429: Why CodePen Rebuilt Its Realtime Service
We’ve had realtime features on CodePen for ages. Back when it was pretty damn hard. Our Collab Mode is an obvious one, where users can code together. (This “just works” in the 2.0 editor, it’s not called anything special.) That and Professor Mode used to have realtime chat (until we pulled it because very few people used it). We went through iterations of this including our own implementations and using services like PubNub.
Code collaboration in realtime is particularly difficult. We used FirePad/FireBase for a while for this, and honestly that was a nice abstraction. Increasing the difficulty though, we need to layer on additional needs like syncing settings, presence, and just arbitrary message delivery (e.g. “a new build is ready!”). We used Ably for much of this for quite a while.
These days, our whole realtime system integrates with our caching layer, goes over the network using standard web sockets to our beefy Go servers, and is integrated with CRDTs/Y.js to keep everybody looking at the same thing. Plenty of open source software at work, but no more third-party services. This means lower operating costs and a simpler architecture. The cost is that problems are, well, our problems.
Time Jumps
* 00:00:07 Why did CodePen rebuild it’s realtime service?
* 00:03:11 People take realtime for granted in 2026
* 00:04:56 What tech did we use in the past to do realtime?
* 00:13:01 What did Ably used to provide?
* 00:16:36 What we ended up doing
* 00:26:27 What are the issues with doing realtime yourself?
* 00:32:59 What would we do differently?
429: Why CodePen Rebuilt Its Realtime Service
We’ve had realtime features on CodePen for ages. Back when it was pretty damn hard. Our Collab Mode is an obvious one, where users can code together. (This “just works” in the 2.0 editor, it’s not called anything special.) That and Professor Mode used to have realtime chat (until we pulled it because very few people used it). We went through iterations of this including our own implementations and using services like PubNub.
Code collaboration in realtime is particularly difficult. We used FirePad/FireBase for a while for this, and honestly that was a nice abstraction. Increasing the difficulty though, we need to layer on additional needs like syncing settings, presence, and just arbitrary message delivery (e.g. “a new build is ready!”). We used Ably for much of this for quite a while.
These days, our whole realtime system integrates with our caching layer, goes over the network using standard web sockets to our beefy Go servers, and is integrated with CRDTs/Y.js to keep everybody looking at the same thing. Plenty of open source software at work, but no more third-party services. This means lower operating costs and a simpler architecture. The cost is that problems are, well, our problems.
Time Jumps
* 00:00:07 Why did CodePen rebuild it’s realtime service?
* 00:03:11 People take realtime for granted in 2026
* 00:04:56 What tech did we use in the past to do realtime?
* 00:13:01 What did Ably used to provide?
* 00:16:36 What we ended up doing
* 00:26:27 What are the issues with doing realtime yourself?
* 00:32:59 What would we do differently?
CodePen
429: Why CodePen Rebuilt Its Realtime Service
We’ve had realtime features on CodePen for ages. Back when it was pretty damn hard. Our Collab Mode is an obvious one, where users can code together. (This “just works” in the 2.0…
Which tag creates text (accordion) that opens and closes simply by clicking, without CSS?
Anonymous Quiz
25%
<accordion>
17%
<dropdown>
50%
<details>
8%
<toggle>
❤1
What is your opinion on the HTML <blink> tag?
Anonymous Poll
40%
It was an interesting, albeit deprecated, feature.
30%
It was annoying and detrimental to user experience.
20%
I've never encountered or heard of it.
0%
It had its charm, but good riddance.
10%
It should definitely NOT be brought back.
Which of the following is NOT a valid HTML tag?
Anonymous Poll
7%
<div>
0%
<span>
13%
<script>
80%
<py>
CodePen Blog
Chris’ Corner: Makin’ Stuff
The most fun websites to build are websites that interact with outside sources. A user is an outside source! I’m obviously a bit partial to a website that asks a user to build stuff. That’s fun. But any outside source can be fun. Accepting uploads and doing something weird or useful with the data. Or using a third-party API for interesting data.
There is something magically fun about a weather app, for instance. You’re designing the site, but it’s designed around data you don’t control. Your job is to present the weather in a pleasing and useful way. That’s difficult to do even when you’re essentially copying patterns that already exist for it, and extra difficult to do something novel that could attract actual customers.
I’ve seen a college program that has students literally build a weather app. That’s a great project if you ask me. It involves an outside source of data, so you learn how to do that and make it efficient and resilient and respect bandwidth and limits and all that. The students also learn that websites are both front-end and back-end, and neither can fully compensate for weaknesses in the other.
A weather site is a pretty saturated space. But I believe in you, you can do it! There are other opportunities out there, though. Perhaps after you’ve got your feet wet with interacting with outside sources, something else will click for you that feels more personal.
I was thinking about this after reading Terence Eden’s Are there any open APIs left?. It was very interesting to me as I was vaguely under the impression that most of the really interesting cool open APIs didn’t really exist anymore. And, to be clear, “API” meaning general data access from some third-party source. A classic is that GitHub offers REST and GraphQL APIs for your use. Could you build something interesting with access to GitHub data? Or, perhaps a better question is could you build something interesting with access to GitHub data and whatever other outside source you can think of. Terence’s blog post lists some APIs still going strong.
Speaking of outside sources, let me leave you with a somewhat random collection of links to tools and ideas that maybe-just-maybe could be alchemized into an interesting website.
* Defuddle — “Get the main content of any page as Markdown.”
* Curate your own newspaper with RSS by Molly White
* Introducing the <geolocationHTML element on the Chrome blog
* A Gentle Introduction to CRDTs — “CRDTs are needed in situations where you want multiple processes to modify the same state without coordinating their writes to that state.”
🤔
Chris’ Corner: Makin’ Stuff
The most fun websites to build are websites that interact with outside sources. A user is an outside source! I’m obviously a bit partial to a website that asks a user to build stuff. That’s fun. But any outside source can be fun. Accepting uploads and doing something weird or useful with the data. Or using a third-party API for interesting data.
There is something magically fun about a weather app, for instance. You’re designing the site, but it’s designed around data you don’t control. Your job is to present the weather in a pleasing and useful way. That’s difficult to do even when you’re essentially copying patterns that already exist for it, and extra difficult to do something novel that could attract actual customers.
I’ve seen a college program that has students literally build a weather app. That’s a great project if you ask me. It involves an outside source of data, so you learn how to do that and make it efficient and resilient and respect bandwidth and limits and all that. The students also learn that websites are both front-end and back-end, and neither can fully compensate for weaknesses in the other.
A weather site is a pretty saturated space. But I believe in you, you can do it! There are other opportunities out there, though. Perhaps after you’ve got your feet wet with interacting with outside sources, something else will click for you that feels more personal.
I was thinking about this after reading Terence Eden’s Are there any open APIs left?. It was very interesting to me as I was vaguely under the impression that most of the really interesting cool open APIs didn’t really exist anymore. And, to be clear, “API” meaning general data access from some third-party source. A classic is that GitHub offers REST and GraphQL APIs for your use. Could you build something interesting with access to GitHub data? Or, perhaps a better question is could you build something interesting with access to GitHub data and whatever other outside source you can think of. Terence’s blog post lists some APIs still going strong.
Speaking of outside sources, let me leave you with a somewhat random collection of links to tools and ideas that maybe-just-maybe could be alchemized into an interesting website.
* Defuddle — “Get the main content of any page as Markdown.”
* Curate your own newspaper with RSS by Molly White
* Introducing the <geolocationHTML element on the Chrome blog
* A Gentle Introduction to CRDTs — “CRDTs are needed in situations where you want multiple processes to modify the same state without coordinating their writes to that state.”
🤔
CodePen
Chris’ Corner: Makin’ Stuff
The most fun websites to build are websites that interact with outside sources. A user is an outside source! I’m obviously a bit partial to a website that asks a user to build stuff. ThatR…
❤1
cybercode-portfolio-interactive-developer-ui.zip
131.5 KB
Have you tried using this code?
Which HTML feature do you consider the most revolutionary for the modern web?
Anonymous Poll
44%
Hyperlinks (<a>)
11%
Semantic Tags (<header>, <footer>)
0%
Forms and Inputs
22%
The <div> (Universal Box)
22%
Embedded Media (<video>, <img>)
Forwarded from Unversal
Which HTML tag is used to define an internal style sheet?
Anonymous Quiz
26%
<script>
17%
<css>
35%
<style>
22%
<link>
🤖 Build Android Apps with AI: Prompt to APK
Google AI Studio's "Android App Builder" uses the Antigravity agent to generate native Kotlin and Jetpack Compose code via natural language prompts. No complex setup needed.
🚀 Get your APK:
1️⃣ Open Google AI Studio > Android App Builder.
2️⃣ Enter your app description (e.g., "A clean habit tracker app with dark mode").
3️⃣ Click Code > Export > Download ZIP.
4️⃣ Extract and grab your .apk from the build output directory!
⚡ Bonus: Enable USB debugging, connect your device, and click "Install on Device" for instant testing!
@html_codee
Google AI Studio's "Android App Builder" uses the Antigravity agent to generate native Kotlin and Jetpack Compose code via natural language prompts. No complex setup needed.
🚀 Get your APK:
1️⃣ Open Google AI Studio > Android App Builder.
2️⃣ Enter your app description (e.g., "A clean habit tracker app with dark mode").
3️⃣ Click Code > Export > Download ZIP.
4️⃣ Extract and grab your .apk from the build output directory!
⚡ Bonus: Enable USB debugging, connect your device, and click "Install on Device" for instant testing!
@html_codee