{"id":9165,"date":"2020-05-19T11:56:42","date_gmt":"2020-05-19T15:56:42","guid":{"rendered":"https:\/\/g33kinfo.com\/info\/?p=9165"},"modified":"2020-05-21T08:05:45","modified_gmt":"2020-05-21T12:05:45","slug":"hansel-gradel","status":"publish","type":"post","link":"https:\/\/g33kinfo.com\/info\/hansel-gradel\/","title":{"rendered":"Hansel &#038; Gradel?"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/github.com\/gradle\/gradle\/raw\/master\/gradle.png\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Gradle is an open-source build automation tool focused on flexibility and performance. Gradle build scripts are written using a&nbsp;<a href=\"https:\/\/groovy-lang.org\/\">Groovy<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/kotlinlang.org\/\">Kotlin<\/a>&nbsp;DSL.<br><a href=\"https:\/\/gradle.org\/\">https:\/\/gradle.org<\/a><\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-rich\"><div class=\"wp-block-embed__wrapper\">\n<div class=\"github-embed github-embed-repository github-logo-mark\">    <p>        <a href=\"https:\/\/github.com\/gradle\/gradle\" target=\"_blank\">\t\t\t<strong>\t\t\t\tAdaptable, fast automation for all\t\t\t<\/strong>\t\t<\/a>\t\t<br>        <a href=\"https:\/\/github.com\/gradle\/gradle\" target=\"_blank\">https:\/\/github.com\/gradle\/gradle<\/a><br>        <a href=\"https:\/\/github.com\/gradle\/gradle\/network\" target=\"_blank\">5,321<\/a> forks.<br>        <a href=\"https:\/\/github.com\/gradle\/gradle\/stargazers\" target=\"_blank\">18,754<\/a> stars.<br>        <a href=\"https:\/\/github.com\/gradle\/gradle\/issues\" target=\"_blank\">3,488<\/a> open issues.<br>        <details open>            <summary>Recent commits:<\/summary>            <ul class=\"github_commits\">                                    <li class=\"github_commit\">                        <a href=\"https:\/\/github.com\/gradle\/gradle\/commit\/be7b1d956fd466144fbb3a1e268bfd6704205250\" target=\"_blank\">Check that the IDEA project SDK supports the project language level (#38722)<\/a>, GitHub                    <\/li>                                    <li class=\"github_commit\">                        <a href=\"https:\/\/github.com\/gradle\/gradle\/commit\/31d4be728e1e3133972519033d26c49a3d9dd90e\" target=\"_blank\">Allow source dependencies to be resolved when CC is degraded (#38659)<\/a>, GitHub                    <\/li>                                    <li class=\"github_commit\">                        <a href=\"https:\/\/github.com\/gradle\/gradle\/commit\/b99de1bf465cadac1d5b4f5417d29669961dcbfd\" target=\"_blank\">Update project JDK to 25 in IDEA config (#38721)<\/a>, GitHub                    <\/li>                                    <li class=\"github_commit\">                        <a href=\"https:\/\/github.com\/gradle\/gradle\/commit\/0f86c574e988805c34a19285e086ad8f6fe2142e\" target=\"_blank\">Check that the IDEA project SDK supports the project language level.idea\/misc.xml is committed on purpose (see .gitignore, which whitelistsit next to codeStyles and inspectionProfiles), and its ProjectRootManagercomponent carries two values that have to agree: the project languagelevel and the name of the project SDK.Only one of them maintains itself. IntelliJ derives languageLevel fromthe Gradle model and rewrites the file on sync, which is how it arrivedat JDK_25 in c83961e9112 and why that commit was made at all &#8211; anuncommitted value produces a dirty working tree for every developer afterevery import. project-jdk-name is not derived: it is a reference into thedeveloper&#039;s global SDK table, keyed by a free-form name, so nothing inthe Gradle model can supply it and IntelliJ leaves it alone.The result is drift in one direction only. c83961e9112 raised thelanguage level to 25 and left the SDK pointing at 17, and the repositorystayed in a state where importing it reported &quot;Module JDK ismisconfigured&quot; until 1bb2f7ced74 corrected the SDK by hand, three weekslater. Nothing in the build noticed.Add a checkIdeaJdkConfiguration task that fails when the committed SDKcannot support the committed language level, and wire it intosanityCheck so the drift surfaces as a build failure rather than as abroken IDE import. Because project-jdk-name is a label and not a version,the task infers a version from it by convention and skips the comparisonwhen it cannot, rather than failing developers whose SDK happens to benamed something like &quot;temurin-25&quot;.Two deliberate limitations:  &#8211; The task compares the two values in misc.xml against each other    rather than against gradle\/gradle-daemon-jvm.properties, which would    be the more obvious source of truth for &quot;the JDK this build uses&quot;.    That file is not usable here: Gradleception overwrites it with    `echo &#039;toolchainVersion=&lt;major&gt;&#039; &gt; &#8230;` whenever its build JVM    differs from BuildToolBuildJvm, and then runs sanityCheck in the same    checkout. GradleceptionWithMaxJdk does exactly that (Java 26 against    a build tool JVM of 25), so keying the check off that file would fail    that build on every run.  &#8211; Consequently the task does not catch both values drifting downwards    together. Since IntelliJ maintains languageLevel from the Gradle    model, that state is unlikely and corrects itself on the next sync,    whereas a stale project-jdk-name does not.<\/a>, Christoph Obexer                    <\/li>                                    <li class=\"github_commit\">                        <a href=\"https:\/\/github.com\/gradle\/gradle\/commit\/9f4fb940719e054bf06fc921bfa25d979ea2d3da\" target=\"_blank\">Extract createSecureDocumentBuilder into build logic basicsBuild logic parses XML in several places and cannot useorg.gradle.internal.xml.XmlFactories for it, because that class lives in:base-services, i.e. in the distribution this build produces rather thanin the build logic that produces it.AbstractVersionsUpdateTask therefore grew its own hardened factory, whichis in fact stricter than XmlFactories: besides FEATURE_SECURE_PROCESSINGit disallows doctype declarations outright and denies access to externalgeneral entities, parameter entities, DTDs and schemas. That is thebehaviour build logic should get everywhere it parses XML, so leaving itas a protected method on one task base class means the next caller eitherreaches for a bare DocumentBuilderFactory.newInstance() or copies eightlines of security-sensitive configuration.Move it verbatim to gradlebuild:basics, which every build logic modulealready depends on, and have AbstractVersionsUpdateTask&#039;s only subclasscall site import it directly. No behaviour change: the factoryconfiguration and the resulting DocumentBuilder are identical.<\/a>, Christoph Obexer                    <\/li>                            <\/ul>        <\/details>    <\/p><\/div>\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Check it out!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Gradle is an open-source build automation tool focused on flexibility and performance. Gradle build scripts are written using a&nbsp;Groovy&nbsp;or&nbsp;Kotlin&nbsp;DSL.https:\/\/gradle.org Adaptable, fast automation for all https:\/\/github.com\/gradle\/gradle 5,321 forks. 18,754 stars. 3,488 open issues. Recent commits: Check that the IDEA project SDK supports the project language level (#38722), GitHub Allow source dependencies to be resolved when CC&#8230; <\/p>\n<div class=\"read-more navbutton\"><a href=\"https:\/\/g33kinfo.com\/info\/hansel-gradel\/\">Read More<i class=\"fa fa-angle-double-right\"><\/i><\/a><\/div>\n","protected":false},"author":1,"featured_media":8835,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[],"class_list":["post-9165","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-info"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Hansel &amp; Gradel? - Linux Shtuff<\/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:\/\/g33kinfo.com\/info\/hansel-gradel\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Hansel &amp; Gradel? - Linux Shtuff\" \/>\n<meta property=\"og:description\" content=\"Gradle is an open-source build automation tool focused on flexibility and performance. Gradle build scripts are written using a&nbsp;Groovy&nbsp;or&nbsp;Kotlin&nbsp;DSL.https:\/\/gradle.org Adaptable, fast automation for all https:\/\/github.com\/gradle\/gradle 5,321 forks. 18,754 stars. 3,488 open issues. Recent commits: Check that the IDEA project SDK supports the project language level (#38722), GitHub Allow source dependencies to be resolved when CC... Read More\" \/>\n<meta property=\"og:url\" content=\"https:\/\/g33kinfo.com\/info\/hansel-gradel\/\" \/>\n<meta property=\"og:site_name\" content=\"Linux Shtuff\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/fb.me\/g33kinf0\" \/>\n<meta property=\"article:author\" content=\"https:\/\/fb.me\/g33kinf0\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-19T15:56:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-05-21T12:05:45+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/g33kinfo.com\/info\/wp-content\/uploads\/2020\/03\/Minion_Research.sm_-e1584713481775.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"35\" \/>\n\t<meta property=\"og:image:height\" content=\"44\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"g33kadmin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/drsinger1111\" \/>\n<meta name=\"twitter:site\" content=\"@drsinger1111\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/g33kinfo.com\\\/info\\\/hansel-gradel\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/g33kinfo.com\\\/info\\\/hansel-gradel\\\/\"},\"author\":{\"name\":\"g33kadmin\",\"@id\":\"https:\\\/\\\/g33kinfo.com\\\/info\\\/#\\\/schema\\\/person\\\/c022e4c40b13ea1b678e6f020756f547\"},\"headline\":\"Hansel &#038; Gradel?\",\"datePublished\":\"2020-05-19T15:56:42+00:00\",\"dateModified\":\"2020-05-21T12:05:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/g33kinfo.com\\\/info\\\/hansel-gradel\\\/\"},\"wordCount\":40,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/g33kinfo.com\\\/info\\\/#\\\/schema\\\/person\\\/c022e4c40b13ea1b678e6f020756f547\"},\"image\":{\"@id\":\"https:\\\/\\\/g33kinfo.com\\\/info\\\/hansel-gradel\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/g33kinfo.com\\\/info\\\/wp-content\\\/uploads\\\/2020\\\/03\\\/Minion_Research.sm_-e1584713481775.jpg\",\"articleSection\":[\"General Info\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/g33kinfo.com\\\/info\\\/hansel-gradel\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/g33kinfo.com\\\/info\\\/hansel-gradel\\\/\",\"url\":\"https:\\\/\\\/g33kinfo.com\\\/info\\\/hansel-gradel\\\/\",\"name\":\"Hansel & Gradel? - Linux Shtuff\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/g33kinfo.com\\\/info\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/g33kinfo.com\\\/info\\\/hansel-gradel\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/g33kinfo.com\\\/info\\\/hansel-gradel\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/g33kinfo.com\\\/info\\\/wp-content\\\/uploads\\\/2020\\\/03\\\/Minion_Research.sm_-e1584713481775.jpg\",\"datePublished\":\"2020-05-19T15:56:42+00:00\",\"dateModified\":\"2020-05-21T12:05:45+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/g33kinfo.com\\\/info\\\/hansel-gradel\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/g33kinfo.com\\\/info\\\/hansel-gradel\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/g33kinfo.com\\\/info\\\/hansel-gradel\\\/#primaryimage\",\"url\":\"https:\\\/\\\/g33kinfo.com\\\/info\\\/wp-content\\\/uploads\\\/2020\\\/03\\\/Minion_Research.sm_-e1584713481775.jpg\",\"contentUrl\":\"https:\\\/\\\/g33kinfo.com\\\/info\\\/wp-content\\\/uploads\\\/2020\\\/03\\\/Minion_Research.sm_-e1584713481775.jpg\",\"width\":35,\"height\":44,\"caption\":\"Minion_Research.sm\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/g33kinfo.com\\\/info\\\/hansel-gradel\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/g33kinfo.com\\\/info\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Hansel &#038; Gradel?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/g33kinfo.com\\\/info\\\/#website\",\"url\":\"https:\\\/\\\/g33kinfo.com\\\/info\\\/\",\"name\":\"Linux Shtuff\",\"description\":\"Because I have CRS Syndrome...\",\"publisher\":{\"@id\":\"https:\\\/\\\/g33kinfo.com\\\/info\\\/#\\\/schema\\\/person\\\/c022e4c40b13ea1b678e6f020756f547\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/g33kinfo.com\\\/info\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/g33kinfo.com\\\/info\\\/#\\\/schema\\\/person\\\/c022e4c40b13ea1b678e6f020756f547\",\"name\":\"g33kadmin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/g33kinfo.com\\\/info\\\/wp-content\\\/uploads\\\/2022\\\/07\\\/minion-researchA.gif\",\"url\":\"https:\\\/\\\/g33kinfo.com\\\/info\\\/wp-content\\\/uploads\\\/2022\\\/07\\\/minion-researchA.gif\",\"contentUrl\":\"https:\\\/\\\/g33kinfo.com\\\/info\\\/wp-content\\\/uploads\\\/2022\\\/07\\\/minion-researchA.gif\",\"width\":512,\"height\":512,\"caption\":\"g33kadmin\"},\"logo\":{\"@id\":\"https:\\\/\\\/g33kinfo.com\\\/info\\\/wp-content\\\/uploads\\\/2022\\\/07\\\/minion-researchA.gif\"},\"description\":\"I am a g33k, Linux blogger, developer, student and Tech Writer for Liquidweb.com\\\/kb. My passion for all things tech drives my hunt for all the coolz. I often need a vacation after I get back from vacation....\",\"sameAs\":[\"https:\\\/\\\/thelinuxreport.com\",\"https:\\\/\\\/fb.me\\\/g33kinf0\",\"https:\\\/\\\/x.com\\\/https:\\\/\\\/twitter.com\\\/drsinger1111\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Hansel & Gradel? - Linux Shtuff","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:\/\/g33kinfo.com\/info\/hansel-gradel\/","og_locale":"en_US","og_type":"article","og_title":"Hansel & Gradel? - Linux Shtuff","og_description":"Gradle is an open-source build automation tool focused on flexibility and performance. Gradle build scripts are written using a&nbsp;Groovy&nbsp;or&nbsp;Kotlin&nbsp;DSL.https:\/\/gradle.org Adaptable, fast automation for all https:\/\/github.com\/gradle\/gradle 5,321 forks. 18,754 stars. 3,488 open issues. Recent commits: Check that the IDEA project SDK supports the project language level (#38722), GitHub Allow source dependencies to be resolved when CC... Read More","og_url":"https:\/\/g33kinfo.com\/info\/hansel-gradel\/","og_site_name":"Linux Shtuff","article_publisher":"https:\/\/fb.me\/g33kinf0","article_author":"https:\/\/fb.me\/g33kinf0","article_published_time":"2020-05-19T15:56:42+00:00","article_modified_time":"2020-05-21T12:05:45+00:00","og_image":[{"width":35,"height":44,"url":"https:\/\/g33kinfo.com\/info\/wp-content\/uploads\/2020\/03\/Minion_Research.sm_-e1584713481775.jpg","type":"image\/jpeg"}],"author":"g33kadmin","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/drsinger1111","twitter_site":"@drsinger1111","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/g33kinfo.com\/info\/hansel-gradel\/#article","isPartOf":{"@id":"https:\/\/g33kinfo.com\/info\/hansel-gradel\/"},"author":{"name":"g33kadmin","@id":"https:\/\/g33kinfo.com\/info\/#\/schema\/person\/c022e4c40b13ea1b678e6f020756f547"},"headline":"Hansel &#038; Gradel?","datePublished":"2020-05-19T15:56:42+00:00","dateModified":"2020-05-21T12:05:45+00:00","mainEntityOfPage":{"@id":"https:\/\/g33kinfo.com\/info\/hansel-gradel\/"},"wordCount":40,"commentCount":0,"publisher":{"@id":"https:\/\/g33kinfo.com\/info\/#\/schema\/person\/c022e4c40b13ea1b678e6f020756f547"},"image":{"@id":"https:\/\/g33kinfo.com\/info\/hansel-gradel\/#primaryimage"},"thumbnailUrl":"https:\/\/g33kinfo.com\/info\/wp-content\/uploads\/2020\/03\/Minion_Research.sm_-e1584713481775.jpg","articleSection":["General Info"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/g33kinfo.com\/info\/hansel-gradel\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/g33kinfo.com\/info\/hansel-gradel\/","url":"https:\/\/g33kinfo.com\/info\/hansel-gradel\/","name":"Hansel & Gradel? - Linux Shtuff","isPartOf":{"@id":"https:\/\/g33kinfo.com\/info\/#website"},"primaryImageOfPage":{"@id":"https:\/\/g33kinfo.com\/info\/hansel-gradel\/#primaryimage"},"image":{"@id":"https:\/\/g33kinfo.com\/info\/hansel-gradel\/#primaryimage"},"thumbnailUrl":"https:\/\/g33kinfo.com\/info\/wp-content\/uploads\/2020\/03\/Minion_Research.sm_-e1584713481775.jpg","datePublished":"2020-05-19T15:56:42+00:00","dateModified":"2020-05-21T12:05:45+00:00","breadcrumb":{"@id":"https:\/\/g33kinfo.com\/info\/hansel-gradel\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/g33kinfo.com\/info\/hansel-gradel\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/g33kinfo.com\/info\/hansel-gradel\/#primaryimage","url":"https:\/\/g33kinfo.com\/info\/wp-content\/uploads\/2020\/03\/Minion_Research.sm_-e1584713481775.jpg","contentUrl":"https:\/\/g33kinfo.com\/info\/wp-content\/uploads\/2020\/03\/Minion_Research.sm_-e1584713481775.jpg","width":35,"height":44,"caption":"Minion_Research.sm"},{"@type":"BreadcrumbList","@id":"https:\/\/g33kinfo.com\/info\/hansel-gradel\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/g33kinfo.com\/info\/"},{"@type":"ListItem","position":2,"name":"Hansel &#038; Gradel?"}]},{"@type":"WebSite","@id":"https:\/\/g33kinfo.com\/info\/#website","url":"https:\/\/g33kinfo.com\/info\/","name":"Linux Shtuff","description":"Because I have CRS Syndrome...","publisher":{"@id":"https:\/\/g33kinfo.com\/info\/#\/schema\/person\/c022e4c40b13ea1b678e6f020756f547"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/g33kinfo.com\/info\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/g33kinfo.com\/info\/#\/schema\/person\/c022e4c40b13ea1b678e6f020756f547","name":"g33kadmin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/g33kinfo.com\/info\/wp-content\/uploads\/2022\/07\/minion-researchA.gif","url":"https:\/\/g33kinfo.com\/info\/wp-content\/uploads\/2022\/07\/minion-researchA.gif","contentUrl":"https:\/\/g33kinfo.com\/info\/wp-content\/uploads\/2022\/07\/minion-researchA.gif","width":512,"height":512,"caption":"g33kadmin"},"logo":{"@id":"https:\/\/g33kinfo.com\/info\/wp-content\/uploads\/2022\/07\/minion-researchA.gif"},"description":"I am a g33k, Linux blogger, developer, student and Tech Writer for Liquidweb.com\/kb. My passion for all things tech drives my hunt for all the coolz. I often need a vacation after I get back from vacation....","sameAs":["https:\/\/thelinuxreport.com","https:\/\/fb.me\/g33kinf0","https:\/\/x.com\/https:\/\/twitter.com\/drsinger1111"]}]}},"_links":{"self":[{"href":"https:\/\/g33kinfo.com\/info\/wp-json\/wp\/v2\/posts\/9165","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/g33kinfo.com\/info\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/g33kinfo.com\/info\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/g33kinfo.com\/info\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/g33kinfo.com\/info\/wp-json\/wp\/v2\/comments?post=9165"}],"version-history":[{"count":3,"href":"https:\/\/g33kinfo.com\/info\/wp-json\/wp\/v2\/posts\/9165\/revisions"}],"predecessor-version":[{"id":9168,"href":"https:\/\/g33kinfo.com\/info\/wp-json\/wp\/v2\/posts\/9165\/revisions\/9168"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/g33kinfo.com\/info\/wp-json\/wp\/v2\/media\/8835"}],"wp:attachment":[{"href":"https:\/\/g33kinfo.com\/info\/wp-json\/wp\/v2\/media?parent=9165"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/g33kinfo.com\/info\/wp-json\/wp\/v2\/categories?post=9165"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/g33kinfo.com\/info\/wp-json\/wp\/v2\/tags?post=9165"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}