

{"id":9386,"date":"2018-04-01T19:22:52","date_gmt":"2018-04-02T00:22:52","guid":{"rendered":"https:\/\/rud.is\/b\/?p=9386"},"modified":"2018-04-01T21:43:26","modified_gmt":"2018-04-02T02:43:26","slug":"more-options-for-querying-dns-from-r-with-1-1-1-1","status":"publish","type":"post","link":"https:\/\/rud.is\/b\/2018\/04\/01\/more-options-for-querying-dns-from-r-with-1-1-1-1\/","title":{"rendered":"More Options For Querying DNS From R with 1.1.1.1"},"content":{"rendered":"<p>You have to have been living under a rock to not know about Cloudflare&#8217;s new <a href=\"https:\/\/1.1.1.1\/\">1.1.1.1<\/a> DNS offering. I won&#8217;t go into &#8220;privacy&#8221;, &#8220;security&#8221; or &#8220;speed&#8221; concepts in this post since that&#8217;s a pretty huge topic to distill for folks given the, now, plethora of confusing (and pretty technical) options that exist to support one or more of those goals.<\/p>\n<p>Instead, I&#8217;ll remind R folks about the <a href=\"https:\/\/github.com\/hrbrmstr\/gdns\"><code>gdns<\/code>?<\/a> package which provides a query interface to <a href=\"https:\/\/developers.google.com\/speed\/public-dns\/docs\/dns-over-https\">Google&#8217;s DNS-over-HTTPS JSON API<\/a> and announce <a href=\"https:\/\/github.com\/hrbrmstr\/dnsflare\"><code>dnsflare<\/code>?<\/a> which wraps the <a href=\"https:\/\/developers.cloudflare.com\/1.1.1.1\/dns-over-https\/\">new and similar offering by Cloudflare<\/a>. In fact, Cloudflare adopted Google&#8217;s response format so they&#8217;re pretty interchangeable:<\/p>\n<pre id=\"cfgdns01\"><code class=\"language-r\">str(gdns::query(&quot;r-project.org&quot;))\r\n## List of 10\r\n##  $ Status            : int 0\r\n##  $ TC                : logi FALSE\r\n##  $ RD                : logi TRUE\r\n##  $ RA                : logi TRUE\r\n##  $ AD                : logi FALSE\r\n##  $ CD                : logi FALSE\r\n##  $ Question          :&#039;data.frame&#039;: 1 obs. of  2 variables:\r\n##   ..$ name: chr &quot;r-project.org.&quot;\r\n##   ..$ type: int 1\r\n##  $ Answer            :&#039;data.frame&#039;: 1 obs. of  4 variables:\r\n##   ..$ name: chr &quot;r-project.org.&quot;\r\n##   ..$ type: int 1\r\n##   ..$ TTL : int 2095\r\n##   ..$ data: chr &quot;137.208.57.37&quot;\r\n##  $ Additional        : list()\r\n##  $ edns_client_subnet: chr &quot;0.0.0.0\/0&quot;\r\n\r\nstr(dnsflare::query(&quot;r-project.org&quot;))\r\n## List of 8\r\n##  $ Status  : int 0\r\n##  $ TC      : logi FALSE\r\n##  $ RD      : logi TRUE\r\n##  $ RA      : logi TRUE\r\n##  $ AD      : logi FALSE\r\n##  $ CD      : logi FALSE\r\n##  $ Question:&#039;data.frame&#039;: 1 obs. of  2 variables:\r\n##   ..$ name: chr &quot;r-project.org.&quot;\r\n##   ..$ type: int 1\r\n##  $ Answer  :&#039;data.frame&#039;: 1 obs. of  4 variables:\r\n##   ..$ name: chr &quot;r-project.org.&quot;\r\n##   ..$ type: int 1\r\n##   ..$ TTL : int 1420\r\n##   ..$ data: chr &quot;137.208.57.37&quot;\r\n##  - attr(*, &quot;class&quot;)= chr &quot;cf_dns_result&quot;<\/code><\/pre>\n<p>The packages are primarily of use for internet researchers who need to lookup DNS-y things either as a data source in-and-of itself or to add metadata to names or IP addresses in other data sets.<\/p>\n<p>I need to do some work on ensuring they both are on-par feature-wise (named-classes, similar print and batch query methods, etc) and should, perhaps, consider retiring <code>gdns<\/code> in favour of a new meta-DNS package that wraps all of these since I suspect all the cool kids will be setting these up, soon. (Naming suggestions welcome!)<\/p>\n<p>There&#8217;s also <a href=\"https:\/\/github.com\/hrbrmstr\/getdns\"><code>getdns<\/code>?<\/a> which has very little but stub test code in it (for now) since it was unclear how quickly these new, modern DNS services would take off. But, since they have, that project will be revisited this year (jump in if ye like!) as is is (roughly) a &#8220;non-JSON&#8221; version of what <code>gns<\/code> and <code>dnsflare<\/code> are.<\/p>\n<p>If you know of other, similar services that can be wrapped, drop a note in the comments or as an issue on one of those repos and also file an issue there if you have preferred response formats or have functionality you&#8217;d like implemented.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>You have to have been living under a rock to not know about Cloudflare&#8217;s new 1.1.1.1 DNS offering. I won&#8217;t go into &#8220;privacy&#8221;, &#8220;security&#8221; or &#8220;speed&#8221; concepts in this post since that&#8217;s a pretty huge topic to distill for folks given the, now, plethora of confusing (and pretty technical) options that exist to support one [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":3,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":""},"categories":[74,91],"tags":[812],"class_list":["post-9386","post","type-post","status-publish","format-standard","hentry","category-dns","category-r","tag-dns-over-https"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>More Options For Querying DNS From R with 1.1.1.1 - rud.is<\/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:\/\/rud.is\/b\/2018\/04\/01\/more-options-for-querying-dns-from-r-with-1-1-1-1\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"More Options For Querying DNS From R with 1.1.1.1 - rud.is\" \/>\n<meta property=\"og:description\" content=\"You have to have been living under a rock to not know about Cloudflare&#8217;s new 1.1.1.1 DNS offering. I won&#8217;t go into &#8220;privacy&#8221;, &#8220;security&#8221; or &#8220;speed&#8221; concepts in this post since that&#8217;s a pretty huge topic to distill for folks given the, now, plethora of confusing (and pretty technical) options that exist to support one [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/rud.is\/b\/2018\/04\/01\/more-options-for-querying-dns-from-r-with-1-1-1-1\/\" \/>\n<meta property=\"og:site_name\" content=\"rud.is\" \/>\n<meta property=\"article:published_time\" content=\"2018-04-02T00:22:52+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-04-02T02:43:26+00:00\" \/>\n<meta name=\"author\" content=\"hrbrmstr\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"hrbrmstr\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/04\\\/01\\\/more-options-for-querying-dns-from-r-with-1-1-1-1\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/04\\\/01\\\/more-options-for-querying-dns-from-r-with-1-1-1-1\\\/\"},\"author\":{\"name\":\"hrbrmstr\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\"},\"headline\":\"More Options For Querying DNS From R with 1.1.1.1\",\"datePublished\":\"2018-04-02T00:22:52+00:00\",\"dateModified\":\"2018-04-02T02:43:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/04\\\/01\\\/more-options-for-querying-dns-from-r-with-1-1-1-1\\\/\"},\"wordCount\":309,\"commentCount\":3,\"publisher\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\"},\"keywords\":[\"DNS over HTTPS\"],\"articleSection\":[\"DNS\",\"R\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/04\\\/01\\\/more-options-for-querying-dns-from-r-with-1-1-1-1\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/04\\\/01\\\/more-options-for-querying-dns-from-r-with-1-1-1-1\\\/\",\"url\":\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/04\\\/01\\\/more-options-for-querying-dns-from-r-with-1-1-1-1\\\/\",\"name\":\"More Options For Querying DNS From R with 1.1.1.1 - rud.is\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#website\"},\"datePublished\":\"2018-04-02T00:22:52+00:00\",\"dateModified\":\"2018-04-02T02:43:26+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/04\\\/01\\\/more-options-for-querying-dns-from-r-with-1-1-1-1\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/04\\\/01\\\/more-options-for-querying-dns-from-r-with-1-1-1-1\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/04\\\/01\\\/more-options-for-querying-dns-from-r-with-1-1-1-1\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/rud.is\\\/b\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"More Options For Querying DNS From R with 1.1.1.1\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#website\",\"url\":\"https:\\\/\\\/rud.is\\\/b\\\/\",\"name\":\"rud.is\",\"description\":\"&quot;In God we trust. All others must bring data&quot;\",\"publisher\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/rud.is\\\/b\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\",\"name\":\"hrbrmstr\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/ukr-shield.png?fit=460%2C460&ssl=1\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/ukr-shield.png?fit=460%2C460&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/ukr-shield.png?fit=460%2C460&ssl=1\",\"width\":460,\"height\":460,\"caption\":\"hrbrmstr\"},\"logo\":{\"@id\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/ukr-shield.png?fit=460%2C460&ssl=1\"},\"description\":\"Don't look at me\u2026I do what he does \u2014 just slower. #rstats avuncular \u2022 ?Resistance Fighter \u2022 Cook \u2022 Christian \u2022 [Master] Chef des Donn\u00e9es de S\u00e9curit\u00e9 @ @rapid7\",\"sameAs\":[\"http:\\\/\\\/rud.is\"],\"url\":\"https:\\\/\\\/rud.is\\\/b\\\/author\\\/hrbrmstr\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"More Options For Querying DNS From R with 1.1.1.1 - rud.is","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:\/\/rud.is\/b\/2018\/04\/01\/more-options-for-querying-dns-from-r-with-1-1-1-1\/","og_locale":"en_US","og_type":"article","og_title":"More Options For Querying DNS From R with 1.1.1.1 - rud.is","og_description":"You have to have been living under a rock to not know about Cloudflare&#8217;s new 1.1.1.1 DNS offering. I won&#8217;t go into &#8220;privacy&#8221;, &#8220;security&#8221; or &#8220;speed&#8221; concepts in this post since that&#8217;s a pretty huge topic to distill for folks given the, now, plethora of confusing (and pretty technical) options that exist to support one [&hellip;]","og_url":"https:\/\/rud.is\/b\/2018\/04\/01\/more-options-for-querying-dns-from-r-with-1-1-1-1\/","og_site_name":"rud.is","article_published_time":"2018-04-02T00:22:52+00:00","article_modified_time":"2018-04-02T02:43:26+00:00","author":"hrbrmstr","twitter_card":"summary_large_image","twitter_misc":{"Written by":"hrbrmstr","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/rud.is\/b\/2018\/04\/01\/more-options-for-querying-dns-from-r-with-1-1-1-1\/#article","isPartOf":{"@id":"https:\/\/rud.is\/b\/2018\/04\/01\/more-options-for-querying-dns-from-r-with-1-1-1-1\/"},"author":{"name":"hrbrmstr","@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"headline":"More Options For Querying DNS From R with 1.1.1.1","datePublished":"2018-04-02T00:22:52+00:00","dateModified":"2018-04-02T02:43:26+00:00","mainEntityOfPage":{"@id":"https:\/\/rud.is\/b\/2018\/04\/01\/more-options-for-querying-dns-from-r-with-1-1-1-1\/"},"wordCount":309,"commentCount":3,"publisher":{"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"keywords":["DNS over HTTPS"],"articleSection":["DNS","R"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/rud.is\/b\/2018\/04\/01\/more-options-for-querying-dns-from-r-with-1-1-1-1\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/rud.is\/b\/2018\/04\/01\/more-options-for-querying-dns-from-r-with-1-1-1-1\/","url":"https:\/\/rud.is\/b\/2018\/04\/01\/more-options-for-querying-dns-from-r-with-1-1-1-1\/","name":"More Options For Querying DNS From R with 1.1.1.1 - rud.is","isPartOf":{"@id":"https:\/\/rud.is\/b\/#website"},"datePublished":"2018-04-02T00:22:52+00:00","dateModified":"2018-04-02T02:43:26+00:00","breadcrumb":{"@id":"https:\/\/rud.is\/b\/2018\/04\/01\/more-options-for-querying-dns-from-r-with-1-1-1-1\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/rud.is\/b\/2018\/04\/01\/more-options-for-querying-dns-from-r-with-1-1-1-1\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/rud.is\/b\/2018\/04\/01\/more-options-for-querying-dns-from-r-with-1-1-1-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/rud.is\/b\/"},{"@type":"ListItem","position":2,"name":"More Options For Querying DNS From R with 1.1.1.1"}]},{"@type":"WebSite","@id":"https:\/\/rud.is\/b\/#website","url":"https:\/\/rud.is\/b\/","name":"rud.is","description":"&quot;In God we trust. All others must bring data&quot;","publisher":{"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/rud.is\/b\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886","name":"hrbrmstr","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","contentUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","width":460,"height":460,"caption":"hrbrmstr"},"logo":{"@id":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1"},"description":"Don't look at me\u2026I do what he does \u2014 just slower. #rstats avuncular \u2022 ?Resistance Fighter \u2022 Cook \u2022 Christian \u2022 [Master] Chef des Donn\u00e9es de S\u00e9curit\u00e9 @ @rapid7","sameAs":["http:\/\/rud.is"],"url":"https:\/\/rud.is\/b\/author\/hrbrmstr\/"}]}},"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p23idr-2ro","jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":9392,"url":"https:\/\/rud.is\/b\/2018\/04\/02\/nykolas-z-updates-global-alternative-dns-speed-test-to-include-cloudflare-1-1-1-1\/","url_meta":{"origin":9386,"position":0},"title":"Nykolas Z Updates Global Alternative DNS Speed Test to Include Cloudflare (1.1.1.1)","author":"hrbrmstr","date":"2018-04-02","format":false,"excerpt":"A while back, Medium blogger 'Nykolas Z' posted results from a globally distributed DNS resolver test to find the speediest provider (NOTE: speed is not the only consideration when choosing an alternative DNS provider). While the test methodology is not provided (the \"scientific method\" has yet to fully penetrate \"cyber\")\u2026","rel":"","context":"In &quot;DNS&quot;","block_context":{"text":"DNS","link":"https:\/\/rud.is\/b\/category\/dns\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/04\/cf-speed.png?fit=1200%2C663&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/04\/cf-speed.png?fit=1200%2C663&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/04\/cf-speed.png?fit=1200%2C663&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/04\/cf-speed.png?fit=1200%2C663&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/04\/cf-speed.png?fit=1200%2C663&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":12225,"url":"https:\/\/rud.is\/b\/2019\/05\/26\/two-new-ways-to-make-dns-over-https-queries-in-r\/","url_meta":{"origin":9386,"position":1},"title":"Two New Ways to Make DNS over HTTPS Queries in R","author":"hrbrmstr","date":"2019-05-26","format":false,"excerpt":"A fair bit of time ago the {gdns} package made its way to CRAN to give R users the ability to use Google's (at that time) nascent support for DNS over HTTPS (DoH). A bit later on Cloudflare also provided a global DoH endpoint and that begat the (not-on-CRAN) {dnsflare}\u2026","rel":"","context":"In &quot;DNS&quot;","block_context":{"text":"DNS","link":"https:\/\/rud.is\/b\/category\/dns\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2564,"url":"https:\/\/rud.is\/b\/2013\/08\/12\/reverse-ip-address-lookups-with-r-from-simple-to-bulkasynchronous\/","url_meta":{"origin":9386,"position":2},"title":"Reverse IP Address Lookups With R (From Simple To Bulk\/Asynchronous)","author":"hrbrmstr","date":"2013-08-12","format":false,"excerpt":"R lacks some of the more \"utilitarian\" features found in other scripting languages that were\/are more geared\u2014at least initially\u2014towards systems administration. One of the most frustrating missing pieces for security data scientists is the lack of ability to perform basic IP address manipulations, including reverse DNS resolution (even though it\u2026","rel":"","context":"In &quot;Data Analysis&quot;","block_context":{"text":"Data Analysis","link":"https:\/\/rud.is\/b\/category\/data-analysis-2\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":11746,"url":"https:\/\/rud.is\/b\/2019\/01\/10\/waffle-geoms-other-miscellaneous-in-development-package-updates\/","url_meta":{"origin":9386,"position":3},"title":"Waffle Geoms &#038; Other Miscellaneous In-Development Package Updates","author":"hrbrmstr","date":"2019-01-10","format":false,"excerpt":"More than just sergeant has been hacked on recently, so here's a run-down of various ? updates: waffle The square pie chart generating waffle? package now contains a nascent geom_waffle() so you can do things like this: library(hrbrthemes) library(waffle) library(tidyverse) tibble( parts = factor(rep(month.abb[1:3], 3), levels=month.abb[1:3]), values = c(10, 20,\u2026","rel":"","context":"In &quot;R&quot;","block_context":{"text":"R","link":"https:\/\/rud.is\/b\/category\/r\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/fwg.png?fit=900%2C1200&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/fwg.png?fit=900%2C1200&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/fwg.png?fit=900%2C1200&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/fwg.png?fit=900%2C1200&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":11775,"url":"https:\/\/rud.is\/b\/2019\/01\/21\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\/","url_meta":{"origin":9386,"position":4},"title":"hrbrthemes 0.6.0 on CRAN + Other In-Development Package News","author":"hrbrmstr","date":"2019-01-21","format":false,"excerpt":"Version 0.6.0 of the hrbrthemes? package should be hitting a CRAN mirror near you soon. Apart from some general documentation and code cleanup this release includes the dark theme folks have been seeing in blog posts and tweets over the past few months. It's called theme_ft_rc() since it is an\u2026","rel":"","context":"In &quot;maine&quot;","block_context":{"text":"maine","link":"https:\/\/rud.is\/b\/category\/maine\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/nc-idc-coverage.png?fit=1200%2C456&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/nc-idc-coverage.png?fit=1200%2C456&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/nc-idc-coverage.png?fit=1200%2C456&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/nc-idc-coverage.png?fit=1200%2C456&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/nc-idc-coverage.png?fit=1200%2C456&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":13717,"url":"https:\/\/rud.is\/b\/2023\/02\/27\/bizarre-dns-hacks-for-fun-and-um-fun\/","url_meta":{"origin":9386,"position":5},"title":"&#8220;Bizarre&#8221; DNS Hacks For Fun And,  Um\u2026, Fun","author":"hrbrmstr","date":"2023-02-27","format":false,"excerpt":"I've been (slowly) making my way through FOSDEM `23 presentations and caught up to Peter Lowe's \"Bizarre and Unusual Uses of DNS \u2022 Rule 53: If you can think of it, someone's done it in the DNS\" talk. DNS oddities are items I collect whenever I see them, and while\u2026","rel":"","context":"In &quot;DNS&quot;","block_context":{"text":"DNS","link":"https:\/\/rud.is\/b\/category\/dns\/"},"img":{"alt_text":"silhouette of a couple with \"It\u2026It was DNS\" over them","src":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/02\/2069959_1.jpg?fit=630%2C630&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/02\/2069959_1.jpg?fit=630%2C630&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/02\/2069959_1.jpg?fit=630%2C630&ssl=1&resize=525%2C300 1.5x"},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/9386","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/comments?post=9386"}],"version-history":[{"count":0,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/9386\/revisions"}],"wp:attachment":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/media?parent=9386"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/categories?post=9386"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/tags?post=9386"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}