{"id":2376,"date":"2024-05-01T08:23:08","date_gmt":"2024-05-01T12:23:08","guid":{"rendered":"https:\/\/blogs.mathworks.com\/matlab\/?p=2376"},"modified":"2024-05-07T10:03:46","modified_gmt":"2024-05-07T14:03:46","slug":"leading-by-example-how-lively-examples-help-matlab-community-toolboxes-grow-their-capabilities-communities","status":"publish","type":"post","link":"https:\/\/blogs.mathworks.com\/matlab\/2024\/05\/01\/leading-by-example-how-lively-examples-help-matlab-community-toolboxes-grow-their-capabilities-communities\/","title":{"rendered":"Leading by Example: How lively examples help MATLAB community toolboxes grow their capabilities &#038; communities"},"content":{"rendered":"<div class = rtcContent><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span style=' font-weight: bold;'>Today's post is from <\/span><a href = \"https:\/\/www.linkedin.com\/in\/vijayiyer312\/\"><span style=' font-weight: bold;'>Vijay Iyer<\/span><\/a><span style=' font-weight: bold;'>, a principal academic discipline manager (Neuroscience) who is also leading the MATLAB Community Toolbox program. <\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>Over my past few years at MathWorks, I\u2019ve been incubating the MATLAB Community Toolbox program. This is a first blog post to begin sharing stories about what we\u2019re seeing and learning working with (over 50 to date) open-source toolboxes built by MATLAB users for other MATLAB users. <\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>In my two decades as a <\/span><a href = \"https:\/\/researchsoftware.org\/\"><span style=' text-decoration: underline;'>research software engineer<\/span><\/a><span>, various \u201cdriver\u201d paradigms for software development have appeared on the horizon. Back in the aughts, I learned about <\/span><a href = \"https:\/\/en.wikipedia.org\/wiki\/Domain-driven_design#:~:text=Domain%2Ddriven%20design%20(DDD),should%20match%20the%20business%20domain.\"><span style=' text-decoration: underline;'>domain-driven design<\/span><\/a><span>. More recently in the teens, I\u2019ve been learning about <\/span><a href = \"https:\/\/en.wikipedia.org\/wiki\/Test-driven_development\"><span style=' text-decoration: underline;'>test-driven development<\/span><\/a><span>. <\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>While working with several open-source toolboxes to plan short collaborative development cycles, a pattern appeared that strikes me as a new \u2018driver\u2019 paradigm. <\/span><span>Let\u2019s call it <\/span><span style=' font-style: italic;'>example-driven development. <\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>Not unlike test-driven development, the name itself sounds a bit like <\/span><a href = \"https:\/\/www.merriam-webster.com\/dictionary\/put%20the%20cart%20before%20the%20horse\"><span style=' text-decoration: underline;'>putting the cart before the horse<\/span><\/a><span>. But in its first few years, the program often finds that open-source MATLAB codebases of all ages &amp; sizes can benefit from making one or more rich examples a <\/span><span style=' font-style: italic;'>driving goal<\/span><span> as part of their development cycles. <\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>The beauty of putting examples front &amp; center is that they can serve three purposes at once: <\/span><\/div><ul  style = 'margin: 10px 0px 20px; padding-left: 0px; font-family: Helvetica, Arial, sans-serif; font-size: 14px; '><li  style = 'margin-left: 56px; line-height: 21px; min-height: 0px; text-align: left; white-space: pre-wrap; '><span style=' font-weight: bold;'>Documentation<\/span><span>, via the example\u2019s narrative text which motivates &amp; lightly explains the code<\/span><\/li><li  style = 'margin-left: 56px; line-height: 21px; min-height: 0px; text-align: left; white-space: pre-wrap; '><span style=' font-weight: bold;'>Smoke Testing<\/span><span>, i.e., exercising core functionalities of the toolbox<\/span><\/li><li  style = 'margin-left: 56px; line-height: 21px; min-height: 0px; text-align: left; white-space: pre-wrap; '><span style=' font-weight: bold;'>Dissemination<\/span><span>, via engaging images, structure, &amp; figure outputs to \u2018hook\u2019 potential new users<\/span><\/li><\/ul><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>Let\u2019s put each of these aspects in context, while exploring a few early\u2026err\u2026examples of example-driven development. <\/span><\/div><h3  style = 'margin: 3px 10px 5px 4px; padding: 0px; line-height: 18px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 17px; font-weight: 700; text-align: left; '><span style=' font-weight: bold;'>Key ingredient for examples: computational notebooks<\/span><\/h3><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>Credit where credit is due. Example-driven development is really an outgrowth of another recent trend: the growing use of <\/span><span style=' font-style: italic;'>computational notebooks<\/span><span>, such as <\/span><a href = \"https:\/\/www.mathworks.com\/products\/reference-architectures\/jupyter.html\"><span style=' text-decoration: underline;'>Jupyter notebooks<\/span><\/a><span> and more recently <\/span><a href = \"https:\/\/www.mathworks.com\/help\/matlab\/live-scripts-and-functions.html\"><span style=' text-decoration: underline;'>MATLAB live scripts<\/span><\/a><span>. Computational notebooks have all the elements (narrative text, code, equations, graphical figure outputs, interactive controls, and more) to author <\/span><span style=' font-style: italic;'>rich examples<\/span><span>, i.e., examples that walk through a common use case or typical workflow including guidance about motivations overall and at each step. <\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>While teachers and researchers have been the lead adopters (for teaching technical concepts and conveying code underlying published research, respectively), software tool builders have also embraced computational notebooks for software documentation. Our development community at MathWorks is no exception: examples based on live scripts have rapidly become a cornerstone for documentation across the MATLAB platform. <\/span><span> <\/span><\/div>\r\n\r\n<div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: center; '><img class = \"imageNode\" src = \"http:\/\/blogs.mathworks.com\/matlab\/files\/2024\/05\/ExampleDrivenDevelopment_1-1.png\" width = \"651\" height = \"282\" alt = \"Picture1.png\" style = \"vertical-align: baseline; width: 769px; height: 336px;\"><\/img><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: center; '><span style=' font-style: italic;'>Left: Gallery of live script examples in the Wavelet Toolbox documentation Right: Web tutorial for EEGLAB, a MATLAB community toolbox (credit: Swartz Center for Computational Neuroscience, UCSD)<\/span><\/div>\r\n\r\n<div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>In the early days of our program, we\u2019ve found most MATLAB community toolboxes built by researchers for researchers are so far lagging this trend. Rich examples authored as live scripts thus became an early focus for the program. But it\u2019s worth noting that the core idea \u2013 <\/span><span style=' font-style: italic;'>software documentation that actively teaches<\/span><span> its new and existing users \u2013 has long roots in the MATLAB ecosystem. For instance, the widely-used <\/span><a href = \"https:\/\/github.com\/sccn\/eeglab\"><span style=' text-decoration: underline;'>EEGLAB<\/span><\/a><span> community toolbox has an extensive library of web tutorials recently implemented in web markdown syntax, which is well-suited for their predominantly app-based workflows. The program is proud to have helped support this upgrade of the EEGLAB web documentation. <\/span><\/div><h3  style = 'margin: 3px 10px 5px 4px; padding: 0px; line-height: 18px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 17px; font-weight: 700; text-align: left; '><span style=' font-weight: bold;'>Developing the recipe: example-driven development for research software<\/span><\/h3><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>Many MATLAB community toolboxes, such as <\/span><a href = \"https:\/\/www.mathworks.com\/matlabcentral\/fileexchange\/55401-ppml-periodically-patterned-multi-layer?s_tid=srchtitle\"><span style=' text-decoration: underline;'>PPML<\/span><\/a><span> and <\/span><a href = \"https:\/\/www.mathworks.com\/matlabcentral\/fileexchange\/97402-homer3?s_tid=ta_fx_results\"><span style=' text-decoration: underline;'>Homer3<\/span><\/a><span>, offer their users command-line interfaces for scripting and programming. These two tools historically relied on other approaches such as script-based examples and wiki-based documentation, respectively, to teach their users. As the program worked with each to sponsor defined discrete projects around feature-enhancement goals their lead authors identified as important for their research community, we asked them to simultaneously add some live script examples in the process. <\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>Rather than simply being an additional task, creating live script examples proved quite complementary: <\/span><\/div><ul  style = 'margin: 10px 0px 20px; padding-left: 0px; font-family: Helvetica, Arial, sans-serif; font-size: 14px; '><li  style = 'margin-left: 56px; line-height: 21px; min-height: 0px; text-align: left; white-space: pre-wrap; '><span>Homer3 supports users of functional near-infrared spectroscopy (fNIRS), a neuroimaging modality. Their project focused on adding support for the new <\/span><a href = \"https:\/\/openfnirs.org\/standards\/#:~:text=Shared%20Near%20Infrared%20Spectroscopy%20Format%20(SNIRF)%20is%20designed%20by%20the,Format%20(SNIRF)%20on%20github.&amp;text=The%20BIDS%20fNIRS%20Cloud%20is%20a%20tool%20for%20creating%20BIDS%20compatible%20datasets.\"><span style=' text-decoration: underline;'>SNIRF data standard<\/span><\/a><span>. One of the new live script examples helped to test and document this new capability. <\/span><\/li><li  style = 'margin-left: 56px; line-height: 21px; min-height: 0px; text-align: left; white-space: pre-wrap; '><span>PPML applies electromagnetic (EM) modeling for a class of layered photonic nanostructures. Their development cycle focused on a new diagram to visualize parametrically designed nanostructures and improved reflectance plots. Their live scripts incorporated <\/span><a href = \"https:\/\/www.mathworks.com\/help\/matlab\/matlab_prog\/add-interactive-controls-to-a-live-script.html\"><span style=' text-decoration: underline;'>live controls<\/span><\/a><span> enabling domain experts to assess the new visualizations across a range of input parameters. <\/span><\/li><\/ul><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>Another community toolbox sponsored by the program was <\/span><a href = \"https:\/\/github.com\/MATLAB-Community-Toolboxes-at-INCF\/DeepInterpolation-MATLAB\"><span style=' text-decoration: underline;'>DeepInterpolation with MATLAB<\/span><\/a><span>, a framework for denoising various modalities of raw neuroscience data using deep learning. The <\/span><a href = \"https:\/\/github.com\/AllenInstitute\/deepinterpolation\"><span style=' text-decoration: underline;'>reference implementation<\/span><\/a><span> for the Deep Interpolation principle is coded in Python and includes Jupyter notebook examples for different modalities and use cases. DeepInterpolation with MATLAB was developed from the ground up to make the principle readily available to MATLAB users. As part of this, live scripts analogous to the original\u2019s Jupyter notebooks were a central requirement, enabling both scientific reproducibility (users can compare the results on the same sample data) and tailoring to the individual languages (e.g., the MATLAB version used the <\/span><a href = \"https:\/\/www.mathworks.com\/help\/matlab\/import_export\/develop-custom-datastore.html\"><span style=' text-decoration: underline;'>datastore workflow<\/span><\/a><span> central to the Deep Learning Toolbox).<\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: center; '><img class = \"imageNode\" src = \"http:\/\/blogs.mathworks.com\/matlab\/files\/2024\/05\/Fig2V2.png\" width = \"634\" height = \"387\" alt = \"Picture2.png\" style = \"vertical-align: baseline; width: 634px; height: 387px;\"><\/img><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: center; '><span style=' font-style: italic;'>Live script examples created for Homer3 (left), PPML (top right), and DeepInterpolation with MATLAB (bottom right) as part of program development cycles<\/span><\/div><h3  style = 'margin: 3px 10px 5px 4px; padding: 0px; line-height: 18px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 17px; font-weight: 700; text-align: left; '><span style=' font-weight: bold;'>Taste testing the example: a \u2018smoke testing\u2019 tool<\/span><\/h3><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>In the lingo of software testing methodology, examples like these which helped to verify key new capabilities being developed can be considered <\/span><span style=' font-style: italic;'>smoke tests<\/span><span>. In contrast to <\/span><a href = \"https:\/\/www.mathworks.com\/help\/matlab\/matlab_prog\/ways-to-write-unit-tests.html\"><span style=' text-decoration: underline;'>unit testing<\/span><\/a><span>, which comprehensively exercises the functions in a library with many small-scale test functions, smoke testing focuses on exercising core functionalities of a software package. <\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>Alongside the program\u2019s first projects, a new development team here began to interview several research software builders to better understand their MATLAB requirements. It quickly became clear to them that good community toolbox examples often are good smoke tests. From this insight, the <\/span><a href = \"https:\/\/github.com\/mathworks\/ExamplesDrivenTester\"><span style=' text-decoration: underline;'>Examples Driven Tester<\/span><\/a><span> was born, which connects a library\u2019s live script examples to the MATLAB unit testing framework under the hood. Tool builders can benefit from automated testing without becoming full-blown testing experts. This utility is freely available on GitHub, with early users and feedback most welcomed. <\/span><\/div><h3  style = 'margin: 3px 10px 5px 4px; padding: 0px; line-height: 18px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 17px; font-weight: 700; text-align: left; '><span style=' font-weight: bold;'>The example is served: Open in MATLAB Online &amp; science gateways <\/span><\/h3><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>Last but not least, centering rich examples for research software tools can aid with <\/span><span style=' font-style: italic;'>dissemination<\/span><span>, i.e., attracting new users. A key enabler for this was first announced in this blog: <\/span><a href = \"https:\/\/www.mathworks.com\/products\/matlab-online\/git.html\"><span style=' text-decoration: underline;'>Open in MATLAB Online from GitHub<\/span><\/a><span>. This connector allows end users to run MATLAB <\/span><span>code from a GitHub repository (where most research tools are hosted today) in their web browser, without installing MATLAB nor navigating GitHub source control. Authors can add an <\/span><a href = \"https:\/\/www.mathworks.com\/products\/matlab-online\/git.html\"><span style=' text-decoration: underline;'>Open in MATLAB Online <\/span><span style=' text-decoration: underline;'>badge<\/span><\/a><span> <\/span><span>to their GitHub repository inviting curious browsers to quickly <\/span><span style=' font-style: italic;'>give their tool a try<\/span><span>. Similarly, File Exchange highlights this fast web-based access for all <\/span><a href = \"https:\/\/www.mathworks.com\/matlabcentral\/content\/fx\/about.html?s_tid=gn_mlc_fx_help#Why_GitHub\"><span style=' text-decoration: underline;'>GitHub repositories linked to File Exchange<\/span><\/a><span> with a <\/span><a href = \"https:\/\/www.mathworks.com\/matlabcentral\/discussions\/highlights\/842691-introducing-a-new-way-to-open-file-exchange-content-directly-in-matlab-online\"><span style=' text-decoration: underline;'>new<\/span><\/a><span style=' text-decoration: underline;'> <\/span><span>Open in MATLAB Online button: <\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: center; '><img class = \"imageNode\" src = \"http:\/\/blogs.mathworks.com\/matlab\/files\/2024\/05\/vijayFig3.png\" width = \"649\" height = \"163\" alt = \"Picture3.png\" style = \"vertical-align: baseline; width: 649px; height: 163px;\"><\/img><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: center; '><span style=' font-style: italic;'>Open in MATLAB Online badge in a GitHub repository (left) and Open in MATLAB Online button in its linked File Exchange entry (right). Both buttons clone the latest repository code and open it in the browser-based MATLAB Online.<\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: center; '><span style=' font-style: italic;'><\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><a href = \"https:\/\/uk.mathworks.com\/products\/matlab-online\/matlab-online-versions.html\"><span>MATLAB Online comes in two versions<\/span><\/a><span>: a basic version available to anyone worldwide and the full version (available to <\/span><span>all academic users). Thus, for many community toolboxes, MATLAB Online enables authors to serve <\/span><span>their examples<\/span><a href = \"about:blank&lt;#_msocom_3%3E\"><span style=' text-decoration: underline;'><\/span><\/a><span> <\/span><span>to anyone worldwide. <\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>Some toolboxes have multiple examples. For these cases, <\/span><span>our program has begun recommending projects <\/span><span>tabulate their top examples prominently on their <\/span><span>GitHub README. For instance, the README for the DeepInterpolation with MATLAB shows individual Open in MATLAB <\/span><span>Online links (<\/span><span>\u25b6\ufe0f<\/span><span> buttons) <\/span><span>for <\/span><span>three examples applying denoising models to different kinds of neuroscience data:<\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: center; '><img class = \"imageNode\" src = \"http:\/\/blogs.mathworks.com\/matlab\/files\/2024\/05\/ExampleDrivenDevelopment_4.png\" width = \"524\" height = \"279\" alt = \"Picture4.png\" style = \"vertical-align: baseline; width: 524px; height: 279px;\"><\/img><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: center; '><span style=' font-style: italic;'>Snippet from README file of the <\/span><a href = \"https:\/\/github.com\/MATLAB-Community-Toolboxes-at-INCF\/DeepInterpolation-MATLAB\/releases\"><span style=' text-decoration: underline;'>DeepInterpolation with MATLAB<\/span><\/a><span style=' font-style: italic;'> community toolbox showing individual view (<\/span><span style=' font-style: italic;'>\u001a<\/span><span style=' font-style: italic;'>) and run (<\/span><span style=' font-style: italic;'>\u25b6\ufe0f<\/span><span style=' font-style: italic;'>)<\/span><span style=' font-style: italic;'> <\/span><span style=' font-style: italic;'>links for a library of lightweight live script examples corresponding to specific use cases appealing to different audiences<\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>In this way, there are <\/span><span style=' font-style: italic;'>runnable<\/span><span> examples tailored to the interests of each potential user! <\/span><span>Note the examples are also <\/span><span style=' font-style: italic;'>viewable<\/span><span> (the <\/span><span>\u001a<\/span><span> links) by all worldwide via a File Exchange rendering service for live scripts in GitHub repositories.<\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>To show their tool in the best way, tool authors must take care that their (beautiful <\/span><span>\u001a) <\/span><span>examples run through and generate the expected outputs at each release. In other words: testing, documentation, and dissemination are intertwined. That\u2019s example-driven development. <\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>Some MATLAB community toolboxes have additional more compute- or data-intensive examples, or may have several third-party software dependencies that are not (yet!) registered as <\/span><a href = \"https:\/\/www.mathworks.com\/help\/matlab\/creating-help.html?s_tid=CRUX_lftnav\"><span style=' text-decoration: underline;'>MATLAB add-ons<\/span><\/a><span>. In either of these cases, research software tools may turn to domain-focused compute environments, sometimes termed <\/span><a href = \"https:\/\/sciencegateways.org\/\"><span style=' text-decoration: underline;'>science gateways<\/span><\/a><span>, as a place to point their users to runnable examples. More on this topic to come in future posts.<\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span>Whether it\u2019s on MATLAB Online or beyond, we\u2019re excited to start seeing the impact that rich and runnable examples will have to help software tool builders grow their user communities.<\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span><\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: center; '><span style=' font-style: italic;'><\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: left; '><span><\/span><\/div><div  style = 'margin: 2px 10px 9px 4px; padding: 0px; line-height: 21px; min-height: 0px; white-space: pre-wrap; color: rgb(33, 33, 33); font-family: Helvetica, Arial, sans-serif; font-style: normal; font-size: 14px; font-weight: 400; text-align: center; '><\/div>\r\n<\/div><script type=\"text\/javascript\">var css = ''; var head = document.head || document.getElementsByTagName('head')[0], style = document.createElement('style'); head.appendChild(style); style.type = 'text\/css'; if (style.styleSheet){ style.styleSheet.cssText = css; } else { style.appendChild(document.createTextNode(css)); }<\/script>","protected":false},"excerpt":{"rendered":"<div class=\"overview-image\"><img src=\"https:\/\/blogs.mathworks.com\/matlab\/files\/2024\/05\/ExampleDrivenDevelopment_1-1.png\" class=\"img-responsive attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"\" decoding=\"async\" loading=\"lazy\" \/><\/div><p>Today's post is from Vijay Iyer, a principal academic discipline manager (Neuroscience) who is also leading the MATLAB Community Toolbox program. Over my past few years at MathWorks, I\u2019ve been... <a class=\"read-more\" href=\"https:\/\/blogs.mathworks.com\/matlab\/2024\/05\/01\/leading-by-example-how-lively-examples-help-matlab-community-toolboxes-grow-their-capabilities-communities\/\">read more >><\/a><\/p>","protected":false},"author":176,"featured_media":2403,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[90,30,39,74,71,64],"tags":[],"_links":{"self":[{"href":"https:\/\/blogs.mathworks.com\/matlab\/wp-json\/wp\/v2\/posts\/2376"}],"collection":[{"href":"https:\/\/blogs.mathworks.com\/matlab\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.mathworks.com\/matlab\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/matlab\/wp-json\/wp\/v2\/users\/176"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/matlab\/wp-json\/wp\/v2\/comments?post=2376"}],"version-history":[{"count":8,"href":"https:\/\/blogs.mathworks.com\/matlab\/wp-json\/wp\/v2\/posts\/2376\/revisions"}],"predecessor-version":[{"id":2451,"href":"https:\/\/blogs.mathworks.com\/matlab\/wp-json\/wp\/v2\/posts\/2376\/revisions\/2451"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/matlab\/wp-json\/wp\/v2\/media\/2403"}],"wp:attachment":[{"href":"https:\/\/blogs.mathworks.com\/matlab\/wp-json\/wp\/v2\/media?parent=2376"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/matlab\/wp-json\/wp\/v2\/categories?post=2376"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/matlab\/wp-json\/wp\/v2\/tags?post=2376"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}