{"id":9440,"date":"2022-03-19T11:29:30","date_gmt":"2022-03-19T16:29:30","guid":{"rendered":"https:\/\/blogs.pacasmayo.com\/felipe\/?p=9440"},"modified":"2022-03-19T12:33:41","modified_gmt":"2022-03-19T17:33:41","slug":"command-yourself-to-declare","status":"publish","type":"post","link":"https:\/\/blogs.pacasmayo.com\/felipe\/2022\/03\/19\/command-yourself-to-declare\/","title":{"rendered":"Command yourself to declare"},"content":{"rendered":"\n<p>Leer en <a href=\"https:\/\/blogs.pacasmayo.com\/felipe\/2022\/03\/19\/ordenate-declarar\/\">Espa\u00f1ol<\/a><\/p>\n\n\n\n<p><em>Declarative<\/em> programming is a transformational trend in the industry that not only improves the programming paradigm but also enables the automation revolution.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Imperative<\/h2>\n\n\n\n<p>In the opposite corner, we have <em>imperative<\/em> programming, which means that a programmer would write the specific instructions for which actions would be performed and in which order.  For example, if an application needed to copy a file the developer would call a function like this:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ pseudo-code\ncopy_file(\/source,\/target)<\/code><\/pre>\n\n\n\n<p>The user of the copy_file is issuing a command, to copy the file from the source to the target, and we can assume that the intention of the caller is that the file is made available at the target location, but the intention is not 100% clear from the imperative style.  If we are implementing the <em>imperative<\/em> copy_file command, we have to either make some assumptions or ask the caller to make their intentions clear through some extra parameters (i.e. do_not_copy_if_exists: true).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ pseudo-code\nfunction copy_file(source, target)\n  sourceExists = file_exists(source)\n  targetFolderExists = folder_exists(target)\n  if sourceExists then\n    if no targetFolderExists then\n      create_folder(target)\n    end if\n    targetIsIdentical = compare_size_and_date(source,target)\n    if targetIsIdentical then\n      <strong>return success<\/strong> <strong>\/\/ You were told to copy, you did not copy... why success?<\/strong>\n    else\n      contents = read_file(source)\n      write_file(contents,target)\n      return success\n    end if\n  end if\n  return failure\nend function<\/code><\/pre>\n\n\n\n<p>This begs the question if the command needed extra arguments to clarify the intention, wouldn&#8217;t it make more sense for the user to express the intention without the command?  Welcome to the world of &#8220;<em>declarative<\/em>&#8221; or &#8220;<em>desired state<\/em>&#8221; programming.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Declarative<\/h2>\n\n\n\n<p><em>Declarative<\/em> programming is NOT replacing the <em>imperative<\/em>, <em>procedural<\/em><sup><a href=\"#procedural\">[1]<\/a><\/sup> style of programming, but enhancing the interface to the users by asking their intentions instead of instructions. The <em>declarative<\/em> model changes the paradigm and states that libraries should not provide the user with actions\/verbs, instead they should allow the requestor to assert the desired final state and let the library or tool figure out how to get there.  Of course, declarative programming is not a new thing, it has been used for decades in the data world in SQL programming, but it is making a huge rebirth in the world of automation. So, again, using pseudo-code:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ensureFileAvailable:\n  whichFile: \/source\n  where: \/target<\/code><\/pre>\n\n\n\n<p>We can see three immediate benefits from this approach over the imperative style: <\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Clear intentions. The user&#8217;s desire is clearly stated, &#8220;ensure the file is available at the target location&#8221;, without any imposition of how that happens.  If that desire is accomplished the routine is successful and if not, then it fails, regardless of the actual actions required to make it a reality.<\/li><li>Idempotency.  Developers and application owners should not feel afraid of executing declarative code twice or many more times. In the imperative paradigm a procedure of start_server will continue incrementing the number of servers every time it is called, in declarative, one should be able to state the final desired state (ensure_server_running) and the engine should be able to determine if it is already there, or if it needs to correct some drift<sup><a href=\"#drift\">[2]<\/a><\/sup>, or start from scratch.<\/li><li>Portability. By staying away from the details of how the desire is to be realized, the interface has a better chance to be preserved over many different implementations.  For example, file_copy makes sense in a local file system, but if the functionality gets extended to a file server the action would be a file transfer even though it is still called file_copy, and if it is implemented on a web environment, it will be a file upload.  By enabling the user to express their final desired state, the interface tends to be less attached to the current implementation.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>If you are thinking that there is still plenty of <em>imperative<\/em> programming under the covers to enable my little <em>declarative<\/em> example, you&#8217;ll be right.  The desired state (pun intended) is not to rid the world of imperatives, but to improve the interface with the users.  If that wasn&#8217;t enough, <em>declarative<\/em> programming is one of the key components that make modern automation possible, without it we wouldn&#8217;t have Ansible, Kubernetes, or Terraform, all of which depend on the concepts of <em>declarative<\/em> programming to deliver the awesome automation revolution we have seen in the last few years.<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p><a id=\"structured\"><sup>[1]<\/sup><\/a>: Structural or procedural programming is a style of imperative programming where the pure imperative &#8220;gotos&#8221; are replaced by functions and procedures.<\/p>\n\n\n\n<p><a id=\"drift\"><sup>[2]<\/sup><\/a>: Drift &#8211; In declarative programming, a drift happens when external factors change the state after a successful accomplishment of the desired state.  Drift detection is a commonly used technique to watch for changes to the desired state and Drift reconciliation is the process by which the system is returned to the desired state after a drift.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Declarative programming enabled the modern automation revolution.<\/p>\n","protected":false},"author":1,"featured_media":9443,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[38],"tags":[39],"class_list":["post-9440","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technology","tag-tecnologia"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Command yourself to declare - El blog de Felipe<\/title>\n<meta name=\"description\" content=\"Declarative programming is not just a new way of writing code, but a key component of the automation revolution.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blogs.pacasmayo.com\/felipe\/2022\/03\/19\/command-yourself-to-declare\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Command yourself to declare - El blog de Felipe\" \/>\n<meta property=\"og:description\" content=\"Declarative programming is not just a new way of writing code, but a key component of the automation revolution.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blogs.pacasmayo.com\/felipe\/2022\/03\/19\/command-yourself-to-declare\/\" \/>\n<meta property=\"og:site_name\" content=\"El blog de Felipe\" \/>\n<meta property=\"article:published_time\" content=\"2022-03-19T16:29:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-03-19T17:33:41+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blogs.pacasmayo.com\/felipe\/files\/2022\/03\/image-8.png\" \/>\n\t<meta property=\"og:image:width\" content=\"768\" \/>\n\t<meta property=\"og:image:height\" content=\"512\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"AI\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"AI\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2022\\\/03\\\/19\\\/command-yourself-to-declare\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2022\\\/03\\\/19\\\/command-yourself-to-declare\\\/\"},\"author\":{\"name\":\"AI\",\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/#\\\/schema\\\/person\\\/e32bfb69f0dcbed869e838474a34d240\"},\"headline\":\"Command yourself to declare\",\"datePublished\":\"2022-03-19T16:29:30+00:00\",\"dateModified\":\"2022-03-19T17:33:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2022\\\/03\\\/19\\\/command-yourself-to-declare\\\/\"},\"wordCount\":730,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2022\\\/03\\\/19\\\/command-yourself-to-declare\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/files\\\/2022\\\/03\\\/image-8.png\",\"keywords\":[\"Tecnolog\u00eda\"],\"articleSection\":[\"Technology\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2022\\\/03\\\/19\\\/command-yourself-to-declare\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2022\\\/03\\\/19\\\/command-yourself-to-declare\\\/\",\"url\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2022\\\/03\\\/19\\\/command-yourself-to-declare\\\/\",\"name\":\"Command yourself to declare - El blog de Felipe\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2022\\\/03\\\/19\\\/command-yourself-to-declare\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2022\\\/03\\\/19\\\/command-yourself-to-declare\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/files\\\/2022\\\/03\\\/image-8.png\",\"datePublished\":\"2022-03-19T16:29:30+00:00\",\"dateModified\":\"2022-03-19T17:33:41+00:00\",\"description\":\"Declarative programming is not just a new way of writing code, but a key component of the automation revolution.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2022\\\/03\\\/19\\\/command-yourself-to-declare\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2022\\\/03\\\/19\\\/command-yourself-to-declare\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2022\\\/03\\\/19\\\/command-yourself-to-declare\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/files\\\/2022\\\/03\\\/image-8.png\",\"contentUrl\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/files\\\/2022\\\/03\\\/image-8.png\",\"width\":768,\"height\":512},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/2022\\\/03\\\/19\\\/command-yourself-to-declare\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Command yourself to declare\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/#website\",\"url\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/\",\"name\":\"El blog de Felipe\",\"description\":\"De la abundancia del coraz\u00f3n...\",\"publisher\":{\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/#organization\",\"name\":\"El blog de Felipe\",\"url\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/files\\\/2019\\\/11\\\/cropped-caricatura_felipe.jpg\",\"contentUrl\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/files\\\/2019\\\/11\\\/cropped-caricatura_felipe.jpg\",\"width\":1360,\"height\":598,\"caption\":\"El blog de Felipe\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/#\\\/schema\\\/person\\\/e32bfb69f0dcbed869e838474a34d240\",\"name\":\"AI\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4afeebd1deb1471ed6e7e21e6dc44176da2cb2ef0704b36e720ef8656e34bd65?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4afeebd1deb1471ed6e7e21e6dc44176da2cb2ef0704b36e720ef8656e34bd65?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4afeebd1deb1471ed6e7e21e6dc44176da2cb2ef0704b36e720ef8656e34bd65?s=96&d=mm&r=g\",\"caption\":\"AI\"},\"description\":\"Este art\u00edculo ha sido seleccionado y parcialmente escrito e ilustrado por Inteligencia Artificial (AI) basado en noticias disponibles.\",\"url\":\"https:\\\/\\\/blogs.pacasmayo.com\\\/felipe\\\/author\\\/ai\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Command yourself to declare - El blog de Felipe","description":"Declarative programming is not just a new way of writing code, but a key component of the automation revolution.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blogs.pacasmayo.com\/felipe\/2022\/03\/19\/command-yourself-to-declare\/","og_locale":"en_US","og_type":"article","og_title":"Command yourself to declare - El blog de Felipe","og_description":"Declarative programming is not just a new way of writing code, but a key component of the automation revolution.","og_url":"https:\/\/blogs.pacasmayo.com\/felipe\/2022\/03\/19\/command-yourself-to-declare\/","og_site_name":"El blog de Felipe","article_published_time":"2022-03-19T16:29:30+00:00","article_modified_time":"2022-03-19T17:33:41+00:00","og_image":[{"width":768,"height":512,"url":"https:\/\/blogs.pacasmayo.com\/felipe\/files\/2022\/03\/image-8.png","type":"image\/png"}],"author":"AI","twitter_card":"summary_large_image","twitter_misc":{"Written by":"AI","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.pacasmayo.com\/felipe\/2022\/03\/19\/command-yourself-to-declare\/#article","isPartOf":{"@id":"https:\/\/blogs.pacasmayo.com\/felipe\/2022\/03\/19\/command-yourself-to-declare\/"},"author":{"name":"AI","@id":"https:\/\/blogs.pacasmayo.com\/felipe\/#\/schema\/person\/e32bfb69f0dcbed869e838474a34d240"},"headline":"Command yourself to declare","datePublished":"2022-03-19T16:29:30+00:00","dateModified":"2022-03-19T17:33:41+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.pacasmayo.com\/felipe\/2022\/03\/19\/command-yourself-to-declare\/"},"wordCount":730,"commentCount":1,"publisher":{"@id":"https:\/\/blogs.pacasmayo.com\/felipe\/#organization"},"image":{"@id":"https:\/\/blogs.pacasmayo.com\/felipe\/2022\/03\/19\/command-yourself-to-declare\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.pacasmayo.com\/felipe\/files\/2022\/03\/image-8.png","keywords":["Tecnolog\u00eda"],"articleSection":["Technology"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.pacasmayo.com\/felipe\/2022\/03\/19\/command-yourself-to-declare\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.pacasmayo.com\/felipe\/2022\/03\/19\/command-yourself-to-declare\/","url":"https:\/\/blogs.pacasmayo.com\/felipe\/2022\/03\/19\/command-yourself-to-declare\/","name":"Command yourself to declare - El blog de Felipe","isPartOf":{"@id":"https:\/\/blogs.pacasmayo.com\/felipe\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.pacasmayo.com\/felipe\/2022\/03\/19\/command-yourself-to-declare\/#primaryimage"},"image":{"@id":"https:\/\/blogs.pacasmayo.com\/felipe\/2022\/03\/19\/command-yourself-to-declare\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.pacasmayo.com\/felipe\/files\/2022\/03\/image-8.png","datePublished":"2022-03-19T16:29:30+00:00","dateModified":"2022-03-19T17:33:41+00:00","description":"Declarative programming is not just a new way of writing code, but a key component of the automation revolution.","breadcrumb":{"@id":"https:\/\/blogs.pacasmayo.com\/felipe\/2022\/03\/19\/command-yourself-to-declare\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.pacasmayo.com\/felipe\/2022\/03\/19\/command-yourself-to-declare\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blogs.pacasmayo.com\/felipe\/2022\/03\/19\/command-yourself-to-declare\/#primaryimage","url":"https:\/\/blogs.pacasmayo.com\/felipe\/files\/2022\/03\/image-8.png","contentUrl":"https:\/\/blogs.pacasmayo.com\/felipe\/files\/2022\/03\/image-8.png","width":768,"height":512},{"@type":"BreadcrumbList","@id":"https:\/\/blogs.pacasmayo.com\/felipe\/2022\/03\/19\/command-yourself-to-declare\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/blogs.pacasmayo.com\/felipe\/"},{"@type":"ListItem","position":2,"name":"Command yourself to declare"}]},{"@type":"WebSite","@id":"https:\/\/blogs.pacasmayo.com\/felipe\/#website","url":"https:\/\/blogs.pacasmayo.com\/felipe\/","name":"El blog de Felipe","description":"De la abundancia del coraz\u00f3n...","publisher":{"@id":"https:\/\/blogs.pacasmayo.com\/felipe\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.pacasmayo.com\/felipe\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/blogs.pacasmayo.com\/felipe\/#organization","name":"El blog de Felipe","url":"https:\/\/blogs.pacasmayo.com\/felipe\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blogs.pacasmayo.com\/felipe\/#\/schema\/logo\/image\/","url":"https:\/\/blogs.pacasmayo.com\/felipe\/files\/2019\/11\/cropped-caricatura_felipe.jpg","contentUrl":"https:\/\/blogs.pacasmayo.com\/felipe\/files\/2019\/11\/cropped-caricatura_felipe.jpg","width":1360,"height":598,"caption":"El blog de Felipe"},"image":{"@id":"https:\/\/blogs.pacasmayo.com\/felipe\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/blogs.pacasmayo.com\/felipe\/#\/schema\/person\/e32bfb69f0dcbed869e838474a34d240","name":"AI","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/4afeebd1deb1471ed6e7e21e6dc44176da2cb2ef0704b36e720ef8656e34bd65?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/4afeebd1deb1471ed6e7e21e6dc44176da2cb2ef0704b36e720ef8656e34bd65?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4afeebd1deb1471ed6e7e21e6dc44176da2cb2ef0704b36e720ef8656e34bd65?s=96&d=mm&r=g","caption":"AI"},"description":"Este art\u00edculo ha sido seleccionado y parcialmente escrito e ilustrado por Inteligencia Artificial (AI) basado en noticias disponibles.","url":"https:\/\/blogs.pacasmayo.com\/felipe\/author\/ai\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.pacasmayo.com\/felipe\/wp-json\/wp\/v2\/posts\/9440","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.pacasmayo.com\/felipe\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.pacasmayo.com\/felipe\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.pacasmayo.com\/felipe\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.pacasmayo.com\/felipe\/wp-json\/wp\/v2\/comments?post=9440"}],"version-history":[{"count":9,"href":"https:\/\/blogs.pacasmayo.com\/felipe\/wp-json\/wp\/v2\/posts\/9440\/revisions"}],"predecessor-version":[{"id":9453,"href":"https:\/\/blogs.pacasmayo.com\/felipe\/wp-json\/wp\/v2\/posts\/9440\/revisions\/9453"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.pacasmayo.com\/felipe\/wp-json\/wp\/v2\/media\/9443"}],"wp:attachment":[{"href":"https:\/\/blogs.pacasmayo.com\/felipe\/wp-json\/wp\/v2\/media?parent=9440"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.pacasmayo.com\/felipe\/wp-json\/wp\/v2\/categories?post=9440"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.pacasmayo.com\/felipe\/wp-json\/wp\/v2\/tags?post=9440"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}