

{"id":7924,"date":"2018-01-18T09:58:44","date_gmt":"2018-01-18T14:58:44","guid":{"rendered":"https:\/\/rud.is\/b\/?p=7924"},"modified":"2018-03-07T16:50:45","modified_gmt":"2018-03-07T21:50:45","slug":"bitcoin-world-map-bubbles","status":"publish","type":"post","link":"https:\/\/rud.is\/b\/2018\/01\/18\/bitcoin-world-map-bubbles\/","title":{"rendered":"Bitcoin (World Map) Bubbles"},"content":{"rendered":"<p>We&#8217;re doing some interesting studies (cybersecurity-wise, not finance-wise) on digital currency networks at work-work and &#8212; while I&#8217;m loathe to create a geo-map from IPv4 geolocation data &#8212; we:<\/p>\n<ul>\n<li>do get (often, woefully inaccurate) latitude &amp; longitude data from our geolocation service (I won&#8217;t name-and-shame here); and, <\/li>\n<li>there <em>are<\/em> definite geo-aspects to the prevalence of mining nodes &#8212; especially Bitcoin; <em>and<\/em>, <\/li>\n<li>I <em>have<\/em> been itching to play with the nascent <a href=\"https:\/\/github.com\/arcticicestudio\/nord\">nord palette?<\/a> in a cartographical context&hellip;<\/li>\n<\/ul>\n<p>so I went on a small diversion to create a bubble plot of geographical Bitcoin node-prevalence.<\/p>\n<p>I tweeted out said image and someone asked if there was code, hence this post.<\/p>\n<p>You&#8217;ll be able to read about the methodology we used to capture the Bitcoin node data that underpins the map below later this year. For now, all I can say is that wasn&#8217;t garnered from joining the network-proper.<\/p>\n<p>I&#8217;m including the geo-data in the <a href=\"https:\/\/gist.github.com\/hrbrmstr\/0303ba204e3f56def4daa261db340135\">gist?<\/a>, but not the other data elements (you can easily find Bitcoin node data out on the internets from various free APIs and our data is on par with them).<\/p>\n<p>I&#8217;m using <a href=\"https:\/\/github.com\/hrbrmstr\/swatches\"><code>swatches<\/code>?<\/a> for the nord palette since I was hand-picking colors, but you should use @jakekaupp&#8217;s most excellent <a href=\"https:\/\/github.com\/jkaupp\/nord\"><code>nord<\/code> package?<\/a> if you want to use the various palettes more regularly.<\/p>\n<p>I&#8217;ve blathered a bit about nord, so let&#8217;s start with that (and include the various other packages we&#8217;ll use later on):<\/p>\n<pre id=\"nord-bitcoin-01\"><code class=\"language-r\">library(swatches)\r\nlibrary(ggalt) # devtools::install_github(&quot;hrbrmstr\/ggalt&quot;)\r\nlibrary(hrbrthemes) # devtools::install_github(&quot;hrbrmstr\/hrbrthemes&quot;)\r\nlibrary(tidyverse)\r\n\r\nnord &lt;- read_palette(&quot;nord.ase&quot;)\r\n\r\nshow_palette(nord)<\/code><\/pre>\n<p><a href=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/01\/nord-palette.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"7969\" data-permalink=\"https:\/\/rud.is\/b\/2018\/01\/18\/bitcoin-world-map-bubbles\/nord-palette\/\" data-orig-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/01\/nord-palette.png?fit=1774%2C640&amp;ssl=1\" data-orig-size=\"1774,640\" 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=\"nord-palette\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/01\/nord-palette.png?fit=510%2C184&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/01\/nord-palette.png?resize=510%2C184&#038;ssl=1\" alt=\"\" width=\"510\" height=\"184\" class=\"aligncenter size-full wp-image-7969\" \/><\/a><\/p>\n<p>It may not be a perfect palette (accounting for all forms of vision issues and other technical details) but it was designed very well (IMO).<\/p>\n<p>The rest is pretty straightforward:<\/p>\n<ul>\n<li>read in the bitcoin geo-data<\/li>\n<li>count up by lat\/lng<\/li>\n<li>figure out which colors to use (that took a bit of trial-and-error)<\/li>\n<li>tweak the rest of the ggplot2 canvas styling (that took a wee bit longer)<\/li>\n<\/ul>\n<p>I&#8217;m using development versions of two packages due to their added functionality not being on CRAN (yet). If you&#8217;d rather not use a dev-version of <code>hrbrthemes<\/code> just use a different <code>ipsum<\/code> theme vs the new <code>theme_ipsum_tw()<\/code>.<\/p>\n<pre id=\"nord-bitcoin-02\"><code class=\"language-r\">read_csv(&quot;bitc.csv&quot;) %&gt;%\r\n  count(lng, lat, sort = TRUE) -&gt; bubbles_df\r\n\r\nworld &lt;- map_data(&quot;world&quot;)\r\nworld &lt;- world[world$region != &quot;Antarctica&quot;, ]\r\n\r\nggplot() +\r\n  geom_cartogram(\r\n    data = world, map = world,\r\n    aes(x = long, y = lat, map_id = region),\r\n    color = nord[&quot;nord3&quot;], fill = nord[&quot;nord0&quot;], size = 0.125\r\n  ) +\r\n  geom_point(\r\n    data = bubbles_df, aes(lng, lat, size = n), fill = nord[&quot;nord13&quot;],\r\n    shape = 21, alpha = 2\/3, stroke = 0.25, color = &quot;#2b2b2b&quot;\r\n  ) +\r\n  coord_proj(&quot;+proj=wintri&quot;) +\r\n  scale_size_area(name = &quot;Node count&quot;, max_size = 20, labels = scales::comma) +\r\n  labs(\r\n    x = NULL, y = NULL,\r\n    title = &quot;Bitcoin Network Geographic Distribution (all node types)&quot;,\r\n    subtitle = &quot;(Using bubbles seemed appropriate for some, odd reason)&quot;,\r\n    caption = &quot;Source: Rapid7 Project Sonar&quot;\r\n  ) +\r\n  theme_ipsum_tw(plot_title_size = 24, subtitle_size = 12) +\r\n  theme(plot.title = element_text(color = nord[&quot;nord14&quot;], hjust = 0.5)) +\r\n  theme(plot.subtitle = element_text(color = nord[&quot;nord14&quot;], hjust = 0.5)) +\r\n  theme(panel.grid = element_blank()) +\r\n  theme(plot.background = element_rect(fill = nord[&quot;nord3&quot;], color = nord[&quot;nord3&quot;])) +\r\n  theme(panel.background = element_rect(fill = nord[&quot;nord3&quot;], color = nord[&quot;nord3&quot;])) +\r\n  theme(legend.position = c(0.5, 0.05)) +\r\n  theme(axis.text = element_blank()) +\r\n  theme(legend.title = element_text(color = &quot;white&quot;)) +\r\n  theme(legend.text = element_text(color = &quot;white&quot;)) +\r\n  theme(legend.key = element_rect(fill = nord[&quot;nord3&quot;], color = nord[&quot;nord3&quot;])) +\r\n  theme(legend.background = element_rect(fill = nord[&quot;nord3&quot;], color = nord[&quot;nord3&quot;])) +\r\n  theme(legend.direction = &quot;horizontal&quot;)<\/code><\/pre>\n<p><a href=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/01\/map-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"7986\" data-permalink=\"https:\/\/rud.is\/b\/2018\/01\/18\/bitcoin-world-map-bubbles\/map-1\/\" data-orig-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/01\/map-1.png?fit=1920%2C1536&amp;ssl=1\" data-orig-size=\"1920,1536\" 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=\"map-1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/01\/map-1.png?fit=510%2C408&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/01\/map-1.png?resize=510%2C408&#038;ssl=1\" alt=\"\" width=\"510\" height=\"408\" class=\"aligncenter size-full wp-image-7986\" \/><\/a><\/p>\n<p>As noted, the RStudio project associated with this post in in <a href=\"https:\/\/gist.github.com\/hrbrmstr\/0303ba204e3f56def4daa261db340135\">this gist?<\/a>. Also, upon further data-inspection by @jhartftw, we&#8217;ve discovered yet-more inconsistencies in the geo-mapping service data (there are <em>way<\/em> too many nodes in Paris, for example), but the main point of the post was to mostly show and play with the nord palette.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We&#8217;re doing some interesting studies (cybersecurity-wise, not finance-wise) on digital currency networks at work-work and &#8212; while I&#8217;m loathe to create a geo-map from IPv4 geolocation data &#8212; we: do get (often, woefully inaccurate) latitude &amp; longitude data from our geolocation service (I won&#8217;t name-and-shame here); and, there are definite geo-aspects to the prevalence of [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":7986,"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":[91],"tags":[795,810],"class_list":["post-7924","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-r","tag-bitcoin","tag-post"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Bitcoin (World Map) Bubbles - 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\/01\/18\/bitcoin-world-map-bubbles\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Bitcoin (World Map) Bubbles - rud.is\" \/>\n<meta property=\"og:description\" content=\"We&#8217;re doing some interesting studies (cybersecurity-wise, not finance-wise) on digital currency networks at work-work and &#8212; while I&#8217;m loathe to create a geo-map from IPv4 geolocation data &#8212; we: do get (often, woefully inaccurate) latitude &amp; longitude data from our geolocation service (I won&#8217;t name-and-shame here); and, there are definite geo-aspects to the prevalence of [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/rud.is\/b\/2018\/01\/18\/bitcoin-world-map-bubbles\/\" \/>\n<meta property=\"og:site_name\" content=\"rud.is\" \/>\n<meta property=\"article:published_time\" content=\"2018-01-18T14:58:44+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-03-07T21:50:45+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/01\/map-1.png?fit=1920%2C1536&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1536\" \/>\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=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/01\\\/18\\\/bitcoin-world-map-bubbles\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/01\\\/18\\\/bitcoin-world-map-bubbles\\\/\"},\"author\":{\"name\":\"hrbrmstr\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\"},\"headline\":\"Bitcoin (World Map) Bubbles\",\"datePublished\":\"2018-01-18T14:58:44+00:00\",\"dateModified\":\"2018-03-07T21:50:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/01\\\/18\\\/bitcoin-world-map-bubbles\\\/\"},\"wordCount\":414,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\"},\"image\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/01\\\/18\\\/bitcoin-world-map-bubbles\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2018\\\/01\\\/map-1.png?fit=1920%2C1536&ssl=1\",\"keywords\":[\"bitcoin\",\"post\"],\"articleSection\":[\"R\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/01\\\/18\\\/bitcoin-world-map-bubbles\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/01\\\/18\\\/bitcoin-world-map-bubbles\\\/\",\"url\":\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/01\\\/18\\\/bitcoin-world-map-bubbles\\\/\",\"name\":\"Bitcoin (World Map) Bubbles - rud.is\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/01\\\/18\\\/bitcoin-world-map-bubbles\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/01\\\/18\\\/bitcoin-world-map-bubbles\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2018\\\/01\\\/map-1.png?fit=1920%2C1536&ssl=1\",\"datePublished\":\"2018-01-18T14:58:44+00:00\",\"dateModified\":\"2018-03-07T21:50:45+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/01\\\/18\\\/bitcoin-world-map-bubbles\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/01\\\/18\\\/bitcoin-world-map-bubbles\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/01\\\/18\\\/bitcoin-world-map-bubbles\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2018\\\/01\\\/map-1.png?fit=1920%2C1536&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2018\\\/01\\\/map-1.png?fit=1920%2C1536&ssl=1\",\"width\":1920,\"height\":1536},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/01\\\/18\\\/bitcoin-world-map-bubbles\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/rud.is\\\/b\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Bitcoin (World Map) Bubbles\"}]},{\"@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":"Bitcoin (World Map) Bubbles - 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\/01\/18\/bitcoin-world-map-bubbles\/","og_locale":"en_US","og_type":"article","og_title":"Bitcoin (World Map) Bubbles - rud.is","og_description":"We&#8217;re doing some interesting studies (cybersecurity-wise, not finance-wise) on digital currency networks at work-work and &#8212; while I&#8217;m loathe to create a geo-map from IPv4 geolocation data &#8212; we: do get (often, woefully inaccurate) latitude &amp; longitude data from our geolocation service (I won&#8217;t name-and-shame here); and, there are definite geo-aspects to the prevalence of [&hellip;]","og_url":"https:\/\/rud.is\/b\/2018\/01\/18\/bitcoin-world-map-bubbles\/","og_site_name":"rud.is","article_published_time":"2018-01-18T14:58:44+00:00","article_modified_time":"2018-03-07T21:50:45+00:00","og_image":[{"width":1920,"height":1536,"url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/01\/map-1.png?fit=1920%2C1536&ssl=1","type":"image\/png"}],"author":"hrbrmstr","twitter_card":"summary_large_image","twitter_misc":{"Written by":"hrbrmstr","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/rud.is\/b\/2018\/01\/18\/bitcoin-world-map-bubbles\/#article","isPartOf":{"@id":"https:\/\/rud.is\/b\/2018\/01\/18\/bitcoin-world-map-bubbles\/"},"author":{"name":"hrbrmstr","@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"headline":"Bitcoin (World Map) Bubbles","datePublished":"2018-01-18T14:58:44+00:00","dateModified":"2018-03-07T21:50:45+00:00","mainEntityOfPage":{"@id":"https:\/\/rud.is\/b\/2018\/01\/18\/bitcoin-world-map-bubbles\/"},"wordCount":414,"commentCount":0,"publisher":{"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"image":{"@id":"https:\/\/rud.is\/b\/2018\/01\/18\/bitcoin-world-map-bubbles\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/01\/map-1.png?fit=1920%2C1536&ssl=1","keywords":["bitcoin","post"],"articleSection":["R"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/rud.is\/b\/2018\/01\/18\/bitcoin-world-map-bubbles\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/rud.is\/b\/2018\/01\/18\/bitcoin-world-map-bubbles\/","url":"https:\/\/rud.is\/b\/2018\/01\/18\/bitcoin-world-map-bubbles\/","name":"Bitcoin (World Map) Bubbles - rud.is","isPartOf":{"@id":"https:\/\/rud.is\/b\/#website"},"primaryImageOfPage":{"@id":"https:\/\/rud.is\/b\/2018\/01\/18\/bitcoin-world-map-bubbles\/#primaryimage"},"image":{"@id":"https:\/\/rud.is\/b\/2018\/01\/18\/bitcoin-world-map-bubbles\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/01\/map-1.png?fit=1920%2C1536&ssl=1","datePublished":"2018-01-18T14:58:44+00:00","dateModified":"2018-03-07T21:50:45+00:00","breadcrumb":{"@id":"https:\/\/rud.is\/b\/2018\/01\/18\/bitcoin-world-map-bubbles\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/rud.is\/b\/2018\/01\/18\/bitcoin-world-map-bubbles\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/rud.is\/b\/2018\/01\/18\/bitcoin-world-map-bubbles\/#primaryimage","url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/01\/map-1.png?fit=1920%2C1536&ssl=1","contentUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/01\/map-1.png?fit=1920%2C1536&ssl=1","width":1920,"height":1536},{"@type":"BreadcrumbList","@id":"https:\/\/rud.is\/b\/2018\/01\/18\/bitcoin-world-map-bubbles\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/rud.is\/b\/"},{"@type":"ListItem","position":2,"name":"Bitcoin (World Map) Bubbles"}]},{"@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\/2018\/01\/map-1.png?fit=1920%2C1536&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/p23idr-23O","jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":5946,"url":"https:\/\/rud.is\/b\/2017\/05\/14\/r%e2%81%b6-tracking-wannacry-bitcoin-wallet-payments-with-r\/","url_meta":{"origin":7924,"position":0},"title":"R\u2076 \u2014 Tracking WannaCry Bitcoin Wallet Payments with R","author":"hrbrmstr","date":"2017-05-14","format":false,"excerpt":"If you follow me on Twitter or monitor @Rapid7's Community Blog you know I've been involved a bit in the WannaCry ransomworm triage. One thing I've been doing is making charts of the hourly contribution to the Bitcoin addresses that the current\/main attackers are using to accept ransom payments (which\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\/2017\/05\/wanna1.png?fit=1200%2C452&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/05\/wanna1.png?fit=1200%2C452&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/05\/wanna1.png?fit=1200%2C452&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/05\/wanna1.png?fit=1200%2C452&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/05\/wanna1.png?fit=1200%2C452&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":1591,"url":"https:\/\/rud.is\/b\/2012\/10\/05\/diy-zeroaccess-geoip-plots\/","url_meta":{"origin":7924,"position":1},"title":"DIY ZeroAccess GeoIP Plots","author":"hrbrmstr","date":"2012-10-05","format":false,"excerpt":"Since F-Secure was #spiffy enough to provide us with GeoIP data for mapping the scope of the ZeroAccess botnet, I thought that some aspiring infosec data scientists might want to see how to use something besides Google Maps & Google Earth to view the data. If you look at 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":3770,"url":"https:\/\/rud.is\/b\/2015\/11\/02\/an-ephemeral-update-to-daylight\/","url_meta":{"origin":7924,"position":2},"title":"An Ephemeral Update to daylight()","author":"hrbrmstr","date":"2015-11-02","format":false,"excerpt":"This occurrence of the bi-annual corruption of the space-time continuum (i.e. changing to\/from standard\/daylight time) in the U.S. caused me to make a slight change to the code [from an older post](https:\/\/rud.is\/b\/2014\/09\/23\/seeing-the-daylight-with-r\/). The `daylight()` function now auto-discovers the date and location information (via [telize](http:\/\/www.telize.com\/)) from the caller, which means all\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":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2015\/11\/RStudio.png?fit=1200%2C1088&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2015\/11\/RStudio.png?fit=1200%2C1088&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2015\/11\/RStudio.png?fit=1200%2C1088&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2015\/11\/RStudio.png?fit=1200%2C1088&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2015\/11\/RStudio.png?fit=1200%2C1088&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":3298,"url":"https:\/\/rud.is\/b\/2015\/03\/09\/new-r-package-ipapi-ipdomain-geolocation\/","url_meta":{"origin":7924,"position":3},"title":"New R Package &#8211; ipapi (IP\/Domain Geolocation)","author":"hrbrmstr","date":"2015-03-09","format":false,"excerpt":"I noticed that the @rOpenSci folks had an interface to [ip-api.com](http:\/\/ip-api.com\/) on their [ToDo](https:\/\/github.com\/ropensci\/webservices\/wiki\/ToDo) list so I whipped up a small R package to fill said gap. Their IP Geolocation API will take an IPv4, IPv6 or FQDN and kick back a ASN, lat\/lon, address and more. The [ipapi package](https:\/\/github.com\/hrbrmstr\/ipapi)\u2026","rel":"","context":"In &quot;cartography&quot;","block_context":{"text":"cartography","link":"https:\/\/rud.is\/b\/category\/cartography\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":5178,"url":"https:\/\/rud.is\/b\/2017\/03\/19\/exploring-2017-retail-store-closings-with-r\/","url_meta":{"origin":7924,"position":4},"title":"Exploring 2017 Retail Store Closings with R","author":"hrbrmstr","date":"2017-03-19","format":false,"excerpt":"A story about one of the retail chains (J.C. Penny) releasing their list of stores closing in 2017 crossed paths with my Feedly reading list today and jogged my memory that there were a number of chains closing many of their doors this year, and I wanted to see the\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\/2017\/03\/bls-1.png?fit=1200%2C1050&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/03\/bls-1.png?fit=1200%2C1050&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/03\/bls-1.png?fit=1200%2C1050&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/03\/bls-1.png?fit=1200%2C1050&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/03\/bls-1.png?fit=1200%2C1050&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":11911,"url":"https:\/\/rud.is\/b\/2019\/02\/14\/using-the-ropendata-r-package-to-access-petabytes-of-free-internet-telemetry-data-from-rapid7\/","url_meta":{"origin":7924,"position":5},"title":"Using the ropendata R Package to Access Petabytes of Free Internet Telemetry Data from Rapid7","author":"hrbrmstr","date":"2019-02-14","format":false,"excerpt":"I've got a post up over at $DAYJOB's blog on using the ropendata? package to access the ginormous and ever-increasing amount of internet telemetry (scan) data via the Rapid7 Open Data API. It's super-R-code-heavy but renders surprisingly well in Ghost (the blogging platform we use at work) and covers everything\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\/7924","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=7924"}],"version-history":[{"count":0,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/7924\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/media\/7986"}],"wp:attachment":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/media?parent=7924"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/categories?post=7924"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/tags?post=7924"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}