{"id":931,"date":"2017-04-21T10:06:31","date_gmt":"2017-04-21T14:06:31","guid":{"rendered":"https:\/\/blogs.mathworks.com\/developer\/?p=931"},"modified":"2018-11-07T15:51:07","modified_gmt":"2018-11-07T20:51:07","slug":"from-the-matlab-command-prompt-to-the-cloud","status":"publish","type":"post","link":"https:\/\/blogs.mathworks.com\/developer\/2017\/04\/21\/from-the-matlab-command-prompt-to-the-cloud\/","title":{"rendered":"From the MATLAB Command Prompt to the Cloud"},"content":{"rendered":"<div class=\"content\"><!--introduction--><p>A familiar blinking cursor at the MATLAB command prompt greets me as I look away from the grey clouds overhead - the kind that carries rain\/snow. It has been nice to receive our fair share of precipitation in California this year.<\/p><p>A more interesting cloud is the buzzword that the software world frequently uses as a <i>catch-all<\/i> term, a fuzzy inkblot, that means different things to different people based on their personal experience, context, skills, etc.<\/p><p><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"https:\/\/blogs.mathworks.com\/developer\/files\/CloudPerspective.png\" alt=\"\"> <\/p><p>In this post, I offer my perspective in an attempt to demystify the technology and view it through the eyes of a MATLAB developer trying to leverage advances in cloud based technology.<\/p><p>To build up our understanding of the cloud, it is useful to discuss the technology that powers it by broadly classifying it as <b>private<\/b> and <b>public<\/b> cloud offerings. A private cloud being a software stack that is installed within your computer network, either on-premises or within a private datacenter. The public cloud on the other hand being resources that are managed by vendors that offer them to the paying public as a service.<\/p><p>This begs the question - What does this software stack, private or public, actually do? That is an astute question and one that can only be answered as... \"hmmm, it depends\".<\/p><!--\/introduction--><p><b>Offering X as a Service (where X = it doesn't matter)<\/b><\/p><p>At the most basic level, virtualization software allow users to provision computers and network them together to build the necessary computational, storage and networking infrastructure to solve problems. Not unlike tinker toys or building bricks - just a software version of it. Even at this level, the analogy to a MATLAB user should be evident.<\/p><p>MathWorks large portfolio of toolboxes, blocksets and technologies offers a strong analogy. We are the hardware store. We don't sell kitchens but offer all the lumber, tools, services and practically everything you need, under one roof, to build the kitchen of your dreams.<\/p><p>The real value of leveraging cloud offerings is that it enables IT organizations to support engineers and scientists to do whatever they usually do, often on the cutting edge of science and engineering. These virtualized resources are available in large variety of configurations, power and specialized capabilities (like GPUs).<\/p><p>This access is most frequently referred to as offering the infrastructure as a service <b>(IaaS)<\/b>. If these resources come with pre-installed software then they are typically ready to use out of the box with a few clicks. This is often referred to as offering the platform as a service <b>(PaaS)<\/b>. And finally, it is possible to hide the infrastructure and offer only the software installed therein as a service <b>(SaaS)<\/b>.<\/p><p><b>The implications for a MATLAB user<\/b><\/p><p>Now, from MATLAB's perspective, all of these virtualized resources are indistinguishable from the computers and networks that currently run MathWorks products like <a href=\"https:\/\/www.mathworks.com\/products\/matlab.html\">MATLAB<\/a>, <a href=\"https:\/\/www.mathworks.com\/products\/distriben.html\">MATLAB Distributed Computing Server<\/a>, <a href=\"https:\/\/www.mathworks.com\/products\/matlab-production-server.html\">MATLAB Production Server<\/a>, etc. Or more plainly, if you are looking to leverage cloud infrastructure (IaaS) then our products can and will fit.<\/p><p>One ramification of having all this compute, storage and networking resources available at a click is that it is possible to <i>scale<\/i> upwards or downwards quickly and easily.<\/p><p><b>On Scalability<\/b><\/p><p>Alas, the word <i>scale<\/i> is often as fuzzy, overused and ambiguous as the word <i>cloud<\/i>. From a MATLAB developers perspective, most problems <i>scale<\/i> in <b>one or more<\/b> of 3 dimensions.<\/p><p><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"https:\/\/blogs.mathworks.com\/developer\/files\/ScalingMATLAB.png\" alt=\"\"> <\/p><p>Most common problems can be broken down along these axes, and tackled with one or more software stack(s) of tools.<\/p><p><b>Scaling MATLAB for Concurrent access<\/b><\/p><p>MATLAB Production Server is designed to handle concurrent loads. It is benchmarked and tested to handle many thousands of requests a second. This enables access to MATLAB algorithms as low latency transactions that run on a highly performant platform that can be scaled elegantly both deep (with bigger more powerful hardware) and wide (with load balancers across multiple machines if required).<\/p><p>I have <a href=\"https:\/\/blogs.mathworks.com\/developer\/2016\/07\/13\/build-a-product-build-a-service\/\">written about this in the past<\/a> with a <a href=\"http:\/\/jsfiddle.net\/hosagrahara\/vrhyd4uc\/show\/\">few interactive demos<\/a> open to the internet and the readership of this blog.<\/p><p><b>Scaling MATLAB Compute<\/b><\/p><p>Some problems will require several minutes, hours or more of computation. MATLAB Code that starts as a single process on a single core of a computer can be scaled up to leverage all CPU and GPU resources of that machine with the <a href=\"https:\/\/www.mathworks.com\/products\/parallel-computing.html\">Parallel Computing Toolbox<\/a> and from there, upwards to the cloud with offerings such as the <a href=\"https:\/\/www.mathworks.com\/products\/parallel-computing\/parallel-computing-on-the-cloud\/distriben-ec2.html\">MATLAB Distributed Computing Server for Amazon EC2<\/a>.  The <a href=\"https:\/\/cloudcenter.mathworks.com\/login\">MathWorks Cloud Center<\/a> is an example of a platform offering easy configuration and access to Cloud based resources (PaaS).<\/p><p>Are you using a different cloud vendor? At the heart of the solution is a MathWorks product that you can provision on the infrastructure provided by the cloud vendor of your choice.<\/p><p>MATLAB Distributed Computing Server (MDCS) accepts interactively developed MATLAB code and parallelizes the compute over many nodes exposing all the nice interactive desktop features such as the live editor to harness the power of parallel execution in the form of batches, jobs and access to distributed memory across a cluster of machines.<\/p><p><b>Scaling MATLAB to tackle Big Data problems<\/b><\/p><p>Anyone following the public discourse on <b>Big Data<\/b> will recognize the befuddling alphabet soup of technologies that are emerging to handle problems that involve massive amounts of data.<\/p><p>At the heart of this revolution is a rather simple idea. As data scales upwards, it first becomes \"too big to fit in a spreadsheet\". Most seasoned MATLAB users will know that MATLAB continues to handle these problems swimmingly.<\/p><p>On further growth, the data becomes too big to fit into a single computer's processor(s) and memory. At this point, a compute will allow access to the combined power of a cluster of computers (hint: MDCS). Eventually, the data grows to size that irrespective of the size of cluster, it becomes too big to fit through a network. At this point, it is easier to move the program to the data than to slice the data and attempt to move it to compute resources. There are software frameworks to help with this slice\/dice and store operations. Say hello to Hadoop, MapReduce and Spark.<\/p><p>The simple idea being that data can be correctly distributed and algorithms can move to the data which stays at rest. Or as Francis Bacon put it \"If the mountain will not come to MATLAB, then MATLAB must go to the mountain\". \ud83d\ude42<\/p><p>I can go on demystifying what these software stacks do but for now it is sufficient to note that MathWorks products play well. Both our distributed compute products and compiler products embrace these frameworks with out-of-box shrink-wrapped functionality.<\/p><p><b>Support from Language Semantics<\/b><\/p><p>This support in handling big data problems extends down into the language semantics with constructs such as <a href=\"https:\/\/www.mathworks.com\/help\/matlab\/datastore.html\">datastores<\/a>, <a href=\"https:\/\/www.mathworks.com\/help\/matlab\/import_export\/tall-arrays.html\">tall arrays<\/a>, etc that are built to <a href=\"https:\/\/www.mathworks.com\/help\/distcomp\/use-tall-arrays-on-a-spark-enabled-hadoop-cluster.html\">harness the underlying technology such as Apache Spark<\/a>.<\/p><p>Cloud based storage products such as <a href=\"https:\/\/www.mathworks.com\/products\/matlab-drive.html\">MATLAB Drive<\/a> offer access to the data as a hosted solution that works across multiple devices. Alternatively, if you have your data in offerings like the Simple Storage Service (S3), then language constructs such as the datastore offer connectivity to the data across MATLAB, <a href=\"https:\/\/www.mathworks.com\/solutions\/parallel-computing.html\">distributed compute<\/a> and <a href=\"https:\/\/www.mathworks.com\/solutions\/desktop-web-deployment.html\">application deployment<\/a> products.<\/p><p>If you are a developer that is looking for the MATLAB desktop experience as a service, you should definitely checkout the <a href=\"https:\/\/www.mathworks.com\/products\/matlab-online.html\">MATLAB Online<\/a> offering that offers the MATLAB flagship software as a service (SaaS).<\/p><p><b>What about Simulink?<\/b><\/p><p>As of our latest R2017a release, <a href=\"https:\/\/www.mathworks.com\/products\/simulink.html\">Simulink<\/a> users can leverage features such as <i>parsim<\/i> that can bring the power of parallelized cloud based simulation to model-based design workflows. These approaches leverage products such as the MATLAB Distributed Computing Server to scale Simulink simulations.<\/p><p><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"https:\/\/blogs.mathworks.com\/developer\/files\/parsimComposite.png\" alt=\"\"> <\/p><p><b>Vendor-agnostic capabilities with vendor-specific convenience<\/b><\/p><p>The most recognizable of the public cloud vendors are Amazon with their Web Services (AWS), Microsoft with Azure and the Google Cloud Platform. Clients of ours are <a href=\"https:\/\/www.mathworks.com\/company\/user_stories\/freightos-performs-big-data-analytics-for-online-freight-logistics-with-matlab-and-google-bigquery.html\">already leveraging the cloud to scale their workflows both for research and production, with success<\/a>.<\/p><p>If there is one thing you should take away from this post, it should be that if your future looks cloudy (pun intended), the MathWorks can help!<\/p><p>Please use the comments and let us know is any of this resonates and what part of this vast array of technologies is of deeper interest.<\/p><script language=\"JavaScript\"> <!-- \r\n    function grabCode_396f2e9417db4cf4a818e98f3e2983a9() {\r\n        \/\/ Remember the title so we can use it in the new page\r\n        title = document.title;\r\n\r\n        \/\/ Break up these strings so that their presence\r\n        \/\/ in the Javascript doesn't mess up the search for\r\n        \/\/ the MATLAB code.\r\n        t1='396f2e9417db4cf4a818e98f3e2983a9 ' + '##### ' + 'SOURCE BEGIN' + ' #####';\r\n        t2='##### ' + 'SOURCE END' + ' #####' + ' 396f2e9417db4cf4a818e98f3e2983a9';\r\n    \r\n        b=document.getElementsByTagName('body')[0];\r\n        i1=b.innerHTML.indexOf(t1)+t1.length;\r\n        i2=b.innerHTML.indexOf(t2);\r\n \r\n        code_string = b.innerHTML.substring(i1, i2);\r\n        code_string = code_string.replace(\/REPLACE_WITH_DASH_DASH\/g,'--');\r\n\r\n        \/\/ Use \/x3C\/g instead of the less-than character to avoid errors \r\n        \/\/ in the XML parser.\r\n        \/\/ Use '\\x26#60;' instead of '<' so that the XML parser\r\n        \/\/ doesn't go ahead and substitute the less-than character. \r\n        code_string = code_string.replace(\/\\x3C\/g, '\\x26#60;');\r\n\r\n        copyright = 'Copyright 2017 The MathWorks, Inc.';\r\n\r\n        w = window.open();\r\n        d = w.document;\r\n        d.write('<pre>\\n');\r\n        d.write(code_string);\r\n\r\n        \/\/ Add copyright line at the bottom if specified.\r\n        if (copyright.length > 0) {\r\n            d.writeln('');\r\n            d.writeln('%%');\r\n            if (copyright.length > 0) {\r\n                d.writeln('% _' + copyright + '_');\r\n            }\r\n        }\r\n\r\n        d.write('<\/pre>\\n');\r\n\r\n        d.title = title + ' (MATLAB code)';\r\n        d.close();\r\n    }   \r\n     --> <\/script><p style=\"text-align: right; font-size: xx-small; font-weight:lighter;   font-style: italic; color: gray\"><br><a href=\"javascript:grabCode_396f2e9417db4cf4a818e98f3e2983a9()\"><span style=\"font-size: x-small;        font-style: italic;\">Get \r\n      the MATLAB code <noscript>(requires JavaScript)<\/noscript><\/span><\/a><br><br>\r\n      Published with MATLAB&reg; R2017a<br><\/p><\/div><!--\r\n396f2e9417db4cf4a818e98f3e2983a9 ##### SOURCE BEGIN #####\r\n%% From the MATLAB Command Prompt to the Cloud\r\n% A familiar blinking cursor at the MATLAB command prompt greets me as I look \r\n% away from the grey clouds overhead - the kind that carries rain\/snow. \r\n% It has been nice to receive our fair share of precipitation in California this year.\r\n% \r\n% A more interesting cloud is the buzzword that the software world frequently uses\r\n% as a _catch-all_ term, a fuzzy inkblot, that means different things \r\n% to different people based on their personal experience, context,\r\n% skills, etc.\r\n% \r\n% <<CloudPerspective.png>>\r\n% \r\n% In this post, I offer my perspective in an attempt to demystify the technology\r\n% and view it through the eyes of a MATLAB developer trying to leverage \r\n% advances in cloud based technology.\r\n% \r\n% To build up our understanding of the cloud, it is useful to \r\n% discuss the technology that powers it by broadly classifying it as *private* \r\n% and *public* cloud offerings. A private cloud being a software stack \r\n% that is installed within your computer network, either on-premises or\r\n% within a private datacenter. The public cloud on the other hand being \r\n% resources that are managed by vendors that offer them to the paying public \r\n% as a service. \r\n% \r\n% This begs the question - What does this software stack, private or\r\n% public, actually do? That is an astute question and one that can only be\r\n% answered as... \"hmmm, it depends\". \r\n%\r\n%%\r\n% *Offering X as a Service (where X = it doesn't matter)*\r\n% \r\n% At the most basic level, virtualization software allow users to provision\r\n% computers and network them together to build the necessary computational,\r\n% storage and networking infrastructure to solve problems. Not unlike\r\n% tinker toys or building bricks - just a software version of it. Even it\r\n% this level, the analogy to a MATLAB user should be evident. \r\n% \r\n% MathWorks large portfolio of toolboxes, blocksets and technologies offers \r\n% a strong analogy. We are the hardware store. We don't sell kitchens but \r\n% offer all the lumber, tools, services and practically everything \r\n% you need, under one roof, to build the kitchen of your dreams. \r\n% \r\n% The real value of leveraging cloud offerings is that it enables IT \r\n% organizations to support engineers and scientists to do whatever they usually do, \r\n% often on the cutting edge of science and engineering. These \r\n% virtualized resources are available in large variety of configurations, \r\n% power and specialized capabilities (like GPUs).\r\n% \r\n% This access is most frequently referred to as offering the \r\n% infrastructure as a service *(IaaS)*. If these resources come with\r\n% pre-installed software then they are typically ready to use out of the\r\n% box with a few clicks. This is often referred to as offering the platform \r\n% as a service *(PaaS)*. And finally, it is possible to hide the infrastructure \r\n% and offer only the software installed therein as a service *(SaaS)*.\r\n% \r\n%%\r\n% *The implications for a MATLAB user*\r\n% \r\n% Now, from MATLAB's perspective, all of these virtualized resources are \r\n% indistinguishable from the computers and networks that currently run \r\n% MathWorks products like <https:\/\/www.mathworks.com\/products\/matlab.html MATLAB>, <https:\/\/www.mathworks.com\/products\/distriben.html MATLAB Distributed Computing Server>, \r\n% <https:\/\/www.mathworks.com\/products\/matlab-production-server.html MATLAB Production Server>, etc. Or more plainly, if you are looking to \r\n% leverage cloud infrastructure (IaaS) then our products can and will fit. \r\n% \r\n% One ramification of having all this compute, storage and networking\r\n% resources available at a click is that it is possible to _scale_ upwards\r\n% or downwards quickly and easily. \r\n% \r\n%%\r\n% *On Scalability*\r\n% \r\n% Alas, the word _scale_ is often as fuzzy, overused and ambiguous as the \r\n% word _cloud_. From a MATLAB developers perspective, most problems _scale_ \r\n% in *one or more* of 3 dimensions. \r\n%\r\n% <<ScalingMATLAB.png>>\r\n%\r\n% Most common problems can be broken down along these axes, and tackled with\r\n% one or more software stack(s) of tools. \r\n% \r\n%% \r\n% *Scaling MATLAB for Concurrent access*\r\n% \r\n% MATLAB Production Server is designed to handle concurrent loads. It is \r\n% benchmarked and tested to handle many thousands of requests a second. \r\n% This enables access to MATLAB algorithms as low latency \r\n% transactions that run on a highly performant platform that can be scaled \r\n% elegantly both deep (with bigger more powerful hardware) and wide (with \r\n% load balancers across multiple machines if required).\r\n% \r\n% I have <https:\/\/blogs.mathworks.com\/developer\/2016\/07\/13\/build-a-product-build-a-service\/ written about this in the past> \r\n% with a <http:\/\/jsfiddle.net\/hosagrahara\/vrhyd4uc\/show\/ few interactive demos> open\r\n% to the internet and the readership of this blog.\r\n%\r\n%% \r\n% *Scaling MATLAB Compute*\r\n% \r\n% Some problems will require several minutes, hours or more of computation.\r\n% MATLAB Code that starts as a single process on a single core of a computer \r\n% can be scaled up to leverage all CPU and GPU resources of that machine with \r\n% the <https:\/\/www.mathworks.com\/products\/parallel-computing.html Parallel Computing Toolbox> and from there, upwards to the cloud with \r\n% offerings such as the <https:\/\/www.mathworks.com\/products\/parallel-computing\/matlab-parallel-cloud.html MATLAB Parallel Cloud>, and onwards with offerings \r\n% like the <https:\/\/www.mathworks.com\/products\/parallel-computing\/parallel-computing-on-the-cloud\/distriben-ec2.html MATLAB Distributed Computing Server for Amazon EC2>.  The <https:\/\/cloudcenter.mathworks.com\/login MathWorks \r\n% Cloud Center> is an example of a platform offering easy configuration and \r\n% access to Cloud based resources (PaaS). \r\n% \r\n% Are you using a different cloud vendor? At the heart of the solution is a \r\n% MathWorks product that you can provision on the infrastructure provided by the cloud vendor of your choice.\r\n% \r\n% MATLAB Distributed Computing Server (MDCS) accepts interactively developed \r\n% MATLAB code and parallelizes the compute over many nodes exposing all the \r\n% nice interactive desktop features such as the live editor to harness the \r\n% power of parallel execution in the form of batches, jobs and access to \r\n% distributed memory across a cluster of machines.\r\n%\r\n%% \r\n% *Scaling MATLAB to tackle Big Data problems*\r\n% \r\n% Anyone following the public discourse on *Big Data* will recognize the befuddling \r\n% alphabet soup of technologies that are emerging to handle problems that\r\n% involve massive amounts of data. \r\n% \r\n% At the heart of this revolution is a rather simple idea. As data scales\r\n% upwards, it first becomes \"too big to fit in a spreadsheet\". Most seasoned \r\n% MATLAB users will know that MATLAB continues to handle these problems\r\n% swimmingly. \r\n% \r\n% On further growth, the data becomes too big to fit into a single\r\n% computer's processor(s) and memory. At this point, a compute will allow\r\n% access to the combined power of a cluster of computers (hint: MDCS). \r\n% Eventually, the data grows to size that irrespective of the size of \r\n% cluster, it becomes too big to fit through a network. \r\n% At this point, it is easier to move the program to the data than to \r\n% slice the data and attempt to move it to compute resources. There are \r\n% software frameworks to help with this slice\/dice and store operations. \r\n% Say hello to Hadoop, MapReduce and Spark. \r\n% \r\n% The simple idea being that data can be correctly distributed and \r\n% algorithms can move to the data which stays at rest. Or as Francis Bacon \r\n% put it \"If the mountain will not come to MATLAB, then MATLAB must go to \r\n% the mountain\". \ud83d\ude42\r\n% \r\n% I can go on demystifying what these software stacks do but for now \r\n% it is sufficient to note that MathWorks products play well. Both our \r\n% distributed compute products and compiler products embrace these frameworks\r\n% with out-of-box shrink-wrapped functionality.  \r\n% \r\n%%\r\n% *Support from Language Semantics*\r\n% \r\n% This support in handling big data problems extends down into the  \r\n% language semantics with constructs such as <https:\/\/www.mathworks.com\/help\/matlab\/datastore.html datastores>, <https:\/\/www.mathworks.com\/help\/matlab\/import_export\/tall-arrays.html tall arrays>, etc \r\n% that are built to <https:\/\/www.mathworks.com\/help\/distcomp\/use-tall-arrays-on-a-spark-enabled-hadoop-cluster.html harness the underlying technology such as Apache Spark>.\r\n% \r\n% Cloud based storage products such as <https:\/\/www.mathworks.com\/products\/matlab-drive.html MATLAB Drive> offer access\r\n% to the data as a hosted solution that works across multiple devices. \r\n% Alternatively, if you have your data in offerings like the \r\n% Simple Storage Service (S3), then language constructs such as the \r\n% datastore offer connectivity to the data across MATLAB, <https:\/\/www.mathworks.com\/solutions\/parallel-computing.html distributed \r\n% compute> and <https:\/\/www.mathworks.com\/solutions\/desktop-web-deployment.html application deployment> products.\r\n% \r\n% If you are a developer that is looking for the MATLAB desktop\r\n% experience as a service, you should definitely checkout the <https:\/\/www.mathworks.com\/products\/matlab-online.html MATLAB Online> \r\n% offering that offers the MATLAB flagship software as a service (SaaS). \r\n%\r\n%% \r\n% *What about Simulink?*\r\n% \r\n% As of our latest R2017a release, <https:\/\/www.mathworks.com\/products\/simulink.html Simulink> users can leverage features such as _parsim_ \r\n% that can bring the power of parallelized cloud based simulation to \r\n% model-based design workflows. These approaches leverage products such as\r\n% the MATLAB Distributed Computing Server to scale Simulink simulations.\r\n% \r\n% <<parsimComposite.png>>\r\n%% \r\n% *Vendor-agnostic capabilities with vendor-specific convenience*\r\n% \r\n% The most recognizable of the public cloud vendors are Amazon with their \r\n% Web Services (AWS), Microsoft with Azure and the Google Cloud Platform.\r\n% Clients of ours are <https:\/\/www.mathworks.com\/company\/user_stories\/freightos-performs-big-data-analytics-for-online-freight-logistics-with-matlab-and-google-bigquery.html already leveraging the cloud to scale their workflows\r\n% both for research and production, with success>.  \r\n% \r\n% If there is one thing you should take away from this post, it should\r\n% be that if your future looks cloudy (pun intended), the MathWorks can help!\r\n% \r\n% Please use the comments and let us know is any of this resonates and what part \r\n% of this vast array of technologies is of deeper interest. \r\n\r\n##### SOURCE END ##### 396f2e9417db4cf4a818e98f3e2983a9\r\n-->","protected":false},"excerpt":{"rendered":"<div class=\"overview-image\"><img src=\"https:\/\/blogs.mathworks.com\/developer\/files\/ScalingMATLAB.png\" class=\"img-responsive attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"\" decoding=\"async\" loading=\"lazy\" \/><\/div><!--introduction--><p>A familiar blinking cursor at the MATLAB command prompt greets me as I look away from the grey clouds overhead - the kind that carries rain\/snow. It has been nice to receive our fair share of precipitation in California this year.... <a class=\"read-more\" href=\"https:\/\/blogs.mathworks.com\/developer\/2017\/04\/21\/from-the-matlab-command-prompt-to-the-cloud\/\">read more >><\/a><\/p>","protected":false},"author":135,"featured_media":933,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[9],"tags":[],"_links":{"self":[{"href":"https:\/\/blogs.mathworks.com\/developer\/wp-json\/wp\/v2\/posts\/931"}],"collection":[{"href":"https:\/\/blogs.mathworks.com\/developer\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.mathworks.com\/developer\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/developer\/wp-json\/wp\/v2\/users\/135"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/developer\/wp-json\/wp\/v2\/comments?post=931"}],"version-history":[{"count":8,"href":"https:\/\/blogs.mathworks.com\/developer\/wp-json\/wp\/v2\/posts\/931\/revisions"}],"predecessor-version":[{"id":1930,"href":"https:\/\/blogs.mathworks.com\/developer\/wp-json\/wp\/v2\/posts\/931\/revisions\/1930"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/developer\/wp-json\/wp\/v2\/media\/933"}],"wp:attachment":[{"href":"https:\/\/blogs.mathworks.com\/developer\/wp-json\/wp\/v2\/media?parent=931"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/developer\/wp-json\/wp\/v2\/categories?post=931"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/developer\/wp-json\/wp\/v2\/tags?post=931"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}