From 348d78a0619d482cd0d2f62607c11c86d5f4d831 Mon Sep 17 00:00:00 2001 From: Abreham Gezahegn Date: Tue, 24 Jun 2025 15:09:10 +0300 Subject: [PATCH 1/2] fix: page title highlighting --- typescript/src/renderer/JsonDocRenderer.tsx | 3 +-- typescript/src/renderer/utils/highlightUtils.ts | 6 ++++-- typescript/tests/test-cases.md | 8 ++++++++ 3 files changed, 13 insertions(+), 4 deletions(-) create mode 100644 typescript/tests/test-cases.md diff --git a/typescript/src/renderer/JsonDocRenderer.tsx b/typescript/src/renderer/JsonDocRenderer.tsx index 6a8ed88..338e830 100644 --- a/typescript/src/renderer/JsonDocRenderer.tsx +++ b/typescript/src/renderer/JsonDocRenderer.tsx @@ -57,7 +57,7 @@ export const JsonDocRenderer = ({ )} {/* Page title */} {page.properties?.title && ( -

+

{page.properties.title.title?.[0]?.plain_text || "Untitled"}

)} @@ -106,7 +106,6 @@ export const JsonDocRenderer = ({
{viewJson ? (
-
{renderedContent}
) : ( diff --git a/typescript/src/renderer/utils/highlightUtils.ts b/typescript/src/renderer/utils/highlightUtils.ts index d1233bf..57f3c17 100644 --- a/typescript/src/renderer/utils/highlightUtils.ts +++ b/typescript/src/renderer/utils/highlightUtils.ts @@ -130,12 +130,14 @@ export function processBackref(backref: Backref): HTMLSpanElement | null { /** * Processes a backref that targets a page title */ -export function processPageTitleBackref(backref: Backref): HTMLSpanElement | null { +export function processPageTitleBackref( + backref: Backref +): HTMLSpanElement | null { // Find the specific page title element using data-page-id const pageTitleElement = document.querySelector( `[data-page-id="${backref.page_id}"]` ); - + if (!pageTitleElement) { return null; } diff --git a/typescript/tests/test-cases.md b/typescript/tests/test-cases.md new file mode 100644 index 0000000..8b87f91 --- /dev/null +++ b/typescript/tests/test-cases.md @@ -0,0 +1,8 @@ +- page title highlighting work +- block highlighting should work +- invalid backref shouldn't trigger highlighting +- incorrect block page number shouldn't break the rendering +- make sure all blocks are rendered +- make sure numbered lists are correctly labeled +- make sure bad page is gracefully handled +- invalid block type should show error block UI \ No newline at end of file From a778652abd1bfcea65ba9f14ef38e0c6e2854cbc Mon Sep 17 00:00:00 2001 From: Abreham Gezahegn Date: Tue, 24 Jun 2025 15:09:53 +0300 Subject: [PATCH 2/2] checkpoint --- examples/vite_basic/public/epic-web.json | 8601 ++++++++++++++++++++ examples/vite_basic/src/App.tsx | 44 +- examples/vite_basic/src/constants/files.ts | 61 +- 3 files changed, 8665 insertions(+), 41 deletions(-) create mode 100644 examples/vite_basic/public/epic-web.json diff --git a/examples/vite_basic/public/epic-web.json b/examples/vite_basic/public/epic-web.json new file mode 100644 index 0000000..4e0b11d --- /dev/null +++ b/examples/vite_basic/public/epic-web.json @@ -0,0 +1,8601 @@ +{ + "object": "page", + "id": "pg_01jygn5qmzexnvjrypnh41k8we", + "created_time": "2025-06-24T09:44:12.014249Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "properties": { + "title": { + "type": "title", + "title": [ + { + "type": "text", + "text": { + "content": "If you found this article helpful. You will love these ones as well." + }, + "annotations": {}, + "plain_text": "If you found this article helpful. You will love these ones as well." + } + ] + } + }, + "children": [ + { + "object": "block", + "id": "bk_01jygn5qn0f6zvbpbycpq34jcz", + "type": "image", + "created_time": "2025-06-24T09:44:12.017742Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 1 + } + }, + "image": { + "type": "external", + "external": { + "url": "textcortex://images/img_42tpmzcvvv9ftt4axsnp75rx69" + }, + "caption": [] + } + }, + { + "object": "block", + "id": "bk_01jygn5qn1e26aa9m4xcafp2sa", + "type": "image", + "created_time": "2025-06-24T09:44:12.017975Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 1 + } + }, + "image": { + "type": "external", + "external": { + "url": "textcortex://images/img_0wwk0jtxny94t9ewdsqq166j0v" + }, + "caption": [] + } + }, + { + "object": "block", + "id": "bk_01jygn5qn2f7asqezykjskm64g", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.018327Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 1 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Back to " + }, + "annotations": {}, + "plain_text": "Back to " + }, + { + "type": "text", + "text": { + "content": "overview", + "link": { + "url": "https://kentcdodds.com/blog" + } + }, + "annotations": {}, + "plain_text": "overview", + "href": "https://kentcdodds.com/blog" + }, + { + "type": "text", + "text": { + "content": " " + }, + "annotations": {}, + "plain_text": " " + }, + { + "type": "text", + "text": { + "content": "Login", + "link": { + "url": "https://kentcdodds.com/login" + } + }, + "annotations": {}, + "plain_text": "Login", + "href": "https://kentcdodds.com/login" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qn3eqystzs4rjqddh6c", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.018451Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 1 + } + }, + "paragraph": { + "rich_text": [] + } + }, + { + "object": "block", + "id": "bk_01jygn5qn4ea6tthexr53pe1pe", + "type": "heading_2", + "created_time": "2025-06-24T09:44:12.018546Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 1 + } + }, + "heading_2": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Launching Epic Web" + }, + "annotations": {}, + "plain_text": "Launching Epic Web" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qn5fm7rvbc2593jg7ke", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.018671Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 1 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "December 20th, 2023 — 13 min read" + }, + "annotations": {}, + "plain_text": "December 20th, 2023 — 13 min read" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qn6e9r80q7h4anhvsp2", + "type": "image", + "created_time": "2025-06-24T09:44:12.018775Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 1 + } + }, + "image": { + "type": "external", + "external": { + "url": "textcortex://images/img_042asb8ygw8gps56vyeaj0jwjk" + }, + "caption": [] + } + }, + { + "object": "block", + "id": "bk_01jygn5qn7ez4bycv2fg933a6d", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.019034Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 1 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "No translations available. Add " + }, + "annotations": {}, + "plain_text": "No translations available. Add " + }, + { + "type": "text", + "text": { + "content": "translation", + "link": { + "url": "https://github.com/kentcdodds/kentcdodds.com/blob/main/CONTRIBUTING.md#translation-contributions" + } + }, + "annotations": {}, + "plain_text": "translation", + "href": "https://github.com/kentcdodds/kentcdodds.com/blob/main/CONTRIBUTING.md#translation-contributions" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qn8f2htazabt1eabcr3", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.019220Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 1 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "This blog post is for those of you who have asked me what it was like to launch " + }, + "annotations": {}, + "plain_text": "This blog post is for those of you who have asked me what it was like to launch " + }, + { + "type": "text", + "text": { + "content": "EpicWeb.dev.", + "link": { + "url": "https://www.epicweb.dev/" + } + }, + "annotations": {}, + "plain_text": "EpicWeb.dev.", + "href": "https://www.epicweb.dev/" + }, + { + "type": "text", + "text": { + "content": " Epic Web is a platform for learning everything you" + }, + "annotations": {}, + "plain_text": " Epic Web is a platform for learning everything you" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qnafmh9c5nqvx86s760", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.024500Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 2 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "need to know to build full stack web applications the way I do based on my decade of experience building web apps of all kinds, sizes, and scales. It's terrific, you should check it out." + }, + "annotations": {}, + "plain_text": "need to know to build full stack web applications the way I do based on my decade of experience building web apps of all kinds, sizes, and scales. It's terrific, you should check it out." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qnbf0va3zswcq1mse2f", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.024731Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 2 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "I've wanted to do this for a long time. You may recall from the end of 2010s " + }, + "annotations": {}, + "plain_text": "I've wanted to do this for a long time. You may recall from the end of 2010s " + }, + { + "type": "text", + "text": { + "content": "Decade", + "link": { + "url": "https://kentcdodds.com/blog/2010s-decade-in-review" + } + }, + "annotations": {}, + "plain_text": "Decade", + "href": "https://kentcdodds.com/blog/2010s-decade-in-review" + }, + { + "type": "text", + "text": { + "content": " in Review, someone once tweeted at me:" + }, + "annotations": {}, + "plain_text": " in Review, someone once tweeted at me:" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qngezkvmfh614bw0h9k", + "type": "table", + "created_time": "2025-06-24T09:44:12.025966Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 2 + } + }, + "table": { + "has_column_header": false, + "has_row_header": false + }, + "children": [ + { + "object": "block", + "id": "bk_01jygn5qncfd9b5c78ezkqzm64", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.025022Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 2 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "Erin Fox" + }, + "annotations": {}, + "plain_text": "Erin Fox" + } + ], + [ + { + "type": "text", + "text": { + "content": "@erinfoox" + }, + "annotations": {}, + "plain_text": "@erinfoox" + } + ] + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qndervtry9pq7k806dm", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.025200Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 2 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "@kentcdodds I'm expecting you to announce your online Kent C. Dodds engineering bootcamp." + }, + "annotations": {}, + "plain_text": "@kentcdodds I'm expecting you to announce your online Kent C. Dodds engineering bootcamp." + } + ], + [] + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qnee0m8xsx2fx6xvhje", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.025381Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 2 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "7:19 PM (UTC) · January 2nd, 2020" + }, + "annotations": {}, + "plain_text": "7:19 PM (UTC) · January 2nd, 2020" + } + ], + [] + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qnffzp905vvy472gmhm", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.025795Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 2 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": " 1" + }, + "annotations": {}, + "plain_text": " 1" + } + ], + [ + { + "type": "text", + "text": { + "content": " 16 " + }, + "annotations": {}, + "plain_text": " 16 " + } + ] + ] + } + } + ] + }, + { + "object": "block", + "id": "bk_01jygn5qnhfsw9qbkmh0qxyx6p", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.026101Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 2 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "To which I replied:" + }, + "annotations": {}, + "plain_text": "To which I replied:" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qnqfeyrngr7m1vjcnrv", + "type": "table", + "created_time": "2025-06-24T09:44:12.027703Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 2 + } + }, + "table": { + "has_column_header": false, + "has_row_header": false + }, + "children": [ + { + "object": "block", + "id": "bk_01jygn5qnjewjvxztjgjz96g5w", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.026342Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 2 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "Kent C. Dodds" + }, + "annotations": {}, + "plain_text": "Kent C. Dodds" + } + ], + [], + [], + [] + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qnkfy5b5keed2r523vz", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.026529Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 2 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "@kentcdodds" + }, + "annotations": {}, + "plain_text": "@kentcdodds" + } + ], + [], + [], + [] + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qnme3qae08y1d361zj7", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.026756Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 2 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "@erinfoox" + }, + "annotations": {}, + "plain_text": "@erinfoox" + } + ], + [ + { + "type": "text", + "text": { + "content": "I'm planning on doing this, no joke." + }, + "annotations": {}, + "plain_text": "I'm planning on doing this, no joke." + } + ], + [], + [] + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qnne9h8g0rwnn1f8g76", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.026942Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 2 + } + }, + "table_row": { + "cells": [ + [], + [ + { + "type": "text", + "text": { + "content": "11:29 PM (UTC) · January 2nd, 2020" + }, + "annotations": {}, + "plain_text": "11:29 PM (UTC) · January 2nd, 2020" + } + ], + [], + [] + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qnpe1frhdpj51w1961e", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.027512Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 2 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": " 2" + }, + "annotations": {}, + "plain_text": " 2" + } + ], + [], + [ + { + "type": "text", + "text": { + "content": " 15" + }, + "annotations": {}, + "plain_text": " 15" + } + ], + [] + ] + } + } + ] + }, + { + "object": "block", + "id": "bk_01jygn5qnrfva831ym6xme38xe", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.027989Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 2 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "When I left " + }, + "annotations": {}, + "plain_text": "When I left " + }, + { + "type": "text", + "text": { + "content": "Remix", + "link": { + "url": "https://kentcdodds.com/blog/a-review-of-my-time-at-remix" + } + }, + "annotations": {}, + "plain_text": "Remix", + "href": "https://kentcdodds.com/blog/a-review-of-my-time-at-remix" + }, + { + "type": "text", + "text": { + "content": " in 2022, I did it in " + }, + "annotations": {}, + "plain_text": " in 2022, I did it in " + }, + { + "type": "text", + "text": { + "content": "pursuit", + "link": { + "url": "https://kentcdodds.com/blog/i-m-building-epicweb-dev" + } + }, + "annotations": {}, + "plain_text": "pursuit", + "href": "https://kentcdodds.com/blog/i-m-building-epicweb-dev" + }, + { + "type": "text", + "text": { + "content": " of this dream." + }, + "annotations": {}, + "plain_text": " of this dream." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qnseawtcygt252a35fg", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.028208Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 2 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "https://kentcdodds.com/blog/launching-epic-web 2/27 So by the time 2023 started, I had my eyes set on launching Epic " + }, + "annotations": {}, + "plain_text": "https://kentcdodds.com/blog/launching-epic-web 2/27 So by the time 2023 started, I had my eyes set on launching Epic " + }, + { + "type": "text", + "text": { + "content": "Web.", + "link": { + "url": "https://www.epicweb.dev/" + } + }, + "annotations": {}, + "plain_text": "Web.", + "href": "https://www.epicweb.dev/" + }, + { + "type": "text", + "text": { + "content": " My wife and I had decided to try for another child and I was committed" + }, + "annotations": {}, + "plain_text": " My wife and I had decided to try for another child and I was committed" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qnverhazwp8wnkjjb1f", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.032397Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 3 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "to launch Epic Web before the baby came." + }, + "annotations": {}, + "plain_text": "to launch Epic Web before the baby came." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qnwehd81a2meky0zxkh", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.032779Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 3 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "A big part of getting Epic Web launched was live streaming the process of building the ultimate app we'd be building as part of the workshops. That was " + }, + "annotations": {}, + "plain_text": "A big part of getting Epic Web launched was live streaming the process of building the ultimate app we'd be building as part of the workshops. That was " + }, + { + "type": "text", + "text": { + "content": "Rocket", + "link": { + "url": "https://github.com/epicweb-dev/rocket-rental" + } + }, + "annotations": {}, + "plain_text": "Rocket", + "href": "https://github.com/epicweb-dev/rocket-rental" + }, + { + "type": "text", + "text": { + "content": " Rental. You'll find an outrageous number of hours of live stream footage on my " + }, + "annotations": {}, + "plain_text": " Rental. You'll find an outrageous number of hours of live stream footage on my " + }, + { + "type": "text", + "text": { + "content": "YouTube", + "link": { + "url": "https://kcd.im/YouTube" + } + }, + "annotations": {}, + "plain_text": "YouTube", + "href": "https://kcd.im/YouTube" + }, + { + "type": "text", + "text": { + "content": " channel of the process of building that application as well as the " + }, + "annotations": {}, + "plain_text": " channel of the process of building that application as well as the " + }, + { + "type": "text", + "text": { + "content": "workshop", + "link": { + "url": "https://github.com/epicweb-dev/kcdshop" + } + }, + "annotations": {}, + "plain_text": "workshop", + "href": "https://github.com/epicweb-dev/kcdshop" + }, + { + "type": "text", + "text": { + "content": " app which is the application used to facilitate the learning experience for Epic Web." + }, + "annotations": {}, + "plain_text": " app which is the application used to facilitate the learning experience for Epic Web." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qnxek8vp79ahbbz7dc6", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.033051Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 3 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "In between snowboarding trips (the 2022/2023 winter season was a record breaking snow season in Utah), I ran workshops based on Rocket Rental. The Workshop App made for a great learning experience even though the size of Rocket Rental was pretty big. This is thanks to the playground, the diffs, and \"open file in my editor\" features. However, I did find that the size of the app was a bit overwhelming for learners despite this." + }, + "annotations": {}, + "plain_text": "In between snowboarding trips (the 2022/2023 winter season was a record breaking snow season in Utah), I ran workshops based on Rocket Rental. The Workshop App made for a great learning experience even though the size of Rocket Rental was pretty big. This is thanks to the playground, the diffs, and \"open file in my editor\" features. However, I did find that the size of the app was a bit overwhelming for learners despite this." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qnyeq4ajr9n0ns00f5n", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.033180Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 3 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Additionally, I realized that the \"target market\" of Epic Web was far too broad. This resulted in a couple workshops getting cancelled due to lack of sales (due to marketing problems)." + }, + "annotations": {}, + "plain_text": "Additionally, I realized that the \"target market\" of Epic Web was far too broad. This resulted in a couple workshops getting cancelled due to lack of sales (due to marketing problems)." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qnzfdzvwctgrmp8mkbt", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.033392Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 3 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "I did manage to publish a free " + }, + "annotations": {}, + "plain_text": "I did manage to publish a free " + }, + { + "type": "text", + "text": { + "content": "tutorial", + "link": { + "url": "https://www.epicweb.dev/tutorials/deploy-web-applications" + } + }, + "annotations": {}, + "plain_text": "tutorial", + "href": "https://www.epicweb.dev/tutorials/deploy-web-applications" + }, + { + "type": "text", + "text": { + "content": " about deploying multi-region applications and distributed SQLite databases all over the world. With that in addition to some articles, it felt great to get some content on the EpicWeb.dev domain and demonstrate I was a serious operation." + }, + "annotations": {}, + "plain_text": " about deploying multi-region applications and distributed SQLite databases all over the world. With that in addition to some articles, it felt great to get some content on the EpicWeb.dev domain and demonstrate I was a serious operation." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qp0e56rc9mew8dj0st9", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.033538Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 3 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Around this same time, I was invited by the Remix team to run Remix Conf 2023 (the best compliment someone can give you is to ask you to do something again!!). I told them that I wanted to speak this year and they said that was fine so I was trying to decide what my talk would be about." + }, + "annotations": {}, + "plain_text": "Around this same time, I was invited by the Remix team to run Remix Conf 2023 (the best compliment someone can give you is to ask you to do something again!!). I told them that I wanted to speak this year and they said that was fine so I was trying to decide what my talk would be about." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qp2f5mvn68pcex92ek0", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.035990Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 4 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Around all of this I started feeling kind of lost. I honestly felt lost about what to do with Epic Web. Less than a week before Remix Conf I tweeted this:" + }, + "annotations": {}, + "plain_text": "Around all of this I started feeling kind of lost. I honestly felt lost about what to do with Epic Web. Less than a week before Remix Conf I tweeted this:" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qp3fjet50f9nf2hkcdr", + "type": "image", + "created_time": "2025-06-24T09:44:12.036125Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 4 + } + }, + "image": { + "type": "external", + "external": { + "url": "textcortex://images/img_6jg5j6pk488fnb5wvscgrmbznx" + }, + "caption": [] + } + }, + { + "object": "block", + "id": "bk_01jygn5qp4ej3b5q4zpbn9zvb0", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.036424Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 4 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Ultimately, Matt " + }, + "annotations": {}, + "plain_text": "Ultimately, Matt " + }, + { + "type": "text", + "text": { + "content": "Pocock", + "link": { + "url": "https://twitter.com/mattpocockuk" + } + }, + "annotations": {}, + "plain_text": "Pocock", + "href": "https://twitter.com/mattpocockuk" + }, + { + "type": "text", + "text": { + "content": " replied with a brilliant summary of my problem:" + }, + "annotations": {}, + "plain_text": " replied with a brilliant summary of my problem:" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qp5es5s7wg53sas7g1m", + "type": "image", + "created_time": "2025-06-24T09:44:12.036546Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 4 + } + }, + "image": { + "type": "external", + "external": { + "url": "textcortex://images/img_2ya81kt6np8fsv08q5nvzvdzqk" + }, + "caption": [] + } + }, + { + "object": "block", + "id": "bk_01jygn5qp7eyet5nh9f3ej14s5", + "type": "image", + "created_time": "2025-06-24T09:44:12.039150Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 5 + } + }, + "image": { + "type": "external", + "external": { + "url": "textcortex://images/img_50pnchrp9r9mb95fzh5v65g9es" + }, + "caption": [] + } + }, + { + "object": "block", + "id": "bk_01jygn5qp8egxv2kybqxd8k1j8", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.039411Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 5 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "And then, in a stroke of brilliance, Matt said:" + }, + "annotations": {}, + "plain_text": "And then, in a stroke of brilliance, Matt said:" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qpheme8szye71k71paq", + "type": "table", + "created_time": "2025-06-24T09:44:12.041178Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 5 + } + }, + "table": { + "has_column_header": false, + "has_row_header": false + }, + "children": [ + { + "object": "block", + "id": "bk_01jygn5qp9fp6vryx5v82jbqgv", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.039707Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 5 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "Matt Pocock" + }, + "annotations": {}, + "plain_text": "Matt Pocock" + } + ], + [ + { + "type": "text", + "text": { + "content": "@mattpocockuk" + }, + "annotations": {}, + "plain_text": "@mattpocockuk" + } + ] + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qpaeazr6qf44cnegwxa", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.039944Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 5 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "@kentcdodds @tammergard" + }, + "annotations": {}, + "plain_text": "@kentcdodds @tammergard" + } + ], + [ + { + "type": "text", + "text": { + "content": "☝️" + }, + "annotations": {}, + "plain_text": "☝️" + } + ] + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qpbe4tvvs1q2v3w3xet", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.040121Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 5 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "If you branded it the 'Kent Stack' and leaned in to it being _your_ method for building web apps, I could see people really going for that." + }, + "annotations": {}, + "plain_text": "If you branded it the 'Kent Stack' and leaned in to it being _your_ method for building web apps, I could see people really going for that." + } + ], + [] + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qpcebh96ndk9e1620h6", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.040295Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 5 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "'We want to use the Kent Stack'" + }, + "annotations": {}, + "plain_text": "'We want to use the Kent Stack'" + } + ], + [] + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qpdfdbtq2x4wd668cpx", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.040464Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 5 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "'We want to learn how to build PESPA'S'" + }, + "annotations": {}, + "plain_text": "'We want to learn how to build PESPA'S'" + } + ], + [] + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qpeedwtvdmh5nxsx48x", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.040651Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 5 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "2:23 PM (UTC) · May 4th, 2023" + }, + "annotations": {}, + "plain_text": "2:23 PM (UTC) · May 4th, 2023" + } + ], + [] + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qpfe3kaphrj1z2wjpg9", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.040831Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 5 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "1" + }, + "annotations": {}, + "plain_text": "1" + } + ], + [] + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qpgf6jr08ww0pzm0z21", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.041011Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 5 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "5" + }, + "annotations": {}, + "plain_text": "5" + } + ], + [] + ] + } + } + ] + }, + { + "object": "block", + "id": "bk_01jygn5qpjew0veynhxrx2k8ag", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.041356Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 5 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "That was the moment I realized that Epic Web wasn't me teaching you everything I know about full stack web development. It's me giving you" + }, + "annotations": {}, + "plain_text": "That was the moment I realized that Epic Web wasn't me teaching you everything I know about full stack web development. It's me giving you" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qpme48tgcd35mnvttry", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.044394Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 6 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "a proven path to building excellent full stack applications." + }, + "annotations": {}, + "plain_text": "a proven path to building excellent full stack applications." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qpne0wsrpnvggrpsw8y", + "type": "heading_3", + "created_time": "2025-06-24T09:44:12.044537Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 6 + } + }, + "heading_3": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "The opinions are almost as valuable as the instruction." + }, + "annotations": {}, + "plain_text": "The opinions are almost as valuable as the instruction." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qppe6qbrc6r5byh04h6", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.044893Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 6 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "So I stripped down Rocket Rental to a much simpler note taking application and introduced that to the world as The Epic " + }, + "annotations": {}, + "plain_text": "So I stripped down Rocket Rental to a much simpler note taking application and introduced that to the world as The Epic " + }, + { + "type": "text", + "text": { + "content": "Stack", + "link": { + "url": "https://www.epicweb.dev/epic-stack" + } + }, + "annotations": {}, + "plain_text": "Stack", + "href": "https://www.epicweb.dev/epic-stack" + }, + { + "type": "text", + "text": { + "content": " in my Remix Conf " + }, + "annotations": {}, + "plain_text": " in my Remix Conf " + }, + { + "type": "text", + "text": { + "content": "Keynote", + "link": { + "url": "https://www.youtube.com/watch?v=yMK5SVRASxM&list=PLV5CVI1eNcJgNqzNwcs4UKrlJdhfDjshf" + } + }, + "annotations": {}, + "plain_text": "Keynote", + "href": "https://www.youtube.com/watch?v=yMK5SVRASxM&list=PLV5CVI1eNcJgNqzNwcs4UKrlJdhfDjshf" + }, + { + "type": "text", + "text": { + "content": " the following week. (Yes, it was stressful to do this while also running a conference, but Zero Slope " + }, + "annotations": {}, + "plain_text": " the following week. (Yes, it was stressful to do this while also running a conference, but Zero Slope " + }, + { + "type": "text", + "text": { + "content": "Events", + "link": { + "url": "https://zeroslopeevents.com/" + } + }, + "annotations": {}, + "plain_text": "Events", + "href": "https://zeroslopeevents.com/" + }, + { + "type": "text", + "text": { + "content": " makes running a conference much less difficult )." + }, + "annotations": {}, + "plain_text": " makes running a conference much less difficult )." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qpqe6tv03p3s3j3afd5", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.045050Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 6 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "It was a smashing success. Now there are a bunch of people building applications based on or referencing the Epic Stack and getting paid to do it. Super gratifying." + }, + "annotations": {}, + "plain_text": "It was a smashing success. Now there are a bunch of people building applications based on or referencing the Epic Stack and getting paid to do it. Super gratifying." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qprf68tyk8jtm5e8dyz", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.045200Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 6 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "And it accomplished the original goal of helping me hone my message. Epic Web is where I teach you how to build full stack applications with the Epic Stack. So all the material morphed into us building the Epic Stack together. I came up with great strategies to keep things going (to avoid unnecessary repetition) so by the end of the series of workshops, you've built all the most important pieces of the Epic Stack which you can then use to build whatever you'd like." + }, + "annotations": {}, + "plain_text": "And it accomplished the original goal of helping me hone my message. Epic Web is where I teach you how to build full stack applications with the Epic Stack. So all the material morphed into us building the Epic Stack together. I came up with great strategies to keep things going (to avoid unnecessary repetition) so by the end of the series of workshops, you've built all the most important pieces of the Epic Stack which you can then use to build whatever you'd like." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qpseb5910zatkkd0azf", + "type": "heading_3", + "created_time": "2025-06-24T09:44:12.045418Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 6 + } + }, + "heading_3": { + "rich_text": [ + { + "type": "text", + "text": { + "content": " " + }, + "annotations": {}, + "plain_text": " " + }, + { + "type": "text", + "text": { + "content": "Workshop", + "link": { + "url": "#page-5-0" + } + }, + "annotations": {}, + "plain_text": "Workshop", + "href": "#page-5-0" + }, + { + "type": "text", + "text": { + "content": " Chaos" + }, + "annotations": {}, + "plain_text": " Chaos" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qpte97txs97s06fc28m", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.045573Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 6 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "By this time, my wife and I had a due date for our 5th child. This gave me a deadline for the launch of Epic Web. I had a lot of workshops to prepare. And I needed to deliver those workshops to real people before I got them recorded and made available as self-paced workshops." + }, + "annotations": {}, + "plain_text": "By this time, my wife and I had a due date for our 5th child. This gave me a deadline for the launch of Epic Web. I had a lot of workshops to prepare. And I needed to deliver those workshops to real people before I got them recorded and made available as self-paced workshops." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qpwexk8v7m6k46ydg8p", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.048177Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 7 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "So I put together a schedule. I needed to get all the workshops delivered to real people by mid-August so I could spend the second half of August and first half of September recording the videos so they could be edited, transcribed, and published by October. At the time I was planning this, it was mid-May. I figured I had plenty of time." + }, + "annotations": {}, + "plain_text": "So I put together a schedule. I needed to get all the workshops delivered to real people by mid-August so I could spend the second half of August and first half of September recording the videos so they could be edited, transcribed, and published by October. At the time I was planning this, it was mid-May. I figured I had plenty of time." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qpxerpt66rbcysf7792", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.048321Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 7 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "I did not." + }, + "annotations": {}, + "plain_text": "I did not." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qpye2f9m4hh2dj6qwc6", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.048472Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 7 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "I already had a two day workshop on \"Full Stack Foundations\" and one day on \"Testing Web Apps\" based on Rocket Rental. I was planning on adding workshops on Web Forms, Data Modeling, and Web Authentication. I figured updating the existing workshops and creating the new workshops wouldn't be an enormous task because I knew the end state was just the Epic Stack so there weren't really unknowns." + }, + "annotations": {}, + "plain_text": "I already had a two day workshop on \"Full Stack Foundations\" and one day on \"Testing Web Apps\" based on Rocket Rental. I was planning on adding workshops on Web Forms, Data Modeling, and Web Authentication. I figured updating the existing workshops and creating the new workshops wouldn't be an enormous task because I knew the end state was just the Epic Stack so there weren't really unknowns." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qpzfqxsz625nn5er5d1", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.048607Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 7 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "That all was true. There really weren't many unknowns, most of the Epic Stack remained the same through the workshop development. And I'm quite fast at putting workshops together with the experience I've had over the years. And the workshop app made me even more productive at putting workshops together." + }, + "annotations": {}, + "plain_text": "That all was true. There really weren't many unknowns, most of the Epic Stack remained the same through the workshop development. And I'm quite fast at putting workshops together with the experience I've had over the years. And the workshop app made me even more productive at putting workshops together." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qq0fgqb9bh3w9wtx0md", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.048718Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 7 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "But still. I vastly underestimated the amount of work this would take..." + }, + "annotations": {}, + "plain_text": "But still. I vastly underestimated the amount of work this would take..." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qq1fbnswab8dq4jg6e2", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.048855Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 7 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "So I get to mid-July and I'm still not even finished getting the foundations workshop completed. But I didn't really have much choice (and I still naively felt like I should be able to manage this without trouble ). So I open up tickets for \"The Full Stack Workshop Series (Vol 1) .\" It involved 8 days worth of workshops. Two workshops a week for 4 weeks straight." + }, + "annotations": {}, + "plain_text": "So I get to mid-July and I'm still not even finished getting the foundations workshop completed. But I didn't really have much choice (and I still naively felt like I should be able to manage this without trouble ). So I open up tickets for \"The Full Stack Workshop Series (Vol 1) .\" It involved 8 days worth of workshops. Two workshops a week for 4 weeks straight." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qq2e0sbcva4javgqjv1", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.048971Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 7 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "We sold out 30 seats very quickly. So I decided to open it up to 30 more and those sold out before the early bird time was finished." + }, + "annotations": {}, + "plain_text": "We sold out 30 seats very quickly. So I decided to open it up to 30 more and those sold out before the early bird time was finished." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qq4e2dbhdjg7yt75hbf", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.050748Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 8 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "This was extremely encouraging! So I got back to work, but started to feel a little nervous about the time. Now that I had people's money, I knew I really had to deliver the best workshop experience possible." + }, + "annotations": {}, + "plain_text": "This was extremely encouraging! So I got back to work, but started to feel a little nervous about the time. Now that I had people's money, I knew I really had to deliver the best workshop experience possible." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qq5ehnvpfg5pvz17h3s", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.050897Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 8 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "I managed to finish the first two days worth of workshops and the brand new forms workshop the week before the series was scheduled. So I was able to start working on the data workshop." + }, + "annotations": {}, + "plain_text": "I managed to finish the first two days worth of workshops and the brand new forms workshop the week before the series was scheduled. So I was able to start working on the data workshop." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qq6e1zscxa6yqqkdzga", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.051035Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 8 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "So, imagine this... I have a brand new workshop not yet created that I'm scheduled to deliver in a week and two days. And on top of that, three of those days will be spent delivering other workshops. Oh, and I have more workshops to create and deliver after that." + }, + "annotations": {}, + "plain_text": "So, imagine this... I have a brand new workshop not yet created that I'm scheduled to deliver in a week and two days. And on top of that, three of those days will be spent delivering other workshops. Oh, and I have more workshops to create and deliver after that." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qq7f3v97j7dmkrfa19d", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.051165Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 8 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "It was at this point I realized how much trouble I was in and started pulling 16-18 hour days, 6 days a week, for 5 weeks. This was the most stressful work of my life. This is a good visual of how I felt during this time:" + }, + "annotations": {}, + "plain_text": "It was at this point I realized how much trouble I was in and started pulling 16-18 hour days, 6 days a week, for 5 weeks. This was the most stressful work of my life. This is a good visual of how I felt during this time:" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qq8e1gsprgvk930spg1", + "type": "image", + "created_time": "2025-06-24T09:44:12.051298Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 8 + } + }, + "image": { + "type": "external", + "external": { + "url": "textcortex://images/img_4yjhnqcyt398ctpqt9qx72r3my" + }, + "caption": [] + } + }, + { + "object": "block", + "id": "bk_01jygn5qqafg385fdejk4r3vdy", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.053988Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 9 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Despite this stress, I did an extremely good job getting good sleep. And my wife was a superhero and took care of everything else. I'm so grateful for her. She put the kids to bed herself, got them ready for school, and did all the housework and cooking. And she was in her second trimester of pregnancy!! She's amazing." + }, + "annotations": {}, + "plain_text": "Despite this stress, I did an extremely good job getting good sleep. And my wife was a superhero and took care of everything else. I'm so grateful for her. She put the kids to bed herself, got them ready for school, and did all the housework and cooking. And she was in her second trimester of pregnancy!! She's amazing." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qqbfm3twmwbxat0wywz", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.054137Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 9 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "If you're curious, here's are links to the work I did in each of the workshop repos from the time I started them to the time I delivered them:" + }, + "annotations": {}, + "plain_text": "If you're curious, here's are links to the work I did in each of the workshop repos from the time I started them to the time I delivered them:" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qqheh9vpz0mppffjv61", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.055314Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": true, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 9 + } + }, + "paragraph": { + "rich_text": [] + }, + "children": [ + { + "object": "block", + "id": "bk_01jygn5qqcfk99kafkev6kn1b5", + "type": "bulleted_list_item", + "created_time": "2025-06-24T09:44:12.054395Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 9 + } + }, + "bulleted_list_item": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Full Stack " + }, + "annotations": {}, + "plain_text": "Full Stack " + }, + { + "type": "text", + "text": { + "content": "Foundations", + "link": { + "url": "https://github.com/epicweb-dev/full-stack-foundations/compare/fbed62dd50c6204135f2c08d9d73fc241865ee2e...b3cf9a01fa58ba24f7dc7cf77dfefe15ff71f43d" + } + }, + "annotations": {}, + "plain_text": "Foundations", + "href": "https://github.com/epicweb-dev/full-stack-foundations/compare/fbed62dd50c6204135f2c08d9d73fc241865ee2e...b3cf9a01fa58ba24f7dc7cf77dfefe15ff71f43d" + }, + { + "type": "text", + "text": { + "content": " (84 commits on 19 days)" + }, + "annotations": {}, + "plain_text": " (84 commits on 19 days)" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qqde5hrppqsffghrfw0", + "type": "bulleted_list_item", + "created_time": "2025-06-24T09:44:12.054602Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 9 + } + }, + "bulleted_list_item": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Web " + }, + "annotations": {}, + "plain_text": "Web " + }, + { + "type": "text", + "text": { + "content": "Forms", + "link": { + "url": "https://github.com/epicweb-dev/web-forms/compare/3ca9eea053149049b9d6f31bfcc118a19cce6776...f0370e988b42e669f10b5cc2b714d72cc7c6bf3a" + } + }, + "annotations": {}, + "plain_text": "Forms", + "href": "https://github.com/epicweb-dev/web-forms/compare/3ca9eea053149049b9d6f31bfcc118a19cce6776...f0370e988b42e669f10b5cc2b714d72cc7c6bf3a" + }, + { + "type": "text", + "text": { + "content": " (38 commits on 12 days)" + }, + "annotations": {}, + "plain_text": " (38 commits on 12 days)" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qqef18a00s1908wf760", + "type": "bulleted_list_item", + "created_time": "2025-06-24T09:44:12.054798Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 9 + } + }, + "bulleted_list_item": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Data " + }, + "annotations": {}, + "plain_text": "Data " + }, + { + "type": "text", + "text": { + "content": "Modeling", + "link": { + "url": "https://github.com/epicweb-dev/data-modeling/compare/f66a515f7428bbc16410bdb4faef3a5001ebbb3b...5f444600736b9955cc753b2db9c17bd4c4902a34" + } + }, + "annotations": {}, + "plain_text": "Modeling", + "href": "https://github.com/epicweb-dev/data-modeling/compare/f66a515f7428bbc16410bdb4faef3a5001ebbb3b...5f444600736b9955cc753b2db9c17bd4c4902a34" + }, + { + "type": "text", + "text": { + "content": " (37 commits on 8 days)" + }, + "annotations": {}, + "plain_text": " (37 commits on 8 days)" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qqff0pafh0hagxqw8gb", + "type": "bulleted_list_item", + "created_time": "2025-06-24T09:44:12.054990Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 9 + } + }, + "bulleted_list_item": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Web " + }, + "annotations": {}, + "plain_text": "Web " + }, + { + "type": "text", + "text": { + "content": "Auth", + "link": { + "url": "https://github.com/epicweb-dev/web-auth/compare/9a5a669161fa353808dcd7e58add01289c6adea5...f3bd28ccfae6892671fdf44ec48e5b333d559a1c" + } + }, + "annotations": {}, + "plain_text": "Auth", + "href": "https://github.com/epicweb-dev/web-auth/compare/9a5a669161fa353808dcd7e58add01289c6adea5...f3bd28ccfae6892671fdf44ec48e5b333d559a1c" + }, + { + "type": "text", + "text": { + "content": " (66 commits on 9 days)" + }, + "annotations": {}, + "plain_text": " (66 commits on 9 days)" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qqgfxrb5rta2xp37mty", + "type": "bulleted_list_item", + "created_time": "2025-06-24T09:44:12.055180Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 9 + } + }, + "bulleted_list_item": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Full Stack " + }, + "annotations": {}, + "plain_text": "Full Stack " + }, + { + "type": "text", + "text": { + "content": "Testing", + "link": { + "url": "https://github.com/epicweb-dev/full-stack-testing/compare/2d4fb64a093ff743c7207e60ed5b843bb293514c...b6024a15f759355c9948d9c399f5fb8da3f3b285" + } + }, + "annotations": {}, + "plain_text": "Testing", + "href": "https://github.com/epicweb-dev/full-stack-testing/compare/2d4fb64a093ff743c7207e60ed5b843bb293514c...b6024a15f759355c9948d9c399f5fb8da3f3b285" + }, + { + "type": "text", + "text": { + "content": " (71 commits on 8 days)" + }, + "annotations": {}, + "plain_text": " (71 commits on 8 days)" + } + ] + } + } + ] + }, + { + "object": "block", + "id": "bk_01jygn5qqjfsjte4nf02ksgpjg", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.055531Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 9 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Oh, and during that time I was also still working on the " + }, + "annotations": {}, + "plain_text": "Oh, and during that time I was also still working on the " + }, + { + "type": "text", + "text": { + "content": "workshop", + "link": { + "url": "https://github.com/epicweb-dev/kcdshop/compare/b3c29a4b1c67178f2bad8638950da2154989f274...38ef0ecfbe6899a8ceaa3ed325ac4c1a20de6081" + } + }, + "annotations": {}, + "plain_text": "workshop", + "href": "https://github.com/epicweb-dev/kcdshop/compare/b3c29a4b1c67178f2bad8638950da2154989f274...38ef0ecfbe6899a8ceaa3ed325ac4c1a20de6081" + }, + { + "type": "text", + "text": { + "content": " app (105 commits on 30 days)." + }, + "annotations": {}, + "plain_text": " app (105 commits on 30 days)." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qqkf2ysvs1a1f5mvevh", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.055804Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 9 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "I only feel comfortable sharing this now because the responses from the workshop attendees was phenomenal. I think some of them suspected I was just barely keeping ahead of our progress, but they were all very happy with the experience. Several of them appear on " + }, + "annotations": {}, + "plain_text": "I only feel comfortable sharing this now because the responses from the workshop attendees was phenomenal. I think some of them suspected I was just barely keeping ahead of our progress, but they were all very happy with the experience. Several of them appear on " + }, + { + "type": "text", + "text": { + "content": "my", + "link": { + "url": "https://kentcdodds.com/testimonials" + } + }, + "annotations": {}, + "plain_text": "my", + "href": "https://kentcdodds.com/testimonials" + }, + { + "type": "text", + "text": { + "content": " " + }, + "annotations": {}, + "plain_text": " " + }, + { + "type": "text", + "text": { + "content": "testimonials", + "link": { + "url": "https://kentcdodds.com/testimonials" + } + }, + "annotations": {}, + "plain_text": "testimonials", + "href": "https://kentcdodds.com/testimonials" + }, + { + "type": "text", + "text": { + "content": " page." + }, + "annotations": {}, + "plain_text": " page." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qqmfh880q0qfe67yagk", + "type": "heading_3", + "created_time": "2025-06-24T09:44:12.056030Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 9 + } + }, + "heading_3": { + "rich_text": [ + { + "type": "text", + "text": { + "content": " Recording the " + }, + "annotations": {}, + "plain_text": " Recording the " + }, + { + "type": "text", + "text": { + "content": "workshops", + "link": { + "url": "#page-8-0" + } + }, + "annotations": {}, + "plain_text": "workshops", + "href": "#page-8-0" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qqnfn7v54xd3545996v", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.056156Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 9 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Unfortunately, my rush to get things launched before the baby arrived meant that I still had a lot of work to do. As it usually happens, I realized" + }, + "annotations": {}, + "plain_text": "Unfortunately, my rush to get things launched before the baby arrived meant that I still had a lot of work to do. As it usually happens, I realized" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qqqfs6swtawcq26mqvk", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.060899Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 10 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "that I had much more than 8 days worth of workshop material. I split several of the workshops and now we're at more like 16 days worth of material in these workshops." + }, + "annotations": {}, + "plain_text": "that I had much more than 8 days worth of workshop material. I split several of the workshops and now we're at more like 16 days worth of material in these workshops." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qqrfr7b1n56f3wf8va5", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.061145Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 10 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "So it's August 11th, I'm finished with delivering the workshops. I kept my commitment to the attendees who paid. But, I had 16 days worth of workshop material (some of which wasn't completely finished) which needed to be recorded with enough time for the " + }, + "annotations": {}, + "plain_text": "So it's August 11th, I'm finished with delivering the workshops. I kept my commitment to the attendees who paid. But, I had 16 days worth of workshop material (some of which wasn't completely finished) which needed to be recorded with enough time for the " + }, + { + "type": "text", + "text": { + "content": "team", + "link": { + "url": "https://www.epicweb.dev/credits" + } + }, + "annotations": {}, + "plain_text": "team", + "href": "https://www.epicweb.dev/credits" + }, + { + "type": "text", + "text": { + "content": " to get the videos edited, transcribed, and published by my birthday, October 18th. That's September 14th." + }, + "annotations": {}, + "plain_text": " to get the videos edited, transcribed, and published by my birthday, October 18th. That's September 14th." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qqsfmdsa80r9r5hz24q", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.061356Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 10 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Oh, and I had React Rally to speak at, and 25 bonus " + }, + "annotations": {}, + "plain_text": "Oh, and I had React Rally to speak at, and 25 bonus " + }, + { + "type": "text", + "text": { + "content": "interviews", + "link": { + "url": "https://www.epicweb.dev/bonuses/interviews-with-experts" + } + }, + "annotations": {}, + "plain_text": "interviews", + "href": "https://www.epicweb.dev/bonuses/interviews-with-experts" + }, + { + "type": "text", + "text": { + "content": " to record." + }, + "annotations": {}, + "plain_text": " to record." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qqtf0vr05sjxkx984es", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.061587Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 10 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "So that's 27 days (excluding Sundays and React Rally) to finish the workshops, get things recorded, and experts interviewed. Oh yeah, and my kids make enough noise that I can only record when they're in school or asleep ." + }, + "annotations": {}, + "plain_text": "So that's 27 days (excluding Sundays and React Rally) to finish the workshops, get things recorded, and experts interviewed. Oh yeah, and my kids make enough noise that I can only record when they're in school or asleep ." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qqvejjsa0dskktgsn4r", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.061707Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 10 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Luckily, my preparation and experience recording instructional videos paid off. I managed to have some extremely productive days:" + }, + "annotations": {}, + "plain_text": "Luckily, my preparation and experience recording instructional videos paid off. I managed to have some extremely productive days:" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qqyea085wa0e9ns60gb", + "type": "table", + "created_time": "2025-06-24T09:44:12.062332Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 10 + } + }, + "table": { + "has_column_header": false, + "has_row_header": false + }, + "children": [ + { + "object": "block", + "id": "bk_01jygn5qqwest9fhh3pma63aee", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.061971Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 10 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "Kent C. Dodds" + }, + "annotations": {}, + "plain_text": "Kent C. Dodds" + } + ], + [ + { + "type": "text", + "text": { + "content": "🌌" + }, + "annotations": {}, + "plain_text": "🌌" + } + ] + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qqxegysg3ctv066h1rx", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.062161Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 10 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "@kentcdodds" + }, + "annotations": {}, + "plain_text": "@kentcdodds" + } + ], + [] + ] + } + } + ] + }, + { + "object": "block", + "id": "bk_01jygn5qqzfnaa2ym6hmc1g238", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.062464Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 10 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Today I got 30 more videos recorded before the kids got home from school 💪" + }, + "annotations": {}, + "plain_text": "Today I got 30 more videos recorded before the kids got home from school 💪" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qr1f6dtzfc7xsw9ge17", + "type": "table", + "created_time": "2025-06-24T09:44:12.062834Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 10 + } + }, + "table": { + "has_column_header": false, + "has_row_header": false + }, + "children": [ + { + "object": "block", + "id": "bk_01jygn5qr0f8ya5n6ypknj8e58", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.062682Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 10 + } + }, + "table_row": { + "cells": [ + [], + [ + { + "type": "text", + "text": { + "content": "8:59 PM (UTC) · August 24th, 2023" + }, + "annotations": {}, + "plain_text": "8:59 PM (UTC) · August 24th, 2023" + } + ] + ] + } + } + ] + }, + { + "object": "block", + "id": "bk_01jygn5qr3e36azckte1vd3ty2", + "type": "table", + "created_time": "2025-06-24T09:44:12.063343Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 10 + } + }, + "table": { + "has_column_header": false, + "has_row_header": false + }, + "children": [ + { + "object": "block", + "id": "bk_01jygn5qr2e9ev6f5enb15x62x", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.063139Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 10 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "12" + }, + "annotations": {}, + "plain_text": "12" + } + ], + [], + [ + { + "type": "text", + "text": { + "content": "74" + }, + "annotations": {}, + "plain_text": "74" + } + ], + [] + ] + } + } + ] + }, + { + "object": "block", + "id": "bk_01jygn5qr5e3bs67jj509jqm4m", + "type": "image", + "created_time": "2025-06-24T09:44:12.066231Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 11 + } + }, + "image": { + "type": "external", + "external": { + "url": "textcortex://images/img_7r9m7zewew9548x8mr57k29972" + }, + "caption": [ + { + "type": "text", + "text": { + "content": "Image /page/10/Picture/2 description: This image shows a tweet by Kent C. Dodds (@kentcdodds) with the text \"New record! 44 videos recorded before the kids got home from school\". The tweet also mentions recording videos about database modeling and feeling great about how it's going. The tweet includes a link to \"Ship Modern Full-Stack Web Applications\" on www.epicweb.dev. The tweet was posted on August 29th, 2023, at 9:07 PM (UTC) and has 4 retweets and 81 likes." + }, + "annotations": {}, + "plain_text": "Image /page/10/Picture/2 description: This image shows a tweet by Kent C. Dodds (@kentcdodds) with the text \"New record! 44 videos recorded before the kids got home from school\". The tweet also mentions recording videos about database modeling and feeling great about how it's going. The tweet includes a link to \"Ship Modern Full-Stack Web Applications\" on www.epicweb.dev. The tweet was posted on August 29th, 2023, at 9:07 PM (UTC) and has 4 retweets and 81 likes." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qr7e9ksthf4a0mjbk9y", + "type": "image", + "created_time": "2025-06-24T09:44:12.066642Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 11 + } + }, + "image": { + "type": "external", + "external": { + "url": "textcortex://images/img_43qz4k4w0b9j2rdsejgh4ma6wp" + }, + "caption": [ + { + "type": "text", + "text": { + "content": "Image /page/10/Picture/3 description: The image shows a tweet from Kent C. Dodds (@kentcdodds). The tweet says, \"I finished recording the Data Modeling videos today!\" The tweet also includes a profile picture of Kent C. Dodds." + }, + "annotations": {}, + "plain_text": "Image /page/10/Picture/3 description: The image shows a tweet from Kent C. Dodds (@kentcdodds). The tweet says, \"I finished recording the Data Modeling videos today!\" The tweet also includes a profile picture of Kent C. Dodds." + } + ] + } + }, + { + "object": "block", + "id": "4407a4aa-4b63-4f75-8472-e4d349501005", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.073764Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 12 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "64 videos all about properly modeling your data and optimizing your database for a full stack application " + }, + "annotations": {}, + "plain_text": "64 videos all about properly modeling your data and optimizing your database for a full stack application " + } + ] + } + }, + { + "object": "block", + "id": "79d47642-9670-4930-925a-63f09defe1b7", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.073797Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 12 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "🔥" + }, + "annotations": {}, + "plain_text": "🔥" + } + ] + } + }, + { + "object": "block", + "id": "2fb2ecee-9341-4b0b-a4ba-395aa010250b", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.073828Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 12 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Next up: Web Auth " + }, + "annotations": {}, + "plain_text": "Next up: Web Auth " + } + ] + } + }, + { + "object": "block", + "id": "b1711999-021e-4947-a307-46a3e1fa6fbf", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.073854Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 12 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "🔒" + }, + "annotations": {}, + "plain_text": "🔒" + } + ] + } + }, + { + "object": "block", + "id": "86524ec7-22ca-4434-8eec-82f794bba402", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.073883Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 12 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "7:04 PM (UTC) · August 30th, 2023" + }, + "annotations": {}, + "plain_text": "7:04 PM (UTC) · August 30th, 2023" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qrbe9vs90b5b86exxvm", + "type": "table", + "created_time": "2025-06-24T09:44:12.071063Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 12 + } + }, + "table": { + "has_column_header": false, + "has_row_header": false + }, + "children": [ + { + "object": "block", + "id": "bk_01jygn5qrafxeb7e2f0p3cvb1c", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.070771Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 12 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "💬 11" + }, + "annotations": {}, + "plain_text": "💬 11" + }, + { + "type": "text", + "text": { + "content": "💬 11" + }, + "annotations": {}, + "plain_text": "💬 11" + } + ], + [ + { + "type": "text", + "text": { + "content": "❤️ 315" + }, + "annotations": {}, + "plain_text": "❤️ 315" + }, + { + "type": "text", + "text": { + "content": "❤️ 315" + }, + "annotations": {}, + "plain_text": "❤️ 315" + } + ], + [ + { + "type": "text", + "text": { + "content": "🔁" + }, + "annotations": {}, + "plain_text": "🔁" + } + ] + ] + } + } + ] + }, + { + "object": "block", + "id": "bk_01jygn5qrge1bvx7ajftqg2bd8", + "type": "table", + "created_time": "2025-06-24T09:44:12.073308Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 12 + } + }, + "table": { + "has_column_header": true, + "has_row_header": false + }, + "children": [ + { + "object": "block", + "id": "bk_01jygn5qrcfv4a3jt29xgmnp6h", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.071598Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 12 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "Kent" + }, + "annotations": {}, + "plain_text": "Kent" + } + ], + [ + { + "type": "text", + "text": { + "content": "🌌 C. Dodds @kentcdodds" + }, + "annotations": {}, + "plain_text": "🌌 C. Dodds @kentcdodds" + }, + { + "type": "text", + "text": { + "content": "🌌 C. Dodds @kentcdodds" + }, + "annotations": {}, + "plain_text": "🌌 C. Dodds @kentcdodds" + }, + { + "type": "text", + "text": { + "content": "🌌 C. Dodds @kentcdodds" + }, + "annotations": {}, + "plain_text": "🌌 C. Dodds @kentcdodds" + }, + { + "type": "text", + "text": { + "content": "🌌 C. Dodds @kentcdodds" + }, + "annotations": {}, + "plain_text": "🌌 C. Dodds @kentcdodds" + } + ], + [], + [] + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qrdf7vbx38rn4qsc8qs", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.072263Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 12 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "Got 32 videos 🎉" + }, + "annotations": {}, + "plain_text": "Got 32 videos 🎉" + }, + { + "type": "text", + "text": { + "content": "Got 32 videos 🎉" + }, + "annotations": {}, + "plain_text": "Got 32 videos 🎉" + }, + { + "type": "text", + "text": { + "content": "Got 32 videos 🎉" + }, + "annotations": {}, + "plain_text": "Got 32 videos 🎉" + }, + { + "type": "text", + "text": { + "content": "Got 32 videos 🎉" + }, + "annotations": {}, + "plain_text": "Got 32 videos 🎉" + } + ], + [ + { + "type": "text", + "text": { + "content": "for the Web" + }, + "annotations": {}, + "plain_text": "for the Web" + }, + { + "type": "text", + "text": { + "content": "for the Web" + }, + "annotations": {}, + "plain_text": "for the Web" + }, + { + "type": "text", + "text": { + "content": "for the Web" + }, + "annotations": {}, + "plain_text": "for the Web" + } + ], + [ + { + "type": "text", + "text": { + "content": "Auth workshop recorded" + }, + "annotations": {}, + "plain_text": "Auth workshop recorded" + }, + { + "type": "text", + "text": { + "content": "Auth workshop recorded" + }, + "annotations": {}, + "plain_text": "Auth workshop recorded" + }, + { + "type": "text", + "text": { + "content": "Auth workshop recorded" + }, + "annotations": {}, + "plain_text": "Auth workshop recorded" + } + ], + [ + { + "type": "text", + "text": { + "content": "today" + }, + "annotations": {}, + "plain_text": "today" + } + ] + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qree4c8w5cn0gbgatra", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.072772Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 12 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "This is coming" + }, + "annotations": {}, + "plain_text": "This is coming" + }, + { + "type": "text", + "text": { + "content": "This is coming" + }, + "annotations": {}, + "plain_text": "This is coming" + }, + { + "type": "text", + "text": { + "content": "This is coming" + }, + "annotations": {}, + "plain_text": "This is coming" + } + ], + [ + { + "type": "text", + "text": { + "content": "💪 right along 1005 PM (UTC) · August 31st, 2023" + }, + "annotations": {}, + "plain_text": "💪 right along 1005 PM (UTC) · August 31st, 2023" + }, + { + "type": "text", + "text": { + "content": "💪 right along 1005 PM (UTC) · August 31st, 2023" + }, + "annotations": {}, + "plain_text": "💪 right along 1005 PM (UTC) · August 31st, 2023" + }, + { + "type": "text", + "text": { + "content": "💪 right along 1005 PM (UTC) · August 31st, 2023" + }, + "annotations": {}, + "plain_text": "💪 right along 1005 PM (UTC) · August 31st, 2023" + }, + { + "type": "text", + "text": { + "content": "💪 right along 1005 PM (UTC) · August 31st, 2023" + }, + "annotations": {}, + "plain_text": "💪 right along 1005 PM (UTC) · August 31st, 2023" + } + ], + [], + [] + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qrfevfs7v6ngjgdep2v", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.073082Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 12 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "12" + }, + "annotations": {}, + "plain_text": "12" + } + ], + [], + [ + { + "type": "text", + "text": { + "content": "243" + }, + "annotations": {}, + "plain_text": "243" + } + ], + [] + ] + } + } + ] + }, + { + "object": "block", + "id": "bk_01jygn5qrhe4nak3newjx43sdc", + "type": "image", + "created_time": "2025-06-24T09:44:12.073443Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 12 + } + }, + "image": { + "type": "external", + "external": { + "url": "textcortex://images/img_5vyh1kamyq8htak9dyywpdr95v" + }, + "caption": [ + { + "type": "text", + "text": { + "content": "Image /page/11/Picture/4 description: This image shows a tweet by Kent C. Dodds (@kentcdodds). The tweet says, \"I got 38 videos recorded for 's Web Auth workshop before the kids got home. That was 5 exercises. Only 7 more exercises to go for this workshop!\"" + }, + "annotations": {}, + "plain_text": "Image /page/11/Picture/4 description: This image shows a tweet by Kent C. Dodds (@kentcdodds). The tweet says, \"I got 38 videos recorded for 's Web Auth workshop before the kids got home. That was 5 exercises. Only 7 more exercises to go for this workshop!\"" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qrmenr8x6mews0m6ha4", + "type": "image", + "created_time": "2025-06-24T09:44:12.078759Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 13 + } + }, + "image": { + "type": "external", + "external": { + "url": "textcortex://images/img_6nwbm7yp6e9xatecrwtwcg9smb" + }, + "caption": [ + { + "type": "text", + "text": { + "content": "Image /page/12/Picture/2 description: The image is a promotional graphic for Epic Web Dev, advertising a course on building modern full-stack web applications. The graphic features the Epic Web Dev logo at the top left, followed by the text \"EVERYTHING YOU NEED TO KNOW TO Ship Modern Full-Stack Web Applications.\" Below this, there is a picture of Kent C. Dodds. At the bottom, there is the text \"Learn full-stack web development with Kent C. Dodds\" and \"www.epicweb.dev\". There are also social media metrics: \"8:59 PM (UTC) · September 7th, 2023\", \"1\", and \"21\"." + }, + "annotations": {}, + "plain_text": "Image /page/12/Picture/2 description: The image is a promotional graphic for Epic Web Dev, advertising a course on building modern full-stack web applications. The graphic features the Epic Web Dev logo at the top left, followed by the text \"EVERYTHING YOU NEED TO KNOW TO Ship Modern Full-Stack Web Applications.\" Below this, there is a picture of Kent C. Dodds. At the bottom, there is the text \"Learn full-stack web development with Kent C. Dodds\" and \"www.epicweb.dev\". There are also social media metrics: \"8:59 PM (UTC) · September 7th, 2023\", \"1\", and \"21\"." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qrpe8nbbvmn37e5eyaj", + "type": "image", + "created_time": "2025-06-24T09:44:12.079169Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 13 + } + }, + "image": { + "type": "external", + "external": { + "url": "textcortex://images/img_39pz4n43sv8k68xvxhrcf3hhra" + }, + "caption": [ + { + "type": "text", + "text": { + "content": "Image /page/12/Picture/3 description: The image is a headshot of a man with short brown hair and a slight smile. He is wearing a dark blue shirt. The background is a dark gray color." + }, + "annotations": {}, + "plain_text": "Image /page/12/Picture/3 description: The image is a headshot of a man with short brown hair and a slight smile. He is wearing a dark blue shirt. The background is a dark gray color." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qrrfngt5efe08b4f6jx", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.079589Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 13 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Kent C. Dodds " + }, + "annotations": {}, + "plain_text": "Kent C. Dodds " + }, + { + "type": "text", + "text": { + "content": "@kentcdodds", + "link": { + "url": "https://twitter.com/kentcdodds" + } + }, + "annotations": {}, + "plain_text": "@kentcdodds", + "href": "https://twitter.com/kentcdodds" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qrsfryahdcdk8d7x3y2", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.079705Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 13 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "I got 38 videos recorded today and that wraps up all the videos for the Web Auth workshop for !" + }, + "annotations": {}, + "plain_text": "I got 38 videos recorded today and that wraps up all the videos for the Web Auth workshop for !" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qrtegja66gy7a0y2nv9", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.079820Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 13 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "This is a huge accomplishment because it's massively comprehensive. This one workshop alone covers more topics than most web dev courses! It's 171 videos" + }, + "annotations": {}, + "plain_text": "This is a huge accomplishment because it's massively comprehensive. This one workshop alone covers more topics than most web dev courses! It's 171 videos" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qrvf6erpssynm3xz1d6", + "type": "image", + "created_time": "2025-06-24T09:44:12.079923Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 13 + } + }, + "image": { + "type": "external", + "external": { + "url": "textcortex://images/img_29zskk9neg9zet3d0zxdhcvfa0" + }, + "caption": [ + { + "type": "text", + "text": { + "content": "Image /page/12/Picture/7 description: The image is a promotional graphic for a web development course titled \"Ship Modern Full-Stack Web Applications\" by Kent C. Dodds. The graphic features the Epic Web Dev logo at the top left, followed by the text \"EVERYTHING YOU NEED TO KNOW TO\" above the title. A photo of Kent C. Dodds is on the left side of the graphic. The background includes an illustration of a planet and rocket trails." + }, + "annotations": {}, + "plain_text": "Image /page/12/Picture/7 description: The image is a promotional graphic for a web development course titled \"Ship Modern Full-Stack Web Applications\" by Kent C. Dodds. The graphic features the Epic Web Dev logo at the top left, followed by the text \"EVERYTHING YOU NEED TO KNOW TO\" above the title. A photo of Kent C. Dodds is on the left side of the graphic. The background includes an illustration of a planet and rocket trails." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qs3e26aj1vraeb19bd8", + "type": "table", + "created_time": "2025-06-24T09:44:12.086876Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 14 + } + }, + "table": { + "has_column_header": true, + "has_row_header": false + }, + "children": [ + { + "object": "block", + "id": "bk_01jygn5qryehms7jyt3gw81m6n", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.085600Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 14 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "www.epicweb.dev" + }, + "annotations": {}, + "plain_text": "www.epicweb.dev" + } + ], + [], + [], + [] + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qrzf8n9vmp7375vzjyv", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.085894Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 14 + } + }, + "table_row": { + "cells": [ + [], + [ + { + "type": "text", + "text": { + "content": "1243 AM (UTC) · September 12th, 2023" + }, + "annotations": {}, + "plain_text": "1243 AM (UTC) · September 12th, 2023" + } + ], + [], + [] + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qs0ftxvhy9zcs13safz", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.086143Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 14 + } + }, + "table_row": { + "cells": [[], [], [], []] + } + }, + { + "object": "block", + "id": "bk_01jygn5qs1f809wpfpbt9c4t56", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.086473Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 14 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "5" + }, + "annotations": {}, + "plain_text": "5" + } + ], + [], + [ + { + "type": "text", + "text": { + "content": "89" + }, + "annotations": {}, + "plain_text": "89" + } + ], + [] + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qs2fdftpf99ef0y180f", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.086679Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 14 + } + }, + "table_row": { + "cells": [[], [], [], []] + } + } + ] + }, + { + "object": "block", + "id": "bk_01jygn5qsaeasve30ca7765p63", + "type": "table", + "created_time": "2025-06-24T09:44:12.090219Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 14 + } + }, + "table": { + "has_column_header": true, + "has_row_header": false + }, + "children": [ + { + "object": "block", + "id": "bk_01jygn5qs4fyfs2x9r9mgkprbs", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.087397Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 14 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "Kent" + }, + "annotations": {}, + "plain_text": "Kent" + } + ], + [ + { + "type": "text", + "text": { + "content": "🌌 C. Dodds @kentcdodds" + }, + "annotations": {}, + "plain_text": "🌌 C. Dodds @kentcdodds" + }, + { + "type": "text", + "text": { + "content": "🌌 C. Dodds @kentcdodds" + }, + "annotations": {}, + "plain_text": "🌌 C. Dodds @kentcdodds" + }, + { + "type": "text", + "text": { + "content": "🌌 C. Dodds @kentcdodds" + }, + "annotations": {}, + "plain_text": "🌌 C. Dodds @kentcdodds" + }, + { + "type": "text", + "text": { + "content": "🌌 C. Dodds @kentcdodds" + }, + "annotations": {}, + "plain_text": "🌌 C. Dodds @kentcdodds" + } + ], + [], + [] + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qs5eg1b0s7p14h409z3", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.088158Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 14 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "jk, I stayed day!" + }, + "annotations": {}, + "plain_text": "jk, I stayed day!" + }, + { + "type": "text", + "text": { + "content": "jk, I stayed day!" + }, + "annotations": {}, + "plain_text": "jk, I stayed day!" + }, + { + "type": "text", + "text": { + "content": "jk, I stayed day!" + }, + "annotations": {}, + "plain_text": "jk, I stayed day!" + }, + { + "type": "text", + "text": { + "content": "jk, I stayed day!" + }, + "annotations": {}, + "plain_text": "jk, I stayed day!" + } + ], + [ + { + "type": "text", + "text": { + "content": "up later and got" + }, + "annotations": {}, + "plain_text": "up later and got" + }, + { + "type": "text", + "text": { + "content": "up later and got" + }, + "annotations": {}, + "plain_text": "up later and got" + }, + { + "type": "text", + "text": { + "content": "up later and got" + }, + "annotations": {}, + "plain_text": "up later and got" + }, + { + "type": "text", + "text": { + "content": "up later and got" + }, + "annotations": {}, + "plain_text": "up later and got" + } + ], + [ + { + "type": "text", + "text": { + "content": "10 more done. Another" + }, + "annotations": {}, + "plain_text": "10 more done. Another" + }, + { + "type": "text", + "text": { + "content": "10 more done. Another" + }, + "annotations": {}, + "plain_text": "10 more done. Another" + }, + { + "type": "text", + "text": { + "content": "10 more done. Another" + }, + "annotations": {}, + "plain_text": "10 more done. Another" + }, + { + "type": "text", + "text": { + "content": "10 more done. Another" + }, + "annotations": {}, + "plain_text": "10 more done. Another" + } + ], + [ + { + "type": "text", + "text": { + "content": "30 video" + }, + "annotations": {}, + "plain_text": "30 video" + }, + { + "type": "text", + "text": { + "content": "30 video" + }, + "annotations": {}, + "plain_text": "30 video" + } + ] + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qs6ec3sbva7dwt8yzm7", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.089097Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 14 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "If I want to my record" + }, + "annotations": {}, + "plain_text": "If I want to my record" + }, + { + "type": "text", + "text": { + "content": "If I want to my record" + }, + "annotations": {}, + "plain_text": "If I want to my record" + }, + { + "type": "text", + "text": { + "content": "If I want to my record" + }, + "annotations": {}, + "plain_text": "If I want to my record" + }, + { + "type": "text", + "text": { + "content": "If I want to my record" + }, + "annotations": {}, + "plain_text": "If I want to my record" + }, + { + "type": "text", + "text": { + "content": "If I want to my record" + }, + "annotations": {}, + "plain_text": "If I want to my record" + }, + { + "type": "text", + "text": { + "content": "If I want to my record" + }, + "annotations": {}, + "plain_text": "If I want to my record" + } + ], + [ + { + "type": "text", + "text": { + "content": "finish all the videos 🤯 and hit ~55" + }, + "annotations": {}, + "plain_text": "finish all the videos 🤯 and hit ~55" + }, + { + "type": "text", + "text": { + "content": "finish all the videos 🤯 and hit ~55" + }, + "annotations": {}, + "plain_text": "finish all the videos 🤯 and hit ~55" + }, + { + "type": "text", + "text": { + "content": "finish all the videos 🤯 and hit ~55" + }, + "annotations": {}, + "plain_text": "finish all the videos 🤯 and hit ~55" + }, + { + "type": "text", + "text": { + "content": "finish all the videos 🤯 and hit ~55" + }, + "annotations": {}, + "plain_text": "finish all the videos 🤯 and hit ~55" + }, + { + "type": "text", + "text": { + "content": "finish all the videos 🤯 and hit ~55" + }, + "annotations": {}, + "plain_text": "finish all the videos 🤯 and hit ~55" + }, + { + "type": "text", + "text": { + "content": "finish all the videos 🤯 and hit ~55" + }, + "annotations": {}, + "plain_text": "finish all the videos 🤯 and hit ~55" + }, + { + "type": "text", + "text": { + "content": "finish all the videos 🤯 and hit ~55" + }, + "annotations": {}, + "plain_text": "finish all the videos 🤯 and hit ~55" + }, + { + "type": "text", + "text": { + "content": "finish all the videos 🤯 and hit ~55" + }, + "annotations": {}, + "plain_text": "finish all the videos 🤯 and hit ~55" + } + ], + [ + { + "type": "text", + "text": { + "content": "tomorrow, I'll need" + }, + "annotations": {}, + "plain_text": "tomorrow, I'll need" + }, + { + "type": "text", + "text": { + "content": "tomorrow, I'll need" + }, + "annotations": {}, + "plain_text": "tomorrow, I'll need" + }, + { + "type": "text", + "text": { + "content": "tomorrow, I'll need" + }, + "annotations": {}, + "plain_text": "tomorrow, I'll need" + } + ], + [ + { + "type": "text", + "text": { + "content": "to beat" + }, + "annotations": {}, + "plain_text": "to beat" + }, + { + "type": "text", + "text": { + "content": "to beat" + }, + "annotations": {}, + "plain_text": "to beat" + } + ] + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qs7f5g89rf6dyn6qzw7", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.089411Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 14 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "Let's" + }, + "annotations": {}, + "plain_text": "Let's" + } + ], + [ + { + "type": "text", + "text": { + "content": "gooooooooooo!" + }, + "annotations": {}, + "plain_text": "gooooooooooo!" + } + ], + [], + [] + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qs8fcfv9phv07ad55f9", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.089674Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 14 + } + }, + "table_row": { + "cells": [ + [], + [ + { + "type": "text", + "text": { + "content": "457 AM (UTC) · September 14th, 2023" + }, + "annotations": {}, + "plain_text": "457 AM (UTC) · September 14th, 2023" + } + ], + [], + [] + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qs9fmh81mmcr15q9fd3", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.089981Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 14 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "1" + }, + "annotations": {}, + "plain_text": "1" + } + ], + [], + [ + { + "type": "text", + "text": { + "content": "16" + }, + "annotations": {}, + "plain_text": "16" + } + ], + [] + ] + } + } + ] + }, + { + "object": "block", + "id": "bk_01jygn5qsbf1qt7zfbe6hg20h3", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.090389Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 14 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Not every day was super productive because I kept finding little things I wanted to do differently here and there:" + }, + "annotations": {}, + "plain_text": "Not every day was super productive because I kept finding little things I wanted to do differently here and there:" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qsdfx9v4bs0ga51ws6r", + "type": "image", + "created_time": "2025-06-24T09:44:12.095926Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 15 + } + }, + "image": { + "type": "external", + "external": { + "url": "textcortex://images/img_2w40b1787b8htagfgfgb5e1x4x" + }, + "caption": [ + { + "type": "text", + "text": { + "content": "Image /page/14/Picture/2 description: This image shows two tweets by Kent C. Dodds (@kentcdodds). The first tweet states, \"20 videos done before the kids got home from school. Not as many as I wanted, but it's pretty good considering some last-minute changes I wanted to make. Got these three finished () and the first exercise of the next workshop.\" The second tweet states, \"I didn't get as many videos recorded today (only 8) because I created 3 new exercises as part of the web forms workshop. If I keep doing this, I'll never ship Ship Modern Full-Stack Web Applications.\" Below the second tweet, there is a section titled \"Honeypot Rate Limiting.\" The image also shows the date and time of the tweets, which is \"9:16 PM (UTC) · August 28th, 2023,\" as well as the number of retweets, likes, and shares." + }, + "annotations": {}, + "plain_text": "Image /page/14/Picture/2 description: This image shows two tweets by Kent C. Dodds (@kentcdodds). The first tweet states, \"20 videos done before the kids got home from school. Not as many as I wanted, but it's pretty good considering some last-minute changes I wanted to make. Got these three finished () and the first exercise of the next workshop.\" The second tweet states, \"I didn't get as many videos recorded today (only 8) because I created 3 new exercises as part of the web forms workshop. If I keep doing this, I'll never ship Ship Modern Full-Stack Web Applications.\" Below the second tweet, there is a section titled \"Honeypot Rate Limiting.\" The image also shows the date and time of the tweets, which is \"9:16 PM (UTC) · August 28th, 2023,\" as well as the number of retweets, likes, and shares." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qsfevn829d0b8t73mw4", + "type": "image", + "created_time": "2025-06-24T09:44:12.096375Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 15 + } + }, + "image": { + "type": "external", + "external": { + "url": "textcortex://images/img_42fry8v3db9se9xq1cv57ga28y" + }, + "caption": [ + { + "type": "text", + "text": { + "content": "Image /page/14/Picture/3 description: The image shows a profile picture of Kent C. Dodds, along with his username @kentcdodds. Kent C. Dodds is also accompanied by a small image of stars." + }, + "annotations": {}, + "plain_text": "Image /page/14/Picture/3 description: The image shows a profile picture of Kent C. Dodds, along with his username @kentcdodds. Kent C. Dodds is also accompanied by a small image of stars." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qsjfm1a76qjk27eertn", + "type": "image", + "created_time": "2025-06-24T09:44:12.100624Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 16 + } + }, + "image": { + "type": "external", + "external": { + "url": "textcortex://images/img_4nddd3p34b8eqvf69jhrmnfqvd" + }, + "caption": [ + { + "type": "text", + "text": { + "content": "Image /page/15/Picture/2 description: A tweet states that despite discovering an issue in a Web Auth workshop and having to re-record 4 videos, the author managed to record 16 more videos today. The author also finished the two factor authentication implementation exercises, and third party auth is next. The tweet was posted at 10:59 PM (UTC) on September 8th, 2023. The tweet has 4 likes and 30 retweets." + }, + "annotations": {}, + "plain_text": "Image /page/15/Picture/2 description: A tweet states that despite discovering an issue in a Web Auth workshop and having to re-record 4 videos, the author managed to record 16 more videos today. The author also finished the two factor authentication implementation exercises, and third party auth is next. The tweet was posted at 10:59 PM (UTC) on September 8th, 2023. The tweet has 4 likes and 30 retweets." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qsmfcwb9qdvjyh74h5p", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.101020Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 16 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Oh, and of course my wife was a total saint through all of this as well:" + }, + "annotations": {}, + "plain_text": "Oh, and of course my wife was a total saint through all of this as well:" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qssf1e8jdcc5cvjs2s3", + "type": "table", + "created_time": "2025-06-24T09:44:12.104335Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 16 + } + }, + "table": { + "has_column_header": true, + "has_row_header": false + }, + "children": [ + { + "object": "block", + "id": "bk_01jygn5qsnekkt7tpk82xsqxkk", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.101491Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 16 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "Kent" + }, + "annotations": {}, + "plain_text": "Kent" + } + ], + [ + { + "type": "text", + "text": { + "content": "🌌 C. Dodds @kentcdodds" + }, + "annotations": {}, + "plain_text": "🌌 C. Dodds @kentcdodds" + }, + { + "type": "text", + "text": { + "content": "🌌 C. Dodds @kentcdodds" + }, + "annotations": {}, + "plain_text": "🌌 C. Dodds @kentcdodds" + }, + { + "type": "text", + "text": { + "content": "🌌 C. Dodds @kentcdodds" + }, + "annotations": {}, + "plain_text": "🌌 C. Dodds @kentcdodds" + }, + { + "type": "text", + "text": { + "content": "🌌 C. Dodds @kentcdodds" + }, + "annotations": {}, + "plain_text": "🌌 C. Dodds @kentcdodds" + } + ], + [], + [] + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qspe5arkm5wm4wgtww4", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.103042Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 16 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "I managed to home I'm you hear little few videos" + }, + "annotations": {}, + "plain_text": "I managed to home I'm you hear little few videos" + }, + { + "type": "text", + "text": { + "content": "I managed to home I'm you hear little few videos" + }, + "annotations": {}, + "plain_text": "I managed to home I'm you hear little few videos" + }, + { + "type": "text", + "text": { + "content": "I managed to home I'm you hear little few videos" + }, + "annotations": {}, + "plain_text": "I managed to home I'm you hear little few videos" + }, + { + "type": "text", + "text": { + "content": "I managed to home I'm you hear little few videos" + }, + "annotations": {}, + "plain_text": "I managed to home I'm you hear little few videos" + }, + { + "type": "text", + "text": { + "content": "I managed to home I'm you hear little few videos" + }, + "annotations": {}, + "plain_text": "I managed to home I'm you hear little few videos" + }, + { + "type": "text", + "text": { + "content": "I managed to home I'm you hear little few videos" + }, + "annotations": {}, + "plain_text": "I managed to home I'm you hear little few videos" + }, + { + "type": "text", + "text": { + "content": "I managed to home I'm you hear little few videos" + }, + "annotations": {}, + "plain_text": "I managed to home I'm you hear little few videos" + }, + { + "type": "text", + "text": { + "content": "I managed to home I'm you hear little few videos" + }, + "annotations": {}, + "plain_text": "I managed to home I'm you hear little few videos" + }, + { + "type": "text", + "text": { + "content": "I managed to home I'm you hear little few videos" + }, + "annotations": {}, + "plain_text": "I managed to home I'm you hear little few videos" + }, + { + "type": "text", + "text": { + "content": "I managed to home I'm you hear little few videos" + }, + "annotations": {}, + "plain_text": "I managed to home I'm you hear little few videos" + } + ], + [ + { + "type": "text", + "text": { + "content": "get 29 videos so close I can kid squeals in 😅" + }, + "annotations": {}, + "plain_text": "get 29 videos so close I can kid squeals in 😅" + }, + { + "type": "text", + "text": { + "content": "get 29 videos so close I can kid squeals in 😅" + }, + "annotations": {}, + "plain_text": "get 29 videos so close I can kid squeals in 😅" + }, + { + "type": "text", + "text": { + "content": "get 29 videos so close I can kid squeals in 😅" + }, + "annotations": {}, + "plain_text": "get 29 videos so close I can kid squeals in 😅" + }, + { + "type": "text", + "text": { + "content": "get 29 videos so close I can kid squeals in 😅" + }, + "annotations": {}, + "plain_text": "get 29 videos so close I can kid squeals in 😅" + }, + { + "type": "text", + "text": { + "content": "get 29 videos so close I can kid squeals in 😅" + }, + "annotations": {}, + "plain_text": "get 29 videos so close I can kid squeals in 😅" + }, + { + "type": "text", + "text": { + "content": "get 29 videos so close I can kid squeals in 😅" + }, + "annotations": {}, + "plain_text": "get 29 videos so close I can kid squeals in 😅" + }, + { + "type": "text", + "text": { + "content": "get 29 videos so close I can kid squeals in 😅" + }, + "annotations": {}, + "plain_text": "get 29 videos so close I can kid squeals in 😅" + }, + { + "type": "text", + "text": { + "content": "get 29 videos so close I can kid squeals in 😅" + }, + "annotations": {}, + "plain_text": "get 29 videos so close I can kid squeals in 😅" + }, + { + "type": "text", + "text": { + "content": "get 29 videos so close I can kid squeals in 😅" + }, + "annotations": {}, + "plain_text": "get 29 videos so close I can kid squeals in 😅" + }, + { + "type": "text", + "text": { + "content": "get 29 videos so close I can kid squeals in 😅" + }, + "annotations": {}, + "plain_text": "get 29 videos so close I can kid squeals in 😅" + }, + { + "type": "text", + "text": { + "content": "get 29 videos so close I can kid squeals in 😅" + }, + "annotations": {}, + "plain_text": "get 29 videos so close I can kid squeals in 😅" + } + ], + [ + { + "type": "text", + "text": { + "content": "done before the kids taste it. Apologies if this the background of" + }, + "annotations": {}, + "plain_text": "done before the kids taste it. Apologies if this the background of" + }, + { + "type": "text", + "text": { + "content": "done before the kids taste it. Apologies if this the background of" + }, + "annotations": {}, + "plain_text": "done before the kids taste it. Apologies if this the background of" + }, + { + "type": "text", + "text": { + "content": "done before the kids taste it. Apologies if this the background of" + }, + "annotations": {}, + "plain_text": "done before the kids taste it. Apologies if this the background of" + }, + { + "type": "text", + "text": { + "content": "done before the kids taste it. Apologies if this the background of" + }, + "annotations": {}, + "plain_text": "done before the kids taste it. Apologies if this the background of" + }, + { + "type": "text", + "text": { + "content": "done before the kids taste it. Apologies if this the background of" + }, + "annotations": {}, + "plain_text": "done before the kids taste it. Apologies if this the background of" + }, + { + "type": "text", + "text": { + "content": "done before the kids taste it. Apologies if this the background of" + }, + "annotations": {}, + "plain_text": "done before the kids taste it. Apologies if this the background of" + }, + { + "type": "text", + "text": { + "content": "done before the kids taste it. Apologies if this the background of" + }, + "annotations": {}, + "plain_text": "done before the kids taste it. Apologies if this the background of" + }, + { + "type": "text", + "text": { + "content": "done before the kids taste it. Apologies if this the background of" + }, + "annotations": {}, + "plain_text": "done before the kids taste it. Apologies if this the background of" + }, + { + "type": "text", + "text": { + "content": "done before the kids taste it. Apologies if this the background of" + }, + "annotations": {}, + "plain_text": "done before the kids taste it. Apologies if this the background of" + }, + { + "type": "text", + "text": { + "content": "done before the kids taste it. Apologies if this the background of" + }, + "annotations": {}, + "plain_text": "done before the kids taste it. Apologies if this the background of" + }, + { + "type": "text", + "text": { + "content": "done before the kids taste it. Apologies if this the background of" + }, + "annotations": {}, + "plain_text": "done before the kids taste it. Apologies if this the background of" + }, + { + "type": "text", + "text": { + "content": "done before the kids taste it. Apologies if this the background of" + }, + "annotations": {}, + "plain_text": "done before the kids taste it. Apologies if this the background of" + } + ], + [ + { + "type": "text", + "text": { + "content": "got means these last" + }, + "annotations": {}, + "plain_text": "got means these last" + }, + { + "type": "text", + "text": { + "content": "got means these last" + }, + "annotations": {}, + "plain_text": "got means these last" + }, + { + "type": "text", + "text": { + "content": "got means these last" + }, + "annotations": {}, + "plain_text": "got means these last" + }, + { + "type": "text", + "text": { + "content": "got means these last" + }, + "annotations": {}, + "plain_text": "got means these last" + } + ] + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qsqfx8r762pvshzw8v7", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.103768Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 16 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "(jk, my wife" + }, + "annotations": {}, + "plain_text": "(jk, my wife" + }, + { + "type": "text", + "text": { + "content": "(jk, my wife" + }, + "annotations": {}, + "plain_text": "(jk, my wife" + }, + { + "type": "text", + "text": { + "content": "(jk, my wife" + }, + "annotations": {}, + "plain_text": "(jk, my wife" + } + ], + [ + { + "type": "text", + "text": { + "content": "said she's taking 852 PM (UTC) · September 14th, 2023" + }, + "annotations": {}, + "plain_text": "said she's taking 852 PM (UTC) · September 14th, 2023" + }, + { + "type": "text", + "text": { + "content": "said she's taking 852 PM (UTC) · September 14th, 2023" + }, + "annotations": {}, + "plain_text": "said she's taking 852 PM (UTC) · September 14th, 2023" + }, + { + "type": "text", + "text": { + "content": "said she's taking 852 PM (UTC) · September 14th, 2023" + }, + "annotations": {}, + "plain_text": "said she's taking 852 PM (UTC) · September 14th, 2023" + }, + { + "type": "text", + "text": { + "content": "said she's taking 852 PM (UTC) · September 14th, 2023" + }, + "annotations": {}, + "plain_text": "said she's taking 852 PM (UTC) · September 14th, 2023" + } + ], + [ + { + "type": "text", + "text": { + "content": "them to the library" + }, + "annotations": {}, + "plain_text": "them to the library" + }, + { + "type": "text", + "text": { + "content": "them to the library" + }, + "annotations": {}, + "plain_text": "them to the library" + }, + { + "type": "text", + "text": { + "content": "them to the library" + }, + "annotations": {}, + "plain_text": "them to the library" + }, + { + "type": "text", + "text": { + "content": "them to the library" + }, + "annotations": {}, + "plain_text": "them to the library" + } + ], + [ + { + "type": "text", + "text": { + "content": "❤️)" + }, + "annotations": {}, + "plain_text": "❤️)" + } + ] + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qsren1vbxet2h1pr35f", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.104083Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 16 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "2" + }, + "annotations": {}, + "plain_text": "2" + } + ], + [], + [ + { + "type": "text", + "text": { + "content": "10" + }, + "annotations": {}, + "plain_text": "10" + } + ], + [] + ] + } + } + ] + }, + { + "object": "block", + "id": "bk_01jygn5qstetgs983fq58kp5py", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.104476Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 16 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "And then I finally finished:" + }, + "annotations": {}, + "plain_text": "And then I finally finished:" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qsvf9b96ntzdmjwg2cy", + "type": "image", + "created_time": "2025-06-24T09:44:12.104594Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 16 + } + }, + "image": { + "type": "external", + "external": { + "url": "textcortex://images/img_36md4nrpx987y9ynbzyg3hdfy7" + }, + "caption": [ + { + "type": "text", + "text": { + "content": "Image /page/15/Picture/6 description: The image shows a profile picture of a man with short brown hair and a light complexion. He is wearing a blue shirt and smiling. To the right of the profile picture is the name \"Kent C. Dodds\" in a gold color, followed by the username \"@kentcdodds\" in gray. There is also a small image of a blue and white graphic to the right of the name." + }, + "annotations": {}, + "plain_text": "Image /page/15/Picture/6 description: The image shows a profile picture of a man with short brown hair and a light complexion. He is wearing a blue shirt and smiling. To the right of the profile picture is the name \"Kent C. Dodds\" in a gold color, followed by the username \"@kentcdodds\" in gray. There is also a small image of a blue and white graphic to the right of the name." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qsyejb9h4hq58nrtf3q", + "type": "image", + "created_time": "2025-06-24T09:44:12.111032Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 17 + } + }, + "image": { + "type": "external", + "external": { + "url": "textcortex://images/img_1semrn8eg184darc9sx6k8zycr" + }, + "caption": [ + { + "type": "text", + "text": { + "content": "Image /page/16/Picture/2 description: The image shows a social media post. The post starts with the text \"I FINISHED!!!!!\" followed by \"50 videos recorded today. The Testing Workshop is done! And that was the last one!\" The next line says \"will have 452 instructional videos!\" followed by \"Stay tuned, the launch is on its way!\" Below this is an image with the text \"EPICWEB DEV\" and \"EVERYTHING YOU NEED TO KNOW TO Ship Modern Full-Stack Web Applications\" and \"Kent C. Dodds\". Below the image is the text \"Ship Modern Full-Stack Web Applications Learn full-stack web development with Kent C. Dodds www.epicweb.dev\". The post ends with the timestamp \"11:43 PM (UTC) · September 14th, 2023\" and icons representing 37 comments, a retweet icon, and 522 likes." + }, + "annotations": {}, + "plain_text": "Image /page/16/Picture/2 description: The image shows a social media post. The post starts with the text \"I FINISHED!!!!!\" followed by \"50 videos recorded today. The Testing Workshop is done! And that was the last one!\" The next line says \"will have 452 instructional videos!\" followed by \"Stay tuned, the launch is on its way!\" Below this is an image with the text \"EPICWEB DEV\" and \"EVERYTHING YOU NEED TO KNOW TO Ship Modern Full-Stack Web Applications\" and \"Kent C. Dodds\". Below the image is the text \"Ship Modern Full-Stack Web Applications Learn full-stack web development with Kent C. Dodds www.epicweb.dev\". The post ends with the timestamp \"11:43 PM (UTC) · September 14th, 2023\" and icons representing 37 comments, a retweet icon, and 522 likes." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qt0e3ea0chvx9913f27", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.111591Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 17 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Of course, 4 days later..." + }, + "annotations": {}, + "plain_text": "Of course, 4 days later..." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qt1enktd9va1b28cgj2", + "type": "image", + "created_time": "2025-06-24T09:44:12.111701Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 17 + } + }, + "image": { + "type": "external", + "external": { + "url": "textcortex://images/img_3rb3sf39dr9twa75wnvf9wkaxp" + }, + "caption": [ + { + "type": "text", + "text": { + "content": "Image /page/16/Picture/4 description: The image is a tweet by Kent C. Dodds (@kentcdodds). The tweet states that the Chrome Devtools network tab hasn't had a UI update in years, and then they update it right after you finish 452 videos to instantly date your videos." + }, + "annotations": {}, + "plain_text": "Image /page/16/Picture/4 description: The image is a tweet by Kent C. Dodds (@kentcdodds). The tweet states that the Chrome Devtools network tab hasn't had a UI update in years, and then they update it right after you finish 452 videos to instantly date your videos." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qt6e9rv6vz30pp79cgg", + "type": "table", + "created_time": "2025-06-24T09:44:12.114499Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 18 + } + }, + "table": { + "has_column_header": true, + "has_row_header": false + }, + "children": [ + { + "object": "block", + "id": "bk_01jygn5qt4fvetvre7z0f71r6y", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.114180Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 18 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "513 PM (UTC) · September 18th, 2023" + }, + "annotations": {}, + "plain_text": "513 PM (UTC) · September 18th, 2023" + } + ], + [] + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qt5fds95rq1ypv9ytfz", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.114332Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 18 + } + }, + "table_row": { + "cells": [[], []] + } + } + ] + }, + { + "object": "block", + "id": "bk_01jygn5qt7ff4rpp55h6pawfh2", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.114625Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 18 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Thanks a lot Chrome team" + }, + "annotations": {}, + "plain_text": "Thanks a lot Chrome team" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qt8etdras35f8rdns91", + "type": "heading_3", + "created_time": "2025-06-24T09:44:12.114851Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 18 + } + }, + "heading_3": { + "rich_text": [ + { + "type": "text", + "text": { + "content": " " + }, + "annotations": {}, + "plain_text": " " + }, + { + "type": "text", + "text": { + "content": "Prepping", + "link": { + "url": "#page-17-0" + } + }, + "annotations": {}, + "plain_text": "Prepping", + "href": "#page-17-0" + }, + { + "type": "text", + "text": { + "content": " for Launch" + }, + "annotations": {}, + "plain_text": " for Launch" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qt9eyesye7pt67gzvd8", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.115085Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 18 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "The " + }, + "annotations": {}, + "plain_text": "The " + }, + { + "type": "text", + "text": { + "content": "team", + "link": { + "url": "https://www.epicweb.dev/credits" + } + }, + "annotations": {}, + "plain_text": "team", + "href": "https://www.epicweb.dev/credits" + }, + { + "type": "text", + "text": { + "content": " was hard at work getting the videos and the site ready for publication. I also needed to finish up writing some of the instructions for some of the workshops and I had some improvements to make to the workshop app as well." + }, + "annotations": {}, + "plain_text": " was hard at work getting the videos and the site ready for publication. I also needed to finish up writing some of the instructions for some of the workshops and I had some improvements to make to the workshop app as well." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qtaf5m8dmpx9fnagqt5", + "type": "image", + "created_time": "2025-06-24T09:44:12.115208Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 18 + } + }, + "image": { + "type": "external", + "external": { + "url": "textcortex://images/img_3wz6jvym9m8gh89scmjdn17mpw" + }, + "caption": [ + { + "type": "text", + "text": { + "content": "Image /page/17/Picture/6 description: The image is a headshot of a man with short brown hair and glasses. He is smiling and wearing a dark blue shirt with a white collar. The background is dark and out of focus." + }, + "annotations": {}, + "plain_text": "Image /page/17/Picture/6 description: The image is a headshot of a man with short brown hair and glasses. He is smiling and wearing a dark blue shirt with a white collar. The background is dark and out of focus." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qtce1m8ssp5btt2b9r6", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.115637Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 18 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Kent C. Dodds " + }, + "annotations": {}, + "plain_text": "Kent C. Dodds " + }, + { + "type": "text", + "text": { + "content": "@kentcdodds", + "link": { + "url": "https://twitter.com/kentcdodds" + } + }, + "annotations": {}, + "plain_text": "@kentcdodds", + "href": "https://twitter.com/kentcdodds" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qtdfzf9r79hdq6p4twt", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.115766Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 18 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Only have to write instructions for 5 more exercises. Each one requires about as much written content as you would expect from a full-length tutorial on the topic (almost then length of a chapter in a Harry Potter book)." + }, + "annotations": {}, + "plain_text": "Only have to write instructions for 5 more exercises. Each one requires about as much written content as you would expect from a full-length tutorial on the topic (almost then length of a chapter in a Harry Potter book)." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qtff7jan9jshkvcxvbb", + "type": "image", + "created_time": "2025-06-24T09:44:12.118274Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 19 + } + }, + "image": { + "type": "external", + "external": { + "url": "textcortex://images/img_2yvmb79edn89esjgrr36tzcjby" + }, + "caption": [ + { + "type": "text", + "text": { + "content": "Image /page/18/Picture/2 description: The image shows a tweet that says \"nbd. This is 5 of 55 exercises in the whole series\". The tweet lists the following topics: OAuth, Connection Errors, Third Party Login, Connection Management, and Redirect Cookie. The tweet was posted on September 20th, 2023 at 4:31 PM (UTC). The tweet has 3 comments, 20 likes, and an unspecified number of retweets." + }, + "annotations": {}, + "plain_text": "Image /page/18/Picture/2 description: The image shows a tweet that says \"nbd. This is 5 of 55 exercises in the whole series\". The tweet lists the following topics: OAuth, Connection Errors, Third Party Login, Connection Management, and Redirect Cookie. The tweet was posted on September 20th, 2023 at 4:31 PM (UTC). The tweet has 3 comments, 20 likes, and an unspecified number of retweets." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qthfaqashy5scb4hggd", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.118692Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 19 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "It ended up being a LOT of words. As of today, it's 101,407 words worth of instructions. For context, Harry Potter book 1 is 76,944 words. And this only counts the words in the markdown files for the exercises. It doesn't include the words that are inline instructions within the exercise files people work through (which is probably another 30k words)." + }, + "annotations": {}, + "plain_text": "It ended up being a LOT of words. As of today, it's 101,407 words worth of instructions. For context, Harry Potter book 1 is 76,944 words. And this only counts the words in the markdown files for the exercises. It doesn't include the words that are inline instructions within the exercise files people work through (which is probably another 30k words)." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qtjfx2v25g6x0tb46ne", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.118809Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 19 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "And I wrote all of that in about 3 months. I'm pretty freaking proud of that." + }, + "annotations": {}, + "plain_text": "And I wrote all of that in about 3 months. I'm pretty freaking proud of that." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qtked4bzvt32kn2s3br", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.118926Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 19 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "I also wrapped up the expert interviews and with the team prepared the emails that would go out as part of the launch." + }, + "annotations": {}, + "plain_text": "I also wrapped up the expert interviews and with the team prepared the emails that would go out as part of the launch." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qtmf7hrmdyz3m2x49mw", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.119049Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 19 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "We decided we wanted to launch on my birthday, October 18th. But we also wanted to start giving people early access. Folks who bought both Epic React and TestingJavaScript Pro were invited to jump on Epic Web" + }, + "annotations": {}, + "plain_text": "We decided we wanted to launch on my birthday, October 18th. But we also wanted to start giving people early access. Folks who bought both Epic React and TestingJavaScript Pro were invited to jump on Epic Web" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qtpfta86yf9wvrbj1k4", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.120807Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 20 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "at a 40% discount a week before the official launch. The next day it was opened to folks who bought either before. Feedback was very positive, so we were ready for launch day." + }, + "annotations": {}, + "plain_text": "at a 40% discount a week before the official launch. The next day it was opened to folks who bought either before. Feedback was very positive, so we were ready for launch day." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qtqeczb876pkv5xjq1p", + "type": "heading_3", + "created_time": "2025-06-24T09:44:12.121181Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 20 + } + }, + "heading_3": { + "rich_text": [ + { + "type": "text", + "text": { + "content": " The " + }, + "annotations": {}, + "plain_text": " The " + }, + { + "type": "text", + "text": { + "content": "Launch", + "link": { + "url": "#page-19-0" + } + }, + "annotations": {}, + "plain_text": "Launch", + "href": "#page-19-0" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qtre8a93bp7ft3r1hr0", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.121344Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 20 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "We wanted to make the first 24 hours huge. So we decided to offer a 40% discount + free access to both Epic React and TestingJavaScript.com to anyone who bought Epic Web in the first 24 hours. This is a ridiculous value." + }, + "annotations": {}, + "plain_text": "We wanted to make the first 24 hours huge. So we decided to offer a 40% discount + free access to both Epic React and TestingJavaScript.com to anyone who bought Epic Web in the first 24 hours. This is a ridiculous value." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qtsfdr9z3yxkpvn4h0s", + "type": "image", + "created_time": "2025-06-24T09:44:12.121458Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 20 + } + }, + "image": { + "type": "external", + "external": { + "url": "textcortex://images/img_11a33tfvch970tz952yf4aj75v" + }, + "caption": [ + { + "type": "text", + "text": { + "content": "Image /page/19/Picture/5 description: This image is a screenshot of a tweet by Kent C. Dodds (@kentcdodds). The tweet promotes a limited-time offer: buying \"Ship Modern Full-Stack Web Applications Pro\" (at a 40% discount) includes Pro licenses for \"Get Really Good at React.\" The tweet highlights the value of $2,131 for $720, almost 70% off, and urges followers not to miss the offer. The tweet also includes an image with the text \"LEARN THE SMART. EFFICIENT WAY TO TEST ANY JAVASCRIPT APP\" and \"Your Essential Guide to Flawless Testing\" and \"UPDATED FOR 2020\" and \"Testing JavaScript with Kent C. Dodds\"" + }, + "annotations": {}, + "plain_text": "Image /page/19/Picture/5 description: This image is a screenshot of a tweet by Kent C. Dodds (@kentcdodds). The tweet promotes a limited-time offer: buying \"Ship Modern Full-Stack Web Applications Pro\" (at a 40% discount) includes Pro licenses for \"Get Really Good at React.\" The tweet highlights the value of $2,131 for $720, almost 70% off, and urges followers not to miss the offer. The tweet also includes an image with the text \"LEARN THE SMART. EFFICIENT WAY TO TEST ANY JAVASCRIPT APP\" and \"Your Essential Guide to Flawless Testing\" and \"UPDATED FOR 2020\" and \"Testing JavaScript with Kent C. Dodds\"" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qtzenw8wk18y66x6v68", + "type": "table", + "created_time": "2025-06-24T09:44:12.125725Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 21 + } + }, + "table": { + "has_column_header": true, + "has_row_header": false + }, + "children": [ + { + "object": "block", + "id": "bk_01jygn5qtwfbb9m3t3mw3tj629", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.124750Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 21 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "1/23/24, 3:16 PM" + }, + "annotations": {}, + "plain_text": "1/23/24, 3:16 PM" + } + ], + [], + [], + [ + { + "type": "text", + "text": { + "content": "Launching Epic Web" + }, + "annotations": {}, + "plain_text": "Launching Epic Web" + } + ], + [] + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qtxew8rjjs44mz196v8", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.125154Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 21 + } + }, + "table_row": { + "cells": [ + [], + [], + [ + { + "type": "text", + "text": { + "content": "testingjavascript.com" + }, + "annotations": {}, + "plain_text": "testingjavascript.com" + } + ], + [ + { + "type": "text", + "text": { + "content": "This course will teach you the fundamentals of testing your JavaScript applications using ESlint, TypeScript, Jest, and Cypress." + }, + "annotations": {}, + "plain_text": "This course will teach you the fundamentals of testing your JavaScript applications using ESlint, TypeScript, Jest, and Cypress." + }, + { + "type": "text", + "text": { + "content": "This course will teach you the fundamentals of testing your JavaScript applications using ESlint, TypeScript, Jest, and Cypress." + }, + "annotations": {}, + "plain_text": "This course will teach you the fundamentals of testing your JavaScript applications using ESlint, TypeScript, Jest, and Cypress." + } + ], + [] + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qtyejva52ca9q9vwaa6", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.125527Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 21 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "26" + }, + "annotations": {}, + "plain_text": "26" + } + ], + [ + { + "type": "text", + "text": { + "content": "228 PM (UTC) · October 17th, 2023" + }, + "annotations": {}, + "plain_text": "228 PM (UTC) · October 17th, 2023" + } + ], + [ + { + "type": "text", + "text": { + "content": "125" + }, + "annotations": {}, + "plain_text": "125" + } + ], + [], + [] + ] + } + } + ] + }, + { + "object": "block", + "id": "bk_01jygn5qv0ecbv3rwvn98qb4kk", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.125881Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 21 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "This went extremely well! We had a ton of people jump on within the first 24 hours. I spent a lot of time on , discord, and in my email inbox answering people's questions and helping people see the value Epic Web could offer them. Launch days are always fun." + }, + "annotations": {}, + "plain_text": "This went extremely well! We had a ton of people jump on within the first 24 hours. I spent a lot of time on , discord, and in my email inbox answering people's questions and helping people see the value Epic Web could offer them. Launch days are always fun." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qv1e8xth0rhhe60c202", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.126031Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 21 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "The sale period went on for a few weeks and now the course is full price (with support for purchasing power parity of course). In the last couple weeks, we added support for à la carte purchases of the workshops as well. People are still joining us every day, though the launch period will always be the biggest spike." + }, + "annotations": {}, + "plain_text": "The sale period went on for a few weeks and now the course is full price (with support for purchasing power parity of course). In the last couple weeks, we added support for à la carte purchases of the workshops as well. People are still joining us every day, though the launch period will always be the biggest spike." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qv2efabsjfrg199ctpk", + "type": "heading_3", + "created_time": "2025-06-24T09:44:12.126256Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 21 + } + }, + "heading_3": { + "rich_text": [ + { + "type": "text", + "text": { + "content": " The " + }, + "annotations": {}, + "plain_text": " The " + }, + { + "type": "text", + "text": { + "content": "Future", + "link": { + "url": "#page-20-0" + } + }, + "annotations": {}, + "plain_text": "Future", + "href": "#page-20-0" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qv3fjw91zkwfhj2qrte", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.126408Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 21 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "I'm super excited about the future of Epic Web. With Epic React and Testing JavaScript, I created the material, published, and it was done (with small, necessary updates here and there). Epic Web is bigger and certainly not done. I have so much that I still want to teach. Here's some stuff on my list:" + }, + "annotations": {}, + "plain_text": "I'm super excited about the future of Epic Web. With Epic React and Testing JavaScript, I created the material, published, and it was done (with small, necessary updates here and there). Epic Web is bigger and certainly not done. I have so much that I still want to teach. Here's some stuff on my list:" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qv6e39a90v9q743xem7", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.126759Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": true, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 21 + } + }, + "paragraph": { + "rich_text": [] + }, + "children": [ + { + "object": "block", + "id": "bk_01jygn5qv4fp7sbsr1vamwq0p8", + "type": "bulleted_list_item", + "created_time": "2025-06-24T09:44:12.126558Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 21 + } + }, + "bulleted_list_item": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "TestingJavaScript.com 2.0" + }, + "annotations": {}, + "plain_text": "TestingJavaScript.com 2.0" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qv5em2shn28hkmveakc", + "type": "bulleted_list_item", + "created_time": "2025-06-24T09:44:12.126668Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 21 + } + }, + "bulleted_list_item": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "EpicReact.dev 2.0" + }, + "annotations": {}, + "plain_text": "EpicReact.dev 2.0" + } + ] + } + } + ] + }, + { + "object": "block", + "id": "bk_01jygn5qvgf1h8gy8ssjdpj172", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.131173Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": true, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 22 + } + }, + "paragraph": { + "rich_text": [] + }, + "children": [ + { + "object": "block", + "id": "bk_01jygn5qv8e5wrhtwptyay3pp2", + "type": "bulleted_list_item", + "created_time": "2025-06-24T09:44:12.130223Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 22 + } + }, + "bulleted_list_item": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "CSS/Tailwind workshop series" + }, + "annotations": {}, + "plain_text": "CSS/Tailwind workshop series" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qv9e4mretgba5jq2dpp", + "type": "bulleted_list_item", + "created_time": "2025-06-24T09:44:12.130362Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 22 + } + }, + "bulleted_list_item": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Collaborative Web Apps" + }, + "annotations": {}, + "plain_text": "Collaborative Web Apps" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qvaeaxb3t13fxy5ngh7", + "type": "bulleted_list_item", + "created_time": "2025-06-24T09:44:12.130468Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 22 + } + }, + "bulleted_list_item": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Production Error Reporting" + }, + "annotations": {}, + "plain_text": "Production Error Reporting" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qvbekt9wat85jy59j7j", + "type": "bulleted_list_item", + "created_time": "2025-06-24T09:44:12.130567Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 22 + } + }, + "bulleted_list_item": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Full Stack Caching" + }, + "annotations": {}, + "plain_text": "Full Stack Caching" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qvcft4s7schg0a1zhzk", + "type": "bulleted_list_item", + "created_time": "2025-06-24T09:44:12.130664Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 22 + } + }, + "bulleted_list_item": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Production Performance Monitoring" + }, + "annotations": {}, + "plain_text": "Production Performance Monitoring" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qvdfdft5ge9337gk39t", + "type": "bulleted_list_item", + "created_time": "2025-06-24T09:44:12.130759Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 22 + } + }, + "bulleted_list_item": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Web Performance Optimization" + }, + "annotations": {}, + "plain_text": "Web Performance Optimization" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qvefq8vq6ztvxdyx0yg", + "type": "bulleted_list_item", + "created_time": "2025-06-24T09:44:12.130973Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 22 + } + }, + "bulleted_list_item": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Internationalization" + }, + "annotations": {}, + "plain_text": "Internationalization" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qvfff59nmt7s7nrw47h", + "type": "bulleted_list_item", + "created_time": "2025-06-24T09:44:12.131078Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 22 + } + }, + "bulleted_list_item": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Accessibility" + }, + "annotations": {}, + "plain_text": "Accessibility" + } + ] + } + } + ] + }, + { + "object": "block", + "id": "bk_01jygn5qvhfpy90h0n1pfwkjmw", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.131378Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 22 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "There's so much more. So I was looking at this list of things I wanted to do and I decided that I could either make people wait for me to produce all this stuff, or I could get some other folks to help me." + }, + "annotations": {}, + "plain_text": "There's so much more. So I was looking at this list of things I wanted to do and I decided that I could either make people wait for me to produce all this stuff, or I could get some other folks to help me." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qvjevdsry7gqvf35rs8", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.131523Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 22 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "The trouble is I really like having all the control. I like the consistency that a single instructor and teaching method gives learners. But I thought if I could find some excellent people who would be willing to let me guide them in the way I want things to be taught and the recommendations I want to make, then I could get a lot more done." + }, + "annotations": {}, + "plain_text": "The trouble is I really like having all the control. I like the consistency that a single instructor and teaching method gives learners. But I thought if I could find some excellent people who would be willing to let me guide them in the way I want things to be taught and the recommendations I want to make, then I could get a lot more done." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qvkfmyb727dkp965hww", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.131856Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 22 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "So that's what I did! So I reached out to Simon " + }, + "annotations": {}, + "plain_text": "So that's what I did! So I reached out to Simon " + }, + { + "type": "text", + "text": { + "content": "Vrachliotis", + "link": { + "url": "https://twitter.com/simonswiss" + } + }, + "annotations": {}, + "plain_text": "Vrachliotis", + "href": "https://twitter.com/simonswiss" + }, + { + "type": "text", + "text": { + "content": " and he agreed to contribute to the Epic Web world! He's already started producing free material for Epic Web which you can find on " + }, + "annotations": {}, + "plain_text": " and he agreed to contribute to the Epic Web world! He's already started producing free material for Epic Web which you can find on " + }, + { + "type": "text", + "text": { + "content": "his", + "link": { + "url": "https://www.epicweb.dev/authors/simon-vrachliotis" + } + }, + "annotations": {}, + "plain_text": "his", + "href": "https://www.epicweb.dev/authors/simon-vrachliotis" + }, + { + "type": "text", + "text": { + "content": " " + }, + "annotations": {}, + "plain_text": " " + }, + { + "type": "text", + "text": { + "content": "instructor", + "link": { + "url": "https://www.epicweb.dev/authors/simon-vrachliotis" + } + }, + "annotations": {}, + "plain_text": "instructor", + "href": "https://www.epicweb.dev/authors/simon-vrachliotis" + }, + { + "type": "text", + "text": { + "content": " page." + }, + "annotations": {}, + "plain_text": " page." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qvmesvr19nb5w64v44b", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.132007Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 22 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "I have other folks I'm working with as well, but we haven't announced them yet. Stay tuned for that!" + }, + "annotations": {}, + "plain_text": "I have other folks I'm working with as well, but we haven't announced them yet. Stay tuned for that!" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qvnewvbf6v2mtrk69jd", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.132136Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 22 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Don't worry, we're going to keep Epic Web consistent and excellent. I'm convinced that a big part of what I offer as an instructor is good opinions and a curated learning path. Other instructional sites are loaded with lots of good, but conflicting recommendations. That's not what you'll find on Epic Web." + }, + "annotations": {}, + "plain_text": "Don't worry, we're going to keep Epic Web consistent and excellent. I'm convinced that a big part of what I offer as an instructor is good opinions and a curated learning path. Other instructional sites are loaded with lots of good, but conflicting recommendations. That's not what you'll find on Epic Web." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qvqem89ar1brsfqzdsd", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.135236Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 23 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "While I appreciate that not every tool is the right one for every job, you'll never be able to cover every edge case and there's a lot of value in having a consistent message and recommendation. And the nuance can be addressed as needed. But Epic Web will give you a proven path to building excellent full stack applications. And we'll do that faster by having more excellent instructors." + }, + "annotations": {}, + "plain_text": "While I appreciate that not every tool is the right one for every job, you'll never be able to cover every edge case and there's a lot of value in having a consistent message and recommendation. And the nuance can be addressed as needed. But Epic Web will give you a proven path to building excellent full stack applications. And we'll do that faster by having more excellent instructors." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qvre6c99js7jnstrsaq", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.135406Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 23 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Next year is going to be an awesome year for your education on Epic Web. Stay tuned!" + }, + "annotations": {}, + "plain_text": "Next year is going to be an awesome year for your education on Epic Web. Stay tuned!" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qvsfdzb7jwxz7tdjj8m", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.135521Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 23 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Oh yeah, and..." + }, + "annotations": {}, + "plain_text": "Oh yeah, and..." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qvtfd9v6g1pzzp8cx9p", + "type": "image", + "created_time": "2025-06-24T09:44:12.135628Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 23 + } + }, + "image": { + "type": "external", + "external": { + "url": "textcortex://images/img_71114vqrx39bmavvcbwvwwah9w" + }, + "caption": [ + { + "type": "text", + "text": { + "content": "Image /page/22/Picture/5 description: This image is a screenshot of a tweet by Kent C. Dodds (@kentcdodds). In the tweet, Kent C. Dodds announces that he has recorded the first 3 videos of what will become Epic React v2. He also mentions that it is coming in a few months. The tweet includes a picture of a graphic with the text \"Ship Modern Full-Stack Web Applications\" and the URL \"www.epicweb.dev\". The tweet was posted on November 30th, 2023 at 4:58 PM (UTC)." + }, + "annotations": {}, + "plain_text": "Image /page/22/Picture/5 description: This image is a screenshot of a tweet by Kent C. Dodds (@kentcdodds). In the tweet, Kent C. Dodds announces that he has recorded the first 3 videos of what will become Epic React v2. He also mentions that it is coming in a few months. The tweet includes a picture of a graphic with the text \"Ship Modern Full-Stack Web Applications\" and the URL \"www.epicweb.dev\". The tweet was posted on November 30th, 2023 at 4:58 PM (UTC)." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qvxekmt4h2g56pw1thx", + "type": "heading_3", + "created_time": "2025-06-24T09:44:12.137959Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 24 + } + }, + "heading_3": { + "rich_text": [ + { + "type": "text", + "text": { + "content": " " + }, + "annotations": {}, + "plain_text": " " + }, + { + "type": "text", + "text": { + "content": "Conclusion", + "link": { + "url": "#page-23-0" + } + }, + "annotations": {}, + "plain_text": "Conclusion", + "href": "#page-23-0" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qvyf9ftgg7wd54fdwdd", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.138116Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 24 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "The launch of Epic Web was incredibly difficult. But I'm so glad that I managed it. I'm excited to build on top of this foundation and continue to help people like you in your full stack web development journey. Thanks for coming along!" + }, + "annotations": {}, + "plain_text": "The launch of Epic Web was incredibly difficult. But I'm so glad that I managed it. I'm excited to build on top of this foundation and continue to help people like you in your full stack web development journey. Thanks for coming along!" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qvzeevt8nm5qb7br820", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.138305Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 24 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Login", + "link": { + "url": "https://kentcdodds.com/login" + } + }, + "annotations": {}, + "plain_text": "Login", + "href": "https://kentcdodds.com/login" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qw0eq09thp72f9t0yht", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.138603Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 24 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "• Tweet this " + }, + "annotations": {}, + "plain_text": "• Tweet this " + }, + { + "type": "text", + "text": { + "content": "article", + "link": { + "url": "https://twitter.com/intent/tweet?url=https%3A%2F%2Fkentcdodds.com%2Fblog%2Flaunching-epic-web&text=I+just+read+%22Launching+Epic+Web%22+by+%40kentcdodds%0A%0A" + } + }, + "annotations": {}, + "plain_text": "article", + "href": "https://twitter.com/intent/tweet?url=https%3A%2F%2Fkentcdodds.com%2Fblog%2Flaunching-epic-web&text=I+just+read+%22Launching+Epic+Web%22+by+%40kentcdodds%0A%0A" + }, + { + "type": "text", + "text": { + "content": " " + }, + "annotations": {}, + "plain_text": " " + }, + { + "type": "text", + "text": { + "content": "Discuss", + "link": { + "url": "https://twitter.com/search?q=https%3A%2F%2Fkentcdodds.com%2Fblog%2Flaunching-epic-web" + } + }, + "annotations": {}, + "plain_text": "Discuss", + "href": "https://twitter.com/search?q=https%3A%2F%2Fkentcdodds.com%2Fblog%2Flaunching-epic-web" + }, + { + "type": "text", + "text": { + "content": " on Twitter Edit on " + }, + "annotations": {}, + "plain_text": " on Twitter Edit on " + }, + { + "type": "text", + "text": { + "content": "GitHub", + "link": { + "url": "https://github.com/kentcdodds/kentcdodds.com/edit/main/content/blog/launching-epic-web.mdx" + } + }, + "annotations": {}, + "plain_text": "GitHub", + "href": "https://github.com/kentcdodds/kentcdodds.com/edit/main/content/blog/launching-epic-web.mdx" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qw1fknvvxnbf1vpdqa9", + "type": "image", + "created_time": "2025-06-24T09:44:12.138735Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 24 + } + }, + "image": { + "type": "external", + "external": { + "url": "textcortex://images/img_4t5mvxedrq8vsrfnynjwa70aae" + }, + "caption": [] + } + }, + { + "object": "block", + "id": "bk_01jygn5qw2eyfr8hqy7w7965jm", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.138932Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 24 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Written by Kent C. Dodds" + }, + "annotations": {}, + "plain_text": "Written by Kent C. Dodds" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qw3e1vs274mznfsjmb1", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.139061Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 24 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Kent C. Dodds is a JavaScript software engineer and teacher. Kent's taught hundreds of thousands of people how to make the world a better place with quality software development tools and practices. He lives with his wife and four kids in Utah." + }, + "annotations": {}, + "plain_text": "Kent C. Dodds is a JavaScript software engineer and teacher. Kent's taught hundreds of thousands of people how to make the world a better place with quality software development tools and practices. He lives with his wife and four kids in Utah." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qw5e90vcnm2hf64qs47", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.143822Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 25 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Learn more " + }, + "annotations": {}, + "plain_text": "Learn more " + }, + { + "type": "text", + "text": { + "content": "about", + "link": { + "url": "https://kentcdodds.com/about" + } + }, + "annotations": {}, + "plain_text": "about", + "href": "https://kentcdodds.com/about" + }, + { + "type": "text", + "text": { + "content": " Kent" + }, + "annotations": {}, + "plain_text": " Kent" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qw6ewc9faaz96g28378", + "type": "heading_1", + "created_time": "2025-06-24T09:44:12.143967Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 25 + } + }, + "heading_1": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "If you found this article helpful. You will love these ones as well." + }, + "annotations": {}, + "plain_text": "If you found this article helpful. You will love these ones as well." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qw7fjat6fwhjqsnvbe2", + "type": "image", + "created_time": "2025-06-24T09:44:12.144092Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 25 + } + }, + "image": { + "type": "external", + "external": { + "url": "textcortex://images/img_2hb3ye100f9y0vr45scqyarzgp" + }, + "caption": [ + { + "type": "text", + "text": { + "content": "Image /page/24/Picture/3 description: A classroom setting shows a man standing in front of a whiteboard, holding a laptop and giving a presentation to a group of people seated at tables. The room is well-lit, with horizontal blinds on the windows. The tables are arranged in rows, and each has a chair. Some tables have water bottles and other items on them. The man is wearing a maroon t-shirt and is facing the audience. The audience members are looking at the man and the whiteboard. The whiteboard has some writing on it, but it is not legible. There is a projector screen on the left side of the room." + }, + "annotations": {}, + "plain_text": "Image /page/24/Picture/3 description: A classroom setting shows a man standing in front of a whiteboard, holding a laptop and giving a presentation to a group of people seated at tables. The room is well-lit, with horizontal blinds on the windows. The tables are arranged in rows, and each has a chair. Some tables have water bottles and other items on them. The man is wearing a maroon t-shirt and is facing the audience. The audience members are looking at the man and the whiteboard. The whiteboard has some writing on it, but it is not legible. There is a projector screen on the left side of the room." + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qw9e03v8x1y7k2nfvqp", + "type": "image", + "created_time": "2025-06-24T09:44:12.144475Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 25 + } + }, + "image": { + "type": "external", + "external": { + "url": "textcortex://images/img_1bj1xw240j90wv64vjth4eadd0" + }, + "caption": [] + } + }, + { + "object": "block", + "id": "bk_01jygn5qwae0a9ana688adzgxy", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.144671Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 25 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "February 17th, 2019 — 2 min read" + }, + "annotations": {}, + "plain_text": "February 17th, 2019 — 2 min read" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qwbfkzte6qe0wqy7fxy", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.144780Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 25 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "June 6th, 2017 — 11 min read" + }, + "annotations": {}, + "plain_text": "June 6th, 2017 — 11 min read" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qwcftqabncwhw7yfw8c", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.144882Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 25 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Big" + }, + "annotations": {}, + "plain_text": "Big" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qwdfvvam3r2q804e8f7", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.145053Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 25 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Announcement:", + "link": { + "url": "https://kentcdodds.com/blog/full-time-educator" + } + }, + "annotations": {}, + "plain_text": "Announcement:", + "href": "https://kentcdodds.com/blog/full-time-educator" + }, + { + "type": "text", + "text": { + "content": " I'm a full-time educator!" + }, + "annotations": {}, + "plain_text": " I'm a full-time educator!" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qwef98bpks1cwrghe7n", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.145224Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 25 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Classes, Complexity, and Functional " + }, + "annotations": {}, + "plain_text": "Classes, Complexity, and Functional " + }, + { + "type": "text", + "text": { + "content": "Programming", + "link": { + "url": "https://kentcdodds.com/blog/classes-complexity-and-functional-programming" + } + }, + "annotations": {}, + "plain_text": "Programming", + "href": "https://kentcdodds.com/blog/classes-complexity-and-functional-programming" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qwfec3thn1gts2brvty", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.145334Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 25 + } + }, + "paragraph": { + "rich_text": [] + } + }, + { + "object": "block", + "id": "bk_01jygn5qwhfw3v4fwdgnjykvj9", + "type": "heading_3", + "created_time": "2025-06-24T09:44:12.149359Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 26 + } + }, + "heading_3": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Kent C. Dodds" + }, + "annotations": {}, + "plain_text": "Kent C. Dodds" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qwjf96sxrbjsddb0jhn", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.149505Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 26 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Full time educator making our world better" + }, + "annotations": {}, + "plain_text": "Full time educator making our world better" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qwre1nrpatkw6f4czh8", + "type": "table", + "created_time": "2025-06-24T09:44:12.150834Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 26 + } + }, + "table": { + "has_column_header": true, + "has_row_header": false + }, + "children": [ + { + "object": "block", + "id": "bk_01jygn5qwkf7zbw0tdexhawyr9", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.149795Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 26 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "Contact" + }, + "annotations": {}, + "plain_text": "Contact" + } + ], + [ + { + "type": "text", + "text": { + "content": "General" + }, + "annotations": {}, + "plain_text": "General" + } + ] + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qwmfxvatsnkcw7s46vk", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.150027Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 26 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "Email Kent" + }, + "annotations": {}, + "plain_text": "Email Kent" + } + ], + [ + { + "type": "text", + "text": { + "content": "My Mission" + }, + "annotations": {}, + "plain_text": "My Mission" + } + ] + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qwnfx2sjkfhhg5x69z1", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.150260Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 26 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "Call Kent" + }, + "annotations": {}, + "plain_text": "Call Kent" + } + ], + [ + { + "type": "text", + "text": { + "content": "Privacy policy" + }, + "annotations": {}, + "plain_text": "Privacy policy" + } + ] + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qwpfx3v8v7v2xj3hchg", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.150485Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 26 + } + }, + "table_row": { + "cells": [ + [ + { + "type": "text", + "text": { + "content": "Office hours" + }, + "annotations": {}, + "plain_text": "Office hours" + } + ], + [ + { + "type": "text", + "text": { + "content": "Terms of use" + }, + "annotations": {}, + "plain_text": "Terms of use" + } + ] + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qwqe7rv8nc1x0ze5msg", + "type": "table_row", + "created_time": "2025-06-24T09:44:12.150665Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 26 + } + }, + "table_row": { + "cells": [ + [], + [ + { + "type": "text", + "text": { + "content": "Code of conduct" + }, + "annotations": {}, + "plain_text": "Code of conduct" + } + ] + ] + } + } + ] + }, + { + "object": "block", + "id": "bk_01jygn5qwsf7wsh0scaswr60fj", + "type": "heading_3", + "created_time": "2025-06-24T09:44:12.150976Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 26 + } + }, + "heading_3": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Stay up to date" + }, + "annotations": {}, + "plain_text": "Stay up to date" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qwtfasah0x4y2tecj5c", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.151247Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 26 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Subscribe to the newsletter to stay up to date with articles, courses and " + }, + "annotations": {}, + "plain_text": "Subscribe to the newsletter to stay up to date with articles, courses and " + }, + { + "type": "text", + "text": { + "content": "much", + "link": { + "url": "https://kentcdodds.com/subscribe" + } + }, + "annotations": {}, + "plain_text": "much", + "href": "https://kentcdodds.com/subscribe" + }, + { + "type": "text", + "text": { + "content": " more! Learn more about the " + }, + "annotations": {}, + "plain_text": " more! Learn more about the " + }, + { + "type": "text", + "text": { + "content": "newsletter", + "link": { + "url": "https://kentcdodds.com/subscribe" + } + }, + "annotations": {}, + "plain_text": "newsletter", + "href": "https://kentcdodds.com/subscribe" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qwvf72s3xgvprtw8d6a", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.151386Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 26 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "First name" + }, + "annotations": {}, + "plain_text": "First name" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qwwe63vsh9p7txjwp1w", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.152151Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 26 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Sitemap " + }, + "annotations": {}, + "plain_text": "Sitemap " + }, + { + "type": "text", + "text": { + "content": "Home", + "link": { + "url": "https://kentcdodds.com/" + } + }, + "annotations": {}, + "plain_text": "Home", + "href": "https://kentcdodds.com/" + }, + { + "type": "text", + "text": { + "content": " " + }, + "annotations": {}, + "plain_text": " " + }, + { + "type": "text", + "text": { + "content": "Blog", + "link": { + "url": "https://kentcdodds.com/blog" + } + }, + "annotations": {}, + "plain_text": "Blog", + "href": "https://kentcdodds.com/blog" + }, + { + "type": "text", + "text": { + "content": " " + }, + "annotations": {}, + "plain_text": " " + }, + { + "type": "text", + "text": { + "content": "Courses", + "link": { + "url": "https://kentcdodds.com/courses" + } + }, + "annotations": {}, + "plain_text": "Courses", + "href": "https://kentcdodds.com/courses" + }, + { + "type": "text", + "text": { + "content": " " + }, + "annotations": {}, + "plain_text": " " + }, + { + "type": "text", + "text": { + "content": "Discord", + "link": { + "url": "https://kentcdodds.com/discord" + } + }, + "annotations": {}, + "plain_text": "Discord", + "href": "https://kentcdodds.com/discord" + }, + { + "type": "text", + "text": { + "content": " Chats " + }, + "annotations": {}, + "plain_text": " Chats " + }, + { + "type": "text", + "text": { + "content": "Podcast", + "link": { + "url": "https://kentcdodds.com/chats" + } + }, + "annotations": {}, + "plain_text": "Podcast", + "href": "https://kentcdodds.com/chats" + }, + { + "type": "text", + "text": { + "content": " " + }, + "annotations": {}, + "plain_text": " " + }, + { + "type": "text", + "text": { + "content": "Workshops", + "link": { + "url": "https://kentcdodds.com/workshops" + } + }, + "annotations": {}, + "plain_text": "Workshops", + "href": "https://kentcdodds.com/workshops" + }, + { + "type": "text", + "text": { + "content": " " + }, + "annotations": {}, + "plain_text": " " + }, + { + "type": "text", + "text": { + "content": "Talks", + "link": { + "url": "https://kentcdodds.com/talks" + } + }, + "annotations": {}, + "plain_text": "Talks", + "href": "https://kentcdodds.com/talks" + }, + { + "type": "text", + "text": { + "content": " " + }, + "annotations": {}, + "plain_text": " " + }, + { + "type": "text", + "text": { + "content": "Testimony", + "link": { + "url": "https://kentcdodds.com/testimony" + } + }, + "annotations": {}, + "plain_text": "Testimony", + "href": "https://kentcdodds.com/testimony" + }, + { + "type": "text", + "text": { + "content": " " + }, + "annotations": {}, + "plain_text": " " + }, + { + "type": "text", + "text": { + "content": "Testimonials", + "link": { + "url": "https://kentcdodds.com/testimonials" + } + }, + "annotations": {}, + "plain_text": "Testimonials", + "href": "https://kentcdodds.com/testimonials" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qwxfxgrng9cjtfeyfdv", + "type": "heading_3", + "created_time": "2025-06-24T09:44:12.152357Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 26 + } + }, + "heading_3": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Email" + }, + "annotations": {}, + "plain_text": "Email" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qwzen0ad4p9m3q114qv", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.157246Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 27 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "About", + "link": { + "url": "https://kentcdodds.com/about" + } + }, + "annotations": {}, + "plain_text": "About", + "href": "https://kentcdodds.com/about" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qx0f29apsd685ymvb5x", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.157429Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 27 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Credits", + "link": { + "url": "https://kentcdodds.com/credits" + } + }, + "annotations": {}, + "plain_text": "Credits", + "href": "https://kentcdodds.com/credits" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qx1fs987sgcsm7aw23b", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.157594Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 27 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "Sitemap.xml", + "link": { + "url": "https://kentcdodds.com/sitemap.xml" + } + }, + "annotations": {}, + "plain_text": "Sitemap.xml", + "href": "https://kentcdodds.com/sitemap.xml" + } + ] + } + }, + { + "object": "block", + "id": "bk_01jygn5qx2f4trsyak2d8e8h57", + "type": "image", + "created_time": "2025-06-24T09:44:12.157688Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 27 + } + }, + "image": { + "type": "external", + "external": { + "url": "textcortex://images/img_36h8ys47v49hktnps8cqhtpf03" + }, + "caption": [] + } + }, + { + "object": "block", + "id": "bk_01jygn5qx3ek0tw2f6wqtek2nc", + "type": "paragraph", + "created_time": "2025-06-24T09:44:12.157894Z", + "created_by": { + "object": "user", + "id": "28a08aa3-192b-45e6-b6d3-32b8032d8c7b" + }, + "has_children": false, + "metadata": { + "origin": { + "file_id": "file_01jygmz8mwe18rss3qn9b95ask", + "page_num": 27 + } + }, + "paragraph": { + "rich_text": [ + { + "type": "text", + "text": { + "content": "All rights reserved © Kent C. Dodds 2024" + }, + "annotations": {}, + "plain_text": "All rights reserved © Kent C. Dodds 2024" + } + ] + } + } + ] +} diff --git a/examples/vite_basic/src/App.tsx b/examples/vite_basic/src/App.tsx index 0e030e3..9296a65 100644 --- a/examples/vite_basic/src/App.tsx +++ b/examples/vite_basic/src/App.tsx @@ -18,44 +18,8 @@ const App = () => { handleFileChange, } = useFileLoader(AVAILABLE_FILES[0]); - // Sample backrefs for real_document.json - const sampleBackrefs = [ - { - end_idx: 82, - block_id: "bk_01jxyv2pekf4bs9a82ayxsewga", - start_idx: 0, - }, - { - end_idx: 125, - block_id: "bk_01jxyv2pemfj3848ncdbap6xsa", - start_idx: 8, - }, - { - end_idx: 100, - block_id: "bk_01jxyv2pg6f8hbvmc960g8k58m", - start_idx: 0, - }, - { - end_idx: 30, - block_id: "bk_01jxyv2pepepaam6k48t1s5c1q", - start_idx: 6, - }, - { - end_idx: 20, - block_id: "bk_01jxyv2peqfx1vv7xa8zq4ajfx", - start_idx: 0, - }, - { - end_idx: 200, - block_id: "bk_01jxyv2ppcf6xvxsh278d4e2je", - start_idx: 30, - }, - { - end_idx: 11, - block_id: "bk_01jxyv2pesedv9dfz1e6ekbsj8", - start_idx: 1, - }, - ]; + // Get backrefs for the currently selected file + const currentBackrefs = selectedFile?.backrefs || []; if (error) { return ( @@ -94,7 +58,7 @@ const App = () => { ); } - console.log("showBackrefs ", sampleBackrefs); + console.log("showBackrefs ", currentBackrefs); return (
{ page={testPage} theme={theme} devMode={devMode} - backrefs={showBackrefs ? sampleBackrefs : []} + backrefs={showBackrefs ? currentBackrefs : []} components={{ page_delimiter: (props) => { return ; diff --git a/examples/vite_basic/src/constants/files.ts b/examples/vite_basic/src/constants/files.ts index cb21208..e2be0e6 100644 --- a/examples/vite_basic/src/constants/files.ts +++ b/examples/vite_basic/src/constants/files.ts @@ -1,10 +1,69 @@ +export interface BackrefOption { + end_idx: number; + page_id?: string; + block_id?: string; + start_idx: number; +} + export interface FileOption { name: string; path: string; + backrefs?: BackrefOption[]; } export const AVAILABLE_FILES: FileOption[] = [ { name: "Spacing Test", path: "/spacing_test.json" }, { name: "Test Document", path: "/test_document.json" }, - { name: "Real Document", path: "/real_doc.json" }, + { + name: "Real Document", + path: "/real_doc.json", + backrefs: [ + { + end_idx: 82, + block_id: "bk_01jxyv2pekf4bs9a82ayxsewga", + start_idx: 0, + }, + { + end_idx: 125, + block_id: "bk_01jxyv2pemfj3848ncdbap6xsa", + start_idx: 8, + }, + { + end_idx: 100, + block_id: "bk_01jxyv2pg6f8hbvmc960g8k58m", + start_idx: 0, + }, + { + end_idx: 30, + block_id: "bk_01jxyv2pepepaam6k48t1s5c1q", + start_idx: 6, + }, + { + end_idx: 20, + block_id: "bk_01jxyv2peqfx1vv7xa8zq4ajfx", + start_idx: 0, + }, + { + end_idx: 200, + block_id: "bk_01jxyv2ppcf6xvxsh278d4e2je", + start_idx: 30, + }, + { + end_idx: 11, + block_id: "bk_01jxyv2pesedv9dfz1e6ekbsj8", + start_idx: 1, + }, + ], + }, + { + name: "Epic Web", + path: "/epic-web.json", + backrefs: [ + { + end_idx: 68, + page_id: "pg_01jygn5qmzexnvjrypnh41k8we", + start_idx: 0, + }, + ], + }, ];