

{"id":11775,"date":"2019-01-21T11:47:58","date_gmt":"2019-01-21T16:47:58","guid":{"rendered":"https:\/\/rud.is\/b\/?p=11775"},"modified":"2019-01-21T17:27:26","modified_gmt":"2019-01-21T22:27:26","slug":"hrbrthemes-0-6-0-on-cran-other-in-development-package-news","status":"publish","type":"post","link":"https:\/\/rud.is\/b\/2019\/01\/21\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\/","title":{"rendered":"hrbrthemes 0.6.0 on CRAN + Other In-Development Package News"},"content":{"rendered":"<p>Version 0.6.0 of the <a href=\"https:\/\/git.sr.ht\/~hrbrmstr\/hrbrthemes\"><code>hrbrthemes<\/code>?<\/a> 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&#8217;s called <code>theme_ft_rc()<\/code> since it is an homage to the wonderful new chart theme developed by the @ft_data crew over at the Financial Times (you can see examples from their work <a href=\"https:\/\/twitter.com\/ftdata?lang=en\">here<\/a>).<\/p>\n<p>While there was nothing stopping folks from using the GitHub version, the CRAN release makes it more widely available. There are still intermittent issues with fonts for some folks which I&#8217;ll be working on for the next release.<\/p>\n<p>Since you&#8217;ve already seen lots of examples of these charts I won&#8217;t just make a gratuitous example using the theme. I <em>will<\/em>, however, make some charts based on a new data package dubbed <a href=\"https:\/\/github.com\/hrbrmstr\/iceout\"><code>iceout<\/code>?<\/a>. The <code>iceout<\/code> package was originally conceived by Ben Tupper from the <a href=\"https:\/\/www.bigelow.org\/\">Bigelow Laboratory for Ocean Sciences<\/a>. I keep an eye on fellow Mainer repositories and I did not realize (but should have known) that researches keep track of when inland bodies of water freeze and thaw. The package name is derived from the term used for the thaw measurements (&#8220;ice-out&#8221; or &#8220;ice-off&#8221;).<\/p>\n<p>Before becoming obsessed with this data and getting the package to the current state it is in, the original codebase worked off of a USGS <a href=\"https:\/\/me.water.usgs.gov\/iceout.html\">Lake Ice-Out Data for New England<\/a> dataset that focused solely on New England and only went up to 2005. Some digging discovered that<\/p>\n<ul>\n<li>Maine&#8217;s Department of Agriculture and Forestry <a href=\"https:\/\/www.maine.gov\/dacf\/parks\/water_activities\/boating\/ice_out06.shtml\">maintains<\/a> online records since 2003; and,<\/li>\n<li>Minnesota&#8217;s Department of Natural Resources  <a href=\"https:\/\/www.dnr.state.mn.us\/ice_out\/index.html?year=1843\">maintains<\/a> a comprehensive database of records going back to the 1800&#8217;s.<\/li>\n<\/ul>\n<p><em>But<\/em> I hit the jackpot after discovering the U.S. National Snow &amp; Ice Data Center&#8217;s <a href=\"http:\/\/nsidc.org\/data\/lake_river_ice\/\">Global Lake and River Ice Phenology<\/a> dataset which:<\/p>\n<div style=\"margin-left:15%; margin-right:15%; font-style:italic\">&hellip; contains freeze and breakup dates and other ice cover descriptive data for 865 lakes and rivers. Of the 542 water bodies that have records longer than 19 years, 370 are in North America and 172 are in Eurasia; 249 have records longer than 50 years; and 66 longer than 100 years. A few have data prior to 1845. These data, from water bodies distributed around the Northern Hemisphere, allow analysis of broad spatial patterns as well as long-term temporal patterns.<\/div>\n<p>So, I converted the original package to a data package containing all four of those datasets plus some interactive functions for pulling &#8220;live&#8221; data and a set of &#8220;builders&#8221; to regenerate the databases. Let&#8217;s take a quick look at what&#8217;s in the NSIDC data and the global coverage area:<\/p>\n<pre><code class=\"language-r\">library(iceout) # github\/hrbrmstr\/iceout\nlibrary(hrbrthemes) \nlibrary(ggplot2)\nlibrary(dplyr)\n\ndata(\"nsidc_iceout\")\n\nglimpse(nsidc_iceout)\n## Observations: 35,918\n## Variables: 37\n## $ lakecode                &lt;chr&gt; \"ARAI1\", \"ARAI1\", \"ARAI1\", \"ARAI1\", \"ARAI1\", \"ARAI1\", \"ARAI1\u2026\n## $ lakename                &lt;chr&gt; \"Lake Suwa\", \"Lake Suwa\", \"Lake Suwa\", \"Lake Suwa\", \"Lake Su\u2026\n## $ lakeorriver             &lt;chr&gt; \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \u2026\n## $ season                  &lt;chr&gt; \"1443-44\", \"1444-45\", \"1445-46\", \"1446-47\", \"1447-48\", \"1448\u2026\n## $ iceon_year              &lt;dbl&gt; 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, \u2026\n## $ iceon_month             &lt;dbl&gt; 12, 11, 12, 12, 11, 12, 12, 12, 12, 11, 12, 12, 12, 12, 12, \u2026\n## $ iceon_day               &lt;dbl&gt; 8, 23, 1, 2, 30, 8, 13, 8, 23, 28, 3, 5, 1, 5, 6, 20, 10, 15\u2026\n## $ iceoff_year             &lt;dbl&gt; NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, \u2026\n## $ iceoff_month            &lt;dbl&gt; NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, \u2026\n## $ iceoff_day              &lt;dbl&gt; NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, \u2026\n## $ duration                &lt;dbl&gt; NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, \u2026\n## $ latitude                &lt;dbl&gt; 36.15, 36.15, 36.15, 36.15, 36.15, 36.15, 36.15, 36.15, 36.1\u2026\n## $ longitude               &lt;dbl&gt; 138.08, 138.08, 138.08, 138.08, 138.08, 138.08, 138.08, 138.\u2026\n## $ country                 &lt;chr&gt; \"Japan\", \"Japan\", \"Japan\", \"Japan\", \"Japan\", \"Japan\", \"Japan\u2026\n## $ froze                   &lt;lgl&gt; TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, \u2026\n## $ obs_comments            &lt;chr&gt; \"calendar correction for ice_on: -30 days of original data; \u2026\n## $ area_drained            &lt;dbl&gt; 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, \u2026\n## $ bow_comments            &lt;chr&gt; NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, \u2026\n## $ conductivity_us         &lt;dbl&gt; NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, \u2026\n## $ elevation               &lt;dbl&gt; 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, \u2026\n## $ filename                &lt;chr&gt; \"ARAI\", \"ARAI\", \"ARAI\", \"ARAI\", \"ARAI\", \"ARAI\", \"ARAI\", \"ARA\u2026\n## $ initials                &lt;chr&gt; \"ARAI\", \"ARAI\", \"ARAI\", \"ARAI\", \"ARAI\", \"ARAI\", \"ARAI\", \"ARA\u2026\n## $ inlet_streams           &lt;chr&gt; \"-\", \"-\", \"-\", \"-\", \"-\", \"-\", \"-\", \"-\", \"-\", \"-\", \"-\", \"-\", \u2026\n## $ landuse_code            &lt;chr&gt; \"UAFO\", \"UAFO\", \"UAFO\", \"UAFO\", \"UAFO\", \"UAFO\", \"UAFO\", \"UAF\u2026\n## $ largest_city_population &lt;dbl&gt; 52000, 52000, 52000, 52000, 52000, 52000, 52000, 52000, 5200\u2026\n## $ max_depth               &lt;dbl&gt; 7.6, 7.6, 7.6, 7.6, 7.6, 7.6, 7.6, 7.6, 7.6, 7.6, 7.6, 7.6, \u2026\n## $ mean_depth              &lt;dbl&gt; 4.7, 4.7, 4.7, 4.7, 4.7, 4.7, 4.7, 4.7, 4.7, 4.7, 4.7, 4.7, \u2026\n## $ median_depth            &lt;dbl&gt; NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, \u2026\n## $ power_plant_discharge   &lt;lgl&gt; NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, \u2026\n## $ secchi_depth            &lt;dbl&gt; NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, \u2026\n## $ shoreline               &lt;dbl&gt; 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, \u2026\n## $ surface_area            &lt;dbl&gt; 12.9, 12.9, 12.9, 12.9, 12.9, 12.9, 12.9, 12.9, 12.9, 12.9, \u2026\n## $ state                   &lt;chr&gt; \"Nagano Prefecture\", \"Nagano Prefecture\", \"Nagano Prefecture\u2026\n## $ iceon_date              &lt;date&gt; 1443-12-08, 1444-11-23, 1445-12-01, 1446-12-02, 1447-11-30,\u2026\n## $ iceon_doy               &lt;dbl&gt; 342, 328, 335, 336, 334, 343, 347, 342, 357, 333, 337, 339, \u2026\n## $ iceout_date             &lt;date&gt; NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,\u2026\n## $ iceout_doy              &lt;dbl&gt; NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, \u2026\n\nmaps::map(\"world\", \".\", exact = FALSE, plot = FALSE, fill = TRUE) %&gt;%\n  fortify() -&gt; wrld\n\nggplot() + \n  ggalt::geom_cartogram(\n    data = wrld, map = wrld, aes(long, lat, map_id=region), \n    fill=\"#3B454A\",  color = \"white\", size = 0.125\n  ) +\n  geom_point(\n    data = distinct(nsidc_iceout, lakeorriver, longitude, latitude),\n    aes(longitude, latitude, fill = lakeorriver), \n    size = 1.5, color = \"#2b2b2b\", stroke = 0.125, shape = 21\n  ) +\n  scale_fill_manual(\n    name = NULL, values = c(\"L\"=\"#fdbf6f\", \"R\"=\"#1f78b4\"), labels=c(\"L\" = \"Lake\", \"R\" = \"River\")\n  ) +\n  ggalt::coord_proj(\"+proj=wintri\", ylim = range(nsidc_iceout$latitude, na.rm = TRUE)) +\n  labs(title = \"NSIDC Dataset Coverage\") +\n  theme_ft_rc(grid=\"\") +\n  theme(legend.position = c(0.375, 0.1)) +\n  theme(axis.text = element_blank(), axis.title = element_blank())\n<\/code><\/pre>\n<p><a href=\"https:\/\/rud.is\/b\/2019\/01\/21\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\/nc-idc-coverage\/\" rel=\"attachment wp-att-11780\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"11780\" data-permalink=\"https:\/\/rud.is\/b\/2019\/01\/21\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\/nc-idc-coverage\/\" data-orig-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/nc-idc-coverage.png?fit=2516%2C956&amp;ssl=1\" data-orig-size=\"2516,956\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"nc-idc-coverage\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/nc-idc-coverage.png?fit=510%2C194&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/nc-idc-coverage.png?resize=510%2C194&#038;ssl=1\" alt=\"\" width=\"510\" height=\"194\" class=\"aligncenter size-full wp-image-11780\" \/><\/a><\/p>\n<p>W00t! Lots of data (though not all of the extra features are populated for all readings\/areas)!<\/p>\n<p>I think the reason the ice-out data garnered my obsession was how it can be used as another indicator that we are indeed in the midst of a climate transformation. Let&#8217;s look at the historical ice-out information for Maine inland bodies of water:<\/p>\n<pre><code class=\"language-r\">filter(nsidc_iceout, country == \"United States\", state == \"ME\") %&gt;% \n  mutate(iceout_date = as.Date(format(iceout_date, \"2020-%m-%d\"))) %&gt;% # we want the Y axis formatted as month-day so we choose a leap year to ensure we get leap dates (if any)\n  ggplot(aes(iceoff_year, iceout_date)) +\n  geom_point(aes(color = lakename), size = 0.5, alpha=1\/4) +\n  geom_smooth(aes(color = lakename), se=FALSE, method = \"loess\", size=0.25) +\n  scale_y_date(date_labels = \"%b-%d\") +\n  labs(\n    x = NULL, y = \"Ice-out Month\/Day\", color = NULL,\n    title = \"Historical Ice-out Data\/Trends for Maine Inland Bodies of Water\"\n  ) +\n  theme_ft_rc(grid=\"XY\")\n<\/code><\/pre>\n<p><a href=\"https:\/\/rud.is\/b\/2019\/01\/21\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\/me-inland\/\" rel=\"attachment wp-att-11783\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"11783\" data-permalink=\"https:\/\/rud.is\/b\/2019\/01\/21\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\/me-inland\/\" data-orig-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/me-inland.png?fit=2070%2C1488&amp;ssl=1\" data-orig-size=\"2070,1488\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"me-inland\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/me-inland.png?fit=510%2C367&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/me-inland.png?resize=510%2C367&#038;ssl=1\" alt=\"\" width=\"510\" height=\"367\" class=\"aligncenter size-full wp-image-11783\" \/><\/a><\/p>\n<p>You can follow that code-pattern to look at other states. It&#8217;s also fun to look at the ice-out date distributions by latitude grouping:<\/p>\n<pre><code class=\"language-r\">filter(nsidc_iceout, !is.na(latitude) &amp; !is.na(longitude) &amp; !is.na(iceout_date)) %&gt;% \n  filter(country == \"United States\") %&gt;% \n  mutate(iceout_date = as.Date(format(iceout_date, \"2020-%m-%d\"))) %&gt;% \n  mutate(lat_grp = cut(latitude, scales::pretty_breaks(5)(latitude), ordered_result = TRUE)) %&gt;% \n  arrange(desc(iceoff_year)) %&gt;% \n  ggplot() +\n  ggbeeswarm::geom_quasirandom(\n    aes(lat_grp, iceout_date, fill = iceoff_year), groupOnX = TRUE, \n    shape = 21, size =1, color = \"white\", stroke = 0.125, alpha=1\/2\n  ) +\n  scale_y_date(date_labels = \"%b-%d\") +\n  viridis::scale_fill_viridis(name = \"Year\", option = \"magma\") +\n  labs(\n    x = \"Latitude Grouping\", y = \"Ice-out Month\/Day\",\n    title = \"U.S. Ice-out Historical Day\/Month Distributions by Latitude Grouping\"\n  ) +\n  theme_ft_rc(grid=\"Y\")\n<\/code><\/pre>\n<p><a href=\"https:\/\/rud.is\/b\/2019\/01\/21\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\/lat-grp\/\" rel=\"attachment wp-att-11785\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"11785\" data-permalink=\"https:\/\/rud.is\/b\/2019\/01\/21\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\/lat-grp\/\" data-orig-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/lat-grp.png?fit=1772%2C1488&amp;ssl=1\" data-orig-size=\"1772,1488\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"lat-grp\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/lat-grp.png?fit=510%2C428&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/lat-grp.png?resize=510%2C428&#038;ssl=1\" alt=\"\" width=\"510\" height=\"428\" class=\"aligncenter size-full wp-image-11785\" \/><\/a><\/p>\n<p>If you want to focus on individual lakes there&#8217;s a Shiny app for that (well one for the U.S. anyway).<\/p>\n<p>After loading the package, just enter <code>explore_us()<\/code> at an R console and you&#8217;ll see something like this:<\/p>\n<p><a href=\"https:\/\/rud.is\/b\/2019\/01\/21\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\/explore-us-shiny-02\/\" rel=\"attachment wp-att-11791\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"11791\" data-permalink=\"https:\/\/rud.is\/b\/2019\/01\/21\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\/explore-us-shiny-02\/\" data-orig-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/explore-us-shiny-02.png?fit=1794%2C1560&amp;ssl=1\" data-orig-size=\"1794,1560\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"explore-us-shiny-02\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/explore-us-shiny-02.png?fit=510%2C443&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/explore-us-shiny-02.png?resize=510%2C443&#038;ssl=1\" alt=\"\" width=\"510\" height=\"443\" class=\"aligncenter size-full wp-image-11791\" \/><\/a><\/p>\n<p>The leaflet view will zoom to each new lake selected and the graph will be updated as well.<\/p>\n<h3>Other Package News<\/h3>\n<p>The <a href=\"https:\/\/git.sr.ht\/~hrbrmstr\/sergeant\"><code>sergeant<\/code>?<\/a> package is reaching a stable point in the 0.8.0 branch (mostly due to David Severski&#8217;s tireless help finding bugs ?) and should be headed to CRAN soon. Get your issues or PRs in if you want them CRANdied.<\/p>\n<p>I&#8217;ve <em>finally<\/em> updated the Java library dependencies in <a href=\"https:\/\/git.sr.ht\/~hrbrmstr\/pdfboxjars\"><code>pdfboxjars<\/code>?<\/a> so <a href=\"https:\/\/git.sr.ht\/~hrbrmstr\/pdfbox\"><code>pdfbox<\/code>?<\/a> will no longer cause GitHub to tell you or I that it is insecure.<\/p>\n<p>There&#8217;s a new package dubbed <a href=\"https:\/\/git.sr.ht\/~hrbrmstr\/reapr\"><code>reapr<\/code>?<\/a> that is aimed somewhere at the intersection of <code>curl<\/code> + <code>httr<\/code> + <code>rvest<\/code>. Fundamentally, it provides some coder-uplift when scraping data. The README has examples but here&#8217;s what you get on an initial scrape of this blog&#8217;s index page:<\/p>\n<pre><code class=\"language-r\">reapr::reap_url(\"http:\/\/rud.is\/b\")\n##                Title: rud.is | \"In God we trust. All others must bring data\"\n##         Original URL: http:\/\/rud.is\/b\n##            Final URL: https:\/\/rud.is\/b\/\n##           Crawl-Date: 2019-01-17 19:51:09\n##               Status: 200\n##         Content-Type: text\/html; charset=UTF-8\n##                 Size: 50 kB\n##           IP Address: 104.236.112.222\n##                 Tags: body[1], center[1], form[1], h2[1], head[1], hgroup[1], html[1],\n##                       label[1], noscript[1], section[1], title[1],\n##                       aside[2], nav[2], ul[2], style[5], img[6],\n##                       input[6], article[8], time[8], footer[9], h1[9],\n##                       header[9], p[10], li[19], meta[20], div[31],\n##                       script[40], span[49], link[53], a[94]\n##           # Comments: 17\n##   Total Request Time: 2.093s\n<\/code><\/pre>\n<p>The <code>reap_url()<\/code> function:<\/p>\n<ul>\n<li>Uses <code>httr::GET()<\/code> to make web connections and retrieve content which enables it to behave more like an actual (non-javascript-enabled) browser. You can pass anything <code>httr::GET()<\/code> can handle to <code>...<\/code> (e.g. <code>httr::user_agent()<\/code>) to have as much granular control over the interaction as possible. <\/li>\n<li>Returns a richer set of data. After the <code>httr::response<\/code> object is  obtained many tasks are performed including:\n<ul>\n<li>timestamping of the URL crawl<\/li>\n<li>extraction of the asked-for URL and the final URL (in the case<br \/>\nof redirects)<\/li>\n<li>extraction of the IP address of the target server<\/li>\n<li>extraction of both plaintext and parsed (<code>xml_document<\/code>) HTML<\/li>\n<li>extraction of the plaintext webpage <code>&lt;title&gt;<\/code> (if any)<\/li>\n<li>generation of a dynamic list tags in the document which can be<br \/>\nfed directly to HTML\/XML search\/retrieval function (which may<br \/>\nspeed up node discovery)<\/li>\n<li>extraction of the text of all comments in the HTML document<\/li>\n<li>inclusion of the full <code>httr::response<\/code> object with the returned<br \/>\nobject<\/li>\n<li>extraction of the time it took to make the complete request<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>I&#8217;m still wrestling with the API so definitely file issues with suggestions (wherever you&#8217;re most comfortable socially coding).<\/p>\n<p>Speaking of IP addresses (bullet 3 above), I finally got some time to study the <a href=\"https:\/\/getdnsapi.net\/\"><code>gdns<\/code>?<\/a> C library (a modern DNS API library) and created the <a href=\"https:\/\/git.sr.ht\/~hrbrmstr\/clandnstine\"><code>clandnstine<\/code>?<\/a> package. The package name jeu de mots is due to the fact that the intent is to have it solely support <a href=\"https:\/\/en.wikipedia.org\/wiki\/DNS_over_TLS\">DNS over TLS<\/a> requests since regular DNS is plaintext, enables ISP spying\/injection and generally fraught with peril. All forms of DNS lookups are supported. The catch is that you have to point it at a DNS over TLS-capable resolver. The package defaults to Quad9 (9.9.9.9) because I trust them more than Google or Cloudflare (btw: that&#8217;s not saying much as I trust used car salesfolks more than all three of them). Keep an eye (or RSS reader) peeled on <a href=\"https:\/\/blog.rapid7.com\/\">$WORK blog<\/a> over the coming weeks as I&#8217;ll have some analysis and data on a few hundred DNS over TLS endpoints you can use thanks to a new study developed by cow-orkers Jon Hart and Shan Skidar.<\/p>\n<p>There also a toy package <a href=\"https:\/\/git.sr.ht\/~hrbrmstr\/forcequotes\"><code>forecequotes<\/code>?<\/a> that is more &#8220;have fun with the <code>cli<\/code> &amp; <code>crayon<\/code> packages&#8221; than anything else. But if you like Star Wars, random quote APIs and want to integrate richer command line interface output into your work, then definitely give it a peek.<\/p>\n<p>Finally, I haven&#8217;t used R&#8217;s direct C interface in a while (since Rcpp is addictive and handy) and wanted to keep those skills fresh, so I made a <a href=\"https:\/\/git.sr.ht\/~hrbrmstr\/iptrie\">wrapper<\/a> to an old (in internet years) <a href=\"https:\/\/github.com\/zmap\/iptree\">IP address trie C library<\/a>. The underlying library is much slower than what we use in <code>iptools<\/code> but it works, does a bit more than its <code>iptoos<\/code> counterpart and covers data marshaling, external pointer handling, and attribute\/class setting so it may be a half-decent reference package for using the R<->C bridge.<\/p>\n<h3>FIN<\/h3>\n<p>If you know of more\/better ice-out data please drop an issue in the Bigelow Labs&#8217; <code>iceout<\/code> repo and I&#8217;ll get it integrated. And, if you do your own ice-out exploration definitely blog about it, tell R Weekly and drop a note in the comments.<\/p>\n<p>Here are links to all the mentioned packages grouped by social coding platform (so you can interact\/collaborate wherever you feel most comfortable working):<\/p>\n<p><strong>sr.ht<\/strong><\/p>\n<ul>\n<li><a href=\"https:\/\/git.sr.ht\/~hrbrmstr\/hrbrthemes\">hrbrthemes<\/a><\/li>\n<li><a href=\"https:\/\/git.sr.ht\/~hrbrmstr\/sergeant\">sergeant<\/a><\/li>\n<li><a href=\"https:\/\/git.sr.ht\/~hrbrmstr\/pdfboxjars\">pdfboxjars<\/a><\/li>\n<li><a href=\"https:\/\/git.sr.ht\/~hrbrmstr\/pdfbox\">pdfbox<\/a><\/li>\n<li><a href=\"https:\/\/git.sr.ht\/~hrbrmstr\/reapr\">reapr<\/a><\/li>\n<li><a href=\"https:\/\/git.sr.ht\/~hrbrmstr\/forcequotes\">forcequotes<\/a><\/li>\n<li><a href=\"https:\/\/git.sr.ht\/~hrbrmstr\/iptrie\">iptrie<\/a><\/li>\n<\/ul>\n<p><strong>GitLab<\/strong><\/p>\n<ul>\n<li><a href=\"https:\/\/gitlab.com\/hrbrmstr\/hrbrthemes\">hrbrthemes<\/a><\/li>\n<li><a href=\"https:\/\/gitlab.com\/hrbrmstr\/sergeant\">sergeant<\/a><\/li>\n<li><a href=\"https:\/\/gitlab.com\/hrbrmstr\/pdfboxjars\">pdfboxjars<\/a><\/li>\n<li><a href=\"https:\/\/gitlab.com\/hrbrmstr\/pdfbox\">pdfbox<\/a><\/li>\n<li><a href=\"https:\/\/gitlab.com\/hrbrmstr\/reapr\">reapr<\/a><\/li>\n<li><a href=\"https:\/\/gitlab.com\/hrbrmstr\/forcequotes\">forcequotes<\/a><\/li>\n<li><a href=\"https:\/\/gitlab.com\/hrbrmstr\/iptrie\">iptrie<\/a><\/li>\n<\/ul>\n<p><strong>GitHub<\/strong><\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/hrbrmstr\/hrbrthemes\">hrbrthemes<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/hrbrmstr\/sergeant\">sergeant<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/hrbrmstr\/pdfboxjars\">pdfboxjars<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/hrbrmstr\/pdfbox\">pdfbox<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/hrbrmstr\/reapr\">reapr<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/hrbrmstr\/forcequotes\">forcequotes<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/hrbrmstr\/iptrie\">iptrie<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>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&#8217;s called theme_ft_rc() since it is an homage to the wonderful new [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":11780,"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":[707,91],"tags":[],"class_list":["post-11775","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-maine","category-r"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>hrbrthemes 0.6.0 on CRAN + Other In-Development Package News - 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\/2019\/01\/21\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"hrbrthemes 0.6.0 on CRAN + Other In-Development Package News - rud.is\" \/>\n<meta property=\"og:description\" content=\"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&#8217;s called theme_ft_rc() since it is an homage to the wonderful new [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/rud.is\/b\/2019\/01\/21\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\/\" \/>\n<meta property=\"og:site_name\" content=\"rud.is\" \/>\n<meta property=\"article:published_time\" content=\"2019-01-21T16:47:58+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-01-21T22:27:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/nc-idc-coverage.png?fit=2516%2C956&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"2516\" \/>\n\t<meta property=\"og:image:height\" content=\"956\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\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=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2019\\\/01\\\/21\\\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2019\\\/01\\\/21\\\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\\\/\"},\"author\":{\"name\":\"hrbrmstr\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\"},\"headline\":\"hrbrthemes 0.6.0 on CRAN + Other In-Development Package News\",\"datePublished\":\"2019-01-21T16:47:58+00:00\",\"dateModified\":\"2019-01-21T22:27:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2019\\\/01\\\/21\\\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\\\/\"},\"wordCount\":1254,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\"},\"image\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2019\\\/01\\\/21\\\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2019\\\/01\\\/nc-idc-coverage.png?fit=2516%2C956&ssl=1\",\"articleSection\":[\"maine\",\"R\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/rud.is\\\/b\\\/2019\\\/01\\\/21\\\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2019\\\/01\\\/21\\\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\\\/\",\"url\":\"https:\\\/\\\/rud.is\\\/b\\\/2019\\\/01\\\/21\\\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\\\/\",\"name\":\"hrbrthemes 0.6.0 on CRAN + Other In-Development Package News - rud.is\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2019\\\/01\\\/21\\\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2019\\\/01\\\/21\\\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2019\\\/01\\\/nc-idc-coverage.png?fit=2516%2C956&ssl=1\",\"datePublished\":\"2019-01-21T16:47:58+00:00\",\"dateModified\":\"2019-01-21T22:27:26+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2019\\\/01\\\/21\\\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/rud.is\\\/b\\\/2019\\\/01\\\/21\\\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2019\\\/01\\\/21\\\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2019\\\/01\\\/nc-idc-coverage.png?fit=2516%2C956&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2019\\\/01\\\/nc-idc-coverage.png?fit=2516%2C956&ssl=1\",\"width\":2516,\"height\":956},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2019\\\/01\\\/21\\\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/rud.is\\\/b\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"hrbrthemes 0.6.0 on CRAN + Other In-Development Package News\"}]},{\"@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":"hrbrthemes 0.6.0 on CRAN + Other In-Development Package News - 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\/2019\/01\/21\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\/","og_locale":"en_US","og_type":"article","og_title":"hrbrthemes 0.6.0 on CRAN + Other In-Development Package News - rud.is","og_description":"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&#8217;s called theme_ft_rc() since it is an homage to the wonderful new [&hellip;]","og_url":"https:\/\/rud.is\/b\/2019\/01\/21\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\/","og_site_name":"rud.is","article_published_time":"2019-01-21T16:47:58+00:00","article_modified_time":"2019-01-21T22:27:26+00:00","og_image":[{"width":2516,"height":956,"url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/nc-idc-coverage.png?fit=2516%2C956&ssl=1","type":"image\/png"}],"author":"hrbrmstr","twitter_card":"summary_large_image","twitter_misc":{"Written by":"hrbrmstr","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/rud.is\/b\/2019\/01\/21\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\/#article","isPartOf":{"@id":"https:\/\/rud.is\/b\/2019\/01\/21\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\/"},"author":{"name":"hrbrmstr","@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"headline":"hrbrthemes 0.6.0 on CRAN + Other In-Development Package News","datePublished":"2019-01-21T16:47:58+00:00","dateModified":"2019-01-21T22:27:26+00:00","mainEntityOfPage":{"@id":"https:\/\/rud.is\/b\/2019\/01\/21\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\/"},"wordCount":1254,"commentCount":2,"publisher":{"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"image":{"@id":"https:\/\/rud.is\/b\/2019\/01\/21\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/nc-idc-coverage.png?fit=2516%2C956&ssl=1","articleSection":["maine","R"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/rud.is\/b\/2019\/01\/21\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/rud.is\/b\/2019\/01\/21\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\/","url":"https:\/\/rud.is\/b\/2019\/01\/21\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\/","name":"hrbrthemes 0.6.0 on CRAN + Other In-Development Package News - rud.is","isPartOf":{"@id":"https:\/\/rud.is\/b\/#website"},"primaryImageOfPage":{"@id":"https:\/\/rud.is\/b\/2019\/01\/21\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\/#primaryimage"},"image":{"@id":"https:\/\/rud.is\/b\/2019\/01\/21\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/nc-idc-coverage.png?fit=2516%2C956&ssl=1","datePublished":"2019-01-21T16:47:58+00:00","dateModified":"2019-01-21T22:27:26+00:00","breadcrumb":{"@id":"https:\/\/rud.is\/b\/2019\/01\/21\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/rud.is\/b\/2019\/01\/21\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/rud.is\/b\/2019\/01\/21\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\/#primaryimage","url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/nc-idc-coverage.png?fit=2516%2C956&ssl=1","contentUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/nc-idc-coverage.png?fit=2516%2C956&ssl=1","width":2516,"height":956},{"@type":"BreadcrumbList","@id":"https:\/\/rud.is\/b\/2019\/01\/21\/hrbrthemes-0-6-0-on-cran-other-in-development-package-news\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/rud.is\/b\/"},{"@type":"ListItem","position":2,"name":"hrbrthemes 0.6.0 on CRAN + Other In-Development Package News"}]},{"@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":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/nc-idc-coverage.png?fit=2516%2C956&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/p23idr-33V","jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":5118,"url":"https:\/\/rud.is\/b\/2017\/02\/26\/hrbrthemes-0-1-0-is-now-on-cran\/","url_meta":{"origin":11775,"position":0},"title":"hrbrthemes 0.1.0 is now on CRAN","author":"hrbrmstr","date":"2017-02-26","format":false,"excerpt":"I'm pleased to announce the inaugural release of my hrbrthemes (0.1.0) package on CRAN The primary goal of said package is to provide opinionated typographical and other aesthetic defaults for ggplot2 charts. Two core themes are included: theme_ipsum() \u2013 an Arial Narrow-based theme theme_ipsum_rc() \u2013 a Roboto Condensed-based theme. The\u2026","rel":"","context":"In &quot;Charts &amp; Graphs&quot;","block_context":{"text":"Charts &amp; Graphs","link":"https:\/\/rud.is\/b\/category\/charts-graphs\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":11765,"url":"https:\/\/rud.is\/b\/2019\/01\/14\/splashr-0-6-0-now-uses-the-cran-nascent-stevedore-package-for-docker-orchestration\/","url_meta":{"origin":11775,"position":1},"title":"splashr 0.6.0 Now Uses the CRAN-nascent stevedore Package for Docker Orchestration","author":"hrbrmstr","date":"2019-01-14","format":false,"excerpt":"The splashr package [srht|GL|GH] \u2014 an alternative to Selenium for javascript-enabled\/browser-emulated web scraping \u2014 is now at version 0.6.0 (still in dev-mode but on its way to CRAN in the next 14 days). The major change from version 0.5.x (which never made it to CRAN) is a swap out of\u2026","rel":"","context":"In &quot;R&quot;","block_context":{"text":"R","link":"https:\/\/rud.is\/b\/category\/r\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":7138,"url":"https:\/\/rud.is\/b\/2017\/11\/16\/new-ibm-plex-sans-support-in-hrbrthemes-automating-axis-text-justification\/","url_meta":{"origin":11775,"position":2},"title":"New IBM Plex Sans Support in hrbrthemes + Automating Axis Text Justification","author":"hrbrmstr","date":"2017-11-16","format":false,"excerpt":"IBM has a new set of corporate typefaces --- dubbed \"Plex\" --- and has released them with a generous open license. IBM Plex Sans is not too shabby: (that image was grifted from a Font Squirrel preview page) The digit glyphs are especially nice for charts and the font iself\u2026","rel":"","context":"In &quot;ggplot&quot;","block_context":{"text":"ggplot","link":"https:\/\/rud.is\/b\/category\/ggplot\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/11\/README-unnamed-chunk-7-1.png?fit=1200%2C840&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/11\/README-unnamed-chunk-7-1.png?fit=1200%2C840&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/11\/README-unnamed-chunk-7-1.png?fit=1200%2C840&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/11\/README-unnamed-chunk-7-1.png?fit=1200%2C840&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/11\/README-unnamed-chunk-7-1.png?fit=1200%2C840&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":12772,"url":"https:\/\/rud.is\/b\/2020\/06\/01\/sergeant-0-9-0-is-on-its-way-to-cran-mirrors\/","url_meta":{"origin":11775,"position":3},"title":"{sergeant} 0.9.0 Is On Its Way to CRAN Mirrors!","author":"hrbrmstr","date":"2020-06-01","format":false,"excerpt":"Tis been a long time coming, but a minor change to default S3 parameters in tibbles finally caused a push of {sergeant} \u2014\u00a0the R package that lets you use the Apache Drill REST API via {DBI}, {dplyr}, or directly \u2014 to CRAN. The CRAN automatic processing system approved the release\u2026","rel":"","context":"In &quot;Apache Drill&quot;","block_context":{"text":"Apache Drill","link":"https:\/\/rud.is\/b\/category\/apache-drill\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":5050,"url":"https:\/\/rud.is\/b\/2017\/02\/15\/ggalt-0-4-0-now-on-cran\/","url_meta":{"origin":11775,"position":4},"title":"ggalt 0.4.0 now on CRAN","author":"hrbrmstr","date":"2017-02-15","format":false,"excerpt":"I'm uncontainably excited to report that the ggplot2 extension package ggalt is now on CRAN. The absolute best part of this package is the R community members who contributed suggestions and new geoms, stats, annotations and integration features. This release would not be possible without the PRs from: Ben Bolker\u2026","rel":"","context":"In &quot;ggplot&quot;","block_context":{"text":"ggplot","link":"https:\/\/rud.is\/b\/category\/ggplot\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/02\/RStudio-1.png?fit=1200%2C510&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/02\/RStudio-1.png?fit=1200%2C510&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/02\/RStudio-1.png?fit=1200%2C510&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/02\/RStudio-1.png?fit=1200%2C510&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/02\/RStudio-1.png?fit=1200%2C510&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":12004,"url":"https:\/\/rud.is\/b\/2019\/02\/28\/drat-all-the-%f0%9f%93%a6-enabling-easier-package-discovery-and-installation-with-your-own-cran-like-repo-for-your-packages\/","url_meta":{"origin":11775,"position":5},"title":"drat All The ?! : Enabling Easier Package Discovery and Installation with Your Own CRAN-like Repo for Your Packages","author":"hrbrmstr","date":"2019-02-28","format":false,"excerpt":"I've got a work-in-progress drat-ified CRAN-like repo for (eventually) all my packages over at CINC? (\"CINC is not CRAN\" and it also sounds like \"sync\"). This is in parallel with a co-location\/migration of all my packages to SourceHut (just waiting for the sr.ht alpha API to be baked) and a\u2026","rel":"","context":"In &quot;R&quot;","block_context":{"text":"R","link":"https:\/\/rud.is\/b\/category\/r\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/11775","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=11775"}],"version-history":[{"count":0,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/11775\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/media\/11780"}],"wp:attachment":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/media?parent=11775"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/categories?post=11775"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/tags?post=11775"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}