Transcription: OpenAgents Episode 057 - Markdown Blog

June 9, 2026 ยท View on GitHub

Source: https://twitter.com/OpenAgentsInc/status/1748909829500842046 Wiki source: https://raw.githubusercontent.com/wiki/OpenAgentsInc/openagents/Video-Series.md Media title: OpenAgents - Episode 057: Markdown Blog We build a basic blog with Tailwind and Ma... Upload date: 20240121 Transcription model: mlx-whisper/mlx-community/whisper-tiny Generated at: 2026-06-01T20:09:40Z

Machine-generated transcript. Review speaker labels and wording before using this as quote-grade source material.

[00:00] Christopher David: Let's continue. Welcome to anyone new yesterday's video was like the most popular ever.

[00:07] Christopher David: So if you're new, just, you know, kind of like lower your expectations a bit.

[00:14] Christopher David: Like to zero would be best because I'm just a huge new.

[00:20] Christopher David: Just kind of a persistent new.

[00:22] Christopher David: All right, so we'll get back on Monday to the next step in the agent flow, which is going to be

[00:29] Christopher David: equipping agents using these new wasm plugins.

[00:35] Christopher David: It's actually be simpler than I thought because the input output associated with each plugin

[00:43] Christopher David: maps pretty perfectly to the input output that we've already defined in our steps model.

[00:51] Christopher David: So we can just have that be a type of step.

[00:57] Christopher David: But for now, I just kind of want to make a little blog.

[01:04] Christopher David: So this isn't nice because we've got this nice kind of cleaner site now.

[01:10] Christopher David: I'm just going to be building in tailwinds.

[01:14] Christopher David: And it's a kind of thing where like there's professional blogs that you could set up and

[01:20] Christopher David: medium and all of that. I just want to say stuff.

[01:25] Christopher David: I gave it talk this morning. I want to put a video and some nice stuff up here.

[01:32] Christopher David: So this is going to be like a nice boring basic video.

[01:39] Christopher David: Basic boring blog. All right.

[01:42] Christopher David: Let's see. So I installed tailwind UI tailwind typography for the pros thing.

[01:56] Christopher David: I put my talk notes over there. Tailwind pros is nice.

[02:03] Christopher David: Just kind of some initial basics.

[02:07] Christopher David: All right. So I want should I t-d-d it?

[02:12] Christopher David: Nah. All right. So I have a blog link in my header.

[02:18] Christopher David: Boyd that.

[02:26] Christopher David: Blog. Go to the blog.

[02:37] Christopher David: Oh, I guess we can make a-

[02:46] Christopher David: So make a blog controller or just do-

[02:52] Christopher David: put it in static controller for now.

[03:06] Christopher David: Okay.

[03:21] Christopher David: Okay. I think I have a layout somewhere.

[03:37] Christopher David: And where am I using that?

[03:43] Christopher David: There.

[03:46] Christopher David: Put that there.

[03:59] Christopher David: And I do want the header.

[04:00] Christopher David: Okay. Why does it look like-

[04:06] Christopher David: Shhh. Like that. What a simple deal.

[04:19] Christopher David: Oh, that's the difference between these.

[04:21] Christopher David: Okay. So I've got too much styling bullshit in the header.

[04:30] Christopher David: Re-fact or so on.

[05:21] Christopher David: Dark BG grade 800.

[05:26] Christopher David: You'll contents.

[05:46] Christopher David: Well, for now I don't really want that to be anything.

[05:49] Christopher David: I just do.

[07:49] Christopher David: So there's a blog template here that I like. Kind of.

[08:13] Christopher David: This is just like little blurbs.

[08:20] Christopher David: Yeah.

[08:32] Christopher David: Yeah. The question is like do I want to make different pages for the blog or just like throw everything in one place?

[08:38] Christopher David: Might as well just throw everything in the place for now.

[08:43] Christopher David: Commit.

[08:49] Christopher David: Give me it's next J.S.

[08:57] Christopher David: Let's de-reactify it.

[09:01] Christopher David: I just want the tailwind styling.

[09:08] Christopher David: I'm going to put it in the back.

[09:15] Christopher David: MDX. I would love to be able to write blog posts in Markdown.

[09:21] Christopher David: I'd have it translated to prose. I wonder if that's something that we can figure out.

[09:38] Christopher David: Wow. Yeah let's try this. How can I have Larabel load marked down from MDX

[09:58] Christopher David: and render it to tailwind?

[10:02] Christopher David: You are both.

[10:04] Christopher David: Do my work for me okay?

[10:30] Christopher David: Really?

[10:34] Christopher David: Here's what I do. Give me this.

[10:51] Christopher David: What happened in resource is blog?

[10:57] Christopher David: Sparkle icon is MDX explicitly react.

[11:04] Christopher David: J.S. X.

[11:11] Christopher David: Yeah.

[11:12] Christopher David: Um that's nice. I just want.

[11:17] Christopher David: Um.

[11:21] Christopher David: I'm finally normal Markdown.

[11:23] Christopher David: Okay what is this common mark converter?

[11:53] Christopher David: Okay. I think I already have something from Graham Campbell.

[12:10] Christopher David: I get it. Okay cool.

[12:24] Christopher David: This is nice. Okay so let's do this.

[12:33] Christopher David: No let's use this package.

[13:54] Christopher David: Okay.

[13:55] Christopher David: Okay.

[13:57] Christopher David: Okay.

[14:19] Christopher David: You can optionally alias the facade.

[14:22] Christopher David: Oh.

[14:31] Christopher David: Ah. Graham Campbell right next to Graham Campbell.

[14:34] Christopher David: Sweet. Thank you Graham Campbell.

[14:46] Christopher David: Did that. Did that.

[15:22] Christopher David: Oh.

[15:43] Christopher David: Um

[15:52] Christopher David: Um

[16:22] Christopher David: First I'm just curious if that works

[16:30] Christopher David: resources, resources, resources,

[16:32] Christopher David: resources,

[16:36] Christopher David: resources, slash blog.

[16:44] Christopher David: Hey.

[16:49] Christopher David: Cool.

[16:50] Christopher David: And let's see what the HTML looks like.

[16:56] Christopher David: Nice.

[17:00] Christopher David: Throw in the pros.

[17:17] Christopher David: Okay.

[17:19] Christopher David: Uh.

[17:20] Christopher David: Date. Is that a JSX thing?

[17:24] Christopher David: I'm guessing so. So let's get rid of that.

[17:27] Christopher David: I don't know what this crap is.

[17:39] Christopher David: Okay images. Is it trying to load these images?

[17:48] Christopher David: Or because it doesn't actually exist there.

[17:54] Christopher David: Which one please kitten that?

[18:00] Christopher David: Does it work if I give it a valid path?

[18:04] Christopher David: Oh yeah.

[18:18] Christopher David: Um.

[18:30] Christopher David: Um.

[18:48] Christopher David: Okay. Markdown works.

[18:50] Christopher David: Images works.

[18:53] Christopher David: What is KBD?

[18:58] Christopher David: I don't know what that is.

[19:04] Christopher David: Okay. So now I can

[19:19] Christopher David: No.

[19:24] Christopher David: How far out does this go? Why does it stop there?

[19:29] Christopher David: It's not centered.

[19:36] Christopher David: Oh because pros.

[19:42] Christopher David: Kind of limits it.

[19:44] Christopher David: It looks good. I just want it to be centered.

[19:51] Christopher David: I'm guessing the pros needs to have MX auto on it.

[19:58] Christopher David: Yeah.

[19:59] Christopher David: Well that was easy.

[20:14] Christopher David: Load, mark down from file.

[20:18] Christopher David: I have fancy to let me get with this.

[20:27] Christopher David: Anything else I want to take from here?

[20:29] Christopher David: I like these rounded corners and the images.

[20:32] Christopher David: I kind of want my image to look like that.

[20:38] Christopher David: And I think I want probably a border.

[20:51] Christopher David: And then bend the slides, which were not slides at all, but they were.

[21:20] Christopher David: I could just use the code for this, but I want to snapshot exactly what I presented.

[21:27] Christopher David: So let's try this.

[21:28] Christopher David: Let's grab one of these.

[21:39] Christopher David: Let's try putting an image in.

[22:09] Christopher David: 800 is probably wide enough.

[22:17] Christopher David: And then where should I put the images?

[22:30] Christopher David: Can I even put it in the resources folder?

[22:36] Christopher David: Let me try something.

[22:50] Christopher David: So what happens if I do this?

[23:05] Christopher David: What's that, though?

[23:13] Christopher David: Read it right, because I don't know what you're trying to do.

[23:16] Christopher David: Trying to get it from the root URL.

[23:56] Christopher David: Okay, except that looks like she had on.

[24:12] Christopher David: Okay, so let me just first try.

[24:23] Christopher David: First of all, I'm curious what this border radius is there.

[24:48] Christopher David: Is it like dynamically set or something?

[25:09] Christopher David: Is there a component for how it turns into an image?

[25:16] Christopher David: Okay.

[25:31] Christopher David: Okay.

[25:41] Christopher David: Do I want to use this?

[25:49] Christopher David: I'm guessing there's got to be like a laryb of equivalent of like specifying what component you want.

[25:57] Christopher David: Oh yeah, I mean that's the question.

[26:11] Christopher David: How do I actually apply styles to that?

[26:21] Christopher David: Okay.

[26:47] Christopher David: MD.Blade.PHP.

[27:00] Christopher David: Okay, tell how I would specify custom tail and classes.

[27:07] Christopher David: I want to put on all images.

[27:12] Christopher David: I could do it at the abscess layer.

[27:19] Christopher David: Actually, you know what?

[27:28] Christopher David: Is it like layer?

[27:56] Christopher David: Okay.

[28:06] Christopher David: Okay.

[28:31] Christopher David: This is pretty cool.

[28:49] Christopher David: So if I want to apply classes like.

[29:01] Christopher David: Okay.

[29:17] Christopher David: All right.

[29:47] Christopher David: It's kind of weird.

[30:04] Christopher David: You can probably do something like.

[30:14] Christopher David: Bg.

[30:18] Christopher David: I don't know what that is.

[30:22] Christopher David: Bg.

[30:32] Christopher David: Okay.

[31:02] Christopher David: Okay.

[31:12] Christopher David: I like pork.

[31:36] Christopher David: Okay.

[31:46] Christopher David: Okay.

[31:58] Christopher David: Okay.

[32:26] Christopher David: Okay.

[32:36] Christopher David: Okay.

[32:46] Christopher David: Okay.

[33:14] Christopher David: Okay.

[33:44] Christopher David: Okay.

[34:12] Christopher David: Okay.

[34:38] Christopher David: Okay.

[35:06] Christopher David: Okay.

[35:16] Christopher David: Okay.

[35:45] Christopher David: Okay.

[35:55] Christopher David: Okay.

[36:05] Christopher David: Okay.

[36:33] Christopher David: Okay.

[36:46] Christopher David: Okay.

[37:00] Christopher David: Okay.

[37:26] Christopher David: Okay.

[37:49] Christopher David: Okay.

[38:15] Christopher David: Okay.

[38:25] Christopher David: Okay.

[38:43] Christopher David: Okay.

[38:53] Christopher David: Okay.

[39:11] Christopher David: Okay.

[39:39] Christopher David: Okay.

[39:49] Christopher David: Okay.

[39:54] Christopher David: Okay.

[39:55] Christopher David: Okay.

[39:59] Christopher David: Uh-oh, for their renderer parts, since the package does not provide a straightforward way to add custom renders.

[40:08] Christopher David: Huh?

[40:09] Christopher David: What will that extension do without a renderer?

[40:31] Christopher David: Go over the page and just kind of see what it looks like.

[40:52] Christopher David: Inline parser interface, not found.

[41:22] Christopher David: So the parser identifies instance of the custom date syntax, like that.

[41:30] Christopher David: It then creates a custom date element or similar node in the markdown abstract syntax string.

[41:37] Christopher David: I think the renderer's renderer takes the date element nodes and goes to the page.

[41:53] Christopher David: Err in date parser.

[42:08] Christopher David: Gram, GitHub, Inline, what I got?

[42:14] Christopher David: Inline parser interface.

[42:37] Christopher David: League common mark.

[43:07] Christopher David: See if this gives you any extra info, the common mark read me currently.

[44:07] Christopher David: As the kind of stuff I want agents to be able to do, like you hunt down a documentation, crawl the web a little bit, keep my GitHub repo in context.

[45:37] Christopher David: Okay, so here's a question.

[45:54] Christopher David: This says it doesn't support.

[46:06] Christopher David: And the array of options for rendering HTML.

[46:30] Christopher David: Ah.

[46:37] Christopher David: That table extension class is defined as such.

[46:46] Christopher David: Can you write a date version of this based on that?

[46:58] Christopher David: There you go.

[47:11] Christopher David: So we're going to call this date extension.

[47:25] Christopher David: And then in our config.

[47:32] Christopher David: Let me say that didn't work.

[47:39] Christopher David: But we try date extension.

[47:46] Christopher David: Now what happens?

[47:54] Christopher David: Let's just see, take a quick peek inside that vendor file, a vendor folder and see if we can figure out if there's a version of that that's just a different.

[48:18] Christopher David: Inline, I'll see anything inline.

[48:25] Christopher David: There's parser, a here you go.

[48:30] Christopher David: It's common mark parser inline.

[48:37] Christopher David: parser inline, inline parser interface.

[48:57] Christopher David: I found the parser interface at a different path.

[49:03] Christopher David: Here's this.

[49:12] Christopher David: And now here's my parser.

[49:20] Christopher David: But I get this error.

[49:29] Christopher David: And then I parse your magic that thing.

[49:44] Christopher David: It is.

[49:50] Christopher David: What the fuck?

[50:11] Christopher David: I see lead common mark inline parser context is not available.

[50:29] Christopher David: Because it needs to be from parser.

[50:35] Christopher David: I don't know where GPD is getting these.

[50:40] Christopher David: I'm going to add a map to the map.

[50:50] Christopher David: I'm going to add a map to the map.

[50:57] Christopher David: I'm going to add a map to the map.

[51:06] Christopher David: Let me search in here.

[51:16] Christopher David: Let me go to common mark.

[51:24] Christopher David: Let's call inline render interface.

[51:55] Christopher David: Do I need to even care about that at all?

[52:02] Christopher David: Can I just ask that?

[52:23] Christopher David: Oh, no render interface.

[52:33] Christopher David: That might be what we need.

[52:49] Christopher David: This is hilarious.

[53:19] Christopher David: I'm going to add a map to the map.

[53:29] Christopher David: I'm going to add a map to the map.

[53:39] Christopher David: I'm going to add a map to the map.

[53:49] Christopher David: I'm going to add a map to the map.

[54:14] Christopher David: Hmm.

[54:44] Christopher David: Let's see if I change anything here.

[55:14] Christopher David: Next jump back slash maybe.

[55:44] Christopher David: I'm going to add a map to the map.

[55:54] Christopher David: I'm going to add a map to the map.

[56:09] Christopher David: Maybe that brace is already being used or filtered by Lairville in some way.

[56:29] Christopher David: Same error.

[56:30] Christopher David: Let's switch it to something else.

[57:00] Christopher David: I'm going to add a map to the map.

[57:10] Christopher David: I'm going to add a map to the map.

[57:38] Christopher David: I'm going to add a map to the map.

[58:08] Christopher David: I'm going to add a map to the map.

[58:30] Christopher David: I'm going to add a map to the map.

[59:00] Christopher David: I'm going to add a map to the map.

[59:14] Christopher David: I'm going to add a map to the map.

[59:24] Christopher David: I'm going to add a map to the map.

[59:34] Christopher David: I'm going to add a map to the map.

[59:59] Christopher David: Oh goodness January 21, 2024, holy shit, except that's not today's day.

[01:00:17] Christopher David: I mean that's today's day.

[01:00:19] Christopher David: That's not what I put in.

[01:00:21] Christopher David: Oh my gosh.

[01:00:23] Christopher David: If you bully Chaggy Beauty enough, it'll give you what you want.

[01:00:26] Christopher David: Okay, so let's just test out one thing.

[01:00:31] Christopher David: So one is if we go to, so for a matter of day, we can just be like, you know, dark mode, text bluebell.

[01:00:44] Christopher David: Oh yeah.

[01:00:47] Christopher David: And there will want to be, first of all, this is the margin coming from.

[01:00:52] Christopher David: Probably the H1, well yeah, what I could do is I could just do this.

[01:00:55] Christopher David: M T 6.

[01:00:58] Christopher David: Ha ha ha.

[01:01:00] Christopher David: Is it doing anything?

[01:01:02] Christopher David: Oh, then refresh.

[01:01:09] Christopher David: Why is that not going up?

[01:01:12] Christopher David: Oh, because it's a span inside of a P and the P has.

[01:01:21] Christopher David: I don't think about that.

[01:01:28] Christopher David: Bro's is kind of rigorous about the spacing.

[01:01:36] Christopher David: I'll feel that later.

[01:01:38] Christopher David: Okay, so let's make it show the right date.

[01:01:40] Christopher David: I don't know why it's not.

[01:01:52] Christopher David: Works except it is showing the current date, not what I've put in.

[01:01:57] Christopher David: Why?

[01:02:21] Christopher David: No, get date.

[01:02:33] Christopher David: What is this?

[01:02:40] Christopher David: What is this get date thingy?

[01:02:45] Christopher David: Oh, it's like I don't know what the fuck you're talking about.

[01:02:50] Christopher David: This is calling node get date, which returns an empty string.

[01:03:00] Christopher David: So I guess it's defaulting to the current date.

[01:03:05] Christopher David: Make sure it uses what I put in, which is.

[01:03:20] Christopher David: Okay.

[01:03:30] Christopher David: Okay.

[01:03:35] Christopher David: Okay.

[01:03:38] Christopher David: Okay.

[01:03:43] Christopher David: Okay.

[01:03:46] Christopher David: Really?

[01:03:49] Christopher David: Okay.

[01:04:19] Christopher David: Okay.

[01:04:49] Christopher David: It depends while matches.

[01:05:19] Christopher David: Okay.

[01:05:49] Christopher David: Did I just say you can't do advanced while matches?

[01:06:07] Christopher David: You fuck?

[01:06:16] Christopher David: Okay.

[01:06:30] Christopher David: But I really like making stuff up.

[01:06:41] Christopher David: I assume the date string is enclosed in single quotes.

[01:06:48] Christopher David: Okay.

[01:07:05] Christopher David: It's showing us the string.

[01:07:36] Christopher David: I'm better not give me that fucking method again.

[01:07:55] Christopher David: We're getting closer.

[01:08:04] Christopher David: Okay.

[01:08:34] Christopher David: What the fuck?

[01:08:50] Christopher David: What the fuck?

[01:09:03] Christopher David: Okay.

[01:09:18] Christopher David: Let's see if copilot can do any better.

[01:09:29] Christopher David: Curseor.getline is.

[01:09:42] Christopher David: The blow code does not fucking work.

[01:09:46] Christopher David: Here is how to make it work.

[01:09:50] Christopher David: Come on, copilot.

[01:09:56] Christopher David: You can do it.

[01:10:26] Christopher David: Okay.

[01:10:52] Christopher David: Okay.

[01:11:22] Christopher David: Okay.

[01:11:43] Christopher David: Okay.

[01:11:53] Christopher David: You're code did not work.

[01:12:02] Christopher David: Copilot's code worked.

[01:12:05] Christopher David: Except it shows the right date, but does still displays the raw date.

[01:12:18] Christopher David: Okay.

[01:12:58] Christopher David: Okay.

[01:13:28] Christopher David: Okay.

[01:13:51] Christopher David: Okay.

[01:14:01] Christopher David: Okay.

[01:14:28] Christopher David: Okay.

[01:14:38] Christopher David: Okay.

[01:14:48] Christopher David: Okay.

[01:15:13] Christopher David: Okay.

[01:15:23] Christopher David: Okay.

[01:15:31] Christopher David: Okay.