{"id":20800,"date":"2026-11-03T09:56:22","date_gmt":"2026-11-03T09:56:22","guid":{"rendered":"https:\/\/www.20i.com\/blog\/?p=20800"},"modified":"2026-11-03T10:54:55","modified_gmt":"2026-11-03T10:54:55","slug":"link-round-up-015","status":"publish","type":"post","link":"https:\/\/www.20i.com\/blog\/link-round-up-015\/","title":{"rendered":"Link Round-Up (015)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>Welcome to Link Round-Up, our series where we share the interesting, useful and fun things on the web that grab our attention.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>This time we&#8217;re looking beneath the surface of familiar software, meeting some ambitious open-source projects and discovering why supermarket fridges have become a cybersecurity story. There&#8217;s also an entire planet to explore, followed by projects for anyone who takes their pixels seriously.<\/strong><\/p>\n\n\n\n<div style=\"height:8px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Ever spotted a feature in an app and wondered how on earth it works?<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6aeca68292c7f&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6aeca68292c7f\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1672\" height=\"941\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/Aliens-meme-with-Claude-face.webp\" alt=\"Aliens meme with Claude logo instead of Giorgio\u2019s face\" class=\"wp-image-20801\" srcset=\"https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/Aliens-meme-with-Claude-face.webp 1672w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/Aliens-meme-with-Claude-face-300x169.webp 300w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/Aliens-meme-with-Claude-face-768x432.webp 768w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/Aliens-meme-with-Claude-face-1536x864.webp 1536w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/Aliens-meme-with-Claude-face-400x225.webp 400w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/Aliens-meme-with-Claude-face-800x450.webp 800w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/Aliens-meme-with-Claude-face-832x468.webp 832w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/Aliens-meme-with-Claude-face-1664x936.webp 1664w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/Aliens-meme-with-Claude-face-1248x702.webp 1248w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/Aliens-meme-with-Claude-face-1320x743.webp 1320w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/Aliens-meme-with-Claude-face-150x84.webp 150w\" sizes=\"auto, (max-width: 1672px) 100vw, 1672px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/morluto\/rea\/\" data-type=\"link\" data-id=\"https:\/\/github.com\/morluto\/rea\/\" target=\"_blank\" rel=\"noreferrer noopener\">REA (Reverse Engineer Anything)<\/a> gives AI coding agents the tools to find out. It connects through the Model Context Protocol (MCP), letting an agent inspect JavaScript, Electron applications and native binaries, trace the relevant code and explain its findings with supporting evidence.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For deeper native analysis, REA can work with Ghidra, Hopper or IDA. JavaScript inspection doesn&#8217;t need a native decompiler.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There&#8217;s plenty of appeal here for developers working on interoperability, software preservation or applications they&#8217;re authorised to examine.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Reverse engineering still takes judgement, but better detective tools certainly help.<\/p>\n\n\n\n<div style=\"height:8px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Of course, once you&#8217;ve spent enough time examining familiar software, you might start thinking about building an alternative. That&#8217;s what makes <a href=\"https:\/\/getartcraft.com\/apps\" target=\"_blank\" rel=\"noreferrer noopener\">the Craft Apps<\/a> such an interesting find.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6aeca68293fe0&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6aeca68293fe0\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1180\" height=\"900\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/artcraft-launcher-grid.webp\" alt=\"Screenshot of ArtCraft Launcher installing the FilmCraft app\" class=\"wp-image-20802\" srcset=\"https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/artcraft-launcher-grid.webp 1180w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/artcraft-launcher-grid-300x229.webp 300w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/artcraft-launcher-grid-768x586.webp 768w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/artcraft-launcher-grid-400x305.webp 400w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/artcraft-launcher-grid-800x610.webp 800w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/artcraft-launcher-grid-832x635.webp 832w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/artcraft-launcher-grid-150x114.webp 150w\" sizes=\"auto, (max-width: 1180px) 100vw, 1180px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">PhotoCraft tackles image editing, LightCraft handles photo libraries and RAW development, FilmCraft takes on video editing and VectorCraft covers illustration.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The intent, interfaces and shortcuts are deliberately familiar and they&#8217;re part of a much larger suite of free, open-source apps built in Rust.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Getting setup is really easy: <a href=\"https:\/\/github.com\/storytold\/craft-launcher\" target=\"_blank\" rel=\"noreferrer noopener\">ArtCraft Launcher<\/a> handles finding the right builds for your system, installing the apps and keeping them updated.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The versions I tried were punchy, intuitive and were stable on my M4 MacBook Air (Golden Gate 27.0.1), but <a href=\"https:\/\/github.com\/storytold\/craft-launcher\/issues\" target=\"_blank\" rel=\"noreferrer noopener\">plenty of other users report friction<\/a>. YMWV.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This isn\u2019t a big shock as some apps are in early alpha at best at the time of writing, so don\u2019t go betting a deadline on them. Nevertheless, as an open-source alternative taking shape, it&#8217;s one to watch.<\/p>\n\n\n\n<div style=\"height:8px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Building software, keeping it useful, secure and maintained over the years is a challenge. That&#8217;s why Anthropic&#8217;s <a href=\"https:\/\/claude.com\/contact-sales\/claude-for-oss\" target=\"_blank\" rel=\"noreferrer noopener\">Claude for Open Source<\/a> programme is worth a look. No affiliation.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Qualifying contributors can apply for six months of Claude Max 20x at no cost. The criteria cover maintainers of widely used packages, core contributors, people regularly contributing to other repositories and those building active open-source communities.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Anthropic also encourages applications from maintainers of less obvious but important infrastructure. If that&#8217;s you, have a look at the eligibility criteria. Just note that existing paid subscriptions resume after the complimentary period unless cancelled.<\/p>\n\n\n\n<div style=\"height:8px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">  \n  \n  <div class=\"\n    mailpoet_form_popup_overlay\n      \"><\/div>\n  <div\n    id=\"mailpoet_form_6\"\n    class=\"\n      mailpoet_form\n      mailpoet_form_shortcode\n      mailpoet_form_position_\n      mailpoet_form_animation_\n    \"\n      >\n\n    <style type=\"text\/css\">\n     #mailpoet_form_6 .mailpoet_form {  }\n#mailpoet_form_6 .mailpoet_column_with_background { padding: 10px; }\n#mailpoet_form_6 .mailpoet_form_column:not(:first-child) { margin-left: 20px; }\n#mailpoet_form_6 .mailpoet_paragraph { line-height: 20px; margin-bottom: 20px; }\n#mailpoet_form_6 .mailpoet_segment_label, #mailpoet_form_6 .mailpoet_text_label, #mailpoet_form_6 .mailpoet_textarea_label, #mailpoet_form_6 .mailpoet_select_label, #mailpoet_form_6 .mailpoet_radio_label, #mailpoet_form_6 .mailpoet_checkbox_label, #mailpoet_form_6 .mailpoet_list_label, #mailpoet_form_6 .mailpoet_date_label { display: block; font-weight: normal; }\n#mailpoet_form_6 .mailpoet_text, #mailpoet_form_6 .mailpoet_textarea, #mailpoet_form_6 .mailpoet_select, #mailpoet_form_6 .mailpoet_date_month, #mailpoet_form_6 .mailpoet_date_day, #mailpoet_form_6 .mailpoet_date_year, #mailpoet_form_6 .mailpoet_date { display: block; }\n#mailpoet_form_6 .mailpoet_text, #mailpoet_form_6 .mailpoet_textarea { width: 200px; }\n#mailpoet_form_6 .mailpoet_checkbox {  }\n#mailpoet_form_6 .mailpoet_submit {  }\n#mailpoet_form_6 .mailpoet_divider {  }\n#mailpoet_form_6 .mailpoet_message {  }\n#mailpoet_form_6 .mailpoet_form_loading { width: 30px; text-align: center; line-height: normal; }\n#mailpoet_form_6 .mailpoet_form_loading > span { width: 5px; height: 5px; background-color: #5b5b5b; }#mailpoet_form_6{border-radius: 5px;background: url(https:\/\/www.20i.com\/blog\/wp-content\/smush-webp\/2026\/07\/Background-scaled.png.webp) center \/ cover no-repeat, linear-gradient(309deg,rgb(252,185,0) 0%,rgb(255,105,0) 39%);color: #ffffff;text-align: center;}#mailpoet_form_6 form.mailpoet_form {padding: 31px;}#mailpoet_form_6{width: 100%;}#mailpoet_form_6 .mailpoet_message {margin: 0; padding: 0 20px;}\n        #mailpoet_form_6 .mailpoet_validate_success {color: #FFFFFF}\n        #mailpoet_form_6 input.parsley-success {color: #FFFFFF}\n        #mailpoet_form_6 select.parsley-success {color: #FFFFFF}\n        #mailpoet_form_6 textarea.parsley-success {color: #FFFFFF}\n      \n        #mailpoet_form_6 .mailpoet_validate_error {color: #FFFFFF}\n        #mailpoet_form_6 input.parsley-error {color: #FFFFFF}\n        #mailpoet_form_6 select.parsley-error {color: #FFFFFF}\n        #mailpoet_form_6 textarea.textarea.parsley-error {color: #FFFFFF}\n        #mailpoet_form_6 .parsley-errors-list {color: #FFFFFF}\n        #mailpoet_form_6 .parsley-required {color: #FFFFFF}\n        #mailpoet_form_6 .parsley-custom-error-message {color: #FFFFFF}\n      #mailpoet_form_6 .mailpoet_paragraph.last {margin-bottom: 0} @media (max-width: 500px) {#mailpoet_form_6 {background: linear-gradient(309deg,rgb(252,185,0) 0%,rgb(255,105,0) 39%);}} @media (min-width: 500px) {#mailpoet_form_6 .last .mailpoet_paragraph:last-child {margin-bottom: 0}}  @media (max-width: 500px) {#mailpoet_form_6 .mailpoet_form_column:last-child .mailpoet_paragraph:last-child {margin-bottom: 0}}\n    <\/style>\n\n    <form\n      target=\"_self\"\n      method=\"post\"\n      action=\"https:\/\/www.20i.com\/blog\/wp-admin\/admin-post.php?action=mailpoet_subscription_form\"\n      class=\"mailpoet_form mailpoet_form_form mailpoet_form_shortcode\"\n      novalidate\n      data-delay=\"\"\n      data-exit-intent-enabled=\"\"\n      data-trigger-mode=\"\"\n      data-click-trigger-selector=\"\"\n      data-font-family=\"\"\n      data-cookie-expiration-time=\"\"\n    >\n      <input type=\"hidden\" name=\"data[form_id]\" value=\"6\" \/>\n      <input type=\"hidden\" name=\"data[form_stamp]\" value=\"1793894018.52d1e6b5803593cf753f38f215bdd7cf90e3b159f2c154778e70ecf5f30f1443\" \/>\n      <input type=\"hidden\" name=\"token\" value=\"41274676e9\" \/>\n      <input type=\"hidden\" name=\"api_version\" value=\"v1\" \/>\n      <input type=\"hidden\" name=\"endpoint\" value=\"subscribers\" \/>\n      <input type=\"hidden\" name=\"mailpoet_method\" value=\"subscribe\" \/>\n\n      <label class=\"mailpoet_hp_email_label\" style=\"display: none !important;\">Please leave this field empty<input type=\"email\" name=\"data[email]\"\/><\/label><h2 class=\"mailpoet-heading  mailpoet-has-font-size\" style=\"text-align: center; color: #ffffff; font-size: 36px; line-height: 1.3\">Subscribe for the latest 20i news<\/h2>\n<p class=\"mailpoet_form_paragraph  mailpoet-has-font-size\" style=\"text-align: center; color: #ffffff; font-size: 15px; line-height: 1.5\">Get<span style=\"font-family: Montserrat\" data-font=\"Montserrat\" class=\"mailpoet-has-font\"> the latest product launches, new features alerts, platform upgrades and exclusive content, all delivered instantly to your inbox.<\/span><\/p>\n<div class='mailpoet_form_columns_container'><div class=\"mailpoet_form_columns mailpoet_paragraph mailpoet_stack_on_mobile\"><div class=\"mailpoet_form_column\" style=\"flex-basis:100%;\"><div class=\"mailpoet_paragraph \"><input type=\"email\" autocomplete=\"email\" class=\"mailpoet_text\" id=\"form_email_6\" name=\"data[form_field_ZWZjNzhiNDMwYjVlX2VtYWls]\" title=\"Enter your email address\" value=\"\" style=\"width:100%;box-sizing:border-box;background-color:#f1f1f1;border-style:solid;border-radius:40px !important;border-width:0px;border-color:#313131;padding:15px;margin: 0 auto;font-family:&#039;Montserrat&#039;;font-size:15px;line-height:1.5;height:auto;\" data-automation-id=\"form_email\"  placeholder=\"Enter your email address *\" aria-label=\"Enter your email address *\" data-parsley-errors-container=\".mailpoet_error_1unvo\" data-parsley-required=\"true\" required aria-required=\"true\" data-parsley-minlength=\"6\" data-parsley-maxlength=\"150\" data-parsley-type-message=\"This value should be a valid email.\" data-parsley-required-message=\"This field is required.\"\/><span class=\"mailpoet_error_1unvo\"><\/span><\/div>\n<\/div>\n<\/div><\/div>\n<div class=\"mailpoet_paragraph \"><input type=\"submit\" class=\"mailpoet_submit\" value=\"Sign me up!\" data-automation-id=\"subscribe-submit-button\" data-font-family='Montserrat' style=\"width:100%;box-sizing:border-box;background-color:#28863e;border-style:solid;border-radius:40px !important;border-width:0px;border-color:#313131;padding:15px;margin: 0 auto;font-family:&#039;Montserrat&#039;;font-size:16px;line-height:1.5;height:auto;color:#ffffff;font-weight:bold;\" \/><span class=\"mailpoet_form_loading\"><span class=\"mailpoet_bounce1\"><\/span><span class=\"mailpoet_bounce2\"><\/span><span class=\"mailpoet_bounce3\"><\/span><\/span><\/div>\n\n      <div class=\"mailpoet_message\">\n        <p class=\"mailpoet_validate_success\"\n                style=\"display:none;\"\n                >Almost there! Check your inbox to confirm your subscription.\n        <\/p>\n        <p class=\"mailpoet_validate_error\"\n                style=\"display:none;\"\n                >        <\/p>\n      <\/div>\n    <\/form>\n\n      <\/div>\n\n  \n\n\n\n<div style=\"height:8px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Maintaining a project also gets easier when everyone agrees on what its parts are and how they relate to each other.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/microsoft\/Ontology-Playground\" target=\"_blank\" rel=\"noreferrer noopener\">Microsoft&#8217;s Ontology Playground<\/a> is a free, open-source tool for modelling the things within a system and the relationships between them. For an ecommerce platform, think customers, products and orders, with clearly defined properties and connections (rather than assumptions) buried across a dozen documents.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6aeca68296ee2&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6aeca68296ee2\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"630\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/Ontology-Playground-Screenshot.webp\" alt=\"Screenshot of Microsoft\u2019s Ontology Playground Preview site\" class=\"wp-image-20803\" srcset=\"https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/Ontology-Playground-Screenshot.webp 1200w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/Ontology-Playground-Screenshot-300x158.webp 300w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/Ontology-Playground-Screenshot-768x403.webp 768w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/Ontology-Playground-Screenshot-400x210.webp 400w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/Ontology-Playground-Screenshot-800x420.webp 800w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/Ontology-Playground-Screenshot-832x437.webp 832w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/Ontology-Playground-Screenshot-150x79.webp 150w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">You can explore example models, build your own in a visual editor and export them as RDF\/XML. There&#8217;s <a href=\"https:\/\/microsoft.github.io\/Ontology-Playground\/\" target=\"_blank\" rel=\"noreferrer noopener\">a live playground<\/a> too, so you don&#8217;t need to set anything up to experiment.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If different teams keep using the same term to mean different things, a shared model can make those disagreements visible before they become expensive.<\/p>\n\n\n\n<div style=\"height:0px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Understanding how systems connect is useful and understanding who can remotely control them is critical.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A recent <a href=\"https:\/\/www.cnet.com\/tech\/services-and-software\/cyberattack-hackers-target-french-supermarket-refrigerators\/\" target=\"_blank\" rel=\"noreferrer noopener\">cyberattack on French supermarket refrigeration systems<\/a> affected hundreds of stores in October, with cooling equipment manipulated, temperatures reportedly reaching 50\u00b0C and large quantities of food spoiled.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6aeca6829898a&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6aeca6829898a\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1900\" height=\"1521\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/CooperativeU-fridge-hacking.webp\" alt=\"Packages of perished goods piled outside an Intermarch\u00e9 store in Paris the day after a cyber-attack targeted refrigeration and freezer systems.\" class=\"wp-image-20804\" srcset=\"https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/CooperativeU-fridge-hacking.webp 1900w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/CooperativeU-fridge-hacking-300x240.webp 300w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/CooperativeU-fridge-hacking-768x615.webp 768w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/CooperativeU-fridge-hacking-1536x1230.webp 1536w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/CooperativeU-fridge-hacking-400x320.webp 400w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/CooperativeU-fridge-hacking-800x640.webp 800w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/CooperativeU-fridge-hacking-832x666.webp 832w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/CooperativeU-fridge-hacking-1664x1332.webp 1664w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/CooperativeU-fridge-hacking-1248x999.webp 1248w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/CooperativeU-fridge-hacking-1320x1057.webp 1320w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/CooperativeU-fridge-hacking-150x120.webp 150w\" sizes=\"auto, (max-width: 1900px) 100vw, 1900px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Photograph: <a href=\"https:\/\/www.reuters.com\/authors\/lucien-libert\/\" target=\"_blank\" rel=\"noreferrer noopener\">Lucien Libert<\/a><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">France&#8217;s <a href=\"https:\/\/cert.cyber.gouv.fr\/alerte\/CERTFR-2026-ALE-012\/\" target=\"_blank\" rel=\"noreferrer noopener\">CERT-FR alert<\/a> identifies compromises involving Danfoss, Copeland and Dixell refrigeration controllers. Its advice includes removing management interfaces from direct internet exposure, reviewing defrost configurations, updating firmware and allowing remote access only through a secure VPN or protected network.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.reuters.com\/business\/retail-consumer\/temperature-soars-swedish-grocery-store-freezers-one-store-blames-hackers-2026-11-02\/\" target=\"_blank\" rel=\"noreferrer noopener\">Similar attacks have since been reported<\/a> in Belgium, Luxembourg, Sweden and Estonia.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">These attacks are powerful examples which illustrates that \u2018business-critical infrastructure\u2019 isn\u2019t limited to servers, websites and email.<\/p>\n\n\n\n<div style=\"height:8px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">An exponentially more enjoyable way to explore connected systems is <a href=\"https:\/\/github.com\/bilawalsidhu\/gods-eye-view\" target=\"_blank\" rel=\"noreferrer noopener\">gods-eye-view<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The idea is public information gets pulled together and displayed onto an interactive 3D globe that looks like something out of a sci-fi film.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aircraft, satellites, ships, earthquakes, public cameras and more appear as geographic layers, giving you a different perspective on the activity and infrastructure around a city, or across the planet. Not every feed has the same coverage or update frequency, but there&#8217;s a lot to explore.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6aeca6829afa8&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6aeca6829afa8\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"450\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/gods-eye-view-open-source-reveal.gif\" alt=\"animated gif of gods eye view reveal\" class=\"wp-image-20805\"\/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The project is open source and runs locally, with many layers available without API keys. Some extras have conditions: AI voice uses a metered API, while photorealistic 3D imagery can use a Cesium ion account subject to eligibility, non-commercial use and quotas, or a metered Google Maps key.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you&#8217;re thinking of using the data commercially, check the <a href=\"https:\/\/github.com\/bilawalsidhu\/gods-eye-view\/blob\/main\/DATA_SOURCES.md\" target=\"_blank\" rel=\"noreferrer noopener\">dataset licences<\/a>. Open-source code doesn&#8217;t automatically mean every data layer is free to reuse.<\/p>\n\n\n\n<div style=\"height:8px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">When you\u2019re done looking at a digital version of the planet from high above, why not zoom all the way in and focus on the pixels?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/spektrafilm.114c.de\/\" target=\"_blank\" rel=\"noreferrer noopener\">Spektrafilm OFX <\/a>is a free OpenFX plugin for applications such as DaVinci Resolve that takes film emulation rather more seriously than simply applying a colour LUT.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6aeca6829c5d0&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6aeca6829c5d0\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1080\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/spektrafilm.webp\" alt=\"Screenshot from the spektrafilm homepage showing the film and print conversion demonstration\" class=\"wp-image-20810\" srcset=\"https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/spektrafilm.webp 1920w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/spektrafilm-300x169.webp 300w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/spektrafilm-768x432.webp 768w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/spektrafilm-1536x864.webp 1536w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/spektrafilm-400x225.webp 400w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/spektrafilm-800x450.webp 800w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/spektrafilm-832x468.webp 832w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/spektrafilm-1664x936.webp 1664w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/spektrafilm-1248x702.webp 1248w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/spektrafilm-1320x743.webp 1320w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/spektrafilm-150x84.webp 150w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">It uses spectral sensitivity and density data to model how light exposes film, then simulates negative development, printing and scanning. You can experiment with film and print stocks, grain, halation, diffusion and highlight behaviour, with SDR and HDR output options.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The results on the website are worth a look, particularly if you work with video or colour grading. Bear in mind that the downloads for macOS, Windows and Linux are still labelled beta, so exercise appropriate caution before integrating spektrafilm fully into your workflow.<\/p>\n\n\n\n<div style=\"height:8px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">If your idea of pixel perfection involves Unreal Engine rather than digital film simulation, <a href=\"https:\/\/theultraplace.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Ultra+<\/a> might occupy the rest of your day.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This free community project develops mods for supported PC games, hooking into rendering systems to adjust lighting, reflections, draw distances and ray tracing in real time. It also tackles visual bugs, with the aim of improving the balance between image quality and performance.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6aeca6829e35d&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6aeca6829e35d\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1080\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/Ultra-homepage-screenshot.webp\" alt=\"screenshot from the Ultra+ homepage\" class=\"wp-image-20809\" srcset=\"https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/Ultra-homepage-screenshot.webp 1920w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/Ultra-homepage-screenshot-300x169.webp 300w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/Ultra-homepage-screenshot-768x432.webp 768w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/Ultra-homepage-screenshot-1536x864.webp 1536w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/Ultra-homepage-screenshot-400x225.webp 400w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/Ultra-homepage-screenshot-800x450.webp 800w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/Ultra-homepage-screenshot-832x468.webp 832w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/Ultra-homepage-screenshot-1664x936.webp 1664w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/Ultra-homepage-screenshot-1248x702.webp 1248w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/Ultra-homepage-screenshot-1320x743.webp 1320w, https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/11\/Ultra-homepage-screenshot-150x84.webp 150w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">There&#8217;s an Ultra+ Manager for installation and updates, but the available changes depend on the game and your hardware. Check the relevant <a href=\"https:\/\/theultraplace.com\/games\/\" target=\"_blank\" rel=\"noreferrer noopener\">guide for each game<\/a> before diving in for best results.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The project is unaffiliated with <a href=\"https:\/\/x.com\/horikoshiko\" target=\"_blank\" rel=\"noreferrer noopener\">Kohei Horikoshi<\/a> and \u2018Plus Ultra\u2019, but if you&#8217;ve ever spent far too long switching between settings and hunting the perfect balance between visual fidelity and frames per second, you\u2019ll find this to be heroic.<\/p>\n\n\n\n<div style=\"height:8px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Have you found a brilliant tool, fascinating website, impressive open-source project or niche internet rabbit hole we should include next time? <a href=\"#comments\">Let us know in the comments<\/a>!<\/strong><\/p>\n\n\n<div class='code-block code-block-4' style='margin: 8px 0; clear: both;'>\n<hr>\n<br \/><a href=\"https:\/\/www.20i.com\/wordpress-hosting\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/www.20i.com\/blog\/wp-content\/uploads\/2026\/03\/Blog-Ad-WordPress-1200x625-1.png\" loading=\"lazy\" alt=\"Managed WordPress Hosting\"><\/a><\/div>\n\n","protected":false},"excerpt":{"rendered":"Supermarket fridges become a hacking target! Plus AI reverse engineering, ambitious open-source apps, a data-fed 3D globe and more.","protected":false},"author":36,"featured_media":20817,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"csco_singular_sidebar":"","csco_page_header_type":"","csco_page_load_nextpost":"","footnotes":""},"categories":[51],"tags":[],"class_list":["post-20800","post","type-post","status-publish","format-standard","has-post-thumbnail","category-technology","cs-entry"],"_links":{"self":[{"href":"https:\/\/www.20i.com\/blog\/wp-json\/wp\/v2\/posts\/20800","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.20i.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.20i.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.20i.com\/blog\/wp-json\/wp\/v2\/users\/36"}],"replies":[{"embeddable":true,"href":"https:\/\/www.20i.com\/blog\/wp-json\/wp\/v2\/comments?post=20800"}],"version-history":[{"count":7,"href":"https:\/\/www.20i.com\/blog\/wp-json\/wp\/v2\/posts\/20800\/revisions"}],"predecessor-version":[{"id":20820,"href":"https:\/\/www.20i.com\/blog\/wp-json\/wp\/v2\/posts\/20800\/revisions\/20820"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.20i.com\/blog\/wp-json\/wp\/v2\/media\/20817"}],"wp:attachment":[{"href":"https:\/\/www.20i.com\/blog\/wp-json\/wp\/v2\/media?parent=20800"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.20i.com\/blog\/wp-json\/wp\/v2\/categories?post=20800"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.20i.com\/blog\/wp-json\/wp\/v2\/tags?post=20800"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}