{"id":396,"date":"2024-01-02T17:07:09","date_gmt":"2024-01-02T17:07:09","guid":{"rendered":"https:\/\/valerio.nu\/?p=396"},"modified":"2024-01-03T16:44:57","modified_gmt":"2024-01-03T16:44:57","slug":"not-an-alarm-part-2-5-solution-and-feasibility","status":"publish","type":"post","link":"https:\/\/valerio.nu\/index.php\/2024\/01\/02\/not-an-alarm-part-2-5-solution-and-feasibility\/","title":{"rendered":"Not-An-Alarm &#8211; Part 2\/5 &#8211; Solution and feasibility"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"640\" src=\"https:\/\/valerio.nu\/wp-content\/uploads\/2024\/01\/Screenshot-at-Jan-02-18-04-12-1024x640.png\" alt=\"\" class=\"wp-image-434\" srcset=\"https:\/\/valerio.nu\/wp-content\/uploads\/2024\/01\/Screenshot-at-Jan-02-18-04-12-1024x640.png 1024w, https:\/\/valerio.nu\/wp-content\/uploads\/2024\/01\/Screenshot-at-Jan-02-18-04-12-300x187.png 300w, https:\/\/valerio.nu\/wp-content\/uploads\/2024\/01\/Screenshot-at-Jan-02-18-04-12-768x480.png 768w, https:\/\/valerio.nu\/wp-content\/uploads\/2024\/01\/Screenshot-at-Jan-02-18-04-12-1536x959.png 1536w, https:\/\/valerio.nu\/wp-content\/uploads\/2024\/01\/Screenshot-at-Jan-02-18-04-12-2048x1279.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Check out <a href=\"https:\/\/valerio.nu\/index.php\/2024\/01\/01\/not-an-alarm-part-1-5-so-im-building-a-thing-during-the-holidays\/\">Part 1<\/a> of the series if you missed it. <\/p>\n\n\n\n<p>At the heart of this project lies a core idea: this isn\u2019t another alarm app; it&#8217;s about augmenting existing apps with enhanced functionality and better content for the alarms. But before delving into the details, the foremost concern is the actual <span style=\"text-decoration: underline;\">viability<\/span> of the concept.<\/p>\n\n\n\n<p>In contemplating feasibility, it&#8217;s crucial to consider not only technical possibility but also the practicality of execution. Can I hack together an MVP in a week during the holiday break? Otherwise, it&#8217;s not worth my time.<\/p>\n\n\n\n<p>My approach begins with a pragmatic brick-and-mortar proof of concept. I aim to manually simulate the entire flow to identify potential issues. This isn\u2019t about perfection; it\u2019s more about holding the pieces together with scotch tape and move them just enough see when they fall apart. Is there any gold in this river? <\/p>\n\n\n\n<p>Breaking down the solution into phases, I identify some potentially critical elements:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Gathering information from diverse sources (integrations are never easy).<\/li>\n\n\n\n<li>Steering the process via personalized settings (retrieval-augmented generation, prompt engineering).<\/li>\n\n\n\n<li>Generating content and transforming it into audio (generative AI, text-to-speech).<\/li>\n\n\n\n<li>Setting the audio as the alarm (event-driven messaging).<\/li>\n<\/ul>\n\n\n\n<p>Research into available APIs for weather, news, Google Calendar, and Google Tasks suggests that most steps are viable. APIs for weather (<a href=\"https:\/\/openweathermap.org\/api\">openweathermap<\/a> looks good) and news (<a href=\"https:\/\/open-platform.theguardian.com\/\">the Guardian<\/a>) are abundant, and <a href=\"https:\/\/developers.google.com\/workspace\/explore?filter\">Google&#8217;s APIs<\/a> seem to function smoothly.<\/p>\n\n\n\n<p>The next phase involves inference using a language model, fine-tuning via retrieval augmented generation (RAG), and text-to-speech generation. In a more serious setting I would have ran my own inference in a private setup. For this proof of concept, <a href=\"https:\/\/platform.openai.com\/\">OpenAI&#8217;s APIs<\/a> seem robust enough to serve these needs.<\/p>\n\n\n\n<p>However, the hurdle emerges when considering setting the generated audio as the alarm without user intervention. The idea of creating a new &#8220;Alarm manager&#8221; app seems redundant given the multitude of existing apps, their <a href=\"https:\/\/dontkillmyapp.com\/\">limitations, and reliability issues<\/a>.<\/p>\n\n\n\n<p>Instead, I explore leveraging the default alarm app on my device\u2014in this case the Samsung Clock app, but the concept really applies to any other manufacturer. This prompts a less ortodox idea\u2014it&#8217;s always been possible to set one&#8217;s own audio files as ringtone or alarm. <span style=\"text-decoration: underline;\">What if I could manipulate a custom audio file to dynamically change the alarm content<\/span>?<\/p>\n\n\n\n<p>My nostalgia for the days of MP3 players leads me to consider using a custom MP3 file as the alarm sound, dynamically replaced by my backend whenever needed.<\/p>\n\n\n\n<p>Let&#8217;s say I choose a file named &#8220;not-an-alarm.mp3&#8221; as my alarm sound. It doesn&#8217;t really matter from which alarm app I do that, but let&#8217;s say I do it from the default clock app on my phone. Theoretically, once I selected a file (or really, a file <em>path<\/em>), the alarm app should not have a clue if I go and dynamically replace that file with another one. As long as the <span style=\"text-decoration: underline;\">file path exists<\/span>, everything should keep working without issues.<\/p>\n\n\n\n<p>That would be too good to be true, of course. What I notice almost immediately is that Android (or at least my Samsung Galaxy) copies the audio files you use for ringtones and alarms to a predefined folder. Good architectural choice, I guess, they wanted to prevent you from deleting your ringtone by mistake, which slightly complicates my plan.<\/p>\n\n\n\n<p>After tinkering and delving into Android&#8217;s file system, well, the answer was really in front of my eyes all along. Turns out the folder where they copy the audio file (<em>&#8220;Internal storage\/Alarms&#8221;<\/em>) isn&#8217;t some forbidden system owned location, it can be accessed and apparently modified by a simple mock application that I built just for this purpose. That means I can simply place my generated alarms there, if the files are already there then Android just keeps them there. <\/p>\n\n\n\n<p>And with a few lines of code, I manage to replace the alarm right under the app&#8217;s nose. It&#8217;s the breakthrough moment\u2014a signal that the entire flow <em>could<\/em> function.<\/p>\n\n\n\n<p>So enough with the boxes and arrows on a piece of paper (or Miro board, nowadays). It&#8217;s time to get our hands dirty!<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-andy-039-s-blog wp-block-embed-andy-039-s-blog\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"oNFIa9JzfY\"><a href=\"https:\/\/valerio.nu\/index.php\/2024\/01\/03\/not-an-alarm-part-3-5-from-dreams-to-requirements\/\">Not-An-Alarm &#8211; Part 3\/5 &#8211; From dreams to requirements<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;Not-An-Alarm &#8211; Part 3\/5 &#8211; From dreams to requirements&#8221; &#8212; Andy&#039;s blog \u2935\ufe0f\" src=\"https:\/\/valerio.nu\/index.php\/2024\/01\/03\/not-an-alarm-part-3-5-from-dreams-to-requirements\/embed\/#?secret=rsWtLoQ7PD#?secret=oNFIa9JzfY\" data-secret=\"oNFIa9JzfY\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Check out Part 1 of the series if you missed it. At the heart of this project lies a core idea: this isn\u2019t another alarm [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,31],"tags":[],"class_list":["post-396","post","type-post","status-publish","format-standard","hentry","category-inventions","category-not-an-alarm"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Not-An-Alarm - Part 2\/5 - Solution and feasibility - Andy&#039;s blog \u2935\ufe0f<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/valerio.nu\/index.php\/2024\/01\/02\/not-an-alarm-part-2-5-solution-and-feasibility\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Not-An-Alarm - Part 2\/5 - Solution and feasibility - Andy&#039;s blog \u2935\ufe0f\" \/>\n<meta property=\"og:description\" content=\"Check out Part 1 of the series if you missed it. At the heart of this project lies a core idea: this isn\u2019t another alarm [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/valerio.nu\/index.php\/2024\/01\/02\/not-an-alarm-part-2-5-solution-and-feasibility\/\" \/>\n<meta property=\"og:site_name\" content=\"Andy&#039;s blog \u2935\ufe0f\" \/>\n<meta property=\"article:published_time\" content=\"2024-01-02T17:07:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-03T16:44:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/valerio.nu\/wp-content\/uploads\/2024\/01\/Screenshot-at-Jan-02-18-04-12-1024x640.png\" \/>\n<meta name=\"author\" content=\"andy\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"andy\" \/>\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:\\\/\\\/valerio.nu\\\/index.php\\\/2024\\\/01\\\/02\\\/not-an-alarm-part-2-5-solution-and-feasibility\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/valerio.nu\\\/index.php\\\/2024\\\/01\\\/02\\\/not-an-alarm-part-2-5-solution-and-feasibility\\\/\"},\"author\":{\"name\":\"andy\",\"@id\":\"https:\\\/\\\/valerio.nu\\\/#\\\/schema\\\/person\\\/da69cc3da309893b0d3bc8fcef75f128\"},\"headline\":\"Not-An-Alarm &#8211; Part 2\\\/5 &#8211; Solution and feasibility\",\"datePublished\":\"2024-01-02T17:07:09+00:00\",\"dateModified\":\"2024-01-03T16:44:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/valerio.nu\\\/index.php\\\/2024\\\/01\\\/02\\\/not-an-alarm-part-2-5-solution-and-feasibility\\\/\"},\"wordCount\":697,\"commentCount\":1,\"image\":{\"@id\":\"https:\\\/\\\/valerio.nu\\\/index.php\\\/2024\\\/01\\\/02\\\/not-an-alarm-part-2-5-solution-and-feasibility\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/valerio.nu\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/Screenshot-at-Jan-02-18-04-12-1024x640.png\",\"articleSection\":[\"Inventions\",\"Not-An-Alarm\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/valerio.nu\\\/index.php\\\/2024\\\/01\\\/02\\\/not-an-alarm-part-2-5-solution-and-feasibility\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/valerio.nu\\\/index.php\\\/2024\\\/01\\\/02\\\/not-an-alarm-part-2-5-solution-and-feasibility\\\/\",\"url\":\"https:\\\/\\\/valerio.nu\\\/index.php\\\/2024\\\/01\\\/02\\\/not-an-alarm-part-2-5-solution-and-feasibility\\\/\",\"name\":\"Not-An-Alarm - Part 2\\\/5 - Solution and feasibility - Andy&#039;s blog \u2935\ufe0f\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/valerio.nu\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/valerio.nu\\\/index.php\\\/2024\\\/01\\\/02\\\/not-an-alarm-part-2-5-solution-and-feasibility\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/valerio.nu\\\/index.php\\\/2024\\\/01\\\/02\\\/not-an-alarm-part-2-5-solution-and-feasibility\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/valerio.nu\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/Screenshot-at-Jan-02-18-04-12-1024x640.png\",\"datePublished\":\"2024-01-02T17:07:09+00:00\",\"dateModified\":\"2024-01-03T16:44:57+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/valerio.nu\\\/#\\\/schema\\\/person\\\/da69cc3da309893b0d3bc8fcef75f128\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/valerio.nu\\\/index.php\\\/2024\\\/01\\\/02\\\/not-an-alarm-part-2-5-solution-and-feasibility\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/valerio.nu\\\/index.php\\\/2024\\\/01\\\/02\\\/not-an-alarm-part-2-5-solution-and-feasibility\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/valerio.nu\\\/index.php\\\/2024\\\/01\\\/02\\\/not-an-alarm-part-2-5-solution-and-feasibility\\\/#primaryimage\",\"url\":\"https:\\\/\\\/valerio.nu\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/Screenshot-at-Jan-02-18-04-12.png\",\"contentUrl\":\"https:\\\/\\\/valerio.nu\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/Screenshot-at-Jan-02-18-04-12.png\",\"width\":2222,\"height\":1388},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/valerio.nu\\\/index.php\\\/2024\\\/01\\\/02\\\/not-an-alarm-part-2-5-solution-and-feasibility\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/valerio.nu\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Not-An-Alarm &#8211; Part 2\\\/5 &#8211; Solution and feasibility\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/valerio.nu\\\/#website\",\"url\":\"https:\\\/\\\/valerio.nu\\\/\",\"name\":\"Andy&#039;s blog \u2935\ufe0f\",\"description\":\"Abandon all hope, ye who enter here\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/valerio.nu\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/valerio.nu\\\/#\\\/schema\\\/person\\\/da69cc3da309893b0d3bc8fcef75f128\",\"name\":\"andy\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4852a025c6250c852814d4017f646677730a23c1ec14eb5ca36b69dcce5135a5?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4852a025c6250c852814d4017f646677730a23c1ec14eb5ca36b69dcce5135a5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4852a025c6250c852814d4017f646677730a23c1ec14eb5ca36b69dcce5135a5?s=96&d=mm&r=g\",\"caption\":\"andy\"},\"sameAs\":[\"https:\\\/\\\/valerio.nu\"],\"url\":\"https:\\\/\\\/valerio.nu\\\/index.php\\\/author\\\/giuseppe\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Not-An-Alarm - Part 2\/5 - Solution and feasibility - Andy&#039;s blog \u2935\ufe0f","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:\/\/valerio.nu\/index.php\/2024\/01\/02\/not-an-alarm-part-2-5-solution-and-feasibility\/","og_locale":"en_US","og_type":"article","og_title":"Not-An-Alarm - Part 2\/5 - Solution and feasibility - Andy&#039;s blog \u2935\ufe0f","og_description":"Check out Part 1 of the series if you missed it. At the heart of this project lies a core idea: this isn\u2019t another alarm [&hellip;]","og_url":"https:\/\/valerio.nu\/index.php\/2024\/01\/02\/not-an-alarm-part-2-5-solution-and-feasibility\/","og_site_name":"Andy&#039;s blog \u2935\ufe0f","article_published_time":"2024-01-02T17:07:09+00:00","article_modified_time":"2024-01-03T16:44:57+00:00","og_image":[{"url":"https:\/\/valerio.nu\/wp-content\/uploads\/2024\/01\/Screenshot-at-Jan-02-18-04-12-1024x640.png","type":"","width":"","height":""}],"author":"andy","twitter_card":"summary_large_image","twitter_misc":{"Written by":"andy","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/valerio.nu\/index.php\/2024\/01\/02\/not-an-alarm-part-2-5-solution-and-feasibility\/#article","isPartOf":{"@id":"https:\/\/valerio.nu\/index.php\/2024\/01\/02\/not-an-alarm-part-2-5-solution-and-feasibility\/"},"author":{"name":"andy","@id":"https:\/\/valerio.nu\/#\/schema\/person\/da69cc3da309893b0d3bc8fcef75f128"},"headline":"Not-An-Alarm &#8211; Part 2\/5 &#8211; Solution and feasibility","datePublished":"2024-01-02T17:07:09+00:00","dateModified":"2024-01-03T16:44:57+00:00","mainEntityOfPage":{"@id":"https:\/\/valerio.nu\/index.php\/2024\/01\/02\/not-an-alarm-part-2-5-solution-and-feasibility\/"},"wordCount":697,"commentCount":1,"image":{"@id":"https:\/\/valerio.nu\/index.php\/2024\/01\/02\/not-an-alarm-part-2-5-solution-and-feasibility\/#primaryimage"},"thumbnailUrl":"https:\/\/valerio.nu\/wp-content\/uploads\/2024\/01\/Screenshot-at-Jan-02-18-04-12-1024x640.png","articleSection":["Inventions","Not-An-Alarm"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/valerio.nu\/index.php\/2024\/01\/02\/not-an-alarm-part-2-5-solution-and-feasibility\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/valerio.nu\/index.php\/2024\/01\/02\/not-an-alarm-part-2-5-solution-and-feasibility\/","url":"https:\/\/valerio.nu\/index.php\/2024\/01\/02\/not-an-alarm-part-2-5-solution-and-feasibility\/","name":"Not-An-Alarm - Part 2\/5 - Solution and feasibility - Andy&#039;s blog \u2935\ufe0f","isPartOf":{"@id":"https:\/\/valerio.nu\/#website"},"primaryImageOfPage":{"@id":"https:\/\/valerio.nu\/index.php\/2024\/01\/02\/not-an-alarm-part-2-5-solution-and-feasibility\/#primaryimage"},"image":{"@id":"https:\/\/valerio.nu\/index.php\/2024\/01\/02\/not-an-alarm-part-2-5-solution-and-feasibility\/#primaryimage"},"thumbnailUrl":"https:\/\/valerio.nu\/wp-content\/uploads\/2024\/01\/Screenshot-at-Jan-02-18-04-12-1024x640.png","datePublished":"2024-01-02T17:07:09+00:00","dateModified":"2024-01-03T16:44:57+00:00","author":{"@id":"https:\/\/valerio.nu\/#\/schema\/person\/da69cc3da309893b0d3bc8fcef75f128"},"breadcrumb":{"@id":"https:\/\/valerio.nu\/index.php\/2024\/01\/02\/not-an-alarm-part-2-5-solution-and-feasibility\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/valerio.nu\/index.php\/2024\/01\/02\/not-an-alarm-part-2-5-solution-and-feasibility\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/valerio.nu\/index.php\/2024\/01\/02\/not-an-alarm-part-2-5-solution-and-feasibility\/#primaryimage","url":"https:\/\/valerio.nu\/wp-content\/uploads\/2024\/01\/Screenshot-at-Jan-02-18-04-12.png","contentUrl":"https:\/\/valerio.nu\/wp-content\/uploads\/2024\/01\/Screenshot-at-Jan-02-18-04-12.png","width":2222,"height":1388},{"@type":"BreadcrumbList","@id":"https:\/\/valerio.nu\/index.php\/2024\/01\/02\/not-an-alarm-part-2-5-solution-and-feasibility\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/valerio.nu\/"},{"@type":"ListItem","position":2,"name":"Not-An-Alarm &#8211; Part 2\/5 &#8211; Solution and feasibility"}]},{"@type":"WebSite","@id":"https:\/\/valerio.nu\/#website","url":"https:\/\/valerio.nu\/","name":"Andy&#039;s blog \u2935\ufe0f","description":"Abandon all hope, ye who enter here","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/valerio.nu\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/valerio.nu\/#\/schema\/person\/da69cc3da309893b0d3bc8fcef75f128","name":"andy","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/4852a025c6250c852814d4017f646677730a23c1ec14eb5ca36b69dcce5135a5?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/4852a025c6250c852814d4017f646677730a23c1ec14eb5ca36b69dcce5135a5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4852a025c6250c852814d4017f646677730a23c1ec14eb5ca36b69dcce5135a5?s=96&d=mm&r=g","caption":"andy"},"sameAs":["https:\/\/valerio.nu"],"url":"https:\/\/valerio.nu\/index.php\/author\/giuseppe\/"}]}},"_links":{"self":[{"href":"https:\/\/valerio.nu\/index.php\/wp-json\/wp\/v2\/posts\/396","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/valerio.nu\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/valerio.nu\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/valerio.nu\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/valerio.nu\/index.php\/wp-json\/wp\/v2\/comments?post=396"}],"version-history":[{"count":12,"href":"https:\/\/valerio.nu\/index.php\/wp-json\/wp\/v2\/posts\/396\/revisions"}],"predecessor-version":[{"id":438,"href":"https:\/\/valerio.nu\/index.php\/wp-json\/wp\/v2\/posts\/396\/revisions\/438"}],"wp:attachment":[{"href":"https:\/\/valerio.nu\/index.php\/wp-json\/wp\/v2\/media?parent=396"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/valerio.nu\/index.php\/wp-json\/wp\/v2\/categories?post=396"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/valerio.nu\/index.php\/wp-json\/wp\/v2\/tags?post=396"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}