My First AI Plugin Review ![rw-book-cover](https://img.youtube.com/vi/xmpPkNraGsM/maxresdefault.jpg) [[3. Resources/Readwise/Full Document Contents/Articles/My First AI Plugin Review|Full Document Contents]] ## Document Notes > [!note]+ Document Notes > tags: [wordpress, plugin-review, ai-tools] > author: Jonathan Bossenger > source: YouTube > reference: https://www.youtube.com/watch?v=xmpPkNraGsM > date created: 2024-12-28 12:00 > > # ๐Ÿท๏ธ Title: My first AI plugin review > <!-- deep-read:sections start --> ## ๐Ÿงฐ Action Inbox - [H1] Review text-to-speech plugin code structure โ€” 00:00 #wordpress - [H2] Test Speechable plugin functionality โ€” 05:30 #accessibility - [H3] Provide constructive feedback to student developer โ€” 15:45 #mentoring ## ๐Ÿงญ Table of Contents - [๐Ÿ“ Summary](#-summary) - [๐Ÿ“– Main Content](#-main-content) - [๐Ÿ—’๏ธ Notes](#๏ธ-notes) - [๐Ÿ“š References](#-references) - [๐Ÿ—ฃ๏ธ Paraphrase](#๏ธ-paraphrase) - [๐Ÿ“ฐ Newsletter](#-newsletter) - [โœ… Action Items](#-action-items) - [๐Ÿงช Hypotheses](#-hypotheses) - [๐Ÿ“Š Methodology](#-methodology) - [โ“ Questions](#-questions) - [๐Ÿ”ฎ Future Research](#-future-research) - [๐Ÿ’ก Implications](#-implications) - [๐Ÿง  Learning Styles Assessment](#-learning-styles-assessment) - [๐Ÿ“Š Accessibility Assessment](#-accessibility-assessment) - [๐ŸŒ DEIB Assessment](#-deib-assessment) - [โœ… Logical Validity](#-logical-validity) - [๐Ÿ›ก๏ธ DARVO Analysis](#-darvo-analysis) - [๐ŸŽฏ Conclusion](#-conclusion) ### ๐Ÿ”— References - [Speechable Plugin](https://wordpress.org/plugins/speechable/) - [Piper TTS](https://github.com/rhasspy/piper) - [Hugging Face Models](https://huggingface.co/) ## ๐Ÿ“ Summary - A WordPress developer reviews Speechable, a text-to-speech plugin built by a student developer from India - The plugin uses Piper TTS neural engine running in the browser with models downloaded from Hugging Face - Code is clean and readable but needs optimization for model caching and file storage - Demonstrates positive mentoring approach to reviewing student work - Highlights potential of AI-assisted development tools for new developers ## ๐Ÿ“– Main Content Jonathan Bossenger reviews a WordPress text-to-speech plugin called Speechable, developed by Tanish, a student from India. The plugin adds accessibility features by converting post content to speech using Piper TTS models that run locally in the browser. The review covers technical implementation, user experience, and provides constructive feedback for improvement while maintaining an encouraging tone toward the student developer. ## ๐Ÿ—’๏ธ Notes #### โฑ๏ธ [00:00](https://youtu.be/xmpPkNraGsM?t=0) โ€” [H1] Plugin Introduction and Developer Background - Key idea: Student developer Tanish from India built Speechable plugin for accessibility - Evidence: "I recently built a WordPress plug-in called Speechable that adds text to speech to post pages" #### โฑ๏ธ [01:30](https://youtu.be/xmpPkNraGsM?t=90) โ€” [H2] Developer Profile and Portfolio Assessment - Key idea: Tanish has built multiple products including Chrome extensions and Shopify apps - Evidence: "He's built a notes app, a Chrome extension. He's built a video bot thingy" #### โฑ๏ธ [03:15](https://youtu.be/xmpPkNraGsM?t=195) โ€” [H2] Code Quality Initial Assessment - Key idea: Code is clean, readable, and passes PHPCS standards - Evidence: "The code is nice and clean and easy to read looks like it passes PHPCS" #### โฑ๏ธ [04:00](https://youtu.be/xmpPkNraGsM?t=240) โ€” [H2] Technical Architecture Overview - Key idea: Uses Piper TTS neural engine with models downloaded from Hugging Face - Evidence: "It uses Piper TTS which is a neural text to speech engine that runs in your browser" #### โฑ๏ธ [06:30](https://youtu.be/xmpPkNraGsM?t=390) โ€” [H2] Plugin Settings and Voice Configuration - Key idea: Multiple voice options available with real-time preview functionality - Evidence: "There's different voice. Yeah, there's different voices. Looks like it pulls the voices down every time" #### โฑ๏ธ [08:45](https://youtu.be/xmpPkNraGsM?t=525) โ€” [H2] Frontend Audio Generation Testing - Key idea: Plugin successfully generates audio from post content with visual feedback - Evidence: "So it shows a little tick button that shows that there's audio" #### โฑ๏ธ [11:20](https://youtu.be/xmpPkNraGsM?t=680) โ€” [H2] Performance Concerns with Model Downloads - Key idea: Models download every time instead of caching locally - Evidence: "You're downloading these things every single time, which is not great" #### โฑ๏ธ [12:00](https://youtu.be/xmpPkNraGsM?t=720) โ€” [H3] Voice Quality Comparison - Key idea: Different voice presets offer varying quality levels - Evidence: "That sounds a bit better" comparing podcast vs default voice #### โฑ๏ธ [13:15](https://youtu.be/xmpPkNraGsM?t=795) โ€” [H3] Code Structure Recommendations - Key idea: Suggests moving HTML to templates and using REST API over AJAX - Evidence: "I would look at moving away from Ajax requests and use REST API if you can" #### โฑ๏ธ [15:30](https://youtu.be/xmpPkNraGsM?t=930) โ€” [H3] File Storage Optimization Suggestions - Key idea: Recommends storing models in uploads directory instead of browser-only - Evidence: "Download the models to the uploads directory... create a folder in the uploads directory called speech ball" #### โฑ๏ธ [17:00](https://youtu.be/xmpPkNraGsM?t=1020) โ€” [H3] WordPress Best Practices Integration - Key idea: Suggests using WordPress core components like DataForm for settings - Evidence: "You basically just declare your data, your fields, etc. return data form component and you're good to go" #### โฑ๏ธ [18:45](https://youtu.be/xmpPkNraGsM?t=1125) โ€” [H3] Media Library Integration Proposal - Key idea: Store generated audio files as media attachments for better management - Evidence: "I would look at trying to install that as an attachment... just an element in the media library" #### โฑ๏ธ [20:30](https://youtu.be/xmpPkNraGsM?t=1230) โ€” [H1] Positive Conclusion and Encouragement - Key idea: Overall positive assessment with appreciation for open source approach - Evidence: "I think it is very cool when developers try these things out, build things, new things, test things" ## ๐Ÿ“š References - [Speechable Plugin Repository](https://wordpress.org/plugins/speechable/) - [Piper TTS GitHub](https://github.com/rhasspy/piper) - [Multiplex Labs Web API](https://github.com/multiplex-labs/piper-tts-web) - [WordPress DataForm Component](https://developer.wordpress.org/) ## ๐Ÿ—ฃ๏ธ Paraphrase - A student developer from India created an accessibility-focused WordPress plugin that converts text to speech using AI models - The plugin works well functionally but has optimization opportunities around file caching and WordPress integration best practices - The reviewer provides constructive technical feedback while maintaining an encouraging mentoring approach ## ๐Ÿ“ฐ Newsletter **Student Developer Builds Impressive Text-to-Speech Plugin for WordPress** This week we're highlighting an inspiring example of student innovation in the WordPress ecosystem. Tanish, a developer from India, created Speechable - a plugin that adds text-to-speech functionality to WordPress posts using neural AI models. What makes this particularly impressive is the technical approach: the plugin uses Piper TTS models that run directly in the browser, requiring no external API calls or user signups. It's completely free and focused on accessibility - exactly the kind of solution our community needs. The code review reveals clean, readable PHP that passes coding standards, though there are opportunities for optimization around model caching and WordPress integration patterns. Most importantly, it demonstrates how AI-assisted development tools are empowering new developers to build meaningful solutions. **Key Takeaways for Plugin Developers:** - Consider local processing for privacy-sensitive features like TTS - Cache downloaded models to improve performance - Leverage WordPress core components like DataForm for settings pages - Store generated files in the media library for better user management Resources: [Learn WordPress](https://learn.wordpress.org/), [Plugin Developer Handbook](https://developer.wordpress.org/plugins/), [Accessibility Guidelines](https://make.wordpress.org/accessibility/) ## โœ… Action Items #### WordPress - Core: Evaluate text-to-speech integration patterns for accessibility - Accessibility: Document best practices for TTS plugin development - Community: Feature student developer success stories in showcases - Training: Create lesson plans for AI-assisted plugin development - Documentation: Update plugin handbook with modern caching strategies #### Community - Maintainers: Establish mentoring programs for student developers - Contributors: Create "first plugin review" contribution opportunities - Sponsors: Support accessibility-focused plugin development ## ๐Ÿงช Hypotheses - Student developers using AI tools can produce production-quality WordPress plugins with proper mentoring - Local AI model processing will become standard for privacy-sensitive WordPress features - Accessibility plugins benefit from performance optimization more than feature-rich alternatives - Constructive code reviews encourage continued open source contribution from new developers ### ๐Ÿ“Š Methodology - Code quality assessment using PHPCS standards and manual review - Functional testing across different voice models and settings - Performance analysis of model download and caching patterns ### โ“ Questions - How can WordPress core better support local AI model integration? - What mentoring structures would most benefit student plugin developers? - Should accessibility plugins have different performance optimization guidelines? ### ๐Ÿ”ฎ Future Research - Survey of AI-assisted development adoption in WordPress community - Performance benchmarking of local vs cloud-based TTS solutions - Analysis of accessibility plugin usage patterns and user needs ### ๐Ÿ’ก Implications - Practice: AI tools lower barriers for new WordPress developers - Policy: Need guidelines for local AI model integration in plugins - Education: Code review processes should emphasize mentoring over criticism - Funding: Student developer programs could accelerate accessibility innovation ### ๐Ÿง  Learning Styles Assessment Reading level estimate: 9-10 (Technical content with clear explanations) #### ๐Ÿ‘€ Visual learners - Present: Code screenshots, plugin interface demonstrations - Improve: Architecture diagrams showing TTS processing flow #### ๐Ÿ”Š Aural learners - Present: Video format with narrated code review - Improve: Audio summary highlighting key recommendations #### ๐Ÿ—ฃ๏ธ Verbal learners - Present: Technical terminology explained in context - Improve: Glossary of TTS and accessibility terms #### ๐Ÿงฉ Kinesthetic learners - Present: Live plugin installation and testing - Improve: Step-by-step improvement checklist #### ๐Ÿง  Logical learners - Present: Sequential code review with clear recommendations - Improve: Decision tree for plugin optimization priorities #### ๐Ÿง‘โ€๐Ÿคโ€๐Ÿง‘ Social learners - Present: Mentoring approach to code review - Improve: Discussion prompts for developer community feedback #### ๐Ÿง˜โ€โ™€๏ธ Solitary learners - Present: Individual reflection on code quality - Improve: Self-assessment checklist for plugin development #### ๐ŸŒฟ Naturalistic learners - Present: Open source ecosystem context - Improve: Plugin lifecycle and community impact discussion ### ๐Ÿ“Š Accessibility Assessment #### Screen reader semantics - Present: Video has descriptive narration of visual elements - Improve: Transcript with heading structure for code sections #### Keyboard navigation - Present: Plugin demo shows keyboard-accessible interface - Improve: Document keyboard shortcuts for TTS controls #### Contrast and readability - Present: Code examples use high-contrast syntax highlighting - Improve: Ensure video captions meet contrast requirements #### Text resizing and reflow - Present: Code review accommodates various screen sizes - Improve: Responsive transcript layout #### Media and captions - Present: Video content with clear audio - Improve: Professional captions and downloadable transcript #### Forms and interactions - Present: Plugin settings form properly labeled - Improve: Error handling examples in code review ### ๐ŸŒ DEIB Assessment #### Cultural breadth - Present: Celebrates Indian student developer contribution - Improve: Highlight global accessibility needs context #### Inclusive language - Present: Encouraging, non-condescending technical feedback - Improve: Define technical terms for broader audience #### Neurodiversity support - Present: Clear structure with timestamped sections - Improve: Executive summary with key recommendations #### Representation - Present: Student developer from underrepresented region featured - Improve: Connect to broader diversity in tech initiatives #### Psychological safety - Present: Constructive criticism with positive framing - Improve: Explicit community guidelines for code reviews ### โœ… Logical Validity #### Strong reasoning - Inductive strength: Code quality assessment based on specific examples - Causal reasoning: Performance issues linked to repeated model downloads - Analogical strength: Comparing to established WordPress patterns #### Fallacies - None identified: Review maintains technical focus with supportive tone #### Tone of voice - Overall tone: Encouraging mentor providing constructive technical guidance ### ๐Ÿ›ก๏ธ DARVO Analysis - Deny: No defensive patterns observed - Attack: No attacks on critics or users - Reverse victim/offender: Not applicable - Emotional cues: Consistently positive and supportive throughout review ## ๐ŸŽฏ Conclusion This code review demonstrates excellent mentoring practices for the WordPress community. The reviewer provides specific, actionable technical feedback while maintaining an encouraging tone toward a student developer. The Speechable plugin itself shows promise as an accessibility solution, with clear optimization paths that could make it a valuable addition to the WordPress ecosystem. Most importantly, this review models how experienced developers can nurture new talent while maintaining technical standards. ## ๐Ÿงฑ Refactor Appendix ### ๐Ÿ“š Literature Split Pad ### [H1] Student developers can produce quality plugins with AI assistance > [!quote] My first AI plugin review by Jonathan Bossenger via YouTube. Published 2024. Accessed 2024-12-28. > "The code is nice and clean and easy to read looks like it passes PHPCS" Demonstrates AI-assisted development producing maintainable code. [view highlight](https://youtu.be/xmpPkNraGsM?t=195#H1) #ai-development #student-developers ID:rw_001 ### [H2] Local AI processing enables privacy-focused accessibility tools > [!quote] My first AI plugin review > "It uses Piper TTS which is a neural text to speech engine that runs in your browser" Shows technical approach for accessibility without external dependencies. [view highlight](https://youtu.be/xmpPkNraGsM?t=240#H2) #accessibility #privacy ID:rw_002 --- ### ๐Ÿ”– Atomic Split Pad (Zettel Candidates) #### [Z1] Constructive code reviews encourage continued contribution - Applies to open source mentoring contexts - Demonstrated at 20:30 timestamp - Links: [[Mentoring]] [[Code-Review-Culture]] #### [Z2] Performance optimization critical for accessibility tools - Scope: plugins serving users with different capabilities - Referenced throughout technical feedback sections - Links: [[Accessibility-Standards]] [[WordPress-Performance]] --- ### โœ๏ธ Fleeting Queue - [F1] Research DataForm component adoption in WordPress plugins โ€” developer.wordpress.org #fleeting #development - [F2] Document TTS plugin performance benchmarks โ€” accessibility testing #fleeting #research - [F3] Create mentoring guidelines for student developers โ€” community building #fleeting #mentoring --- ## Full Transcript [00:00] So this week, in fact, during the course<br>[00:02] of this week,<br>[00:04] I received an email from a WordPress<br>[00:07] plug-in developer. His name is Tanish<br>[00:11] and it says, "Hi, Jonathan. I've been<br>[00:12] watching your WordPress and plug-in<br>[00:13] related content on YouTube and<br>[00:15] appreciate how straightforward and<br>[00:16] helpful your videos are. I recently<br>[00:18] built a WordPress plug-in called<br>[00:19] Speechable that adds text to speech to<br>[00:21] post pages. It runs locally on the site,<br>[00:24] needs no signup, and is completely free<br>[00:26] and is focused on accessibility and ease<br>[00:28] of use." So, I went to go and check out<br>[00:31] the plugin<br>[00:33] and it's a fairly recent plugin on the<br>[00:35] repository.<br>[00:37] It's called Speechable. You will see<br>[00:38] there is Tanisha's profile<br>[00:41] and if you go and check him out, you'll<br>[00:43] see it says he's a student from India.<br>[00:46] So, I think it's cool that students are<br>[00:48] building plugins for WordPress. He's got<br>[00:50] a pretty cool site. I will say that as<br>[00:52] well. He's built a couple of products.<br>[00:54] I'm going to assume that he's using<br>[00:57] possibly some AI assisted coding, which<br>[00:59] I think is great. I don't have a problem<br>[01:00] with that at all. But he's built a notes<br>[01:02] app, a Chrome extension. He's built a<br>[01:06] video bot thingy, a notes extension, a<br>[01:09] screenshot editor. Uh, this looks like a<br>[01:12] Shopify<br>[01:13] extension, and then this WordPress plug.<br>[01:17] So, I'm guessing part of what he's doing<br>[01:19] is reaching out to people and asking if<br>[01:22] they'll review his work so you can get<br>[01:23] his work out there.<br>[01:25] So, I'm going to make sure my WordPress<br>[01:30] site is open up here in<br>[01:34] PHP store.<br>[01:36] Then I'm going to open up my studio site<br>[01:40] and let's go and install<br>[01:44] speechable. I love the fact that under<br>[01:46] interests Tesh has written I don't know<br>[01:52] clearly a student doesn't know what he<br>[01:54] likes it that's fine I had no idea what<br>[01:57] I was doing when I was a student here's<br>[02:00] the code<br>[02:02] I will say this the code is nice and<br>[02:03] clean and easy to read<br>[02:06] looks like it passes PHPCS okay pause<br>[02:10] now in the plug-in page page.<br>[02:14] It does talk about that it uses Piper<br>[02:18] TTS which is a neural text to speech<br>[02:20] engine that runs in your browser. So I'm<br>[02:22] curious to know if he is<br>[02:25] loading that with<br>[02:33] so voice model files are downloaded from<br>[02:35] hugging face when first using a voice<br>[02:37] model downloaded for the word timestamp.<br>[02:39] The content is locally.<br>[02:42] So, my guess is it's going to download<br>[02:43] it and install it somewhere in the<br>[02:44] plug-in or the uploads folder or<br>[02:46] something like that. So, these are all<br>[02:48] the Whisper models.<br>[03:01] Okay, here we go.<br>[03:04] Multiplex labs. Yeah, that's the one.<br>[03:08] Multiplex labs. Yeah.<br>[03:12] So that's a web API for using Piper TCS<br>[03:14] based models in the browser.<br>[03:18] Okay. So that's pretty straightforward.<br>[03:22] Offloads TCS process from main thread.<br>[03:26] Okay. While I was scanning through the<br>[03:28] code, I thought it would be cool to be<br>[03:30] able to plug the repo into Deep Wiki.<br>[03:34] Looks like he has put it here. So I'm<br>[03:36] going to do that. I hope you don't mind.<br>[03:38] That'll give me some deep wiki<br>[03:40] integration. I can ask it questions<br>[03:41] about the code. That's always fun.<br>[03:47] So, let's do that. Right. I want to put<br>[03:50] this on a site somewhere that I know has<br>[03:52] some content.<br>[03:54] So, what I can do is I can pull all my<br>[03:56] posts down from my personal site. Okay.<br>[03:59] So, I'm already seeing some things that<br>[04:00] the plugin say. So, let's go to the<br>[04:01] speechable settings page. So, I set my<br>[04:04] language, set my default voice.<br>[04:08] It looks like it's trying to pull<br>[04:12] some data for the voices.<br>[04:16] Let's refresh this.<br>[04:23] So, there's different voice. Yeah,<br>[04:25] there's different voices.<br>[04:29] Looks like it pulls the voices down<br>[04:31] every time. Okay. Yeah, there we go. So,<br>[04:33] it's putting all of that<br>[04:44] So, let me turn the music off and let's<br>[04:46] listen to what that voice sounds like.<br>[04:50] >> Hello, this is a preview of the selected<br>[04:53] voice.<br>[04:55] >> Okay, that was supposed to be a male<br>[04:56] voice.<br>[04:59] >> Hello, this is a preview of the selected<br>[05:01] voice.<br>[05:04] >> Okay, so that's cool. All right. Okay,<br>[05:07] that all looks pretty straightforward.<br>[05:09] I'm going to be honest, this how to use<br>[05:11] guide at the bottom here is very AI.<br>[05:14] So, I've got a feeling Tish used AI to<br>[05:16] build this. I have no problem with that.<br>[05:17] It's just definitely looks that way. So,<br>[05:20] let's go and<br>[05:24] check this out on one of the posts. So,<br>[05:26] if I go to posts<br>[05:28] and let's go to<br>[05:32] one of my more recent posts,<br>[05:37] 2016.<br>[05:39] Oh, this thing didn't work properly, did<br>[05:41] it? Looks like it didn't install all the<br>[05:43] post. There was obviously a problem<br>[05:44] somewhere. So, let's go to getting it<br>[05:48] ready for 2016. So, if I click on audio,<br>[05:51] it'll generate the audio. Let's just<br>[05:53] open up the<br>[05:55] console and see what's going to happen.<br>[05:58] Refresh this page again.<br>[06:01] Okay, so let's take<br>[06:05] let's take this one from 2016. My very<br>[06:06] first application to automatic. That's<br>[06:08] funny. It looks like it downloads things<br>[06:13] every time,<br>[06:16] which makes sense because he doesn't<br>[06:18] want to be storing anything locally.<br>[06:21] I would consider maybe downloading the<br>[06:23] models or the voices or the whatever and<br>[06:25] storing them in the plug-in just so that<br>[06:28] you only download it once and then it's<br>[06:30] available.<br>[06:30] >> Automatic code wrangler application. My<br>[06:33] application for a position as a code<br>[06:34] wrangler at automatic, the company<br>[06:36] started by WordPress co-founder Matt<br>[06:38] Mullenweg. Good day. I've written this<br>[06:40] email in my head about five times, one<br>[06:42] for each year since 2010.<br>[06:44] >> So weird to hear your own words in an AI<br>[06:47] voice. Okay, so that's done that. So now<br>[06:50] if I close that.<br>[06:53] Okay. So it shows a little tick button<br>[06:55] that shows that there's audio. What<br>[06:56] happens if I click on the post?<br>[06:59] Let's see what that does. See if there's<br>[07:01] a little option there to edit it. I'm in<br>[07:03] the Gutenberg editor.<br>[07:06] Oh, there's the audio generation area.<br>[07:07] Okay. So it's the same form field<br>[07:09] basically. So it's there. I can play it.<br>[07:11] That's cool. That's really cool. I like<br>[07:12] that. I want to play around with the<br>[07:14] settings for a little bit. So<br>[07:17] let's go back into the dashboard.<br>[07:20] Let's go back into the settings.<br>[07:24] Okay. So, let's say it's a more of a<br>[07:28] warm voice preset.<br>[07:32] And<br>[07:37] leave it on mail.<br>[07:40] Let's go more podcast. Let's see what<br>[07:42] podcast does.<br>[07:44] Now, let's save podcast to see what<br>[07:46] podcast sounds like.<br>[07:51] Yeah, you're downloading these things<br>[07:53] every single time, which is not great.<br>[07:55] Be recall if there was some way you<br>[07:57] could catch them. So, let's see what<br>[07:59] this sounds like.<br>[08:00] >> Hello. This is a preview of the selected<br>[08:02] voice.<br>[08:04] >> That sounds a bit better. So, I'm going<br>[08:06] to I'm going to save that.<br>[08:09] I'm going to go back to that post<br>[08:13] and I'm going to regenerate the audio.<br>[08:16] Let's<br>[08:18] see if it sounds a bit better.<br>[08:32] So there's a couple of suggestions that<br>[08:34] I have. I'm going to share them just<br>[08:36] because it's my stream.<br>[08:41] I would do a couple of things. I would<br>[08:44] move the hook registrations into<br>[08:46] separate functions<br>[08:48] and maybe look at calling them once<br>[08:51] once the plugin is initialized.<br>[08:54] Can't speak English apparently. I would<br>[08:59] look at moving away from Ajax requests<br>[09:02] and use REST API if you can, but that's<br>[09:03] just a personal preference. I just like<br>[09:05] using REST API requests. You have<br>[09:06] built-in permission checks and all that<br>[09:08] kind of stuff. What else would I do? I<br>[09:10] would all of the HTML that you've got<br>[09:14] in these render<br>[09:17] in these kind of<br>[09:19] things. I would look at pulling that in<br>[09:22] from a file somewhere maybe. So put this<br>[09:24] in like a templates file and<br>[09:27] get the data that way. You don't seem to<br>[09:30] have any<br>[09:32] any PHP variables in there. So there's<br>[09:34] no reason you couldn't put that into the<br>[09:35] templates folder and just make your code<br>[09:36] a little bit cleaner.<br>[09:38] What else?<br>[09:41] Oh, yes. I would see if there's a way<br>[09:43] that you could actually download the<br>[09:44] models to the uploads directory as well.<br>[09:46] What you could even do is on your<br>[09:48] plug-in activation, create a folder in<br>[09:49] the uploads directory called speech ball<br>[09:52] and then inside of there create like a<br>[09:54] models and audio recordings and<br>[09:55] whatever. And then you can always clean<br>[09:57] that folder up if the user wants to in<br>[10:00] the settings somewhere. You can clean up<br>[10:01] that folder. The other thing you could<br>[10:03] do is put it to the media library.<br>[10:04] That's another way you could do it. and<br>[10:06] then the user can clean up the media<br>[10:08] themselves quite easily. It just means<br>[10:10] you won't have to base 64 decode on the<br>[10:14] front end. You'll just load the audio<br>[10:16] file and that'll be a lot quicker. I<br>[10:18] will also try and figure out a way to<br>[10:20] load all the models, not up front. I<br>[10:22] like the idea of loading them as you<br>[10:24] need them, but then once you've<br>[10:25] downloaded it, instead of it running in<br>[10:27] the browser, maybe look at putting it<br>[10:28] into that folder in the plug-in or in<br>[10:31] the WordPress upload directory because<br>[10:32] it'll just make it easier for the<br>[10:35] settings pages to work. So, that's what<br>[10:37] I would do there.<br>[10:39] Your code is nice and clean. I can read<br>[10:41] it. So, that's great. Yeah. Again, here,<br>[10:44] lots of HTML that could possibly be in<br>[10:46] like a template somehow. I'm not a big<br>[10:49] fan of mixing and matching HTML and PHP<br>[10:51] inp JavaScript plug-in file. I prefer to<br>[10:53] separate things out a bit if I can, but<br>[10:55] that's just a personal preference. And<br>[10:57] then I would just try and see if I could<br>[11:00] reuse existing WordPress functionality<br>[11:02] like either the data form. Uh data form<br>[11:05] is a good example of that. It'll be<br>[11:06] it'll allow you to create a settings<br>[11:08] page using core WordPress components<br>[11:12] and<br>[11:18] I actually used this recently. You<br>[11:20] basically just declare your data, your<br>[11:22] fields, etc. return data form component<br>[11:24] and you're good to go. And you're<br>[11:25] already using JavaScript, so that might<br>[11:27] work for you. So maybe check that out if<br>[11:28] you want to do that. There was a really<br>[11:30] good I think he's published it. There's<br>[11:33] a really good blog post on the core<br>[11:35] developer blog,<br>[11:37] how to use data form to create plug-in<br>[11:39] pages, plug-in settings pages. I would<br>[11:41] recommend checking that out. I've used<br>[11:42] it myself recently. It's just it's just<br>[11:44] a lot less code to have to manage if you<br>[11:46] can use data form. And Robert, the<br>[11:49] developer, talks you through the whole<br>[11:50] process. I like the fact that you're<br>[11:51] checking whether or not it has audio<br>[11:53] data. Well done. Looks like you were<br>[11:56] using Piper TTS audio and you were asked<br>[11:58] to remove it probably. So, I totally get<br>[12:01] that. So, I like that. that I like the<br>[12:03] fact that you're doing that. I don't<br>[12:05] have any major<br>[12:07] concern. Again, lots of HTML.<br>[12:11] As I said, the saving of the audio, I<br>[12:13] would see if I could store that. I would<br>[12:14] look at trying to install that as a as<br>[12:17] an attachment.<br>[12:18] Maybe not an attachment on the post, but<br>[12:20] just an element in the media library.<br>[12:22] And then just store the attachment ID to<br>[12:25] the audio. And then you just get up, get<br>[12:27] the attachment ID, get the path to the<br>[12:29] file, and then just render it on the<br>[12:30] front of it. I think it's a great idea.<br>[12:31] I love the fact that you're doing this<br>[12:34] with open source models. And then yeah,<br>[12:37] the other thing as I mentioned, if the<br>[12:39] title is part of the<br>[12:42] I would I would maybe either not include<br>[12:44] the title in the audio generation or if<br>[12:47] it is in the title, figure out how to do<br>[12:49] that little bouncy thing on the title as<br>[12:51] well. The only really major ones that I<br>[12:53] think are major are if you can trying to<br>[12:55] figure out how to get the local models<br>[12:57] stored somewhere in the WordPress site<br>[12:59] so they don't have to download every<br>[13:00] time, saving the file, and then the<br>[13:03] front end thing that I mentioned to you.<br>[13:05] Those are the only sort of really big<br>[13:06] bugs that I could see. So, well done,<br>[13:08] man. I think it is very cool when<br>[13:10] developers try these things out, build<br>[13:13] things, new things, test things, have<br>[13:14] fun with things. All right, with that,<br>[13:16] folks, I'm off. Have a great one. Bye. <!-- deep-read:sections end --> ## Highlights - So this week, in fact, during the course of this week, I received an email from a WordPress plugin developer. His name is Tanish. And he says, hi, Jonathan. I've been watching your WordPress and plugin related content on YouTube and appreciate how straightforward and helpful your videos are. I recently bought a WordPress plugin called Speechable that adds text to speech to post pages. It runs locally on the site, needs no sign up and is completely free and is focused on accessibility and ease of use. So I went to go and check out the plugin. ([View Highlight](https://read.readwise.io/read/01khfj47abadwr1qzg10q3thy2)) - Tags: ๐Ÿ‘ป ai highlighted - Then I'm going to open up my Studio site and let's go and install Speechable. I love the fact that under interests, it's a nice written, I don't know. Clearly a student, doesn't know what he likes here. That's fine. I had no idea what I was doing when I was a student. So here's the code. ([View Highlight](https://read.readwise.io/read/01khfj47af15hn312w9bdcx72n)) - Tags: ๐Ÿ‘ป ai highlighted - Okay, so let's take, let's take this one from 2016, my very first application to automatic. That's funny. So it looks like it downloads things every time, which makes sense because he doesn't want storing anything locally. I would consider maybe downloading the models or the voices or whatever and storing them in the plugin. Just so that you only download it once and ([View Highlight](https://read.readwise.io/read/01khfj47arptgbs7vt1t9th2vy)) - Tags: ๐Ÿ‘ป ai highlighted ## New highlights added February 14, 2026 at 11:24 PM - So this week, in fact, during the course of this week, I received an email from a WordPress plugin developer. His name is Tanish. And he says, hi, Jonathan. I've been watching your WordPress and plugin related content on YouTube and appreciate how straightforward and helpful your videos are. I recently bought a WordPress plugin called Speechable that adds text to speech to post pages. It runs locally on the site, needs no sign up and is completely free and is focused on accessibility and ease of use. So I went to go and check out the plugin. ([View Highlight](https://read.readwise.io/read/01khfj47abadwr1qzg10q3thy2)) - Tags: ๐Ÿ‘ป ai highlighted - Then I'm going to open up my Studio site and let's go and install Speechable. I love the fact that under interests, it's a nice written, I don't know. Clearly a student, doesn't know what he likes here. That's fine. I had no idea what I was doing when I was a student. So here's the code. ([View Highlight](https://read.readwise.io/read/01khfj47af15hn312w9bdcx72n)) - Tags: ๐Ÿ‘ป ai highlighted - Okay, so let's take, let's take this one from 2016, my very first application to automatic. That's funny. So it looks like it downloads things every time, which makes sense because he doesn't want storing anything locally. I would consider maybe downloading the models or the voices or whatever and storing them in the plugin. Just so that you only download it once and ([View Highlight](https://read.readwise.io/read/01khfj47arptgbs7vt1t9th2vy)) - Tags: ๐Ÿ‘ป ai highlighted ## New highlights added February 15, 2026 at 12:24 AM - So this week, in fact, during the course of this week, I received an email from a WordPress plugin developer. His name is Tanish. And he says, hi, Jonathan. I've been watching your WordPress and plugin related content on YouTube and appreciate how straightforward and helpful your videos are. I recently bought a WordPress plugin called Speechable that adds text to speech to post pages. It runs locally on the site, needs no sign up and is completely free and is focused on accessibility and ease of use. So I went to go and check out the plugin. ([View Highlight](https://read.readwise.io/read/01khfj47abadwr1qzg10q3thy2)) - Tags: ๐Ÿ‘ป ai highlighted - Then I'm going to open up my Studio site and let's go and install Speechable. I love the fact that under interests, it's a nice written, I don't know. Clearly a student, doesn't know what he likes here. That's fine. I had no idea what I was doing when I was a student. So here's the code. ([View Highlight](https://read.readwise.io/read/01khfj47af15hn312w9bdcx72n)) - Tags: ๐Ÿ‘ป ai highlighted - Okay, so let's take, let's take this one from 2016, my very first application to automatic. That's funny. So it looks like it downloads things every time, which makes sense because he doesn't want storing anything locally. I would consider maybe downloading the models or the voices or whatever and storing them in the plugin. Just so that you only download it once and ([View Highlight](https://read.readwise.io/read/01khfj47arptgbs7vt1t9th2vy)) - Tags: ๐Ÿ‘ป ai highlighted ## New highlights added February 15, 2026 at 1:25 AM - So this week, in fact, during the course of this week, I received an email from a WordPress plugin developer. His name is Tanish. And he says, hi, Jonathan. I've been watching your WordPress and plugin related content on YouTube and appreciate how straightforward and helpful your videos are. I recently bought a WordPress plugin called Speechable that adds text to speech to post pages. It runs locally on the site, needs no sign up and is completely free and is focused on accessibility and ease of use. So I went to go and check out the plugin. ([View Highlight](https://read.readwise.io/read/01khfj47abadwr1qzg10q3thy2)) - Tags: ๐Ÿ‘ป ai highlighted - Then I'm going to open up my Studio site and let's go and install Speechable. I love the fact that under interests, it's a nice written, I don't know. Clearly a student, doesn't know what he likes here. That's fine. I had no idea what I was doing when I was a student. So here's the code. ([View Highlight](https://read.readwise.io/read/01khfj47af15hn312w9bdcx72n)) - Tags: ๐Ÿ‘ป ai highlighted - Okay, so let's take, let's take this one from 2016, my very first application to automatic. That's funny. So it looks like it downloads things every time, which makes sense because he doesn't want storing anything locally. I would consider maybe downloading the models or the voices or whatever and storing them in the plugin. Just so that you only download it once and ([View Highlight](https://read.readwise.io/read/01khfj47arptgbs7vt1t9th2vy)) - Tags: ๐Ÿ‘ป ai highlighted ## New highlights added February 15, 2026 at 2:24 AM - So this week, in fact, during the course of this week, I received an email from a WordPress plugin developer. His name is Tanish. And he says, hi, Jonathan. I've been watching your WordPress and plugin related content on YouTube and appreciate how straightforward and helpful your videos are. I recently bought a WordPress plugin called Speechable that adds text to speech to post pages. It runs locally on the site, needs no sign up and is completely free and is focused on accessibility and ease of use. So I went to go and check out the plugin. ([View Highlight](https://read.readwise.io/read/01khfj47abadwr1qzg10q3thy2)) - Tags: ๐Ÿ‘ป ai highlighted - Then I'm going to open up my Studio site and let's go and install Speechable. I love the fact that under interests, it's a nice written, I don't know. Clearly a student, doesn't know what he likes here. That's fine. I had no idea what I was doing when I was a student. So here's the code. ([View Highlight](https://read.readwise.io/read/01khfj47af15hn312w9bdcx72n)) - Tags: ๐Ÿ‘ป ai highlighted - Okay, so let's take, let's take this one from 2016, my very first application to automatic. That's funny. So it looks like it downloads things every time, which makes sense because he doesn't want storing anything locally. I would consider maybe downloading the models or the voices or whatever and storing them in the plugin. Just so that you only download it once and ([View Highlight](https://read.readwise.io/read/01khfj47arptgbs7vt1t9th2vy)) - Tags: ๐Ÿ‘ป ai highlighted ## New highlights added February 15, 2026 at 3:24 AM - So this week, in fact, during the course of this week, I received an email from a WordPress plugin developer. His name is Tanish. And he says, hi, Jonathan. I've been watching your WordPress and plugin related content on YouTube and appreciate how straightforward and helpful your videos are. I recently bought a WordPress plugin called Speechable that adds text to speech to post pages. It runs locally on the site, needs no sign up and is completely free and is focused on accessibility and ease of use. So I went to go and check out the plugin. ([View Highlight](https://read.readwise.io/read/01khfj47abadwr1qzg10q3thy2)) - Tags: ๐Ÿ‘ป ai highlighted - Then I'm going to open up my Studio site and let's go and install Speechable. I love the fact that under interests, it's a nice written, I don't know. Clearly a student, doesn't know what he likes here. That's fine. I had no idea what I was doing when I was a student. So here's the code. ([View Highlight](https://read.readwise.io/read/01khfj47af15hn312w9bdcx72n)) - Tags: ๐Ÿ‘ป ai highlighted - Okay, so let's take, let's take this one from 2016, my very first application to automatic. That's funny. So it looks like it downloads things every time, which makes sense because he doesn't want storing anything locally. I would consider maybe downloading the models or the voices or whatever and storing them in the plugin. Just so that you only download it once and ([View Highlight](https://read.readwise.io/read/01khfj47arptgbs7vt1t9th2vy)) - Tags: ๐Ÿ‘ป ai highlighted ## New highlights added February 15, 2026 at 4:24 AM - So this week, in fact, during the course of this week, I received an email from a WordPress plugin developer. His name is Tanish. And he says, hi, Jonathan. I've been watching your WordPress and plugin related content on YouTube and appreciate how straightforward and helpful your videos are. I recently bought a WordPress plugin called Speechable that adds text to speech to post pages. It runs locally on the site, needs no sign up and is completely free and is focused on accessibility and ease of use. So I went to go and check out the plugin. ([View Highlight](https://read.readwise.io/read/01khfj47abadwr1qzg10q3thy2)) - Tags: ๐Ÿ‘ป ai highlighted - Then I'm going to open up my Studio site and let's go and install Speechable. I love the fact that under interests, it's a nice written, I don't know. Clearly a student, doesn't know what he likes here. That's fine. I had no idea what I was doing when I was a student. So here's the code. ([View Highlight](https://read.readwise.io/read/01khfj47af15hn312w9bdcx72n)) - Tags: ๐Ÿ‘ป ai highlighted - Okay, so let's take, let's take this one from 2016, my very first application to automatic. That's funny. So it looks like it downloads things every time, which makes sense because he doesn't want storing anything locally. I would consider maybe downloading the models or the voices or whatever and storing them in the plugin. Just so that you only download it once and ([View Highlight](https://read.readwise.io/read/01khfj47arptgbs7vt1t9th2vy)) - Tags: ๐Ÿ‘ป ai highlighted ## New highlights added February 15, 2026 at 5:24 AM - So this week, in fact, during the course of this week, I received an email from a WordPress plugin developer. His name is Tanish. And he says, hi, Jonathan. I've been watching your WordPress and plugin related content on YouTube and appreciate how straightforward and helpful your videos are. I recently bought a WordPress plugin called Speechable that adds text to speech to post pages. It runs locally on the site, needs no sign up and is completely free and is focused on accessibility and ease of use. So I went to go and check out the plugin. ([View Highlight](https://read.readwise.io/read/01khfj47abadwr1qzg10q3thy2)) - Tags: ๐Ÿ‘ป ai highlighted - Then I'm going to open up my Studio site and let's go and install Speechable. I love the fact that under interests, it's a nice written, I don't know. Clearly a student, doesn't know what he likes here. That's fine. I had no idea what I was doing when I was a student. So here's the code. ([View Highlight](https://read.readwise.io/read/01khfj47af15hn312w9bdcx72n)) - Tags: ๐Ÿ‘ป ai highlighted - Okay, so let's take, let's take this one from 2016, my very first application to automatic. That's funny. So it looks like it downloads things every time, which makes sense because he doesn't want storing anything locally. I would consider maybe downloading the models or the voices or whatever and storing them in the plugin. Just so that you only download it once and ([View Highlight](https://read.readwise.io/read/01khfj47arptgbs7vt1t9th2vy)) - Tags: ๐Ÿ‘ป ai highlighted ## New highlights added February 15, 2026 at 6:24 AM - So this week, in fact, during the course of this week, I received an email from a WordPress plugin developer. His name is Tanish. And he says, hi, Jonathan. I've been watching your WordPress and plugin related content on YouTube and appreciate how straightforward and helpful your videos are. I recently bought a WordPress plugin called Speechable that adds text to speech to post pages. It runs locally on the site, needs no sign up and is completely free and is focused on accessibility and ease of use. So I went to go and check out the plugin. ([View Highlight](https://read.readwise.io/read/01khfj47abadwr1qzg10q3thy2)) - Tags: ๐Ÿ‘ป ai highlighted - Then I'm going to open up my Studio site and let's go and install Speechable. I love the fact that under interests, it's a nice written, I don't know. Clearly a student, doesn't know what he likes here. That's fine. I had no idea what I was doing when I was a student. So here's the code. ([View Highlight](https://read.readwise.io/read/01khfj47af15hn312w9bdcx72n)) - Tags: ๐Ÿ‘ป ai highlighted - Okay, so let's take, let's take this one from 2016, my very first application to automatic. That's funny. So it looks like it downloads things every time, which makes sense because he doesn't want storing anything locally. I would consider maybe downloading the models or the voices or whatever and storing them in the plugin. Just so that you only download it once and ([View Highlight](https://read.readwise.io/read/01khfj47arptgbs7vt1t9th2vy)) - Tags: ๐Ÿ‘ป ai highlighted ## New highlights added February 15, 2026 at 7:24 AM - So this week, in fact, during the course of this week, I received an email from a WordPress plugin developer. His name is Tanish. And he says, hi, Jonathan. I've been watching your WordPress and plugin related content on YouTube and appreciate how straightforward and helpful your videos are. I recently bought a WordPress plugin called Speechable that adds text to speech to post pages. It runs locally on the site, needs no sign up and is completely free and is focused on accessibility and ease of use. So I went to go and check out the plugin. ([View Highlight](https://read.readwise.io/read/01khfj47abadwr1qzg10q3thy2)) - Tags: ๐Ÿ‘ป ai highlighted - Then I'm going to open up my Studio site and let's go and install Speechable. I love the fact that under interests, it's a nice written, I don't know. Clearly a student, doesn't know what he likes here. That's fine. I had no idea what I was doing when I was a student. So here's the code. ([View Highlight](https://read.readwise.io/read/01khfj47af15hn312w9bdcx72n)) - Tags: ๐Ÿ‘ป ai highlighted - Okay, so let's take, let's take this one from 2016, my very first application to automatic. That's funny. So it looks like it downloads things every time, which makes sense because he doesn't want storing anything locally. I would consider maybe downloading the models or the voices or whatever and storing them in the plugin. Just so that you only download it once and ([View Highlight](https://read.readwise.io/read/01khfj47arptgbs7vt1t9th2vy)) - Tags: ๐Ÿ‘ป ai highlighted ## New highlights added February 15, 2026 at 8:24 AM - So this week, in fact, during the course of this week, I received an email from a WordPress plugin developer. His name is Tanish. And he says, hi, Jonathan. I've been watching your WordPress and plugin related content on YouTube and appreciate how straightforward and helpful your videos are. I recently bought a WordPress plugin called Speechable that adds text to speech to post pages. It runs locally on the site, needs no sign up and is completely free and is focused on accessibility and ease of use. So I went to go and check out the plugin. ([View Highlight](https://read.readwise.io/read/01khfj47abadwr1qzg10q3thy2)) - Tags: ๐Ÿ‘ป ai highlighted - Then I'm going to open up my Studio site and let's go and install Speechable. I love the fact that under interests, it's a nice written, I don't know. Clearly a student, doesn't know what he likes here. That's fine. I had no idea what I was doing when I was a student. So here's the code. ([View Highlight](https://read.readwise.io/read/01khfj47af15hn312w9bdcx72n)) - Tags: ๐Ÿ‘ป ai highlighted - Okay, so let's take, let's take this one from 2016, my very first application to automatic. That's funny. So it looks like it downloads things every time, which makes sense because he doesn't want storing anything locally. I would consider maybe downloading the models or the voices or whatever and storing them in the plugin. Just so that you only download it once and ([View Highlight](https://read.readwise.io/read/01khfj47arptgbs7vt1t9th2vy)) - Tags: ๐Ÿ‘ป ai highlighted ## New highlights added February 15, 2026 at 12:03 PM - So this week, in fact, during the course of this week, I received an email from a WordPress plugin developer. His name is Tanish. And he says, hi, Jonathan. I've been watching your WordPress and plugin related content on YouTube and appreciate how straightforward and helpful your videos are. I recently bought a WordPress plugin called Speechable that adds text to speech to post pages. It runs locally on the site, needs no sign up and is completely free and is focused on accessibility and ease of use. So I went to go and check out the plugin. ([View Highlight](https://read.readwise.io/read/01khfj47abadwr1qzg10q3thy2)) - Tags: ๐Ÿ‘ป ai highlighted - Then I'm going to open up my Studio site and let's go and install Speechable. I love the fact that under interests, it's a nice written, I don't know. Clearly a student, doesn't know what he likes here. That's fine. I had no idea what I was doing when I was a student. So here's the code. ([View Highlight](https://read.readwise.io/read/01khfj47af15hn312w9bdcx72n)) - Tags: ๐Ÿ‘ป ai highlighted - Okay, so let's take, let's take this one from 2016, my very first application to automatic. That's funny. So it looks like it downloads things every time, which makes sense because he doesn't want storing anything locally. I would consider maybe downloading the models or the voices or whatever and storing them in the plugin. Just so that you only download it once and ([View Highlight](https://read.readwise.io/read/01khfj47arptgbs7vt1t9th2vy)) - Tags: ๐Ÿ‘ป ai highlighted