<br />
<b>Warning</b>:  Declaration of Jetpack_IXR_Client::query() should be compatible with IXR_Client::query(...$args) in <b>/home/clients/7267bc096562fcdb78c0ab60d3ac51fb/web/blog/wp-content/plugins/jetpack/class.jetpack-ixr-client.php</b> on line <b>91</b><br />
{"id":1346,"date":"2026-06-18T16:16:37","date_gmt":"2026-06-18T16:16:37","guid":{"rendered":"https:\/\/barradeau.com\/blog\/?p=1346"},"modified":"2026-06-18T20:17:54","modified_gmt":"2026-06-18T20:17:54","slug":"the-xiaomi-incident","status":"publish","type":"post","link":"https:\/\/barradeau.com\/blog\/?p=1346","title":{"rendered":"The Xiaomi debacle"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/IMG_6621-rotated.jpg\" data-rel=\"lightbox-image-0\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"768\" src=\"https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/IMG_6621-1024x768.jpg\" alt=\"\" class=\"wp-image-1367\" srcset=\"https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/IMG_6621-1024x768.jpg 1024w, https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/IMG_6621-300x225.jpg 300w, https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/IMG_6621-768x576.jpg 768w, https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/IMG_6621-rotated.jpg 1365w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>After 7 years contracting for <a href=\"https:\/\/artsandculture.google.com\/lab\">the Google Arts and Culture Lab<\/a>, I&#8217;m back to freelancing. I did all manners of ML and R&amp;D for GAC but the end result was usually a WebGL website so I&#8217;m not too rusty when it comes to training a model and making a frontend but I wanted to explore the world of IoT as a first step to catch up with real life.<\/p>\n\n\n\n<p>I bought a smart band, the <a rel=\"noreferrer noopener\" href=\"https:\/\/www.mi.com\/global\/product\/xiaomi-smart-band-10\/\" target=\"_blank\">Xiaomi Smart Band 10<\/a>, the cheapest device available in my local supermarket that exposed a gyroscope &amp; an accelerometer with the idea that I could use it as an alternative  remote control to drive whatever Web app, in real time.  <\/p>\n\n\n\n<p>Of course I could have bought the sensors separately and hack them together with Arduino or what not but I liked the idea of hacking something that&#8217;s already there.<\/p>\n\n\n\n<p>The device is qualitative, it&#8217;s tiny, lightweight, has precise and responsive sensors and touch, a bright and sharp screen, very decent autonomy, it&#8217;s waterproof&#8230; &#8220;perfect&#8221; I thought.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">A sound plan<\/h2>\n\n\n\n<p>I knew there&#8217;s a <a href=\"https:\/\/developer.chrome.com\/docs\/capabilities\/bluetooth\">Bluetooth API<\/a> in Chrome that lets you connect a device directly through the browser, so My plan was to pair the device to my PC, monitor the sensors from the frontend and call it a day. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">DAY 1 Accessing the device and adding custom software<\/h2>\n\n\n\n<p>Fool!<br>I knew nothing about Bluetooth really but I knew even less about firmware and after spending a half a day trying to plug the device directly to my PC, I realized this wouldn&#8217;t be possible.<\/p>\n\n\n\n<p>The only thing you can do with a USB cable is <strong>to charge<\/strong> the device, there&#8217;s no way to use it as an external drive or simply find it in the USB connected stuff: <strong>the firmware is locked at hardware leve<\/strong>l. After some reading, I learnt that trying to change that would require soldering and potentially &#8220;brick&#8221; the device, not hanks. The only option to communicate with the smart band is through the official app, I use an iPhone Mini 12 as a mobile so I installed the MI Fitness app, it&#8217;s a dashboard that informs you that the phone is ringing and lets you change <a rel=\"noreferrer noopener\" href=\"https:\/\/amazfitwatchfaces.com\/mi-band\/fresh\" target=\"_blank\">the watch face<\/a> ; nice but fairly useless in my case.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Early in the process, I realized I&#8217;d need to retrieve an encryption key exchanged between the MI Fitness app and the device during the first pairing. For that I used the <a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/PiotrMachowski\/Xiaomi-cloud-tokens-extractor\" target=\"_blank\">Xiaomi Cloud Tokens Extractor<\/a> which signs you into the Xiaomi account then spoofs the server calls until it finds the proper Token, in my case it gave:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"> ---------\r\n\r\n   NAME:     Xiaomi Smart Band 10\r\n   ID:       984297766\r\n   MAC:      04:34:C3:78:2C:9C\r\n   TOKEN:    a042e5ff3b2d4d5d86d1208dff2f5dac\r\n   MODEL:    miwear.watch.o66gl\r\n   \r\n ---------<\/pre>\n\n\n\n<p>with this in hand, I could envision to access my device from any app, or so I thought ; direct access from the chrome API would still fail and the device would ask for a confirmation from the previously paired app to finish the handshake, dead end.<\/p>\n\n\n\n<p>I looked into <em>modded <\/em>versions of the of the app but, iOS being iOS, I had little hope on the App Store. so I looked into the Android realm and found 2 options, <a rel=\"noreferrer noopener\" href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.mc.xiaomi1&amp;hl=fr\" target=\"_blank\">Notify for Xiaomi<\/a> and <a rel=\"noreferrer noopener\" href=\"https:\/\/gadgetbridge.org\/\" target=\"_blank\">Gadgetbridge<\/a>, the former is specifically designed to interface the Xiaomi devices, change the watch face and upload prebuilt apps, the latter is a general purpose tool to interface <strong>any <\/strong>device via Bluetooth, that <em>happens to handle<\/em> Xiaomi devices too.<\/p>\n\n\n\n<p>There&#8217;s also a <em>modded <\/em>version of the <a rel=\"noreferrer noopener\" href=\"https:\/\/miwatch.conversmod.ru\/micolor\/app\/latest_v141\" target=\"_blank\">MI Fitness app by Mortal<\/a>, but it is exclusively interfaced with an external website where you can download prebuilt apps and watch faces, <a href=\"https:\/\/www.bandbbs.cn\/forums\/mb10\/\">the site is in Chinese<\/a> and doesn&#8217;t solve the &#8216;custom&#8217; part of the software problem.<\/p>\n\n\n\n<p>Android it was then! I unearthed my good old S6<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/IMG_6606-rotated.jpg\" data-rel=\"lightbox-image-1\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"768\" src=\"https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/IMG_6606-1024x768.jpg\" alt=\"\" class=\"wp-image-1360\" srcset=\"https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/IMG_6606-1024x768.jpg 1024w, https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/IMG_6606-300x225.jpg 300w, https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/IMG_6606-768x576.jpg 768w, https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/IMG_6606-rotated.jpg 1365w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">my S6 after 6 years lying around on my desk, shat on by actual bugs.<\/figcaption><\/figure><\/div>\n\n\n<p>installed GadgetBridge, and tried to pair the band with the above credentials and <strong>SUCCESS<\/strong>! <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/IMG_6615.jpg\" data-rel=\"lightbox-image-2\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"768\" src=\"https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/IMG_6615.jpg\" alt=\"\" class=\"wp-image-1361\" srcset=\"https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/IMG_6615.jpg 1024w, https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/IMG_6615-300x225.jpg 300w, https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/IMG_6615-768x576.jpg 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Gadgetbridge finally letting me connect my device<\/figcaption><\/figure><\/div>\n\n\n<p>that was an intense start. but more dangers lurked in the shadows.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">DAY 2 Developing an app for proprietary firmware<\/h2>\n\n\n\n<p>A lifetime ago, I developed <a href=\"https:\/\/barradeau.com\/hidiho\/index1f8d.html?p=1829\">Android apps for shits and giggles<\/a> and my plan was to:<\/p>\n\n\n\n<ul>\n<li>develop a minimal Android app to query the sensors<\/li>\n\n\n\n<li>start a local WebSocket server to pipe the telemetry data<\/li>\n\n\n\n<li>consume the data from a local frontend<\/li>\n<\/ul>\n\n\n\n<p>Simple enough, right? I downloaded Android Studio and asked Gemini to dev an app (didn&#8217;t want to touch Java for Android ever again), slapped together a WS server running on my Local network and a frontend to consume the data, everything worked locally through an emulator, it really felt magic. <\/p>\n\n\n\n<p>I was about to build &amp; deploy my <strong>APK <\/strong>to the device when I realized the apps running on the smart band are NOT regular .APKs but<strong> .RPKs<\/strong> (QuickApps) ; a Xiaomi <strong>proprietary format<\/strong>&#8230; what was I thinking&#8230; ok back to square one.<\/p>\n\n\n\n<p>Enter <a rel=\"noreferrer noopener\" href=\"https:\/\/iot.mi.com\/vela\/quickapp\/en\/\" target=\"_blank\">Vela<\/a> the <strong>proprietary <\/strong>IDE that let&#8217;s you build custom apps. It&#8217;s essentially a <a href=\"https:\/\/iot.mi.com\/vela\/quickapp\/en\/features\/grammar.html#interface-declaration\" target=\"_blank\" rel=\"noreferrer noopener\">JS library<\/a> that let&#8217;s you access the guts of the device especially <a href=\"https:\/\/iot.mi.com\/vela\/quickapp\/en\/features\/system\/sensor.html\" target=\"_blank\" rel=\"noreferrer noopener\">the sensors<\/a>. <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/Capture-decran-2026-06-18-102330.png\" data-rel=\"lightbox-image-3\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"548\" src=\"https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/Capture-decran-2026-06-18-102330-1024x548.png\" alt=\"\" class=\"wp-image-1357\" srcset=\"https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/Capture-decran-2026-06-18-102330-1024x548.png 1024w, https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/Capture-decran-2026-06-18-102330-300x161.png 300w, https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/Capture-decran-2026-06-18-102330-768x411.png 768w, https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/Capture-decran-2026-06-18-102330-1536x822.png 1536w, https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/Capture-decran-2026-06-18-102330.png 1918w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><\/div>\n\n\n<p><\/p>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"4-the-developer-mode-starfield-easter-egg\">A &#8220;dev mode&#8221; Easter egg<\/h5>\n\n\n\n<p>When developing mobile apps, there&#8217;s usually a developer mode that you enable by tapping multiple times on the software or system version, somewhere in the device&#8217;s settings. I tried withe band, tapped the &#8220;OS Version&#8221; 5 times which triggered a cool Starfield \/ Xiaomi Vela animation so I thought I was done. nope!<br>The Smart Band 10 runs a restricted version of HyperOS and tapping the &#8220;OS Version&#8221; 5 times only confirms that Bluetooth ADB debugging (Android Debug Bridge over Bluetooth) has been enabled,<strong> still no way to connect via USB<\/strong>. <\/p>\n\n\n\n<p>Some other non-trivial things happened with the IDE amongst which :<\/p>\n\n\n\n<ul>\n<li>the SDK version: not all SDKs handle the various models, i my case <code>vela-watch-5<\/code> worked AND some SDKs are <strong>headless<\/strong> which is not very practical to debug something visually<\/li>\n\n\n\n<li>the Emulator is NOT selected by default ; running it is not enough, you also need to select it as a debug target. this is meant to let users run multiple emulator instances simultaneously which is nice but super counter intuitive too, I wasted an hour finding this out&#8230; (it&#8217;s the [+] dropdown next to the debug button, then pick the emulator(s) you want, THEN debug)<\/li>\n\n\n\n<li>the emulator fails at rendering non square textures (?!) ; the smart band if a 212*520 pixels portrait device, it&#8217;s exposed in the list but when selected, the emulator fails to render as it can&#8217;t handle non square textures&#8230; yet another hour wasted.<\/li>\n<\/ul>\n\n\n\n<p>After some struggle, I managed to compile a .RPK file, upload it to Drive, install it on the device via Gadgetbridge, and &#8211; at long last &#8211; run it on device!<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><a href=\"https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/IMG_6608.jpg\" data-rel=\"lightbox-image-4\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/IMG_6608-768x1024.jpg\" alt=\"\" class=\"wp-image-1362\" width=\"735\" height=\"980\" srcset=\"https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/IMG_6608-768x1024.jpg 768w, https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/IMG_6608-225x300.jpg 225w, https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/IMG_6608.jpg 1024w\" sizes=\"(max-width: 735px) 100vw, 735px\" \/><\/a><figcaption class=\"wp-element-caption\">SUCCESS!<\/figcaption><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading\">DAY 3 time for a real use case<\/h2>\n\n\n\n<p>my first app was called <strong>raptor<\/strong> because I genuinely thought it would devour the band&#8217;s data and forward them to my local WebSocket server in one bite, no questions asked&#8230;<br>nope!<br>Vela may expose a JS API, but yet again, a <strong>proprietary <\/strong>JS API ; all the <code>fetch() <\/code>calls to URLs use a custom tunnel (HyperConnect) that channels all the HTTP requests through BlueTooth, so one <em>does not simply<\/em> send data wherever they want ; <strong>the requests will fail silently<\/strong>. <br>This was the last nail in my real-time remote control coffin and I resolved to making a toy instead of a tool.<\/p>\n\n\n\n<p>One of my 2025 highlights was the <a rel=\"noreferrer noopener\" href=\"https:\/\/mitxela.com\/projects\/fluid-pendant\" target=\"_blank\">fluid simulation pendant<\/a> by Mixtela, it&#8217;s conceptually beautiful and extremely well executed. I decided I&#8217;d try to mimic it for my toy app.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/pendant-complete1.jpg\" data-rel=\"lightbox-image-5\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"684\" src=\"https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/pendant-complete1-1024x684.jpg\" alt=\"\" class=\"wp-image-1365\" srcset=\"https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/pendant-complete1-1024x684.jpg 1024w, https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/pendant-complete1-300x200.jpg 300w, https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/pendant-complete1-768x513.jpg 768w, https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/pendant-complete1.jpg 1200w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\"><a href=\"https:\/\/www.youtube.com\/watch?v=jis1MC5Tm8k\">in depth video on the making of the pendant<\/a><\/figcaption><\/figure><\/div>\n\n\n<p>As expected the Smart Band&#8217;s CPU is puny, and since I&#8217;m using a HTML \/ JS layer on top of the HyperOS, the resources are <strong>_pretty_<\/strong> low. Needless to say that the simulation had to be frugal, instead of a FLIP sim, I chose a super coarse grid and Cellular Automata approach for the physics (like the <a rel=\"noreferrer noopener\" href=\"https:\/\/sandspiel.club\/\" target=\"_blank\">sandtoys<\/a> you may have seen here and there), basically using the Gyroscope to set the gravity direction then, for each active cell, sample the 8 neighboring cells to determine if it can move.<br>The HTML\/JS prototype worked well but of course failed once deployed, after some investigation, it appears that the Vela JS API <strong>doesn&#8217;t let you use a bloody CANVAS<\/strong>! FFS, seriously what&#8217;s wrong with API makers? <\/p>\n\n\n\n<p>So, the last twist was to mimic the behavior of a coarse canvas&#8217; cells with &#8230;. DIV elements!<\/p>\n\n\n\n<p>Though I limited the active cells to 30% of the  8 * 20 (~=50 cells ), the CPU is still unable to repaint the DIVS at a decent framerate which makes it pretty useless for my use case.<\/p>\n\n\n\n<p>Anyways,<br>the device is so cute I wanted to add a playful touch, I built a LEGO case for it and Voil\u00e0!<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/IMG_6623-rotated.jpg\" data-rel=\"lightbox-image-6\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"768\" src=\"https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/IMG_6623-1024x768.jpg\" alt=\"\" class=\"wp-image-1370\" srcset=\"https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/IMG_6623-1024x768.jpg 1024w, https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/IMG_6623-300x225.jpg 300w, https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/IMG_6623-768x576.jpg 768w, https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/IMG_6623-rotated.jpg 1365w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><\/div>\n\n\n<p><\/p>\n\n\n\n<p>behold the BLOP app in action!<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/output.mp4\"><\/video><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">key takeaways:<\/h2>\n\n\n\n<ul>\n<li>the firmware is almost(?) physically built-in, extremely hard to bypass<\/li>\n\n\n\n<li>it&#8217;s possible to &#8220;hack&#8221; existing devices but it&#8217;s not straight forward<\/li>\n\n\n\n<li>Open APIs don&#8217;t give low level access and restrict basically everything (I expect most vendors to do that)<\/li>\n\n\n\n<li>I should learn Chinese, would have been very helpful at times ^^&#8217;<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/logo.png\" data-rel=\"lightbox-image-7\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" loading=\"lazy\" width=\"148\" height=\"150\" src=\"https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/logo.png\" alt=\"\" class=\"wp-image-1373\"\/><\/a><figcaption class=\"wp-element-caption\">thanks for reading<\/figcaption><\/figure><\/div>","protected":false},"excerpt":{"rendered":"<p>After 7 years contracting for the Google Arts and Culture Lab, I&#8217;m back to freelancing. I did all manners of ML and R&amp;D for GAC but the end result was usually a WebGL website so I&#8217;m not too rusty when it comes to training a model and making a frontend but I wanted to explore &#8230; <span class=\"more\"><a class=\"more-link\" href=\"https:\/\/barradeau.com\/blog\/?p=1346\">[Read more&#8230;]<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":1370,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"sharing_disabled":false,"spay_email":"","jetpack_publicize_message":""},"categories":[11],"tags":[14,13,12],"jetpack_featured_media_url":"https:\/\/barradeau.com\/blog\/wp-content\/uploads\/2026\/06\/IMG_6623-rotated.jpg","jetpack_publicize_connections":[],"jetpack_shortlink":"https:\/\/wp.me\/p4oXhx-lI","_links":{"self":[{"href":"https:\/\/barradeau.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1346"}],"collection":[{"href":"https:\/\/barradeau.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/barradeau.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/barradeau.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/barradeau.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1346"}],"version-history":[{"count":25,"href":"https:\/\/barradeau.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1346\/revisions"}],"predecessor-version":[{"id":1401,"href":"https:\/\/barradeau.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1346\/revisions\/1401"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/barradeau.com\/blog\/index.php?rest_route=\/wp\/v2\/media\/1370"}],"wp:attachment":[{"href":"https:\/\/barradeau.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1346"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/barradeau.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1346"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/barradeau.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1346"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}