Archives
All the articles I've archived.
Auditing the Auditors
eMudhra's breakable keys were the symptom: one firm signs off on over half the web's live CA intermediates. A CCADB dive into CA audits and weak keys.
Adding Archivo SemiCondensed to {hrbrthemes}
A new {hrbrthemes} theme built on the semi-condensed cut of Archivo, plus humanize_duration() for putting computed time spans into chart subtitles.
From WordPress to Astro And A Fedivese Test Post
rud.is/b left WordPress after 15 years. Why I moved the blog to Astro, how I converted the legacy posts, and how an ActivityPub sidecar keeps it federated.
Citrix NetScaler ADC and Gateway bulletin: CVE-2026-88771 through CVE-2026-88778
Citrix published a security bulletin on September 27, 2026. It covers eight vulnerabilities in customer-managed NetScaler ADC and NetScaler Gateway. Two of them, CVE-2026-88771 and CVE-2026-88772, are under active exploitation. Both score…
Trump's Incredibly Stupid War Sets Up Mainers For A Brutal Winter
Maine uses more heating oil per capita than any other state, which means every global distillate shock impacts Mainers more than most other states. The chart, above, captures three major spikes and some smaller…
AttackerKB Is Shutting Down: Here's an Archive Tool
Rapid7 is sunsetting AttackerKB, and the public API goes dark on August 18, 2026 . After that, the vulnerability discussions, community assessments, and Rapid7 analysis that accumulated on the platform become a dead…
On AI Agents, Criminal Activity, And Who Is Actually Responsible
I've written and said enough times that I'm tired of OpenAI and Anthropic pulling cybersecurity out as the headline AI risk. The framing is commercially convenient, and it flattens a more complex reality — these models can break plenty of…
Your Logs Contain a Plea for Assistance In a Packet Bottle and You Likely Never Noticed It
PCAP forensics of the HMEFB worm: a self-propagating scanner with a Belarusian engineer's escape plea embedded in HTTP requests.
Unjamming the Chrome Releases Blog
For the second time in a row, a post by cr0w on Mastodon regarding the Chrome release blog appearing to not render anything resulted in me firing up lynx to show a sub-second load and render, then finally doing something a bit more…
PACT: The open web doesn't need another trust oligopoly
Cloudflare announced PACT this week — privacy-preserving tokens to separate humans from bots, backed by Google, Mozilla, Microsoft, and Shopify. The cryptography is solid. The governance model doesn't exist…
Three CVEs and the May 2026 Exploit Chain Nobody's Taking Seriously
May 2026 dropped three critical Linux vulnerabilities on a near-weekly cadence, and the security discourse has mostly treated them as three separate bad days. They're not. Together they form a reliable, race-free, forensically quiet kill…
[un]prompted Spring 2026: Threat Hunting In The Matrix
At our previous employer, the global deception and detection infrastructure generates tons of events that eventually make their way into an ever-growing data lake with (as of February 2026) 22 TB of PCAPs and 32 TB of session protocol…
AI Proofing Your It/cyber Career: The Human Only Capabilities That Matter
In the past ~4 weeks I have personally observed some irrefutable things in "AI" that are very likely going to cause massive shocks to employment models in IT, software development, systems administration, and cybersecurity. I know some…
Are We Becoming Children of the MagentAI?
Back in 1997, a commercial airline captain noticed his fellow pilots had a problem: they'd gotten so used to following the magenta flight path lines on their fancy new navigation screens that they were forgetting how to actually fly the…
Maine 2025 Ballot Questions Redux
If you want to or do vote "yes" for question 1, you are not a real American, you are not a real Christian (if you profess to be one), you are not a decent human. You are at the very least a classist; you are also very likely a…
Never Forget
— We have no idea of why/who re: Wed's assassination. — Today is the anniversary of a tragic event that has enabled much of the harm caused by the GOP this year. — Trump is an adjudicated rapist & was involved at least in some way in the…
Delete Your Perplexity Account Today
Details:…
EUVD API NPM And Go Packages + Nicer Docs
ENISA published docs for their European Vulnerability Database (EUVD) — https://euvd.enisa.europa.eu/apidoc…
Suriest: Suricata Rule Validation As A (REST) Service
Meet Suriest — a new REST API service for validating Suricata rules, designed to be run by organizations to streamline rule validation workflows. Suriest supports Suricata 6.0 and later and offers features like secure configuration,…
New CISA KEV MCP Server
MCP servers let you wire up external services/APIs in a standard way for LLM/GPT tool-calling and other forms of…
RSAC 2025 Sets A Dangerous Precedent for Cybersecurity Leadership
RSAC 2025 Sets A Dangerous Precedent for Cybersecurity Leadership
New geolocus-cli For ONYPHE's Geolocus Database
Introducing geolocus-cli: A fast, cross-platform command-line tool for IP enrichment using ONYPHE's free Geolocus database. This lightweight utility enables security professionals and network analysts to efficiently look up comprehensive IP metadata including geolocation, ASN information, organizati
Trump’s Retaliation Against Chris Krebs — and the Cybersecurity Industry’s Deafening Silence
Chris Krebs, the former director of the Cybersecurity and Infrastructure Security Agency (CISA), was fired by Donald Trump in 2020 for publicly affirming that the presidential election was secure and free from widespread fraud.…
American [Cyber] Sigh
A long, long time ago I can still remember How those CVEs would make me smile And I knew if I had my chance To patch a vuln or take a stance Maybe we’d be secure for a…
I told you so…
Just putting a marker out there, that I'm either fundamentally wrong, or we all are f'd this…
A Critical Analysis of ICERAID
ICERAID (iceraid[.]us) presents itself as a "GovFi protocol" that purportedly delegates intelligence gathering tasks from law enforcement to citizens. According to their materials, it rewards users with cryptocurrency tokens for capturing…
Call To Action: State Department Power Grab
Discover how Secretary Rubio's State Department determination classifies border, immigration, and trade policies as "foreign affairs functions," exempting them from the Administrative Procedure Act. Learn about potential consequences including surprise policy changes, expanded device searches, and e
Xitter Hit by Major Cyberattack
On March 10, 2025, Xitter experienced major service disruptions throughout the day. Users couldn't access the platform on both mobile apps and the website. Here's what happened and why it…
Cruel And Vindictive By Design
Recent administrative changes at the Social Security Administration (SSA) reveal a concerning pattern of decisions that disproportionately impact vulnerable populations while being implemented in ways that limit public awareness and…
Senator Susan Collins’ Betrayal of Maine Demands Accountability
As a longtime Mainer and independent voter, I have watched Senator Susan Collins’ career with cautious optimism, hoping her self-branded image as a moderate willing to cross party lines might translate into principled leadership. Instead,…
When Checks and Balances Fail: The State's Role in Preserving Constitutional Order
Today, my Senator — Susan Collins — failed in her oath and duty to uphold the Constitution. She voted for the appointment of a traitor to head national intelligence, and is supporting someone for director of the Office of Management and…
CVESky: Monitoring The Bluesky Jetstream For CVE Mentions
Discover CVESky: A real-time tracker for CVE discussions on Bluesky, featuring daily vulnerability chatter cards, interactive heatmaps, and comprehensive CVE exploration tools. Built by GreyNoise Intelligence to monitor genuine security conversations beyond automated NVD feeds.
Reading PCAP Files (Directly) With DuckDB
2024-08-30 UPDATE: Binary versions of this extension are available for amd64 Linux ( linuxamd64 & linuxamd64gcc4 ) and Apple Silicon. ( osxarm64…
100 Miles
100 Miles — rud.is blog archive
Resolve Bluesky/ATproto Handles To did:plc
A concise Bash script for resolving Bluesky/ATproto handles to DID:PLC identifiers, simplifying user identification in the decentralized social network ecosystem.
CVE-2024-27322 Should Never Have Been Assigned And R Data Files Are Still Super Risky Even In R 4.4.0
I had not planned to blog this (this is an incredibly time-crunched week for me) but CERT/CC and CISA made a big deal out of a non-vulnerability in R, and it's making the round on socmed, so here we…
Get A Day's Schedule From Fantastical On The Command Line With Shortcuts
Get Command Line Access To Fantastical Schedules With An Apple Shortcuts And Bash Combo.
VulnCheck's Free Community KEV & CVE APIs (Code & Golang CLI Utility)
Learn how to work with VulnCheck's new community KEV+NVD CVE APIs in curl & Go, & checkout a new, small CLI tool to get both simultaneously.
Something For The Fediverse Readers
A plea for fosstodon to continue its capricious and undocumented silliness.
Ligatures In RStudio Dailies
Learn how to enable ligatures in RStudio Dailies using CSS and themes. Enhance your coding experience with granular control over ligatures for a more visually appealing and readable code.
Avoid libwebp Electron Woes On macOS With positron
Explore the impact of the libwebp supply chain disaster on Electron-based apps and discover Positron, a Golang macOS CLI tool designed to identify vulnerable apps. Stay informed and secure with our in-depth analysis and practical solutions.
Tracking Rite-Aid Store Closures
Explore the impact of Rite-Aid's store closures on communities, learn about the company's bankruptcy, and discover how data collection scripts can track these changes. This analysis provides insights into the consequences of pharmacy deserts and the role of leadership in these developments."
Foliage 2023
The days are getting shorter and when we were visiting Down East Maine the other week, there was just a hint of some trees starting to change up their leaf palettes. It was a solid reminder to re-up my ~annual “foliage” plotting that I…
Resolving A Bluesky/AT Protocol did:plc To A Handle/Handles
I'm just putting this here so the LLM/GPT overlords (and, mebbe even legacy search engines) can get it indexed and use the content from it to help…
Keeping Track Of URLs Shared On Bluesky
While the future of Bluesky is nowhere near certain, it is most certainly growing. It's also the largest community of users for the AT…
New R Package For HTTP Headers Hashing
HTTP Headers Hashing ( HHHash ) is a technique developed by Alexandre Dulaunoy to gen­erate a fingerprint of an HTTP server based on the headers it returns. It employs one-way hashing to generate a hash value from the list of header…
Poor Dude's Janky Bluesky Feed Reader CLI Via R & Python
Lynn (of TITAA and general NLP wizardy fame) was gracious enough to lend me a Bluesky invite, so I could claim my handle on yet-another social media site. I'm still wary of it (as noted in one of this week's Drops ), but the AT protocol —…
Supreme Annotations Plot Redux & An OJS Plot↔ggplot2 Rosetta Stone
Back in 2016, I did a post on {ggplot2} text annotations because it was a tad more challenging to do some of the things in that post back in the…
Start Creating Vanilla JS WebR Apps With Less Inertia
WebR has a template for React, but I'm not a fan of it or Vue (a fact longtime readers are likely tired of hearing right about now). It's my opinion and experience that Lit webcomponents come closer to “bare metal” webcomponents, which…
Make "Solar System" Plots With {ggsolar}
I was cranking out a blog post for work earlier this week that shows off just how many integrations our platform has. I won't blather about that content here, but as I was working on it, I really wanted to show off all the…
Introducing WebRIDEr: The WebR "IDE"-ish REPL You Didn't Know You Needed
The official example WebR REPL is definitely cool and useful to get the feel for WebR. But, it is far from an ideal way to deal with it interactively, even as just a…
Using WebR + Pyodide To Fill In The (Temporary) Package Gaps
I won't wax long and poetic here since I've already posted the experiment that has all the…
? Lit + WebR + Observable Plot: Linking Lit's Lightweight Web Components And WebR For Vanilla JS Reactivity & JS DataVis
The previous post brought lit-webr , to introduce Lit and basic…
Linking Lit's Lightweight Web Components And WebR For Vanilla JS Reactivity
My recent hack-y WebR experiments have been using Reef which is an even ligher -weight javascript web components-esque library, and it's a bit more (initially) accessible than Lit. Lit's focus on "Web Components-first" means that you are…
You're One JavaScript Function Call Away From Using (Most) WebR R Functions In Your WebR-Powered Apps/Sites
After writing the initial version of a tutorial on wrapping and binding R functions on the javascript side of WebR , I had a number of other WebR projects on the TODO list. But, I stuck around noodling on the whole "wrapping & binding"…
WebR Filesystem Machinations & ReefR
It's difficult to believe it has only been a couple of weeks since WebR has been around. But that might just be my perception. The spike protein invasion has significantly increased sedentary time, and that has enabled me to focus on this…
The Road To ggplot2 In WebR, Part 1: The Road Is Paved With Good Base R Plots
I have graphics working in Vanilla JS WebR, now, and I'll cover the path to that in two…
WebR WASM R Package Load/Library Benchmarking Rabbit Hole
I have a post coming on using base and {ggplot2} plots in VanillaJS WebR, but after posting some bits on social media regarding how slow {ggplot2} is to deal with, I had some "performance"-related inquiries, which led me down a rabbit hole…
Almost Bare Bones WebR Starter App
Let's walk through how to set up a ~minimal HTML/JS/CSS + WebR-powered "app" on a server you own. This will be vanilla JS (i.e. no React/Vue/npm/bundler) you can hack on…
WebR IS HERE!
WebR 0.1.0 was released ! I had been git-stalking George (the absolute genius who we all must thank for this) for a while and noticed the GH org and repos being updated earlier this week, So, I was already pretty…
"Bizarre" DNS Hacks For Fun And, Um…, Fun
I've been (slowly) making my way through FOSDEM 23 presentations and caught up to Peter Lowe 's " Bizarre and Unusual Uses of DNS • Rule 53: If you can think of it, someone's done it in the DNS " talk. DNS oddities are items I collect…
Do Not Purchase Kucht Appliances
I'll follow up with a more detailed post in a ~week or so, but if you are considering purchasing a Kucht appliance, please, please reconsider your decision. They have repeatedly lied to us (I have proof) and are incapable of manufacturing…
2022 Hanukkah of Data • Puzzle 2
Ref:…
2022 Hanukkah of Data • Puzzle 1
Visiting #2 and doing some $WORK -work, but intrigued with Hanukkah of Data since Puzzle 0 was solvable with a ZIP password cracker (the calendar date math seemed too trivial to bother…
Arc You Ready For A New Browser?
Cross-post to Substack where I dropped some details on the newest browser in town: Arc .…
Honk If You Like The Fediverse!
So, you've committed to abandoning the bird site, joined a ? instance, or three, and are now a citizen of the Fediverse. This is ??! But, what if you want to dig into this brave new universe a bit and see how it works? Or, perhaps you…
Into The Fediverse!
This is more of a test post after enabling some new Fediverse features on the…
Fall Foliage: JavaScript/OJS Edition
I've been (mostly) keeping up with annual updates for my R/{sf} U.S. foliage post which you can find on GH . This year, we have Quarto , and it comes with so many batteries included that you'd think it was Christmas. One of those batteries…
New Chrome Extension To Turn Observable Notebooks Into Quarto Projects
My previous post announced a Rust-based command line tool for generating Quarto projects from Observable…
ohq2quarto — Rust-Based CLI For Turning Observable Notebooks Into Quarto Projects
The previous post had some hacky R code to grab seekrit JSON data in ObservableHQ (OHQ) Notebooks and spit out a directory with a Quarto qmd and any associated FileAttachment s. Holding firm to my "no more generic public R packages"…
Bootstrapping An {ojs} Quarto Document With An Observable Notebook
Quarto is amazing! And, it's eating the world! OK. Perhaps not the entire world. But it's still amazing…
Rust CLI For Apple's WeatherKit REST API
Apple is in the final stages of shuttering the DarkSky service/API. They've replaced it with WeatherKit , which has both an xOS framework version as well as a REST API. To use either, you need to be a member of the Apple Developer Program…
Introducing {weatherkit}: The Eventual Replacement R Package for {darksky}
My { darksky } package has been around for years, now, and the service that powers it was purchased by Apple before the pandemic. The DarkSky API is slated to be shuttered in December of this year and is being replaced by Apple's…
Saying The Quiet Part Out Loud On Juneteenth
I realize you have to be living under a rock in the U.S. to not know that yesterday, was Juneteenth (a portmanteau of "June Nineteenth"). Still, I feel compelled to explain that said date marks the day when federal troops arrived in…
Using Leonardo SVG Palettes in R
In today's newsletter Leonardo , an open source project and free online too from Adobe that lets you make great and accessible color palettes for use in UX/UI design and data visualizations! You can read the one newsletter section to get a…
Escaping Groundhog Day
Friday, May 13, 2022 was my last day at my, now, former employer of nearly seven years. I'm not mentioning the company name 1 because this post is not about them 2…
Rusty HTML Minifying In R with {rextendr}
In my M-F newsletter today I mentioned an awesome Rust-based HTML/JS/CSS minifier library that also include batteries for a few other…
Announcement: New Substack Newsletter
Just a quick post to note that I'll still be doing long-form, single-topic posts here on the blog, but I've also started an M-F daily Substack newsletter [free], that introduces 1-3(ish) topics per-issue on stuff I find during my daily RSS…
Keeping Those SSH Keys Safe
I came across a neat site that uses a Golang wasm function called from javascript on the page to help you see if your GitHub public SSH keys are "safe". What does "safe" mean? This is what the function checks for (via that…
Update On ESC/POS Package Work
The morning before work was super productive and there is a nigh-complete DSL for ESC/POS commands along with the ability to just print {ggplot2}/{grid}…
Turning {ggplot2} Into a PoS (Point-of-Sale) System
At the end of March, I caught a fleeting tweet that showcased an Epson thermal receipt printer generating a new "ticket" whenever a new GitHub issue was filed on a repository. @aschmelyun documents it well in this blog post . It's a pretty…
A zsh Helper Script For Updating macOS RStudio Daily Electron + Quarto CLI Installs
RStudio's macOS Electron build is coming along quite nicely and is blazing fast on Apple…
How to access BBC News in Ukrainian (??) and Russian (??). Как получить доступ к новостям Би-би-си.
Open this URL in Tor to access BBC (??):…
Full transcript of Ukrainian President Volodymyr Zelenskyy's emotional appeal to Russians
Here is the full transcript of Ukrainian President Volodymyr Zelenskyy's video address early on Feb. 24 local time warning that a Russian invasion could cause tens of thousands of deaths…
Getting Back 2 Good
If you've been following my inane tweets and non-technical blog posts for any length of time since 2015, you likely know the 2016 election cycle broke me more than just a tad, with each subsequent month of the Trump presidency adding a bit…
A WeatherFlow Tempest UDP Broadcast Receiver in Golang, Rust, Swift, and C++
After a Twitter convo about weather stations I picked up a WeatherFlow Tempest . Setup was quick, but the sensor package died within 24 hours. I was going to give up on it but I had written an R package (for the REST API & UDP broadcast…
Starting 2022 Off With A Fairly Complex {ggplot2} Recreation Plot
The New York Times had a [tragic] story on Covid deaths today and one of their plots really stuck with me for how well it told that part of the…
2021 Advent of Code Day 02 "Don't Try This At Home" Edition
The Moderna booster level drained me all day on Dec 1 and did what jab two did during the overnight period (achy enough to wake me up and not get back to slumber easily). To try to wear myself down, I decided to practice a bit of R with…
Creating A Custom MaxMind mmdb File For Cloud Provider Ranges
I've been wanting to create a custom MaxMind mmdb file for alternate IPv4 range classifications for a while, and finally had an opportunity to do so for the $DAYJOB. MaxMind mmdb files are small and easy to work with and provide lightning…
#30DayMapChallenge 2021 Day 2: Lines
The 30-Day Map Challenge is on again, and I'm hoping to be able to scrounge some time to get an entry for each day. Day 2 is lines (Day 1 was posted on Twitter only) and — while I'm hoping to focus on saving U.S. democracy for the majority…
RSwitch 2.1.2b Bug-fix Release
RStudio is continuing to refine their ?? new product version string scheme, with the most recent change using something like the following for daily…
Some Covid Donuts To End The Week
Vox grabbed some data from the Kaiser Family Foundation and did a story a few days ago on it, then posted a different visualization of it that attracted some…
Hasty Bug-fix Release of RSwitch v2
Version 2 of RSwitch — the macOS menubar utility that enables fast and seamless switching between R versions on macOS and also provides notifications for new versions of RStudio Dailies has had a hasty update to deal with an error…
Acoustic: Solving a CyberDefenders PCAP SIP/RTP Challenge with R, Zeek, tshark (& friends)
Hot on the heels of the previous CyberDefenders Challenge Solution comes this noisy installment which solves their Acoustic…
Packet Maze: Solving a CyberDefenders PCAP Puzzle with R, Zeek, and tshark
It was a rainy weekend in southern Maine and I really didn't feel like doing chores, so I was skimming through RSS feeds and noticed a link to a PacketMaze challenge in the latest This Week In 4n6…
New TabularData Available in Swift on macOS Monterery (et al)
WWDC 2021 is on this week and many new fun things are being introduced, including some data science-friendly additions to the frameworks that come with Xcode 13 and available on macOS 12+ (and its OS…
archinfo v0.4.0 Released
My archinfo utility is a small macOS command line application that displays process id, name, and architecture (arm64 or…
A {swiftr} Brief Interlude While Awaiting {cdcfluview} CRAN Checks
My {cdcfluview} package started tossing erros on CRAN just over a week ago when the CDC added an extra parameter to one of the hidden API endpoints that the package wraps. After a fairly hectic set of days since said NOTE came, I had time…
Using the new Plot Javascript Exploratory Visualization Library Sans-Observable
The fine folks over at @ObservableHQ released a new javascript exploratory visualization library called Plot last week with great fanfare. It was primarily designed to be used in Observable notebooks and I quickly tested it out there (you…
Feedly Mini Extension Removed From Chrome Store Due To "Malware"
On or about Friday evening (May 7, 2021) Edge notified me that the Feedly Mini extension (one of the only extensions I use as extensions are dangerous things) was remove from the store due to…
COVID-19 U.S. County Vaccination Tracker With An Observable Notebook Using Datasettes and {Plot}
Rather than continue to generate daily images with R, I threw together an Observable notebook that takes advantage of the CDC COVID-19 county data datasette (provided by Simon Willison) and the new {Plot} library (by the @ObservableHQ…
A Small macOS (Big Sur+) App to Extract Indicators of Compromise
There's a semi-infrequent-but-frequent-enough-to-be-annoying manual task at $DAYJOB that involves extracting a particular set of strings (identifiable by a fairly benign set of regular expressions) from various interactive text sources…
Making macOS Universal Apps in Swift with Universal Golang Static Libraries
There are a plethora of amazingly useful Golang libraries, and it has been possible for quite some time to use Go libraries with Swift. The advent of the release of the new Apple Silicon/M1/arm64 architecture for macOS created the need for…
Avoiding The mdls Command Line Round Trip With swiftr::swift_function()
The last post showed how to work with the macOS mdls command line XML output, but with {swiftr} we can avoid the command line round trip by bridging the low-level Spotlight API (which mdls uses) directly in R via…
Quick Hit: Processing macOS Application Metadata Weirdly Fast with mdls and R
(reminder: Quick Hits have minimal explanatory blathering, but I can elaborate on anything if folks submit a…
Check 'Developer Tools' First To Avoid Heavy-ish Dependencies
Guillaume Pressiat (@GuillaumePressiat) did a solid post & video on using Selenium to scrape a paginated table from understat[.]com/league/EPL/2020 (I just cannot bring myself to provide an active link to any SportsBall site). He does a…
Help Your Mac Stand Between The Darkness And The Light with GreyWatch
They also have a generous (10K calls/day), free community API which does not require credentialed access and returns a subset of information that the full API does. This is handy for folks who can't afford the service or who only need to…
Retrieve Process Run-time Architecture on Apple Silicon Macs On The Command Line with `archinfo`
Apple M1/Apple Silicon/arm64 macOS can run x8664 programs via Rosetta and most M1 systems currently (~March 2021) very likely run a mix of x8664 and arm64…
Brimming With Possibilities: Query zqd & Mine Logs with zq from R
along with a broad ecosystem of tools which can be used independently of the…
Getting Into the Rhythm of Chart Typography with {ragg} and {hrbragg} (a.k.a. It's {ragg}-time}
Horrible puns aside, hopefully everyone saw the news, earlier this week, from @thomasp85 on the evolution of modern typographic capabilities in the R ecosystem. Thomas (and some cohorts) has been working on {systemfonts}, {ragg}, and…
Extracting Heart Rate Data (Two Ways!) from Apple Health XML Export Files Using R (a.k.a. The Least Romantic Valentine's Day R Post Ever)
readcsv( file = "~/Data/applehealthexport/electrocardiograms/ecg2020-09-24.csv", # this is extracted below skip = 12, colnames = "µV" ) %>% mutate( idx = 1:n() ) ->…
Fully Native M1/Apple Silicon R Setup
Presented without much commentary since I stopped once {ggrepel} and {graphlayouts} failed (RStudio doesn't support it yet, either, which I…
Getting a Handle on macOS App Entitlements with R
If you've been following me around the internets for a while you've likely heard me pontificate about the need to be aware of and reduce — when possible — your personal "cyber" attack surface. One of the ways you can do that is to install…
Amazon Athena {dbplyr} Implicit Usage of Presto Functions and Making JSON Casting Great Again
I was chatting with a fellow Amazon Athena user and the topic of using Presto functions such as approxdistinct() via {d[b]plyr} came up and it seems it might not be fully common knowledge that any non-already translated function is passed…
Parler Whack-a-Mole
(this is an unrolled Twitter thread converted to the blog since one never knows how long content will be preserved anywhere…
Making It Easier To Experiment With Compiled Swift Code In R
The past two posts have (lightly) introduced how to use compiled Swift code in R, but they've involved a bunch of "scary" command line machinations and…
Calling [Compiled] Swift from R: Part 2
The previous post introduced the topic of how to compile Swift code for use in R using a useless, toy example. This one goes a bit further and makes a case for why one might want to do this by showing how to use one of Apple's machine…
SwiftR Switcheroo: Calling [Compiled] Swift from R!
I've been on a Swift + R bender for a while now, but have been envious of the pure macOS/iOS (et al) folks who get to use Apple's seriously ++good machine learning libraries, which are even more robust on the new M1 hardware (it's cool…
Soon May the Vendorman Come
There was an org that didn't see The data exfil hacking spree. A patch went up, our guard was down, Oh blow, SolarWinds,…
New SwiftR Chapter Up: Building an R-backed SwiftUI macOS App
Last week I introduced a new bookdown series on how to embed R into a macOS Swift…
Nos Autem Non In Antebellum; Bella Iam Inceperat
Every decent human (which excludes 74,222,958 ?? who voted for this, now 100% undeniable, traitor) with knowledge of this past week's tragic events is likely still processing — and will be for a while — what happened; I am no exception.…
Safety Checking Locally Installed Package URLs
I went completely daft this week and broke my months-long Twitter break due to the domestic terror event in my nation's capitol. I'll likely be resuming the break starting…
Bringing R to Swift on macOS
of some almost-natural "R" looking code (this is a…
Updated Apache Drill R JDBC Interface Package {sergeant.caffeinated} With {dbplyr} 2.x Compatibility
While the future of the Apache Drill ecosystem is somewhat in-play (MapR — a major sponsoring org for the project — is kinda dead ), I still use it almost daily (on my local home office cluster) to avoid handing over any more money to…
Apple Silicon + Big Sur + RStudio + R Field Report
It's been a while since I've posted anything R-related and, while this one will be brief, it may be of use to some R folks who have taken the leap into Big Sur and/or Apple Silicon. Stay to the end for an early Christmas…
It's [Almost] Over; Much Damage Has Been Done; But I [We] Have A Call To Unexpected Action
The last 4+ years — especially the last ~10 months — had taken a bigger personal toll than I realized. I spent much of President-Elect Joseph R. Biden Jr.'s and Vice President-elect Kamala Harris' first speeches as duly & honestly selected…
Short & Sweet: {cdcfluview} 0.9.2 Is On Its Way to CRAN Mirrors
The CDC continues to "deliver" in 2020, this time by changing the JSON response of one of the hidden APIs that my {cdcfluview} package wraps. CDC: So…
Quick Hit: Speeding Up Data Frame Creation
(This is part 2 of n "quick hit" posts, each walking through some approaches to speeding up components of an iterative operation. Go here for part…
Quick Hit: Comparison of "Whole File Reading" Methods
(This is part 1 of n posts using this same data; n will likely be 2-3, and the posts are more around optimization than anything…
Aligning the Dots On COVID Prison Waffles
The Marshall Project has a solid story and set of visualizations on the impact of COVID-19 in U.S. prisons. They keep the data (and vis) regularly updated. They do great work and this is an important topic, but this visualization breaks my…
A Look at PAN-OS Versions with a Bit of R
The incredibly talented folks over at Bishop Fox were quite generous this week, providing a scanner for figuring out PAN-OS GlobalProtect versions. I've been using their decoding technique and date-based fingerprint table to keep an eye on…
The Avatar Is Blue
I've changed my years-long avatar to the blue Cap' shield because the colors of our flag have no business being displayed in any venue until Donald Trump is no longer President (one way or another). The red/white/blue triad has been…
{sergeant} 0.9.0 Is On Its Way to CRAN Mirrors!
Tis been a long time coming, but a minor change to default S3 parameters in tibbles finally caused a push of {sergeant} — the R package that lets you use the Apache Drill REST API via {DBI}, {dplyr}, or directly — to…
RSwitch 1.7.0 Has Been Released
I (and, apparently, Gandalf Oo) are pleased to announce that RSwitch version 1.7.0 has been released . ( Direct Download…
Mining R 4.0.0 Changelog for Nuggets of Gold: #1 stopifnot()
R 4.0.0 has been out for a while, now, and — apart from a case where merge() was slower than dirt — it's been really stable for at least me (I use it daily on macOS, Linux, and Windows). Sure, it came with some headline-grabbing…
Attach Your R Code To Charts You Tweet For Reproducible R Tweets!
I caught this tweet by Terence Eden about using Twitter image alt-text to "PGP sign" tweet and my mind immediately went to "how can I abuse this for covert communications, malicious command-and-control, and embedding R code in…
Dairy-Free No-Fail Biscuits
Cut up shortening into small squares and mix into the dry bits with a pastry…
New Package — {cdccovidview} — To Work with the U.S. CDC's New COVID-19 Trackers: COVIDView and COVID-NET
The United States Centers for Disease Control (CDC from now on) has setup two new public surveillance resources for COVID-19. Together, COVIDView and COVID-NET provide similar weekly surveillance data as FluView does for influenza-like…
Adzuki & Andouille Soup
Add back sausage and add in everything else and simmer for 45…
{uaparserjs} Updated on CRAN & Using webpack to Make {V8} Application Bundles
Just a quick note that thanks to a gentle nudge an updated version of {uaparser} --- a package that processes User Agent strings web clients send to servers --- is making its way to all the CRAN mirrors and is also available on CINC . The…
The Waffle House Index
Waffle House announced it was closing hundreds of stores this week due to SARS-Cov-2 (a.k.a COVID-19). This move garnered quite a bit of media attention since former FEMA Administrator Craig Fugate used the restaurant chain as both an…
Dairy-free Chocolate Chip Muffins
Sift together dry ingredients and mix until moist. Don't…
{catchpole} Redux and Hashing Files & Websites with {ssdeepr}
Über Tuesday has come and almost gone (some state results will take a while to coalesce) and I'm relieved to say that {catchpole} did indeed work, with the example code from before producing this on first…
Make WSJ-esque Über Tuesday Democrat Delegate Cartograms in R with {catchpole}
For folks who are smart enough not to go near Twitter, I've been on a hiatus from the platform insofar as reading the Twitter feed goes. "Why" isn't the subject of this post so I won't go into it, but I've broken this half-NYE resolution…
BIMI Up, Scotty! A look at Brand Indicators for Message Identification (BIMI) Adoption with R and the Alexa Top 1m
It seems that the need for MX, DKIM, SPF, and DMARC records for modern email setups were just not enough acronyms (and setup tasks) for some folks, resulting in the creation of yet-another-acronym --- BIMI, or, Brand Indicators for Message…
Prying ".R" Script Files Away from Xcode (et al) on macOS
As the maintainer of RSwitch --- and developer of my own (for personal use) macOS, iOS, watchOS, iPadOS and tvOS apps --- I need the full Apple Xcode install around (more R-focused macOS folk can get away with just the command-line tools…
Monitoring Website SSL/TLS Certificate Expiration Times with R, {openssl}, {pushoverr}, and {DT}
macOS R users who tend to work on the bleeding edge likely noticed some downtime at <mac.r-project.org> this past weekend. Part of the issue was an SSL/TLS certificate expiration situation. Moving forward, we can monitor this with R using…
Davos 2020 World Economic Forum 2020 Global Risk Report Cyber Cliffs Notes
Each year the World Economic Forum releases their Global Risk Report around the time of the annual Davos conference. This year's report is out and below are notes on the "cyber" content to help others speed-read through those sections (in…
Convert Apple Card PDF Statements to Tidy Data (i.e. for CSV/Excel/database export)
I saw this CNBC article on an in-theory browser client-side-only conversion utility for taking Apple Card PDF statements and turning them into CSV…
Writing Frictionless R Package Wrappers — Building A Basic R Package
Before we start wrapping foreign language code we need to make sure that basic R packages can be created. If you've followed along from the previous post you have everything you need to get started here. Just to make sure , you should be…
Yeast-raised Apple Cider Doughnuts
Offspring #4 eats pretty healthy, normally, but likes to indulge in sugary confections on occasion. He was a big help clearing away the massive amount of snow that accumulated in the last winter storm of 2019 so I decided to start the new…
Writing Frictionless R Package Wrappers — Introduction
The R language and RStudio IDE are a powerful combination for "getting stuff done", and one aspect of R itself that makes it especially useful is the ability to use it with other programming languages via a robust foreign language…
Short Attention Span Theatre: Reproducing Axios' "1 Big Thing" Google Trends 2019 News In Review with {ggplot2}
I woke up to Axios' "1 Big Thing" ridgeline chart showing the crazy that was the 2019 news…
Using #rstats to Help Santa Deliver Presents This Christmas!
The right jolly old elves over at Alteryx created a "Santalytics" challenge back in 2016 to see if their community members could help Santa deliver presents to kids all across the…
Quickly Create (Mostly) Responsive HTML Columns With {htmltools}
I had need to present a wall-of-text to show off a giant list of SSL certificate alternate names and needed the entire list to fit on one slide (not really for reading in full, but to show just how many there were in a way that a simple…
Spelunking macOS 'ScreenTime' App Usage with R
Apple has brought Screen Time to macOS for some time now and that means it has to store this data somewhere . Thankfully, Sarah Edwards has foraged through the macOS filesystem for us and explained where these bits of knowledge are in her…
100% Stacked Chicklets
I posted a visualization of email safety status (a.k.a. DMARC ) of the Fortune 500 (2017 list) the other day on Twitter and received this spiffy request from…
RSwitch 1.5.1 Released
An RSwitch user, lcolladotor filed a most-welcome issue letting me know that the core functionality of the switcher was busted ?. After testing out the 1.5.1 release candidate I had made a "harmless" & "clever" change to reduce some…
Twitter "Account Analysis" in R
This past week @propublica linked to a really spiffy resource for getting an overview of a Twitter user's profile and activity called accountanalysis . It has a beautiful interface that works as well on mobile as it does in a real browser.…
RSwitch 1.5.0 Release Now Also Corrals RStudio Server Connections
All books, links, and other reference resources are under a single submenu…
September 2019 Democratic Debates Added to {ggchicklet}
The latest round of the 2020 Democratic debates is over and the data from all the 2019 editions of the debates have been added to {ggchicklet} . The structure of the debates2019 built-in dataset has changed a…
RSwitch 1.4.1 Released
A minor update to RSwitch has been released. Apart from some internal code reorganization there are three user-facing…
RSwitch 1.4.0 Released
Swift 5 has been so much fun to hack on that there's a new update to macOS R-focused mebubar utility RSwitch available. Along with the app comes a new dedicated RSwitch landing page and a new user's guide since it has enough features to…
Improvements to RSwitch in v1.3.0
It's only been a couple days since the initial version of my revamped take on RSwitch but there have been numerous improvements since then worth…
Polyglot FizzBuzz in R (Plus: "Why Can't Johnny Code?")
I caught this post on the The Surprising Number Of Programmers Who Can’t Program from the Hacker News RSS feed. Said post links to another, classic post on the same subject and you should read both before…
Quick Hit: A new 64-bit Swift 5 RSwitch App
At the bottom of the R for macOS Developer's Page there's mention of an "other binary" called "RSwitch" that is "a small GUI that allows you to switch between R versions quickly (if you have multiple versions of R framework installed)."…
Two New Testing-themed Addins + One New and One Updated CRAN Package
It's been yet-another weirdly busy summer but I'm finally catching up on noting some recent-ish developments in the…
Quick Hit: A Different (Diminutive) Look At Distributions With {ggeconodist}
Despite being a full-on denizen of all things digital I receive a fair number of dead-tree print magazines as there's nothing quite like seeing an amazing, large, full-color print data-driven visualization up close and personal. I also…
Quick Hit: {waffle} 1.0 Font Awesome 5 Pictograms and More
The {waffle} package got some ? this week and now has a substantially improved geomwaffle() along with a brand new sibling function geompictogram() which has all the powerful new features of geomwaffle() but lets you use Font Awesome 5…
Make Refreshing Segmented Column Charts with {ggchicklet}
The first U.S. Democratic debates of the 2020 election season were held over two nights this past week due to the daft number of candidates running for POTUS. The spiffy @NYTgraphics folks took the tallies of time spent blathering by each…
Quick hit: 'dig'-ging Into r-project.org DNS Records with {processx}
The r-project.org domain had some temporary technical difficulties this week (2019-29) that made reaching R-related resources problematic for a bunch of folks for a period of time. Incidents like this underscore the need for regional and…
Quick Hit: Above the Fold; Hard wrapping text at 'n' characters
Despite being on holiday I'm getting in a bit of non-work R coding since the fam has a greater ability to sleep late than I do. Apart from other things I've been working on a PR into {lutz}, a package by @andyteucher that turns lat/lng…
Quick hit: Some ggplot2 Stat ? for {logspline}
I've become a big fan of the {logspline} package over the past ~6 months and decided to wrap up a manual ggplot2 plotting process (well, it was at least in an RStudio snippet) into a small {ggplot2} Stat to make it easier to visualize…
Introducing the {ethercalc} package
I mentioned EtherCalc in a previous post and managed to scrounge some time to put together a fledgling {ethercalc} package (it's also on GitLab, SourceHut, Bitbucket and GitUgh, just sub out the appropriate URL…
Makeover Jambalaya: Beating Dumbbells into Slopegraphs Whilst Orchestrating EtherCalc
This morning, @kairyssdal tweeted out the following graphic from…
Wrapping Up Exploration of John Deere's MowerPlus Database
I did another twitter thread on the aforeblogged MowerPlus database as I explored the tables after a second mow to determine what identified a unique mowing "session" (using John Deere's…
Reader Challenge: Have Some Fun with Apple's WWDC 2019 Keynote Subtitles & Show Your Work
I was pretty brutal to Apple earlier this week in a Twitter thread that I tried to craft so it occurred in-line with the WWDC live stream (which might be something you want to remember as/if you read on). I really don't care about…
Make Multi-point "dumbbell" Plots in ggplot2
A user of the {ggalt} package recently posted a question about how to add points to a geomdumbbell() plot. For now, this is not something you can do with geomdumbbell() but with a bit of data wrangling you can do this in a pretty…
Trawling Through iOS Backups For Treasure (a.k.a. How to fish for target files in iOS backups) with R
In a recent previous post I brazenly talked over the "hard parts" of how I got to the target SQLite file that houses "mowing history" for what has become my weekend obsession. So, we'll cover just how to do that (find things in iOS…
Quick Hit: Handling Cocoa Core Data Timestamps in R
For the first time ever we got a new riding mower this weekend. We've always haggled to keep the one sellers were using with any given house we've purchased over the years (that was big enough for a yard that "requires" a riding…
Making a Command Line HTML Rendering Script for "The Art of the Command Line" (in R)
The Feedly category I have setup for git-stalking has indicated a fairly massive interest in Joshua Levy's The Art of the Command Line . What is "The Art of the Command Line"? To quote the…
Two New Ways to Make DNS over HTTPS Queries in R
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…
Add Dressbarn to the Continued Retailpocalypse
I've talked about the retailpocalypse before and this morning I was greeted with the news about Dressbarn closing all 650 stores as I fired up a…
Mapping Tornado Alley with R
Harry's thread and Observable post are great on their own and both show the power and utility of Observable javascript…
Quick Hit: Updates to QuickLookR and {rdatainfo}
I'm using GitUgh links here b/c the issue was submitted there. Those not wishing to be surveilled by Microsoft can find the macOS QuickLook plugin project and {rdatainfo} project in SourceHut and GitLab ( ~hrbrmstr and hrbrmstr accounts…
Quick Hit: Scraping javascript-"enabled" Sites with {htmlunit}
I've mentioned {htmlunit} in passing before, but did not put any code in the blog post. Since I just updated {htmlunitjars} to the latest and greatest version, now might be a good time to do a quick demo of…
A Note to Our Community On How To Hide Your Content From Search Engines
Say your organization has done something pretty terrible . Terrible enough that you really didn't want to acknowledge it initially but eventually blogged about it, and haven't added a blog post in a long time so that entry is at the top of…
Lost In [SQL] Translation: Charting d[b]plyr Mapped SQL Function Support Across All Backends
Like more posts than I care to admit, this one starts innocently enough with a tweet by…
A Limited-but-Functional Couchbase Free Text Search & Retrieval Un-package; or, "How I Abused Couchbase & R to Perform Bulk IP Whois Full-text Searches" (a Cobbler's Tale)
Researching "the internet" (i.e. $DAYJOB) means having to deal with a ton of "unique" (I'm being kind) data formats. This is ultimately a tale of how I performed full-text searches across one of…
Wicked Fast, Accurate Quantiles Using ‘t-Digests’ in R with the {tdigest} Package
@teddunning recently updated the t-Digest algorithm he created back in 2013. What is this "t-digest"? Fundamentally, it is a probabilistic data structure for estimating any percentile of distributed/streaming data. Ted explains it quite…
Rome Was Not Built In A Day But widgetcard Was!
I saw a second post on turning htmlwidgets into interactive Twitter Player cards and felt somewhat compelled to make creating said entities a bit easier so posited the…
Assumptions Matter More Than Dependencies
There's been alot of talk about "dependencies" in the R universe of late. This is not really a post about that but more of a "really, don't do this" if you decide you want to poke the dependency bear by trying to build a deeply flawed…
Handling & Sharing PCAPs Like a Boss with PacketTotal
The fine folks over at @PacketTotal bequeathed an API token on me so I cranked out an R package for it to enable more dynamic investigations work (RStudio makes for an amazing incident responder investigations console given that you can…
Collecting Content Security Policy Violation Reports in S3 ('Effortlessly'/'Freely')
In the previous post I tried to explain what Content Security Policies (CSPs) are and how to work with them in R. In case you didn't RTFPost the TLDR is that CSPs give you control over what can be loaded along with your web content and can…
Head's Up! Roll Your Own HTTP Headers Investigations with the 'hdrs' Package
In the event you wanted to dig deeper I threw together a small package that will let you grab HTTP headers from a given URL and take a look at them. The README has examples for most things but we'll go through a bit of them here as…
IP, User Agent, and Referrer Tracking Disabled on cinc.rud.is and git.rud.is
Not flagging this with an "R" tag since I don't want to spam R-bloggers but I mentioned here that I'd be disabling logging on https://cinc.rud.is and https://git.rud.is and I wanted to follow up on that with an addendum that I've opted to…
CRAN Mirror "Security"
In the "Changes on CRAN" section of the latest version of the The R Journal (Vol. 10/2, December 2018) had this short blurb entitled "CRAN mirror…
htmlunitjars Updated to 2.34.0
The in-dev htmlunit package for javascript-"enabled" web-scraping without the need for Selenium, Splash or headless Chrome relies on the HtmlUnit library and said library just released version 2.34.0 with a wide array of changes that…
drat All The ?! : Enabling Easier Package Discovery and Installation with Your Own CRAN-like Repo for Your Packages
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…
Cloudy with a chance of Caffeinated Query Orchestration - New rJava Wrappers for AWS Athena SDK for Java
There are two fledgling rJava-based R packages that enable working with the AWS SDK for…
I Just Wanted The Data : Turning Tableau & Tidyverse Tears Into Smiles with Base R (An Encoding Detective Story)
Those outside the Colonies may not know that Payless—a national chain that made footwear affordable for millions of 'Muricans who can't spare $100.00 USD for a pair of shoes their 7 year old will outgrow in a year— is closing . CNBC also…
In Dev: WiGLE Your Way Into A Hotspot with wiglr
read the code (to ensure R package developers are pwning or tracking you),and …after putting your "Encoded for use" token in the WIGLEAPIKEY environment variable…start…
Conquering Caffeinated Amazon Athena with the metis Trio of Packages
I must preface this post with the posit that if you're doing anything interactive() with Amazon Athena you should seriously consider just using their free ODBC drivers as it's the easiest way to wire them up to R DBI- and tidyverse-wise.…
Using the ropendata R Package to Access Petabytes of Free Internet Telemetry Data from Rapid7
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…
Quick Hit: Speeding Up a Slow/Mundane Task with a Little Rcpp
Over at $DAYJOB's blog I've queued up a post that shows how to use our new ropendata ? package to work with our Open Data portal's API. I'm not super-sure when it's going to be posted so keep an RSS reader fixed on https://blog.rapid7.com/…
Send UDP Probes (with payloads) and Receive/Process Responses in R
We worked pretty hard over at $DAYJOB on helping to quantify and remediate a fairly significant configuration weakness in Ubiquiti network work gear attached to the internet…
R Package Update: urlscan
The urlscan ? package (an interface to the urlscan.io API) is now at version 0.2.0 and supports urlscan.io's authentication requirement when submitting a link for analysis. The service is handy if you want to learn about the details — all…
Homebrew 2.0.0 Released == homebrewanalytics package updated
A major new release of Homebrew has landed and now includes support for Linux as well as Windows! via the Windows Subsystem for Linux. There are overall stability and speed improvements baked in as well. The aforelinked notification has…
Fast Static Maps Built with R
We can do all of that in R with the help of a couple packages and by using a free geocoding service which will also allow us to put more data on the map, albeit with some extra work due to it returning weird values for Hawaii…
Quick Hit: Using seymour to Subscribe to your Git[la|hu]b Repo Issues in Feedly
The seymour ? Feedly API package has been updated to support subscribing to RSS/Atom feeds. Previously the package was intended to just treat your Feedly as a data source, but there was a compelling use case for enabling subscription…
Acquisitions and Supply Chains: The Achilles' heel of Product/Organizational Security
Over at the $WORK blog we posted some research into the fairly horrible Cisco RV320/RV325 router vulnerability. The work blog is the work blog and this blog is my blog (i.e. opinions are my own, yada, yada, yada) and I felt compelled to…
Quick Hit: Automating Production Graphics Uploads in R Markdown Documents with googledrive
As someone who measures all kinds of things on the internet as part of his $DAYJOB, I can say with some authority that huge swaths of organizations are using cloud-services such as Google Apps, Dropbox and Office 365 as part of their…
hrbrthemes 0.6.0 on CRAN + Other In-Development Package News
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…
splashr 0.6.0 Now Uses the CRAN-nascent stevedore Package for Docker Orchestration
The splashr package [ srht | GL | GH ] — an alternative to Selenium for javascript-enabled/browser-emulated web scraping — is now at version 0.6.0 (still in dev-mode but on its way to CRAN in the next 14…
Roll Your Own Federal Government Shutdown-caused SSL Certificate Expiration Monitor in R
By now, even remote villages on uncharted islands in the Pacific know that the U.S. is in the midst of a protracted partial government shutdown. It's having real impacts on the lives of Federal government workers but they aren't the only…
Waffle Geoms & Other Miscellaneous In-Development Package Updates
More than just sergeant has been hacked on recently, so here's a run-down of various ?…
On the Road to 0.8.0 — Some Additional New Features Coming in the sergeant Package
It was probably not difficult to discern from my previous Drill-themed post that I'm fairly excited about the Apache Drill 1.15.0 release. I've rounded out most of the existing corners for it in preparation for a long-overdue CRAN update…
'data:' Scraping & Chart Reproduction : Arrows of Environmental Destruction
Today's RSS feeds picked up this article by Marianne Sullivan, Chris Sellers, Leif Fredrickson, and Sarah Lamdanon on the woeful state of enforcement actions by the U.S. Environmental Protection Agency (EPA). While there has definitely…
Apache Drill 1.15.0 + sergeant 0.8.0 = pcapng Support, Proper Column Types & Mounds of New Metadata
To ring in the new year the Drill team knocked out a new 1.15.0 release with a cadre of new functionality…
Exploring 2018 R-bloggers & R Weekly Posts with Feedly & the 'seymour' package
Well, 2018 has flown by and today seems like an appropriate time to take a look at the landscape of R bloggerdom as seen through the eyes of readers of R-bloggers and R Weekly . We'll do this via a new package designed to make it easier to…
Certifiably Gone Phishing
Phishing is [still] the primary way attackers either commit a primary criminal act (i.e. phish a target to, say, install ransomware) or is the initial vehicle used to gain a foothold in an organization so they can perform other criminal…
More "Scraping Ethics Gone Awry" and "Why Do This When There's a Free API?"
I can't seem to free my infrequently-viewed email inbox from "you might like!" notices by the content-lock-in site Medium. This one made it to the iOS notification screen (otherwise I'd've been blissfully unaware of it and would have saved…
Tis the Season to Check your SSL/TLS Cipher List Thrice (RCurl/curl/openssl)
The libcurl library (the foundational library behind the RCurl and curl packages) has switched to using OpenSSL's default ciphers since version 7.56.0 (October 4 2017). If you're a regular updater of curl / httr you should be fairly…
Use GitHub Vulnerability Alerts to Keep Users of Your R Packages Safe
Despite their now inherent evil status, GitHub has some tools other repository aggregators do not. One such tool is the free vulnerability alert service which will scan repositories for outdated+vulnerable…
Escaping the macOS 10.14 (Mojave) Filesystem Sandbox with R / RStudio
If you're an R/RStudio user who has migrated to Mojave (macOS 10.14) or are contemplating migrating to it, you will likely eventually run into an issue where you're trying to access resources that are in Apple's new hardened filesystem…
GeoJSON Version of CBC Quebec Ridings Hex Cartograms with Example Usage in R
The CBC covered the recent (as of the original post-time on this blog entry) Quebec elections and used a well-crafted hex grid map to display…
Quick Hit: Using the New Equal Earth Projection in R
In my semi-daily run of brew update I noticed that proj4 had been updated to 5.2. I kinda " squeee "'d since (as the release notes show ) the Equal Earth projection was added to it ( +proj=eqearth…
Taking a Tour of the Pirate Ship 'GitHub DMCA' with R
Despite having sailed through the core components of this year's Talk Like A Pirate Day R post a few months ago, time has been an enemy of late so this will be a short post that others can build off of, especially since there's lots more…
Access the Internet Archive Advanced Search/Scrape API with wayback (+ links to a new vignette & pkgdown site)
The wayback ? package has had an update to more efficiently retrieve mementos and added support for working with the Internet Archive's advanced search+scrape API…
The Evolution of Data Literacy at the U.S. Department of Energy + Finding Power Grid Cyber Attacks in a Data Haystack
I was chatting with some cyber-mates at a recent event and the topic of cyber attacks on the U.S. power-grid came up (as it often does these days). The conversation was brief, but the topic made its way into active memory and resurfaced…
Driving Drill Dynamically with Docker and Updating Storage Configurations On-the-fly with sergeant
The sergeant ? package has a minor update that adds REST API coverage for two "new" storage endpoints that make it possible to add, update and remove storage configurations on-the-fly without using the GUI or manually updating a config…
Simplifying World Tile Grid Creation with geom_wtg()
Nowadays (I've seen that word used so much in journal articles lately that I could not resist using it) I'm using world tile grids more frequently as the need arises to convey the state of exposure of various services at a global (country)…
Friday #rstats twofer: Finding macOS 32-bit apps & Processing Data from System Commands
Apple has run the death bell on 32-bit macOS apps and, if you're running a recent macOS version on your Mac (which you should so you can get security updates) you likely see this alert from…
Introducing 'gepetto' — a Splash-like REST API to Headless Chrome
It's been over a year since Headless Chrome was introduced and it has matured greatly over that time and has acquired a pretty large user base. The TLDR on it is that you can now use Chrome as you would any command-line interface (CLI)…
In-brief: Using Bro connection logs with Apache Drill
If you've got a directory full of Bro NSM logs, it's easy to work with them in Apache Drill since they're just tab-separated values (TSV) files by default. The most tedious part is mapping the columns to proper types and hopefully this…
Updates to the sergeant (Apache Drill connector) Package & a look at Apache Drill 1.14.0 release
Apache Drill 1.14.0 was recently released , bringing with it many new features and a temporary incompatibility with the current rev of the MapR ODBC drivers. The Drill community expects new ODBC drivers to arrive shortly. The sergeant ? is…
In-brief: splashr update + High Performance Scraping with splashr, furrr & TeamHG-Memex's Aquarium
The development version of splashr now support authenticated connections to Splash API instances. Just specify user and pass on the initial splashr::splash() call to use your scraping setup a bit more safely. For those not familiar with…
Connecting Apache Zeppelin and Apache Drill, PostgreSQL, etc.
A previous post showed how to use a different authentication provider to wire up Apache Zeppelin and Amazon Athena. As noted in that post, Zeppelin is a "notebook" alternative to Jupyter (and other) notebooks. Unlike Jupyter, I can…
Connecting Apache Zeppelin Up to Amazon Athena with an IAM Profile Name
One really cool feature of Zeppelin is the ability for it to wire it up to databases via JDBC and use it interactive queries. A future post will provide instructions for Apache Drill, but this one's about wiring up Amazon Athena and Apache…
Digging into mbox details: A tale of tm & reticulate
I had to processes a bunch of emails for a $DAYJOB task this week and my "default setting" is to use R for pretty much everything (this should come as no surprise). Treating mail as data is not an uncommon task and many R packages exist…
ggplot "Doodling" with HIBP Breaches
After reading this interesting analysis of "How Often Are Americans' Accounts Breached?" by Gaurav Sood (which we need more of in cyber-land) I gave in to the impulse to do some gg-doodling with the "Have I Been Pwnd" JSON data he…
Two new Apache Drill UDFs for Processing UR[IL]s and Internet Domain Names
Continuing the blog's UDF theme of late, there are two new UDF kids in…
New Apache Drill UDF for Processing Twitter Tweet Text
There are many ways to gather Twitter data for analysis and many R and Python (et al) libraries make full use of the Twitter API when building a corpus to extract useful metadata for each tweet along with the text of each tweet. However,…
A new 'boto3' Amazon Athena client wrapper with dplyr async query support
A previous post explored how to deal with Amazon Athena queries asynchronously. The function presented is a beast , though it is on purpose (to provide options for…
Alleviating AWS Athena Aggravation with Asynchronous Assistance
I've blogged about how to use Amazon Athena with R before and if you are a regular Athena user, you've likely run into a situation where you prepare a dplyr chain, fire off a collect() and then…
Visualizing macOS App Usage with a Little Help from osqueryr & mactheknife
Both my osqueryr and macthekinfe packages have had a few updates and I wanted to put together a fun example (it being Friday, and all) for what you can do with them. All my packages are now on GitHub and GitLab and I'll be maintaining them…
Freeing PDF Data to Account for the Unaccounted
I've mentioned @stiles before on the blog but for those new to my blatherings, Matt is a top-notch data journalist with the @latimes and currently stationed in South Korea. I can only imagine how much busier his life has gotten since that…
Build httr Functions Automagically from Manual Browser Requests with the middlechild Package
You can catch a bit of the @rOpenSci 2018 Unconference experience at home w with this short-ish 'splainer video on how to use the new middlechild package (https://github.com/ropenscilabs/middlechild) & mitmproxy to automagically create…
Running RStudio (1.2) Background Jobs
The forthcoming RStudio 1.2 release has a new "Jobs" feature for running and managing background R…
Making World Tile Grid-Grids
A colleague asked if I would blog about how I crafted the grid of world tile grids in this post and I accepted the challenge. The technique isn't too hard as it just builds on the initial work by Jon Schwabish and a handy file made by…
Hello, Dorling! (Creating Dorling Cartograms from R Spatial Objects + Introducing Prism Skeleton)
After seeing Fira Sans in action in presentations at eRum 2018 I felt compelled to add hrbrthemes support for it so I made a firasans ? extension to it that uses Fira Sans Condensed and Fira Code fonts for ggplot2…
OS Secrets Exposed: Extracting Extended File Attributes and Exploring Hidden Download URLs With The xattrs Package
Most modern operating systems keep secrets from you in many ways. One of these ways is by associating extended file attributes with files. These attributes can serve useful purposes. For instance, macOS uses them to identify when files…
The Fix Is In: Finding infix functions inside contributed R package "utilities" files
Regular readers will recall the " utility belt " post from back in April of this year. This is a follow-up to a request made asking for a list of all the % infix functions in those…
The Power of Standards and Consistency
I'm going to (eventually) write a full post on the package I'm mentioning in this one : osqueryr ? . The TLDR on osqueryr is that it is an R DBI wrapper (that has just enough glue to also be plugged into dbplyr ) for osquery ? . The TLDR…
GDPR Unintended Consequences Part 1 — Increasing WordPress Blog Exposure
I pen this mini-tome on "GDPR Enforcement Day". The spirit of GDPR is great, but it's just going to be another Potempkin Village in most organizations much like PCI or SOX . For now, the only thing GDPR has done is made GDPR consulting…
Create Code Metrics with cloc
The cloc Perl script (yes, Perl !) by Al Danial ( https://github.com/AlDanial/cloc ) has been one of the go-to tools for generating code metrics. Given a single file, directory tree, archive, or git repo, cloc can speedily give you metrics…
"LMX ot NOSJ!" Interchanging Classic Data Formats With Single blackmagic Incantations
The D.C. Universe magic hero Zatanna used spells (i.e. incantations) to battle foes and said spells were just sentences said backwards, hence the mixed up jumble in the title. But, now I'm regretting not naming the package zatanna and…
RIPE 76 Selected Talks
Do not read anything more into the order than the end-number of the "Main URL" since this was auto-generated from a script that processed my Firefox tab…
Wrangling Data Table Out Of the FBI 2017 IC3 Crime Report
The U.S. FBI Internet Crime Complaint Center was established in 2000 to receive complaints of Internet crime. They produce an annual report, just released 2017's edition , and I need the data from it. Since I have to wrangle it out, I…
Seventeen Minutes From Tweet To Package
The answer was a 1:1 "file upload" curl to httr…
Painless ODBC + dplyr Connections to Amazon Athena and Apache Drill with R & odbc
I spent some time this morning upgrading the JDBC driver (and changing up some supporting code to account for changes to it) for my metis package? which connects R up to Amazon Athena via RJDBC. I'm used to JDBC and have to deal with Java…
Examining POTUS Executive Orders
This week's edition of Data is Plural had two really fun data sets. One is serious fun (the first comprehensive data set on U.S. evictions , and the other I knew about but had forgotten: The Federal Register Executive Order (EO) data…
Access Your "Saved for Later" Feedly Items By Hooking Up Dropbox to Feedly
If you come here often you've noticed that I've been writing a semi-frequent series on using the Feedly API with…
By Request: Retrieving Your Feedly "Saved for Later" Entries
@mkjcktzn asked if one can access Feedly "Saved for Later" items via the API. The answer is "Yes!", and it builds off of that previous post. You'll need to read it and get your authentication key (still no package ?) before…
A Word About Tracking On This Site
Since I just railed against Congress for being a bit two-faced about privacy I thought some rud.is site disclosure would be in…
Does Congress Really Care About Your Privacy?
Said bad words include "Facebook", "Mark Zuckerberg" and many referrals to entities within the U.S. Government. Given the topic, it cannot be…
Convert epub to Text for Processing in R
Here's one way to do that which doesn't rely on pandoc ( pandoc can easily do this and ships with RStudio but shelling out for this is cheating…
Dissecting R Package "Utility Belts"
Many R package authors (including myself) lump a collection of small, useful functions into some type of utils.R file and usually do not export the functions since they are (generally) designed to work on package internals rather than…
Adding macOS Touch Bar Support to RStudio
Modern MacBook Pros have a fairly useless ( c'mon, admit it! ) "Touch Bar" that did little more than cause severe ire in the developer community after turning a full-fledged, tactile Escape key into a hollow version if its former…
Exploring R-Bloggers Posts with the Feedly API
There's a yuge chance you're reading this post (at least initially) on R-Bloggers right now (though you should also check out R Weekly and add their live feed to your RSS reader pronto!). It's a central "watering hole" for R folks and is…
2018 IEEE Security & Privacy (Filtered) Paper Dump
The 2018 IEEE Security & Privacy Conference is in May but they've posted their full proceedings and it's better to grab them early than to wait for it to become part of a paid journal…
Nykolas Z Updates Global Alternative DNS Speed Test to Include Cloudflare (1.1.1.1)
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…
More Options For Querying DNS From R with 1.1.1.1
You have to have been living under a rock to not know about Cloudflare's new 1.1.1.1 DNS offering. I won't go into "privacy", "security" or "speed" concepts in this post since that's a pretty huge topic to distill for folks given the, now,…
Compute/Visualize Drive Space Consumption of Your Installed R Packages
The fs package makes it super quick and easy to find out just how much "package hoarding" you've been…
R⁶ — Capturing [YouTube] Captions
@yoniceedee suggested I look at the Cambridge Analytics "whistleblower" testimony…
On MIMEs, software versions and web site promiscuity (a.k.a. three new packages to round out the week)
A quick Friday post to let folks know about three in-development R packages that you're encouraged to poke the tyres o[fn] and also jump in and file issues or PRs…
Steel-ing a Makeover from Tariffic Post
(FWIW I think I even caused myself pain due to the title of this blog…
Handling Semantic Version Strings Like a Boss with the semver Package
I work with internet-scale data and do my fair share of macro-analyses on vulnerabilities. I use the R semver package for most of my work and wanted to blather on a bit about it since it's super-helpful for this work and doesn't get the…
Comparing 2017 Maine Lobster Landings To Historical Landings
Tis the season for finding out how well Maine fisherfolk did last year; specifically, Maine…
Pym.js Library Vulnerability in widgetframe Package
The NPR Visuals Team created and maintains a javascript library that makes it super easy to embed iframes on web pages and have said documents still be…
Quick and Clean DMARC Record Processing with "Inline" Rcpp
Much of what I need to do for work-work involves using tools that are (for the moment) not in R. Today, I needed to test the validity of (and other processing on) DMARC records and I'm loathe to either reinvent the wheel or reticulate bits…
The Friday #rstats PuzzleR : 2018-01-26
Time for another look at what's new and interesting in the #rstats world with the help of Peter Meissner's (@marvindpr) crossword.r ?…
The Friday #rstats PuzzleR : 2018-01-19
He also made a super spiffy javascript library to pair with it, which can turn crossword model output into an interactive…
Bitcoin (World Map) Bubbles
We're doing some interesting studies (cybersecurity-wise, not finance-wise) on digital currency networks at work-work and --- while I'm loathe to create a geo-map from IPv4 geolocation data ---…
Can't Stop at 21: Twitter Recipe #22 — Tying Up Loose Threads
NOTE: The likelihood of this recipe being added to the recent practice bookdown book is slim, but I'll try to keep the same format for the blog…
A bookdown "Hello World" : Twenty-one (minus two) Recipes for Mining Twitter with rtweet
The new year begins with me being on the hook to crank out a book on advanced web-scraping in R by July (more on that in a future blog post). The bookdown ? package seemed to be the best way to go about doing this but I had only played…
R⁶ — Capture Tweets with tweet_shot()
that spawned from Maëlle's recent look-back post turned into a quick function for capturing an image of a Tweet/thread using webshot , rtweet , magick and glue…
2017. Quantified. In. R.
2017 is nearly at an end. We humans seem to need these cycles to help us on our path forward and have, throughout history, used these annual demarcation points as a time of reflection of what was, what is an what shall come…
New Package swatches is Now on CRAN
It's been a long time coming, but swatches ? is now on CRAN…
uBlock Filters for New GitHub Activity Feed
GitHub (2017-12-21 post-time) started adding obnoxious boxes to their activity feed. I use that to discover new projects/developers. While I also have it in RSS and that's nice and compact, I do browse the activity feed directly. Those…
R⁶ Series — Random Sampling From Apache Drill Tables With R & sergeant
At work-work I mostly deal with medium-to-large-ish data. I often want to poke at new or existing data sets w/o working across billions of rows. I also use Apache Drill for much of my exploratory…
mqtt Development Log : On DSLs, Rcpp Modules and Custom Formula Functions
I know some folks had a bit of fun with the previous post since it exposed the fact that I left out unique MQTT client id generation from the initial 0.1.0 release of the in-development package (client ids need to be unique…
Inter-operate with 'MQTT' Message Brokers With R (a.k.a. Live! BBC! Subtitles!)
Most of us see the internet through the lens of browsers and apps on our laptops, desktops, watches, TVs and mobile devices. These displays are showing us --- for the most part --- content designed for human consumption. Sure, apps handle…
A Workaround For When Anti-DDoS Also Means Anti-Data
More sites are turning to services like Cloudflare due to just how stupid-easy it is to DDoS --- perform a (possibly Distributed) Denial of Service attack on -- a site. Sometimes the DDoS is intentional (malicious). Sometimes it's because…
The Cost of True Love (a.k.a. The Tidy — and expensive! — Twelve Days of Christmas)
I’m in the market for Christmas presents for my true love, @mrshrbrmstr, and thought I’d look to an age-old shopping list for inspiration. Just what would it set me back if I decided to mimic the 12 Days of Christmas in this modern day and…
A Public Apology to Tal/R-Bloggers + The Trouble With Tibbles
Over the past few weeks, I had been noticing that some posts in the R-bloggers feed were getting truncated in Feedly. I don't remember when I noticed that since I usually click through immediately from the headline entry to the R-bloggers…
Sentiment Analysis of "A Christmas Carol"
Our family has been reading, listening to and watching "A Christmas Carol" for just abt 30 years now. I got it into my crazy noggin to perform a sentiment analysis on it the other day and tweeted out the results, but a large chunk of the R…
voteogram Is Now On CRAN
Earlier this year, I made a package that riffed off of ProPublica's really neat voting cartograms (maps) for the U.S. House and Senate. You can see one for disaster relief spending in the House and one for the ACA "Skinny Repeal" in the…
"Black"/"Cyber" Tips (a.k.a. How the hrbrgrinch ruined Christmas shopping)
NOTE: This is mainly for those of us in the Colonies, but some tips apply…
For Victoria & Kyle
Daughter #2 got married to a wonderful chap yesterday. I wanted to preserve the text of my speech and blessing for them here. I know it's on their wedding video but I'd like to archive it into the historical record as…
Statebins Reimagined
A long time ago, in a github repo far, far away there lived a tiny package that made it possible to create equal area, square U.S. state cartograms in R dubbed statebins ? . Three years have come and gone and --- truth be told --- I've…
New IBM Plex Sans Support in hrbrthemes + Automating Axis Text Justification
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…
Twitter Outer Limits : Seeing How Far Have Folks Fallen Down The Slippery Slope to "280" with rtweet
By now, virtually every major media outlet has covered the "280 Apocalypse"™. For those still not "in the know", Twitter recently moved the tweet character cap to 280 after a "successful" beta test (some of us have different ideas of what…
Measuring & Monitoring Internet Speed with R
Working remotely has many benefits, but if you work remotely in an area like, say, rural Maine, one of those benefits is not massively speedy internet connections. Being able to go fast and furious on the internet is one of the many things…
Taking a Shot at cdcfluview v0.7.0 (a.k.a. The Dangers of Relying on 'Hidden' APIs)
Unlike @noamross, I am not an epidemiologist (NOTE: Noam battles pandemics before breakfast, so be super nice to him) but I do like to find kindred methodologies in other disciplines to help foster the growth of cybersecurity into…
I, For One, Welcome Our Forthcoming New robots.txt Overlords
Despite my week-long Twitter consumption sabbatical (helped --- in part --- by the nigh week-long internet and power outage here in Maine), I still catch useful snippets from folks. My cow-orker @dabdine shunted a tweet by @terrencehart…
Yet-Another-Power Outages Post : Full Tidyverse Edition
This past weekend, violent windstorms raged through New England. We — along with over 500,000 other Mainers — went "dark" in the wee hours of Monday morning and (this post was published on Thursday AM) we still have no utility-provided…
gg_tweet'ing Power Outages
As many folks know, I live in semi-rural Maine and we were hit pretty hard with a wind+rain storm Sunday to Monday. The hrbrmstr compound had no power (besides a generator) and no stable/high-bandwidth internet (Verizon LTE was heavily…
A Call to Tweets (& Blog Posts)!
Way back in July of 2009, the first version of the twitteR package was published by Geoff Jentry in CRAN. Since then it has seen 28 updates, finally breaking the 0.x.y barrier into 1.x.y territory in March of 2013 and receiving it's last…
Enabling Concerned Visitors & Ethical Security Researchers with security.txt Web Security Policies (plus analyze them at-scale with R)
I've blogged a bit about robots.txt --- the rules file that documents a sites "robots exclusion" standard that instructs web crawlers what they can and cannot do (and how frequently they should do things when they are allowed to). This is…
Tragic Documentation
The "data science" feed URL is https://rud.is/b/category/r/feed/…
Retrieve & process TV News chyrons with newsflash
The Internet Archive recently announced a new service they've dubbed 'Third Eye'. This service scrapes the chyrons that annoyingly scroll across the bottom-third of TV news broadcasts. IA has a vast historical archive of TV news that…
Identify & Analyze Web Site Tech Stacks With rappalyzer
Modern websites are complex beasts. They house photo galleries, interactive visualizations, web fonts, analytics code and other diverse types of content. Despite the potential for diversity, many web sites share similar "tech stacks" ---…
SODD — StackOverflow Driven-Development
I occasionally hang out on StackOverflow and often use an answer as an opportunity to fill a package void for a particular need. docxtractr and qrencoder are two (of many) packages that were birthed from SO answers. I usually try to answer…
Speeding Up Digital Arachnids
spiderbar, spiderbar Reads robots rules from afar. Crawls the web, any size; Fetches with respect, never lies. Look Out! Here comes the…
Pirating Web Content Responsibly With R
International Code Talk Like A Pirate Day almost slipped by without me noticing (September has been a crazy busy month), but it popped up in the calendar notifications today and I was glad that I had prepped the meat of a post a few weeks…
Mapping Fall Foliage with sf
I was socially engineered by @yoniceedee into creating today's post due to being prodded with this…
Armchair Quarterbacking Systemic Organization and Industry Failures
insert(post, "{ 'standarddisclaimer' : 'My opinion, not my employer\'s'…
It's a FAKE (?)! Revisiting Trust In FOSS Ecosystems
I've blathered about trust before 1 2 , but said blatherings were in a "what if" context. Unfortunately, the if has turned into a when , which begged for further blathering on a recent FOSS ecosystem cybersecurity…
Revisiting Readability With RStudio
I've blogged about my in-development R package hgr a before and it's slowly getting to a CRAN release. There are two new features to it that are more useful in an interactive session than in a programmatic context. Since they build on each…
Increasing Output Buffer Size in Apache Drill UDFs Custom (Simple) Functions
Putting this here to make it easier for others who try to Google this topic to find it w/o having to find and tediously search through other UDFs (user-defined…
Teasing Out Top Daily Topics with GDELT's Television Explorer
Earlier this year, the GDELT Project released their Television Explorer that enabled API access to closed-caption tedt from television news broadcasts. They've done an incredible job expanding and stabilizing the API and just recently…
Readability Redux
I recently posted about using a Python module to convert HTML to usable text. Since then, a new package has hit CRAN dubbed htm2txt that is 100% R and uses regular expressions to strip tags from…
New CRAN Package Announcement: splashr
(That image was generated with splashr::renderpng(url = "https://cran.r-project.org/web/packages/splashr/")…
Rpad Domain Repurposed To Deliver Creepy (and potentially malicious) Content
I was about to embark on setting up a background task to sift through R package PDFs for traces of functions that "omit NA values" as a surprise present for Colin Fay and Sir…
Unbottling ".msg" Files in R
There was a discussion on Twitter about the need to read in ".msg" files using R. The "MSG" file format is one of the many binary abominations created by Microsoft to lock folks and users into their platform and tools. Thankfully, they…
Reticulating Readability
I needed to clean some web HTML content for a project and I usually use hgr::cleantext() for it and that generally works pretty well. The cleantext() function uses an XSLT stylesheet to try to remove all non-"main text content" from an…
Caching httr Requests? This means WAR[C]!
I've blathered about my crawldelay project before and am just waiting for a rainy weekend to be able to crank out a follow-up post on it. Working on that project involved sifting through thousands of Web Archive (WARC) files. While I have…
R⁶ — Exploring macOS Applications with codesign, Gatekeeper & R
(General reminder abt "R⁶" posts in that they are heavy on code-examples, minimal on expository. I try to design them with 2-3 "nuggets" embedded for those who take the time to walk through the code examples on their systems. I'll always…
R⁶ — Reticulating Parquet Files
The reticulate package provides a very clean & concise interface bridge between R and Python which makes it handy to work with modules that have yet to be ported to R (going native is always better when you can do it). This post shows how…
Analyzing "Crawl-Delay" Settings in Common Crawl robots.txt Data with R
One of my tweets that referenced an excellent post about the ethics of web scraping garnered some…
Reading PCAP Files with Apache Drill and the sergeant R Package
It's no secret that I'm a fan of Apache Drill . One big strength of the platform is that it normalizes the access to diverse data sources down to ANSI SQL calls, which means that I can pull data from parquet, Hie, HBase, Kudu, CSV, JSON,…
R⁶ — General (Attys) Distributions
Matt @stiles is a spiffy data journalist at the @latimes and he posted an interesting chart on U.S. Attorneys General longevity (given that the current US AG is on thin…
Ten-HUT! The Apache Drill R interface package — sergeant — is now on CRAN
I'm extremely pleased to announce that the sergeant package is now on CRAN or will be hitting your local CRAN mirror…
R⁶ — Disproving Approval
Rasmussen makes their Presidential polling data available for both ? & O. Why not compare their ratings from day 1 in office (skipping days that Rasmussen doesn't…
Replicating the Apache Drill 'Yelp' Academic Dataset Analysis with sergeant
The Apache Drill folks have a nice walk-through tutorial on how to analyze the Yelp Academic Dataset with Drill . It's a bit out of date (the current Yelp data set structure is different enough that the tutorial will error out at various…
Keeping Users Safe While Collecting Data
I caught a mention of this project by Pete Warden on Four Short Links today. If his name sounds familiar, he's the creator of the DSTK , an O'Reilly author, and now works at Google. A decidedly clever and decent…
Engaging the tidyverse Clean Slate Protocol
I caught the 0.7.0 release of dplyr on my home CRAN server early Friday morning and immediately set out to install it since I'm eager to finish up my sergeant package and get it on CRAN. "Tidyverse" upgrades aren't trivial for me as I…
R⁶ — Scraping Images To PDFs
I've been doing intermittent prep work for a follow-up to an earlier post on store closings and came across this CNN Money "article" on it. Said "article" is a deliberately obfuscated or lazily crafted series of GIF images that contain all…
Drilling Into CSVs — Teaser Trailer
I used reading a directory of CSVs as the foundational example in my recent post on idioms…
L.A. Unconf-idential : a.k.a. an rOpenSci #runconf17 Retrospective
Last year, I was able to sit back and lazily "RT" Julia Silge's excellent retrospective on her 2016 @rOpenSci "unconference" experience. Since Julia was not there this year, and the unconference experience is still in primary storage (LMD…
R⁶ — Idiomatic (for the People)
NOTE: I'll do my best to ensure the next post will have nothing to do with Twitter, and this post might not completely meet my R⁶…
A Very Palette-able Post
Many of my posts seem to begin with a link to a tweet, and this one falls into that…
R⁶ — Using R With Amazon Athena & AWS Temporary Security Credentials
Most of the examples of working with most of the AWS services show basic username & password authentication. That's all well-and-good, but many shops use the AWS Security Token Service to provide temporary credentials and session tokens to…
R⁶ — Tracking WannaCry Bitcoin Wallet Payments with R
If you follow me on Twitter or monitor @Rapid7's Community Blog you know I've been involved a bit in the WannaCry ransomworm…
Travis-CI Flaw Exposed Some 'Secure' Environment Variable Contents
Tagging this as #rstats -related since many R coders use Travis-CI to automate package builds (and other things). Security researcher Ivan Vyshnevskyi did some ++gd responsible disclosure to the Travis-CI folks letting them know they were…
Plot the Vote: Making U.S. Senate & House Cartograms in R
Political machinations are a tad insane in the U.S. these days & I regularly hit up @ProPublica & @GovTrack sites (& sub to the GovTrack e-mail updates) as I try to be an informed citizen, especially since I've got a Senator and…
Scrapeover Friday — a.k.a. Another R Scraping Makeover
Mara is — without a doubt — the best data science promoter in the Twitterverse. She seems to have her finger on the pulse of everything that's happening in the data science world and is one of the most ardent amplifiers there…
R⁶ — Using pandoc from R + A Neat Package For Reading Subtitles
Once I realized that my planned, larger post would not come to fruition today I took the R⁶ post (i.e. "minimal expository, keen focus") route, prompted by a Twitter discussion with some R mates who needed to convert "lightly formatted"…
Decomposing Composers with R
The intrepid @masalmon cranked out another blog post , remixing classical music schedule data from Radio Swiss Classic . It's a fun post and you should read it before continuing…
Shuttering Pies With Retiring Stores
It's pretty hard to compare store-to-store, even though it is fairly clear which ones are going-going-gone. If we want to see the relative percentage of each store closing and also want to see how they stack up against each other, then…
When Homoglyphs Attack! Generating Phishing Domain Names with R
It's likely you've seen the news regarding yet-another researcher showing off a phishing domain attack. The technique is pretty…
Come Fly With Me (well, not really) — Comparing Involuntary Disembarking Rates Across U.S. Airlines in R
By now, word of the forcible deplanement of a medical professional by United has reached even the remotest of outposts in the #rstats universe. Since the news brought this practice to global attention, I found some aggregate U.S. Gov data…
R⁶ — RStudio Server Client? Make An App For That!
RStudio is a great way to work through analyses tasks, and I suspect most folks use the "desktop" version of the product on their local…
Simple Offline Airport Wi-Fi Tracker in R
The Google Maps interface is a bit meh and the "formatted" data is also a bit meh but the data is useful when travelling (NOTE: always use a VPN in airports on both your mobile devices and…
Superclassing to R⁶
To avoid "branding" confusion with R⁴ I'm superclassing it to R⁶ and encouraging others in the R community to don the moniker and do their own small, focused posts on topics that would help the R community learn things. Feel free to use R⁶…
R⁶ — Snow Day Facets
Back in 2014 I blogged about first snowfall dates for a given U.S. state. It's April 1, 2017 and we're slated to get 12-18" of snow up here in Maine and @mrshrbrmstr asked how often this — snow in May — has occurred near…
All-in on R⁶ : Progress [bars] on first post
@eddelbuettel's idea is a good one. (it's a quick read…jump there and come back). We'll avoid confusion and call it R⁶ over here. Feel free to don the…
Exploring 2017 Retail Store Closings with R
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…
Think Twice Before Using Ohmconnect
I listen to @NPR throughout the day (on most days) and a story on Ohmconnect piqued my interest (it aired 5 days prior to this post). The TLDR on Ohmconnect is that it ostensibly helps you save energy by making you more aware of…
Making a Case for case_when
This is a brief (and likely obvious, for some folks) post on the dplyr::casewhen()…
Candy Coated Confidence Intervals
@mrshrbrmstr hinted that she would like this post by @RickWicklin translated into R for her stats class. She's quite capable of cranking out the translation of the core component of that post — a call to chisq.test — but she wanted to show…
hrbrthemes 0.1.0 is now on CRAN
I'm pleased to announce the inaugural release of my hrbrthemes (0.1.0) package on…
On Watering Holes, Trust, Defensible Systems and Data Science Community Security
I've been threatening to do a series on "data science community security" for a while and had cause to issue this inaugural post today. It all started with…
Putting It All Together
The kind folks over at @RStudio gave a nod to my recently CRAN-released epidata package in their January data package roundup and I thought it might be useful to give it one more showcase using the recent CRAN update to ggalt and the new…
ggalt 0.4.0 now on CRAN
I'm uncontainably excited to report that the ggplot2 extension package ggalt is now on CRAN…
Spelunking XHRs (XMLHttpRequests) with splashr
DiagrammeR(" graph LR A-->B A-->C C-->E B-->D C-->D D-->F E-->F ") %>%…
Geom❤️
This particular ❤️ math pilfered this morning from…
Diving Into Dynamic Website Content with splashr
If you do enough web scraping, you'll eventually hit a wall that the trusty httr verbs (that sit beneath rvest ) cannot really overcome: dynamically created content (via javascript) on a site. If the site was nice enough to use XHR…
Strung Out On String Ops - A Brief Comparison of stringi and stringr
I made a promise to someone that my next blog would be about stringi vs stringr and I intend to keep said…
Exploring News Coverage With newsflash
I was enthused to see a mention of this on the GDELT blog since I've been working on an R package dubbed newsflash to work with the API that the form…
The ? Resistance
I need to be up-front about something: I'm somewhat partially at fault for ? being elected. While I did not vote for him, I could not in any good conscience vote for his Democratic rival. I wrote in a ticket that had one Democrat and one…
One View of the Impact of the New Immigration Ban (+ freeing PDF data with tabulizer)
Dear Leader has made good on his campaign promise to "crack down" on immigration from "dangerous" countries. I wanted to both see one side of the impact of that decree — how many potential immigrants per year might this be impacting — and…
Coconut Pumpkin Pie with Coconut Dark Chocolate Ganache
I'm not about to tell you how to make your fav pie crust as that's a deeply personal subject. You'll need two of…
Create Parquet Files From R Data Frames With sergeant & Apache Drill (a.k.a. Make Parquet Files Great Again in R)
When you're in this larger-data world, parquet files are one of the core data storage formats. They're designed to be compact and are optimized for columnar operations. Unlike CSV, JSON files or even R Data files, it's not necessary to…
Workout Wednesday Redux (2017 Week 3)
I had started a "52 Vis" initiative back in 2016 to encourage folks to get practice making visualizations since that's the only way to get better at virtually anything. Life got crazy, 52 Vis fell to the wayside and now there are more…
The Devil's in the [Davos] Details — A quick look at this year's WEF Global Risks Report
It's Davos time again. Each year the World Economic Forum (WEF) gathers the global elite together to discuss how they're going to shape our collective future. WEF also releases their annual Global Risks Report at the same time. I read it…
Knit directly to jupyter notebooks from RStudio
Did you know that you can completely replace the "knitting" engine in R Markdown documents? Well, you…
2017-01 Authored Package Updates
The rest of the month is going to be super-hectic and it's unlikely I'll be able to do any more to help the push to CRAN 10K, so here's a breakdown of CRAN and GitHub new packages & package updates that I felt were worth raising awareness…
The Most Important Commodity in 2017 is Data
Despite being in cybersecurity nigh forever (a career that quickly turns one into a determined skeptic if you're doing your job correctly) I have often trusted various (not to be named) news sources, reports and data sources to provide…
Removing Personal Bias From Flu Severity Estimation (a.k.a. Misery Loves Data)
The family got hit pretty hard with the flu right as the Christmas festivities started and we were all pretty much bed-ridden zombies up until today (2017-01-02). When in the throes of a very bad ILI it's easy to imagine that you're a…
North Carolina's Neighborhood
When I saw the bombastic headline "North Carolina is no longer classified as a democracy" pop up in my RSS feeds today (article link: http://www.newsobserver.com/opinion/op-ed/article122593759.html ) I knew it'd help feed polarization bear…
Pipes (%>%) Everywhere
An R user asked a question regarding whether it's possible to have the RStudio pipe ( %>% ) shortcut ( Cmd-Shift-M ) available in other macOS applications. If you're using Alfred then you can use this workflow for said task (IIRC this…
sergeant : An R Boot Camp for Apache Drill
I recently mentioned that I've been working on a development version of an Apache Drill R package called sergeant . Here's a lifted "TLDR" on…
Package update: longurl 0.3.0 is hitting CRAN mirrors
The longurl package has been updated to version 0.3.0 as a result of a bug report noting that the URL expansion API it was using went pay-for-use. Since this was the second time a short URL expansion service either went belly-up or had…
Minding the zoo[keeper] with R
I've been drafting a new R package — sergeant — to work with Apache Drill and have found it much easier to manage having Drill operating in a single node cluster vs drill-embedded mode (esp when I need to add a couple more nodes for…
The Actual, Über, Ultimate Fake News List
It is surprisingly shorter (or longer if you grok regular expressions) than you think it might be: http[s]://.…
Survey on Data Science In Two Year Colleges
The ASA (American Statistical Association) has been working in collaboration with the ACM (Association for Computing Machinery) on developing a data science curriculum for Two Year Colleges. Part of this development is the need to…
Interacting With Amazon Athena from R
This is a short post for those looking to test out Amazon Athena with…
Jumping on the "Banned" Wagon
Where's the ACLU? They'd be right there if this was an alt-right'er asking to ban books with salacious content they deem (rightly or wrongly) "inappropriate" or "harmful" to teens. I hope they step up and fight the fight the good fight…
The Most Important Hashtag for 2017
When something pops up in the news, on Twitter, Facebook or even (ugh) Gab claiming or teasing findings based on data I believe it's more important than ever to reply with some polite text and a #showmethedata hashtag. We desperately…
The Devil is in the Details
The \first public informational video\ from the PEOTUS didn't add a full transcript of the video to the web site and did not provide (at least as of 0700 EST on 2016-11-22) their own text annotations/captions to the…
This is not cool.
First it was OpenDNS selling their souls (and, [y]our data) to Cisco (whom I don't trust at all with my…
Dis-ingenuous
If those were real, functional bulbs that were destroyed…spreading real, irreclaimable refuse…all to shill a far less than revolutionary "professional" laptop…then, just how "enlightened" is Apple,…
Stop.
Stop. — rud.is blog archive
Counting [U.S.] Expatriation with R (a.k.a. a Decade of Desertion)
If you're even remotely following the super insane U.S. 2016 POTUS circus election you've no doubt seen a resurgence of "if X gets elected, I'm moving to Y" claims by folks who are "anti" one candidate or another. The Washington Examiner…
QuickLookR - A macOS QuickLook plugin for R Data files
I had tried to convert my data-saving workflows to feather but there have been issues with it supporting large files (that seem to be near resolution), so I've been continuing to use R Data files for local saving of processed/cleaned…
When life imitates Fullmetal Alchemist
The NIH is \moving forward\ with plans to financially support & encourage human-animal chimera…
New codewords for "age & family discrimination"
From: Why Corporate America Is Leaving the Suburbs for the…
U.S. Drought Animations with the "Witch's Brew" (purrr + broom + magick)
This is another purrr -focused post but it's also an homage to the nascent magick package (R interface to ImageMagick) by…
Use quick formula functions in purrr::map (+ base vs tidtyverse idiom comparisons/examples)
I've converted the vast majority of my apply usage over to purrr functions. In an attempt to make this a quick post, I'll refrain from going into all the benefits of the purrr package. Instead, I'll show just one thing that's super…
Mid-year R Packages Update Summary
I been updating some existing packages and github-releasing new ones (before a CRAN push). Most are "cyber"-related, but there are some general purpose ones. Here's a quick…
Slaying CIDR Orcs with Triebeard (a.k.a. fast trie-based 'IPv4-in-CIDR' lookups in R)
The insanely productive elf-lord, @quominus put together a small package (triebeard) that exposes an API for radix/prefix tries at both the R and Rcpp levels. I know he had some personal needs for this and we both kinda need these to…
CRAN Packages on GitHub (and some CRAN DESCRIPTION observations)
Just about a week ago @thosjleeper posited something on twitter w/r/t how many CRAN packages had associations with GitHub (i.e. how many used GitHub for development). The DESCRIPTION file (that comes with all R packages) has some fields…
Bridging The Political [Polygons] Gap with ggplot2
The @pewresearch folks have been collecting political survey data for quite a while, and I noticed the visualization below referenced in a Tableau vis contest…
A Simple Prediction Web Service Using the New fiery Package
fiery is a new Rook/httuv-based R web server in town created by @thomasp85 that aims to fill the gap between raw http & websockets and Shiny with a flexible framework for handling requests and serving up…
Making "Time Rivers" in R
Once again, @albertocairo notices an interesting chart and spurs pondering in the visualization community with his post covering an unusual "vertical time series" chart produced for the print version of the…
A Call to Arms[list] Data Analysis!
The NPR vis team contributed to a recent story about Armslist, a "craigslist for guns". Now, I'm neither pro-"gun" or anti-"gun" since this subject, like most heated ones, has more than two sides. What I am is pro-data, and the U.S.…
Your data vis "Spidey-sense" & the need for a robust "utility belt"
@theboysmithy did a \great piece\ on coming up with an alternate view for a timeline for an FT…
On Whether Y-axis Labels Are Always Necessary
The infamous @albertocairo blogged about a nice interactive piece on German company tax avoidance by @ProPublica. Here's a snapshot of their interactive…
New viridis & colorbrewer palettes for ipv4-heatmap
It's no seekrit that I :heart: Hilbert curve heatmaps of IPv4 space. Real-world IPv4 maps (i.e. the ones that drop dots on the Earth) have little utility, but with Hilbert curves maps of IPv4 space many different topologies can be…
Global Temperature Change in R & D3 (without the vertigo)
One of the original versions was static and was not nearly as popular, but—as you can see—this one went…
New #rstats Podcast - R World News
Keeping up with R-related news on Twitter, GitHub, CRAN & even R-Bloggers (et al) can be an all-encompassing task that may be fun, but doesn't always make it easy to get work done. There is so much going on in the R community that we…
Pining for the fjoRds & monitoring SSL/TLS certificate expiration in R with flexdashboard
Folks have probably noticed that #52Vis has stalled, as has most blogging, package & Twitter activity. I came down with a nasty bout of bronchitis after attending rOpenSci Unconf 16 (there were so many people hacking [the sick kind] up a…
(ggplot2) Exercising with (ggalt) dumbbells
I follow the most excellent Pew Research folks on Twitter to stay in tune with what's happening (statistically speaking) with the world. Today, they tweeted this excerpt from their 2015 Global Attitudes…
52Vis Week #3 - Waste Not, Want Not
The Wall Street Journal did a project piece a while back in the "Waste Lands: America's Forgotten Nuclear Legacy". They dug through Department of Energy and CDC data to provide an overview of the lingering residue of this toxic time in…
52 Vis Week #2 Wrap Up
I've been staring at this homeless data set for a few weeks now since I'm using it both here and in the data science class I'm teaching. It's been one of the most mindful data sets I've worked with in a while. Even when reduced to pure…
52 Vis Week 1 Winners!
The response to 52Vis has exceeded expectations and there have been great entries for both weeks. It's time to award some…
Beating lollipops into dumbbells
Shortly after I added lollipop charts to ggalt I had a few requests for a dumbbell geom . It wasn't difficult to do modify the underlying lollipop Geom s to make a geomdumbbell() . Here it is in…
Clandestine DNS lookups with gdns
Google recently announced their DNS-over-HTTPS API, which "enhances privacy and security between a client and a recursive resolver, and complements DNSSEC to provide end-to-end authenticated DNS lookups". The REST API they provided was…
geom_lollipop() by the Chartettes
I make a fair share of bar charts throughout the day and really like switching to lollipop charts to mix things up a bit and enhance the visual appeal. They're easy to do in ggplot2, just use your traditional x & y mapping for geompoint()…
52Vis Week 2 (2016 Week #14) - Honing in on the Homeless
In case folks are wondering why I'm doing this, it's pretty simple. We need a society that has high data literacy and we need folks who are capable of making awesome, truthful data visualizations. The only way to do that is by working with…
iptools 0.4.0 released into the wild (i.e. is hitting the CRAN mirrors today)
The iptools package—a toolkit for manipulating, validating and testing IP addresses and ranges, along with datasets relating to IP addresses—is flying through the internets and hitting a CRAN mirror near you,…
Introducing a Weekly R / Python / JS / etc Vis Challenge!
Per a suggestion, I'm going to try to find a neat data set (prbly one from @jsvine) to feature each week and toss up some sample code (99% of the time prbly in R) and offer up a vis challenge. Just reply in the comments with a link to a…
Easier Composite U.S. Choropleths with albersusa
Folks who've been tracking this blog on R-bloggers probably remember this post where I showed how to create a composite U.S. map with an Albers projection (which is commonly referred to as AlbersUSA these days thanks to…
Nuclear Animations in D3
As I said, I'm kinda obsessed with the "nuclear" data set. So much so that I made a D3 version that's similar to the R version I made the other day. I tried not to code much today (too much Easter fun going on), so I left off the size &…
Nuclear Animations in R
@jsvine (Data Editor at BuzzFeed) cleaned up and posted a data sets of historical nuclear explosions earlier this week. I used it to show a few plotting examples in class, but it's also a really fun data set to play around with: categorial…
Using ProPublica "statefaces" in ggplot2
I'm a huge fan of ProPublica . They have a super-savvy tech team, great reporters, awesome graphics folks and excel at data-driven journalism. Plus, they give away virtually everything , including data, text, graphics &…
Stacking the deck against treemaps
They did an awesome makeover (it's interactive if you follow the…
Hy-phen-ate All The Things! (in R)
I started coding this to see if it could be a "poor dude's 'syllabifier'" (NOTE: "dude" is gender agnostic and I am fully aware of the proper NLP terms to use but it's way more fun to make up words) to make it easer to turn my Zellingach…
Supreme Annotations
I had not intended this to be "Annotation Week" but there was a large, positive response to my annotation "hack" post. This reaction surprised me, then someone pointed me to this link and also noted that if having to do subtitles via hacks…
Spinning Cycles in Box #4 To Take the Pies out of Pi Day
\>UPDATE: time spent per task factor order was wrong before. now…
ggplot2で字幕 <br/>[Subtitles in ggplot2]
UPDATE: this capability (+ more) are being rolled into ggplot2-proper. PR will be absorbed into ggplot2 main branch soon. exciting, annotated times…
Some Light Image Processing & Creation With R
A friend, we'll call him Alen put a call out for some function that could take an image and produce a per-row "histogram" along the edge for the number of filled-in points. That requirement eventually scope-creeped to wanting "histograms"…
OS X XQuartz Vulnerability Test Using R
It's usually a good thing when my #rstats and infosec worlds collide. Unfortunately, this time it's a script that R folk running on OS X can use to see if they are using a version of XQuartz that has a nasty vulnerability in the framework…
Primary Plotting
My wife tricked me into a partial-weekend project to try to get all the primary/caucus results to-date on a map (the whole us). This is challenging since not all states use counties as boundaries for aggregate results. I'm still piecing…
Capturing wild widgets with webshot
NOTE: you won't need to use this function if you use the development version of…
A Tale of Two Charting Paradigms: Vega-Lite vs R+ggplot2
This post comes hot off the heels of the nigh-feature-complete release of vegalite (virtually all the components of Vega-Lite are now implemented and just need real-world user testing). I've had a few and seen a few questions about "why…
Create Vega-Lite specs & widgets with the vegalite package
Vega-Lite 1.0 was released this past week. I had been meaning to play with it for a while but I've been burned before by working with unstable APIs and was waiting for this to bake to a stable release. Thankfully, there were no new shows…
Working with the Clinton State Dept Email Dumps in R (Part 1: Graphs)
I put this together after experimenting with ggplot2 and ggnetwork earlier this week. The changes I made added svgPanZoom into the mix. Consequently, it has a widget in it, so it was just easier to embed the full R markdown HTML into an…
Thai Curry Puffs (Karipap • กะหรี่ปั๊บ)
I made Thai curry puffs for @mrshrbrmstr for Valentine's Day (paired with Thai crispy duck red curry) and was asked to post the recipe. There are two versions, one with lard pie dough (#3, #4 & I are dairy sensitive) and one with puff…
Making Faceted Heatmaps with ggplot2
We were doing some exploratory data analysis on some attacker data at work and one of the things I was interested is what were "working hours" by country. Now, I don't put a great deal of faith in the precision of geolocated IP addresses…
Dairy-free Parker House Rolls
Here's a quick/easy recipe for soft roll dough that you can use to make dairy-free Parker House rolls, knot rolls or just plain…
Plot the new SVG R logo with ggplot2
High resolution and SVG versions of the new R logo are finally available…
Craft httr calls cleverly with curlconverter
When you visit a site like the LA Times' NH Primary Live Results site and wish you had the data that they used to make the tables & visualizations on the…
Alternate R Markdown Templates
The knitr/R markdown system is a great way to organize reports and analyses. However, the built-in ones (that come with RStudio/the rmarkdown package) rely on Bootstrap and also use jQuery. There's nothing wrong with that, but the…
Cobble XPath Interactively with the xmlview Package
(If you don't know what XML is, you should probably read a primer before reading this…
The Force: Accounted, in R
Despite being a cybersecurity professional, it's pretty easy to social engineer…
iptools 0.3.0 ("Violet Packet") Now on CRAN with Windows Support!
What can you do with it? One thing you can do is take a vector of domain names and turn them into IP…
Paths To Discovery: Mapping Your Home Network
Gone are the days when one had a single computer plugged directly into a modem (cable, DSL or good ol' Hayes). Even the days when there were just one or two computers connected via wires or invisible multi-gigahertz waves passing through…
Zellingenach: A visual exploration of the spatial patterns in the endings of German town and village names in R
Moritz Stefaner started off 2016 with a very spiffy post on "a visual exploration of the spatial patterns in the endings of German town and village names". Moritz was exploring some new data processing & visualization tools for the post,…
World Map Panel Plots with ggplot2 2.0 & ggalt
James Austin (@awhstin) made some #spiffy 4-panel maps with base R graphics but also posited he didn't use ggplot2…
Update to metricsgraphics 0.9.0 (now on CRAN)
It's been a while since I've updated my metricsgraphics package. The hit list for changes…
Fear of WaPo Using Bad Pie Charts Has Increased Since Last Year
I woke up this morning to a headline story from the Washington Post on "Americans are twice as willing to distance Christian extremists from their religion as Muslims". This post is not about the content of the headline or story. It is…
Moving the Shield to a new home
This week (Thanksgiving-ish, 2015) I start a new adventure at Rapid7! You can read more about why over at the official…
An OS X R Task Runner for—and a Mini-R-centric review of—Microsoft's Visual Studio Code Editor
Microsoft's newfound desire to make themselves desirable to the hipster development community has caused them to make many things open and/or free of late. One of these manifestations is Visual Studio Code, an Atom-ish editor for us code…
Beware of sideloading f.lux for iOS from files obtained on sharing/torrent sites
Apple made the @justgetflux folks remove their iOS sideloaded app due to the use of private APIs (which are a violation of the Apple Developer agreement). The ZIP archive has been pulled from their site (and it really has,…
Using MonetDB[Lite] with real-world CSV files
MonetDBLite (for R) was announced/released today and, while the examples they provide are compelling there's a "gotcha" for potential new folks using SQL in general and SQL + MonetDB + R together. The toy example on the site shows dumping…
Visualizing Survey Data : Comparison Between Observations
Cybersecurity is a domain that really likes surveys, or at the very least it has many folks within it that like to conduct and report on surveys. One recent survey on threat intelligence is in it's second year, so it sets about comparing…
An Ephemeral Update to daylight()
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. The daylight() function now auto-discovers…
Less Drama, More Encoding
Junk Charts adeptly noted and fixed this excessively stylized chart from the WSJ this…
Installing R on OS X - "100% Homebrew Edition"
In a previous post I provided "mouse-heavy" instructions for getting R running on your Mac. A few of the comments suggested that an "all Homebrew" solution may be preferable for some folks. Now, there are issues with this since getting…
Installing R on OS X
NOTE: The comments are a must read for this. Some excellent additional advice and "gotchas" by some super-helpful…
Replicating NatGeo's "Proper" Earthquake Map in R
I saw this post over at NatGeo over the weekend and felt compelled to replicate…
For Some Definition of "Directly" and/or "Contort"
Junk Charts did a post on Don't pick your tool before having your design and made a claim that…
A Package Full o' Pirates & Makin' Interactive Pirate Maps in arrrrrRstats
Avast, me hearties! It's time four t' annual International Talk Like a Pirate Day #rstats…
A Better Way To Read Nest Data Into R
I glimpsed a post in the RSS feeds today on how to connect Nest data with a Shiny dashboard and was compelled to post a less brute-force way to get data from the Nest API. The authors of the Shiny+Nest post used system calls to curl and…
Roll Your Own Stats and Geoms in ggplot2 (Part 1: Splines!)
A huge change is coming to ggplot2 and you can get a preview of it over at Hadley's github repo . I've been keenly interested in this as I will be fixing, finishing & porting coordproj to it once it's…
Three New #rstats Twitter Bots To Follow
I engage with the Stack[Overflow|Exchange] community quite a bit and was super-happy @treycausey made the Stack Overflow #rstats bot (@StackOverflowR) since I'm also on Twitter alot (mostly hanging out in #rstats these…
Coloring (and Drawing) Outside the Lines in ggplot
Time for another Twitter-inspired blog post this week, this time from a tweet by…
New Pacakge "docxtractr" - Easily Extract Tables From Microsoft Word Docs
This is more of a follow-up from yesterday's post. The hack and function in said post was fine, but it was limited to uniform tables and made you do more work than you had to. So, there's now a devtools-installable package on github that…
Using R To Get Data *Out Of* Word Docs
NOTE: after reading this post head on over to this new one as it has wrapped this functionality (and more!) into a…
Doh! I Could Have Had Just Used V8!
An R user recently had the need to split a "full, human name" into component parts to retrieve first & last names. The full names could be anything from something simple like "David Regan" to more complex & diverse such as "John Smith…
Track Hurricane Danny (Interactively) with R + leaflet
Danny became the first hurricane of the 2015 Season, so it's a good time to revisit how one might be able to track them with…
cdcfluview - On The Way to "CRAN 7K"
I like to turn coincidence into convergence whenever possible. This weekend, a user of \cdcfluview\ had a question that caused me to notice a difference in behaviour between the package was interacting with CDC FluView API, so I updated…
Adding a CRAN Search Engine to Chrome
Riffing off of the previous post, here's a way to quickly search CRAN (the @RStudio flavor) from the Chrome search…
Speeding Up Your Quest(s) For "R Stuff"
I use Google quite a bit when conjuring up R projects, whether it be in a lazy pursuit of a PDF vignette or to find a package or function to fit a niche need. Inevitably, I'll do something like this (yeah, I'm still on a mapping kick) and…
Achieve Charting Zen With TauCharts
There was some chatter on the twitters this week about a relatively new D3-based charting library called TauCharts (also @taucharts). The API looked pretty clean and robust, so I started working on an htmlwidget for it and was quickly…
Two New R Packages - qrencoder & passwordrandom
Believe it or not, there are two [ 1 ] [ 2 ] questions on @StackOverflowR about how to make QR codes in R. I personally think QR codes are kinda hokey, but who am I to argue with pressing needs of the #rstats community? I found libqrencode…
Introducing the nominatim geocoding package
In the never-ending battle for truth, justice and publishing more R packages than Oliver, I whipped out an R package for the OpenStreetMap Nominatim API. It actually hits the MapQuest Nominatim Servers for most of the calls, but the…
Making Static/Interactive Voronoi Map Layers In ggplot/leaflet
Despite having shown various ways to overcome D3 cartographic envy , there are always more examples that can cause the green monster to rear it's ugly…
Roll Your Own Gist Comments Notifier in R
As I was putting together the coordproj ggplot2 extension I had posted a gist that I shared on Twitter. Said gist received a comment (several, in fact) and a bunch of us were painfully reminded of the fact that there is no built-in way to…
A Path Towards Easier Map Projection Machinations with ggplot2
The $DAYJOB doesn't afford much opportunity to work with cartographic datasets, but I really like maps and tinker with shapefiles and geo-data when I can, plus answer a ton of geo-questions on StackOverflow. R makes it easy—one might even…
Using the new 'viridis' colormap in R (thanks to Simon Garnier)
Nathaniel Smith and Stéfan van der Walt presented a new colormap (for Python) at SciPy 2015 called viridis…
R Package to access the Open Movie Database (OMDB) API
It's not on CRAN yet, but there's a devtools -installable R package for getting data from the OMDB API…
Faceted "World Population by Income" Choropleths in ggplot
Poynter did a nice interactive piece on world population by income (i.e. "How Many Live on How Much, and Where" ). I'm always on the lookout for optimized shapefiles and clean data (I'm teaching a data science certificate program starting…
Two pending features to metricsgraphics
I've been slowly prodding the metricsgraphics package towards a 1.0.0 release, but there are some rough edges that still need sorting out. One of them is the ability to handle passing in variables for the x & y accessor values (you can…
Get by with a little (R) help from your friends (at GitHub)
@JennyBryan posted her slides from the 2015 R Summit and they are a must-read for instructors and even general stats/R-folk. She's one of the foremost experts in R+GitHub and her personal and class workflows provide solid patterns worth…
DO Something Nifffty with R
@briandconnelly (of pushoverr fame) made a super-cool post about connecting R to @IFTTT via IFTTT's "Maker" channel. The IFTTT Maker interface to receive events is fairly straightforward and Brian's code worked flawlessly, so it was easy…
metricsgraphics 0.8.5 is now on CRAN!
I'm super-pleased to announce that the Benevolent CRAN Overlords accepted the metricsgraphics package into CRAN over the weekend. Now, you no longer need to rely on github/devtools to use MetricsGraphics.js charts from your R scripts. If…
Animated US Hexbin Map of the Avian Flu Outbreak
The recent announcement of the start of egg rationing in the U.S. made me curious enough about the avian flu outbreak to try to dig into the numbers a bit. I finally stumbled upon a USDA site that had an embedded HTML table of flock…
A quick, incomplete comparison of ggplot2 & rbokeh plotting idioms
I set aside a small bit of time to give rbokeh a try and figured I'd share a small bit of code that shows how to make the "same" chart in both ggplot2 and…
Scraping jQuery DataTable Programmatic JSON with R
School of Data had a recent post how to copy "every item" from a multi-page list. While their post did provide a neat hack, their "words of warning" are definitely missing some items and the overall methodology can be improved upon with…
U.S. Drought Monitoring With Hexbin State Maps in R
On the news, today, of the early stages of drought hitting the U.S. northeast states I decided to springboard off of yesterday's post and show a more practical use of hexbin state maps than the built-in (and still purpose unknown to me)…
GeoJSON Hexagonal "Statebins" in R
There's been lots of buzz about "statebin" maps of late. A recent tweet by @andrewxhill referencing work by @dannydb pointed to a nice shapefile ( alternate link ) that ends up being a really great way to handle statebin maps (and I feel…
quotebox - An NPR-like Embedded Twitter Quote Generator
I'm an avid NPR listener also follow a number of their programs and people on Twitter. I really dig their \quotable\ tweets. Here's a sample of a recent…
New Fake Vulnerability Service - SVE
The SVE service is a fake new service solely put out there to facilitate some inane puzzle. You can reference SVE-2015-9999 via this URL and hopefully this will make it possible for google to get it back in their…
More Airline Crashes via the Hadleyverse
I saw a fly-by \#rstats\ mention of more airplane accident data on -- of all places -- LinkedIn (email) today which took me to a \GitHub repo\ by @philjette. It seems there's a \web site\ (run by what seems to be a single human) that…
A look at airline crashes in R with googlesheets, dplyr & ggplot2
Over on The DO Loop, @RickWicklin does a nice job visualizing the causes of airline crashes in SAS using a mosaic plot. More often than not, I find mosaic plots can be a bit difficult to grok, but Rick's use was spot on and I believe it…
Pre-CRAN waffle update - isotype pictograms
It seems Ruben C. Arslan had the waffle idea about the same time I did. Apart from some extra spiffy XKCD-like styling, one other thing his waffling routines allowed for was using FontAwesome icons. When you use an icon vs a block, you are…
Fixing Colors & Proportions in Jerusalem Post Election Graphics
Vis expert Naomi Robbins did an excellent critique of the graphics that went along with an article on Israeli election in the Jerusalem…
Making waffle charts in R (with the new 'waffle' package)
My disdain for pie charts is fairly well-known, but I do concede that there are times one needs to communicate parts of a whole graphically verses using just words or a table. When that need arises, I'm partial to "waffle charts" or…
Simple Lower US 48 Albers Maps & Local (no-API) City/State Geocoding in R
I've been seeing an uptick in static US "lower 48" maps with "meh" projections this year, possibly caused by a flood of new folks resolving to learn R but using pretty old documentation or tutorials. I've also been seeing an uptick in…
Streamgraph htmlwidget version 0.7 released (adds support for markers & annotations)
In preparation for using some of our streamgraphs for production (PDF/print) graphics, I ended up having to hand-edit labels in on one of the graphics in an Adobe product. This bumped up the priority on adding annotation functions to the…
New R Package - ipapi (IP/Domain Geolocation)
I noticed that the @rOpenSci folks had an interface to ip-api.com on their ToDo list so I whipped up a small R package to fill said…
Streamgraph package now supports continuous x axis scale
A post on StackOverflow asked about using a continuous variable for the x-axis (vs dates) in my streamgraph package. While I provided a workaround for the question, it helped me bump up the priority for adding support for continuous x axis…
Introducing the streamgraph htmlwidget R Package
We were looking for a different type of visualization for a project at work this past week and my thoughts immediately gravitated towards streamgraphs. The TLDR on streamgraphs is they they are generalized versions of stacked area graphs…
SweetheaRstats
I felt compelled to dust off my 2013 Valentine's Day #rstats post and make it all Shiny and new again. I used the same math from that post, but made the polygon a bit sharper and used ggplot2 for the…
A Step to the Right in R Assignments
I received an out-of-band question on the use of %<>% in my CDC FluView post, and took the opportunity to address it in a broader, public…
New release (0.7) of metricsgraphics htmlwidget — grids & rollovers
I've updated my metricsgraphics package to version 0.7. The core MetricsGraphics JavaScript library has been updated to version 2.1.0 (from 1.1.0). Two blog-worthy features since releasing version 0.5 are mjsgrid (which is a…
NASA GISS’s Annual Global Temperature Anomaly Trends (dplyr/ggplot version)
D Kelly O’Day did a great post on charting NASA’s Goddard Institute for Space Studies (GISS) temperature anomaly data, but it sticks with base R for data munging & plotting. While there's absolutely nothing wrong with base R operations, I…
New R Package: cdcfluview — Retrieve Flu Data from CDC's FluView Portal
NOTE If there's a particular data set from http://www.cdc.gov/flu/weekly/fluviewinteractive.htm that you want and that isn't in the pacakge, please file it as an issue and be as specific as you can (screen shot if…
New R Package: metricsgraphics
Mozilla released the MetricsGraphics.js library back in November of 2014 (gh repo) and was greeted with great fanfare. It's primary focus is on crisp, clean layouts for interactive time-series data, but they have support for other chart…
Making Static & Interactive Maps With ggvis (+ using ggvis maps w/shiny)
Even though it's still at version 0.4, the ggvis package has quite a bit of functionality and is highly useful for exploratory data analysis (EDA). I wanted to see how geographical visualizations would work under it, so I put together six…
Power Outage Impact Choropleths In 5 Steps in R (featuring rvest & RStudio "Projects")
I and @awpiii were trading news about the power outages in Maine & New Hampshire last night and he tweeted the link to the @PSNH Outage Map. As if the Bing Maps tiles weren't bad enough, the use of a categorical color scale instead of a…
Visualizing Historical & Most-likely First Snowfall Dates for U.S. Regions
The impending arrival of the first real snowfall of the year in my part of Maine got me curious about what the most likely "first snow" dates are for my region. The U.S. Historical Climatology Network (USHCN) maintains historical daily…
Moving The Earth (well, Alaska & Hawaii) With R
In a previous post we looked at how to use D3 TopoJSON files with R and make some very D3-esque maps. I mentioned that one thing missing was moving Alaska & Hawaii a bit closer to the continental United States and this post shows you how…
GRANITESEC X!!!
GRANITESEC X!!! — rud.is blog archive
Spending Seized Assets - A State-by-State Per-capita Comparison in R
The Washingon Post did another great story+vis, this time on states Spending seized…
Plot Me Like a Hurricane (a.k.a. animating historical North Atlantic basin tropical storm tracks)
Markus Gessman (@MarkusGesmann) did a beautiful job Visualising the seasonality of Atlantic windstorms using small multiples, which was inspired by both a post by Arthur Charpentier (@freakonometrics) on using Markov spatial processes to…
Blast From The Past Also Reveals A Bit Of (US) Postal HIstory
I saw a re-tweet for this "Man From Mars Radio Hat" advertisement and—while it's awesome as a bit of nostalgia on it's own—it also reveals a bit about our (US) Postal…
Overcoming D3 Cartographic Envy With R + ggplot
When I used one of the Scotland TopoJSON files for a recent post , it really hit me just how much D3 cartography envy I had/have as an R user. Don't get me wrong, I can conjure up D3 maps pretty well [ 1 ] [ 2 ] and the utility of an…
Seeing the (day)light with R
The arrival of the autumnal equinox foreshadows the reality of longer nights and shorter days here in the northeast US. We can both see that reality and distract ourselves from it at the same time by firing up RStudio (or your favorite…
Charting/Mapping the Scottish Vote with R (an rvest/dplyr/tidyr/TopoJSON/ggplot tutorial)
The BBC did a pretty good job live tracking the Scotland secession vote, but I really didn't like the color scheme they chose and decided to use the final tally site as the basis for another tutorial using the tools from the Hadleyverse…
An Alfred (OS X) Workflow for Weather Underground Personal Weather Station (PWS) Data
I've operated a Weather Underground Personal Weather Station (PWS) [KMEBERWI7] off-and-on (hardware issues notwithstanding) for as long as I can remember, and I thought it was about time to finally do an Alfred↔PWS mashup. My personal…
R version of "An exploratory technique for visualizing the distributions of 100 variables:"
Rick Wicklin (@RickWicklin) made a recent post to the SAS blog on An exploratory technique for visualizing the distributions of 100 variables. It's a very succinct tutorial on both the power of boxplots and how to make them in SAS (of…
OUT FROM THE DEPTHS! @GraniteSec LIVES!
Like GODZILLA rising to save Japan, GRANITESEC rises from dormancy (caused mostly by that sod @hrbrmstr) to fill your summer with food, fun & some other audience appropriate word that begins with an "F" to complete the alliteration…
New Gig!
Well, the proverbial cat is definitely out of the bag now. I'm moving on from the current gig to take a security data scientist position at Verizon Enterprise. The esteemed Wade Baker will be my new benevolent overlord and it probably…
Rforecastio 1.3.0 Update
Thanks to a comment suggestion, the Rforecastio package is now up to version 1.3.0 and has a new parameter which lets you specify which time conversion function you want to use. Details are up on…
Rforecastio 1.2.0 Bug-fix Update
Not even going to put an R category on this since I don't want to pollute R-bloggers with this tiny post, but I had to provide the option to let folks specify ssl.verifypeer=FALSE (so I made it a generic option to pass in any CURL…
Rforecastio Package Update (1.1.0)
I've bumped up the version number of Rforecastio (github) to 1.1.0. The new features…
Moving From system() calls to Rcpp Interfaces
Over on the Data Driven Security Blog there's a post on how to use Rcpp to interface with an external library (in this case ldns for DNS lookups). It builds on another post which uses system() to make a call to dig to lookup DNS TXT…
Getting Fit2Tcx Working on Mac OS X (10.9.x)
Andreas Diesner's #spiffy Fit2Tcx command-line utility is a lightweight way to convert Garmin/ANT FIT files to TCX for further…
Mapping the March 2014 California Earthquake with ggmap
I had no intention to blog this, but @jayjacobs convinced me otherwise. I was curious about the recent (end of March, 2014) California earthquake "storm" and did a quick plot for "fun" and personal use using…
Guardian Words: Visualized
Andy Kirk (@visualisingdata) & Lynn Cherny (@arnicas) tweeted about the Guardian Word Count service/archive site, lamenting the lack of…
Using Twitter as a Data Source For Monitoring Password Dumps
I shot a quick post over at the Data Driven Security blog explaining how to separate Twitter data gathering from R code via the Ruby t (github repo) command. Using t frees R code from having to be a Twitter processor and lets the analyst…
One More (Yet-another?) Olympic Medal Live-tracking Shiny App
The code for the app is in this gist. It is unsurprisingly just like some spiffy other code you've seen apart from my aesthetic choices (Sochi blue! lines+dots! and, current rankings next to country…
Live Google Spreadsheet For Keeping Track Of Sochi Medals
The "medals" R post by TRInker and re-blogged by Revolutions were both spiffy and a live example why there's no point in not publishing raw…
Data Driven Security Roundup: betaPERT, Shiny, Honeypots, Passwords & Reproducible Research
Jay Jacobs (@jayjacobs)—my co-author of the soon-to-be-released book Data-Driven Security—& I have been hard at work over at the book's sister-blog cranking out code to help security domain experts delve into the dark art of data…
Data-Driven Security (The Book) Update #ShamelessSelfPromotion
Here's the list of links to e-tailers (man, I hate that term) who have it available for the various e-readers out…
Lies, Damn Lies, "Data Journalism" and Charts That Don't Start at 0
This tweet by @moorehn (who usually is a superb economic journalist) really bugged…
Change The Default "Shell..." Action In RStudio for OS X
RStudio is my R development environment of choice and I work primarily on/in Mac OS X. While it's great that Apple provides a built-in Terminal application, I prefer to use iTerm 2 when I need to do work at a shell. The fine folks at…
Announcing The Launch Of The Data Driven Security [Blog|Podcast]
While you're waiting for the book by @jayjacobs & @hrbrmstr to hit the shelves, why not head on over to the inaugural post of the Data Driven Security Blog & give a listen to the first episode of the Data Driven Security…
Points, Polygons and Power Outages
Most of my free coding time has been spent tweaking a D3-based live power outage tracker for Central Maine Power customers (there's also a woefully less-featured Shiny app for it, too). There is some R associated with the D3 vis, but it's…
Newest Font Obsession: Lato
It was created over three years ago by Łukasz Dziedzic but I only discovered it recently when searching for something to use with my Live Maine Power Outages…
Slopegraph Workbench/Workshop in D3
I've been getting a huge uptick in views of my Slopegraphs in Python post and I think it's due to @edwardtufte's recent slopegraph contest…
One More Time…Mapping Maine Power Outages with D3
It started with a local R version and migrated to a Shiny version and is now in full D3 glory…
Back To Frank
Even though I really liked Origin , the performance issues associated with it were just too much to debug and I have a ton of other work to do. Back to Frank it is. Page loads are much faster and there are far fewer warnings in Google's…
Mapping Power Outages in Maine Dynamically with Shiny/R
I decided to forego the D3 map mentioned in the previous post in favor of a Shiny one since I had 90% of the mapping code…
Mapping Power Outages In Maine With R
We had yet-another power outage this morning due to the weird weather patterns of the week and it was the final catalyst I needed to crank out some R code to map the affected…
Preparing For The February 2014 Book Launch
We setup a live Amazon "sales rank" tracker over at the book's web site and provided some Python and JavaScript code to show folks how use the AWS API in conjunction with the dygraphs charting library to do the same for any ISBN. In the…
Visual Anatomy Of R Packages Used in Data Driven Security
Since @jayjacobs & I are down to the home stretch on Data Driven Security , I thought it would be interesting to do some post-writing pseudo-analyses of the book itself. I won't have exact page or word counts for a bit, but I wanted to see…
Alternative to Grouped Bar Charts in R
and, I obliged shortly thereafter, but figured I'd toss a post up on the blog before heading to…
Open Campgrounds In Maine During The Stupid Shutdown
Don't let the morons in Congress stop you from visiting our fair state during this beautiful, colorful autumn season. Below is a Google Maps view of known, open campgrounds that will let you experience the best our state has to offer this…
Visualizing "ObamaCare-related" Job Cuts
The spreadsheet is organized by date and lists each state where the jobs were impacted along with the employer , employer type (public/private), reason and number of jobs impacted (if available). They also have links to news stories…
Scraping Content From Google Groups
I was helping a friend out who wanted to build a word cloud from the text in Google Groups posts. If you've made any efforts to try to get content out of Google Groups you know that the only way to do so is to ensure you subscribe to the…
Animated IRL Pirate Attacks In R
Avast me hearRties! (ok, enough of the pirate speak in a blog…
Christian Science Monitor Text Layout (Single Page Full Article View)
As I was about to " buffer " a reference to a CSM article on "cyber war" (below), I paused to look for a "print view" or some other icon that would let me show the whole article as a single page vs the annoying multi-page layout view they…
Send Mac OS Notifications From RStudio *Server*! (via Growl)
Having received a couple follow-ups to the OS X notifications on RStudio Desktop for the Mac post, I was determined to find a quick hack to get remote notifications to OS X working from (at least) RStudio Server instances running on the…
Rforecastio Update
Thanks to a comment, I tweaked the data retrieval to ignore SSL cert errors. You can change that tweak back if you go through the pain of updating the SSL libraries on your Windows boxes (it doesn't seem to be an issue on OS…
Send Mac OS Notifications From R
The data retrieval and computation operations are taking longer and longer as we start cranking through more security data and I'll often let tasks run in the background whilst performing more mundane tasks or wasting time on Twitter. For…
Rforecastio - Simple R Package To Access forecast.io Weather Data
It doesn't get much better for me than when I can combine R and weather data in new ways. I've got something brewing with my Nest thermostat and needed to get some current wx readings plus forecast data. I could have chosen a number of…
nizdos - Nest Thermometer Notifications And Data Logging In Python
I've had a Nest thermometer for a while now and it's been an overall positive experience. It's given me more visibility into our heating/cooling system usage, patterns and preferences; plus, it actually saved us money last…
Use Fluid On MacOS To Build Per-RStudio Server "Dedicated" Clients
I'm jumping around analytics environments these days and have to leave the comfort of my Mac's RStudio Desktop application to use various RStudio Server instances via browser. While I prefer to use Chrome, the need to have a "dedicated"…
ZeroAccess Bots Desperately Seeking Freedom (Visualization)
I've been doing a bit of graphing (with real, non-honeypot network data) as part of the research for the book I'm writing with @jayjacobs and thought one of the images was worth sharing (especially since it may not make it into the book…
Reverse IP Address Lookups With R (From Simple To Bulk/Asynchronous)
R lacks some of the more "utilitarian" features found in other scripting languages that were/are more geared—at least initially—towards systems administration. One of the most frustrating missing pieces for security data scientists is the…
IP Intelligence Lookup Chrome Extension
The topic of "IP intelligence" gets a nod in the book that @jayjacobs & I are writing and it was interesting to see just how many sites purport to "know something" about an IP address. I shamelessly admit to being a Chrome user and noticed…
Summer 2013 @GraniteSec Is ON!
Like an aging action hero, @GraniteSec is back in action after an unexpected hiatus. Join us on August 17th for food and fun at the beautiful Fort Foster in Kittery Point,…
2013 Summer Vacation Puzzle Challenge
When I am out of the office for an extended time, I try to post a "crypto" challenge for work-folk to do while I'm gone with the added bonus of winning fabulous prizes. There were no answers submitted for the clues during our ANP trip, but…
Re-imagining @panda_security's Q1 2013 Report Pie Charts
We infosec folk eat up industry reports and most of us have no doubt already gobbled up @pandasecurity's recently released Q1 2013 Report [PDF]. It's a good read (so go ahead and read it, we'll still be here!) and I was really happy to see…
Secure360 (@Secure360) Data Analysis & Visualization Talk Resources #Sec360
Many thanks to all who attended the talk @jayjacobs & I gave at @Secure360 on Wednesday, May 15, 2013. As promised, here are the…
Slopegraph As A Service
@adammontville posited that Figure 15 from this year's DBIR could use some slopegraph love. As I am not one to back down from a reasonable challenge, I…
Wait Wait...Don't Pwn Me! (SOURCE Boston) Transcript & Thank You!
I also wanted to, again, thank @selenakyle for her most excellent job playing Carl Kasell; the awesome panelists: @451Wendy, @innismir & @andrewsmhay; @joshcorman for—yet again—putting up with me picking on him (and getting all the…
SOURCE Boston (@SOURCEConf) Data Analysis & Visualization Talk Resources #srcbos13
Many thanks to all who attended the talk @jayjacobs & I gave at @SOURCEconf on Thursday, April 18, 2013. As promised, here are the slides which should be much less washed out than the projector version…
Framing A One Data Vis A Day Challenge
Earlier this evening, I somewhat half-heartedly challenged @jayjacobs that he & I should be generating one data visualization per day. I didn't specify anything else (well, at least that I can disclose publicly, for now) but I think I'm…
PC Maker Slopegraph + More Functional Table (One Last Time)
Now that I'm back in the US and relaxing, I can take time for one final blather on the PC Maker Slopegraph post from earlier in the…
Use @datawrapper For Slopegraphs
While not perfect, I noticed that it was possible to make a pretty decent slopegraph over at Datawrapper as I was poking at some new features they announced recently. As an example, I ran one of the charts from my most recent blog post as…
Ugly Tables vs Slopegraphs : PC Maker Shipments & Marketshare
Andrew Cunningham (@ITAndrewC) posted an article— If you make PCs and you’re not Lenovo, you might be in trouble —on the always #spiffy @arstechnica that had this horrid table in…
Bahrain eGov Conference "Risk Reality" Slides
For those finding this post from the Bahrain eGov conference, I'd like to re-extend a hearty "Thank you!" for being one of most engaging, interactive and intelligent audiences I've ever experienced. I truly enjoyed talking with all of…
Off to Bahrain
As a result of a prod by @djbphaedrus I'm off to the Bahrain International eGovernment Forum this week to host a two hour workshop on "information risk reality". As a result, blogging & tweeting will be at significantly reduced levels, so…
It's Never About The Security...
It's Never About The Security... — rud.is blog archive
A Wish for Snow in Spring
Sadly, that's not a modern story. It's an adapted quote from chapter 4 (pp. 97-98, paperback) of The Ghost Map , by Steven Johnson , a book on the cholera epidemic of…
Interactive Slopegraphs With Processing
Given my obsession with slopegraphs, I'm not sure how I missed this post back in late February by @JeffClark that includes a very nicely executed interactive sloepgraph on the global obesity problem. He used Processing & Processing JS to…
My Picks From #PyCon2013
A huge thanks to the speakers and conference organizers for making these resources freely available, especially to those of us who were not able to attend the…
Chrome App for Tiny Tiny RSS
I'm still getting my self-hosted Tiny Tiny RSS configuration just the way I want it prior to doing a full blog post on it, but I thought it would be helpful to share a basic Chrome App for it. I ended up creating it to replace the Google…
π, Awareness, DataVis, VAST 2013, Moar data! & GReader Machinations
Far too many interesting bits to spam on Twitter individually but each is worth getting the word out…
Visualizing Risky Words — Part 4 (D3 Word Trees)
This is a fourth post in my Visualizing Risky Words series. You'll need to read starting from that link for context if you're just jumping in…
Visualizing Risky Words — Part 3
The DST changeover in the US has made today a fairly strange one, especially when combined with a very busy non-computing day yesterday. That strangeness manifest as a need to take the D3 heatmap idea mentioned in the previous post and…
Visualizing Risky Words — Part 2
This is a follow-up to my Visualizing Risky Words post. You'll need to read that for context if you're just jumping in now. Full R code for the generated images (which are pretty large) is at the…
Visualizing Risky Words
Inspired by a post by @bfist who created the following word cloud in Ruby from VZ RISK INTSUM posts (visit the link or select the visualization to go to the…
Security Hobos
If you haven't viewed/read Wendy Nather's (@451Wendy) insightful Living Below The Security Poverty Line you really need to do that before continuing (we'll still be here when you get…
Third Annual RSA PhöCon : Thursday, Feb 27 @ 1830 : Miss Saigon
Come join us for a PhöCon good time at 18:30 (6:30PM) Thursday! The neighborhood is…interesting…but it's close to Moscone and has had good food for the past couple years. I'll be heading up there from the Expo area at ~1815. Hit me up on…
Follow up/Resources :: GRC-T18 – Data Analysis and Visualization for Security Professionals #RSAC
Many thanks to all who attended the talk @jayjacobs & I gave at RSA on Tuesday, February 26, 2013. It was really great to be able to talk to so many of you afterwards as…
RSA & Metricon Speaking & Dining Round Up
Just joining in the fray of "where I'm speaking/where I'll be the week of @RSAConference"…
R/netintel : Cross-check APT-1's IP list with AlienVault Reputation DB (+ some graphs/analysis)
Here's a quick example of couple additional ways to use the netintel R package I've been tinkering with. This could easily be done on the command line with other tools, but if you're already doing scripting/analysis with R, this provides a…
[REDUX] Reassessing Cyber Risks as a Security Strategy
I happened across Between Hype and Understatement: Reassessing Cyber Risks as a Security Strategy [PDF] when looking for something else at the Journal of Strategic Security site and thought it was a good enough primer to annoy everyone…
Happy Valentine's Day @mrshrbrmstr!
Happy Valentine's Day @mrshrbrmstr! — rud.is blog archive
Visualizing Malicious Clusters & Outliers
So, I've had some quick, consecutive blog posts around this R package I'm working on, and this one is more of an answer to my own, self-identified question of " so what ?". As I was working on an importer for AlienValut's IP reputation…
Extended (Simple) ASN Graph Visualization Example [R to D3]
The small igraph visualization in the previous post shows the basics of what you can do with the BulkOrigin & BulkPeer functions, and I thought a larger example with some basic D3 tossed in might be even more…
Retrieve IP ASN & BGP Peer Info With R
This is part of a larger project I'm working on, but it's useful enough to share (github version coming…
Winter Wind Flows
Yesterday, I took a very short video capture from \wind map\ of the massive wind flows buffeting the northeast. I did the same this morning and stitched them together to see what a difference a day…
Data Crunching Competitions
I came across a list of data crunching and/or visualization competition sites today. I had heard of Kaggle & NITRD before but not the other ones. If you're looking to get into data analytics/visualization or get better at it, the only way…
Once More Into The [PRC Aggregated] Breaches
If you're not on the SecurityMetrics .org mailing list you missed an interaction about the Privacy Rights Clearinghouse Chronology of Data Breaches data source started by Lance Spitzner (@lspitzner). You'll need to subscribe to the list…
River Post Dissected
Good Stats, Bad Stats has a really good critique of my Mississippi River post that you should read (TL;DR: my graphs & analysis need…
SHODAN API in R (With Examples)
Folks may debate the merits of the SHODAN tool, but in my opinion it's a valuable resource, especially if used for "good". What is SHODAN? I think ThreatPost summed it up nicely…
How Low Can It [The Mississsippi River] Go?
I've heard quite a bit about the current problems with the Mississippi River and wanted to see for myself (with data) just how bad it…
Slopegraphs in R
If you even remotely follow this blog, you'll see that I'm kinda obsessed with slopegraphs . While I'm pretty happy with my Python implementation , I do quite a bit of data processing & data visualization in R these days and had a few free…
CVE Queries Right From Your Browser's Address Bar
I'm not sure why I never did this earlier, but a post on LifeHacker gave me an idea to add location bar quick search of CVEs (Common Vulnerabilities and Exposures), no doubt due to their example on searching LifeHacker for…
Easier HTML Table-scraping For Scripts With Google Drive
We had our first, real, snowfall of the season in Maine today and that usually means school delays/closings. Our "local" station – @WCHS6 – has a Storm Center Closings page as well as an SMS notification service. I decided this morning…
The 'fing' Corollary
Back in 2011, @joshcorman posited "HD Moore's Law" which is…
Forbes Graph Makeover Contest Entry #1
Naomi Robbins is running a graph makeover challenge over at her Forbes blog and this is my entry for the B2B/B2C Traffic Sources one (click for larger…
Election Trackers Moved From Flash to HTML5
For those inclined to click, I was interviewed by Fahmida Rashid (@fahmiwrite) over at Sourceforge's HTML5 center a few weeks ago (right after the elections) due to my tweets on the use of HTML5 tech over Flash. Here's one of…
Speaking At RSA Conference 2013!
Earlier this week, @jayjacobs & I both received our acceptance notice for the talk we submitted to the RSA CFP! [W00t!] Now the hard part: crank out a compelling presentation in the next six weeks! If you're interested at all in doing more…
'Sandy' Code Up On Github
I will (most likely) not be littering the blog with any more updates to the 'Sandy' code unless they are really significant. You can follow along at home to any changes over at github…
Watch Sandy in "R" (Including Forecast Cone)
This is a follow-up post to the quickly crafted Watch Sandy in "R" post last night. I noticed that Google provided the KML on their crisis map and wanted to show how easy it is to add it to previous…
Watch "Sandy" In R
While this will pale in comparison to the #spiffy Sandy graphics on Weather Underground and other sites (including Google's "Crisis Center" maps), I thought it might be interesting to show folks how they can keep an eye on "Sandy" using…
Extracting OSE Firewall Alert Data From IMAP (Gmail) Mail To CSV With Python
I played around with OSE Firewall for WordPress for a couple days to see if it was worth switching to from the plugin I was previously using. It's definitely not as full featured and I didn't see any WP database extensions where it kept a…
Get an R Data Frame from a MongoDB Query
There's a good FAQ on how to do the MongoDB query -> R data frame but I wanted to post a more complete example that included the database connection and query setup since I suspect there are folks new to Mongo who would appreciate the…
Putting Cybercrime [Infographics] Behind Bars
HP & the Ponemon Institute have released their third annual "Cost of Cybercrime" report and the web wizards at HP have given us an infographic from…
"Show in Finder" Broken? Here's One Potential Way To Fix It
I'm not entirely sure what happened to cause it, but the "Show in Finder…" feature of a plethora of OS X apps broke on me just over a month ago. I poked around a bit, deleted a preference file here or there and un-tweaked some tweaks to…
DIY ZeroAccess Analysis Lesson #1 : Treat GeoIP Results Lightly
We're still crunching through some of the ZeroAccess data and have some (hopefully) interesting results to present, but an weirld GeoIP anomaly has come up that I wanted to quickly…
DIY ZeroAccess GeoIP Analysis : So What?
Did you know that – if you're a US citizen – you have approximately a 1 in 5 chance of getting the flu this year? If you're a male (no regional bias for this one), you have a 1 in 400 chance of developing Hodgkin's Disease and a 1 in 5,000…
DIY ZeroAccess GeoIP Visualizations :: Back To The Basics
While shiny visualizations are all well-and-good, sometimes plain ol' charts & graphs can give you the data you're looking…
More DIY ZeroAccess GeoIP Fun : jQuery/D3 Choropleths
In the spirit of the previous example this one shows you how to do a quick, country-based choropleth in D3/jQuery with some help from the command-line since not everyone is equipped to kick out some R and most folks I know are very handy…
DIY ZeroAccess GeoIP Plots
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…
Show Mac App Store Downloads Folder (and more!)
@mroesch asked how to find the "Downloads" folder for the Mac App Store. Apple changed this from the time I posted the one and only app I ever did to MAS (a while ago). So, here's how to do it…
Businessweek's #Spiffy Rank-order Stock Market Slopegraph
Businessweek's bleeding-edge approach to typography, layout and overall design is one of the features that keeps me reading the magazine in print form. The design team also often delves into experiments with data visualization and…
Building Jytter On OS X (tested on Mountain Lion)
Dan Kaminski (@dakami) tweeted a cool, small (11 instruction) TRNG generator called Jytter…
Just When You Thought It Was Safe To Make A Slopegraph
Thanks to a nice call-out post link on Flowing Data in my RSS feeds this morning, I found Naomi Robbins' Effective Graphs Forbes blog, perused the archives a bit and came across her post on arrow charts…
VERIS Community :: JSON vs XML
You may not be aware of the fact that the #spiffy Verizon Biz folk have some VERIS open source components, one of which is the XML schema for the "Vocabulary for Event Recording and Incident…
"Fibonacci" Graphing
Benchmarking/profiling is one of the fundamental practices for tech folk and Feng Shen's recent post to Hacker News continues this fine tradition with a look at startup & run times for " fibonacci(40) " in seven computer languages (two 'C'…
SSH Password Time-series Heatmap In D3
In @jayjacobs' latest post on SSH honeypot passsword analysis he shows some spiffy visualizations from crunching the data with Tableau. While I've joked with him and called them "robocharts", the reality is that Tableau does let you work…
Security & Privacy Of Mountain Lion's Dictation Feature
With Gizmodo doing a post hyping Mountain Lion's new dictation feature it's probably a good time to note that folks in regulated environments or who just care about security & privacy a bit more than others should not enable or use this…
Honeypot Analytics : 500 Pretty Passwords
I had a few moments this past weekend to play with an idea for visualizing the passwords used against the honeypot @jayjacobs set up. While it's not as informative as Jay's weekend…
Beach Blanket Tweetup<br/>(a.k.a. GraniteSec Tweetup #5)
Now, polish up your cruiser and get ready 'cuz @GraniteSec is heading back to Fort Foster [ info ] [ map ] at Kittery Point, Maine for it's fifth family & friends…
2012 WhiteHat Security Website Security Statistics Report Redux
The always #spiffy @WhiteHatSec released their 2011 Web Site Security stats report [ direct link (PDF)] last week (here's one of their teaser…
RIM of Destruction
The mobile world, it is explodin' executives flarin', app updates loadin' you're Bold's enough to sell but no one's buyin' no one believes in your PlayBook, but that's what your totin' and even the Curve won't keep you a floatin' but you…
Honeypot Analytics
For this post (and probably a few subsequent ones), I'm taking the role of 'Pinky" to @jayjacobs' 'Brain' as I share some of my own analysis on the ssh honeypot passwords that Jay collected (you'll need to read his VZB post before…
Breach Reach : Google Insights
We have a burst that – if one is generous – captures interest for about a week. Even more interesting is that it seems said interest was limited to very specific geographic…
Slopegraphs in Python – Failed States Index (Part 1)
The Fund For Peace (FFP) and Foreign Policy jointly released the 2012 version of the "failed states index" (FSI). From the FFP site, the…
Tweet From Mountain Lion Notification Center
If this feature was in Mountain Lion Developer Previews prior to revision 4, I didn't notice it, but you can now tweet directly from the Notification Center…
WEIS 2012 :: Best of the Best
Sadly, I could not make it to this year's Workshop on the Economics of Information Security . However, the intrepid conference organizers were quick to post the papers that were presented, and I had a chance to sift through them to pick…
Just Like The Federation
[ @hrbrmstr starts working in javascript again ] The Internets : What do you think? @hrbrmstr : It's vile. The Internets : I know. It's so bubbly and cloying and happy. @hrbrmstr : Just like the Federation. The Internets : And you know…
Slopegraphs in Python – Gratuitous Raphaël Animations
So, I had to alter this to start after a user interaction. It loaded fine as a static, local page but seems to get a bit wonky embedded in a complex page. I also see some artifacts in Chrome but not in Safari. Still, not a bad foray into…
Slopegraphs in Python – Formatting Tweaks
There were enough eye-catching glitches in the experimental javascript support and the ugly large-number display in the spam example post that I felt compelled to make a couple formatting tweaks in the code. I also didn't have time to do…
Slopegraphs Everywhere
Not much progress over the weekend on my latest obsession (been busy enjoying some non-rainy days here in Maine). So, here are some other slopegraph implementations/resources I've found through mining the…
Slopegraphs in Python – Experimental Raphaël Support
In preparation for the upcoming 1.0 release and with the hopes of laying a foundation for more interactive slopegraphs, I threw together some rudimentary output support over lunch today for Raphaël , which means that all you have to do is…
Slopegraphs in Python – Log Scales & Spam Data Analysis
Given the focus on actual development of the PySlopegraph tool in most of the blog posts of late, folks may be wondering why an infosec/inforisk guy is obsessing so much on a tool and not talking security. Besides the fixation on filling a…
Slopegraphs in Python – Exploring Binning/Rounding
One of the last items for the 1.0 release is support for multiple columns of data. That will require some additional refactoring, so I've been procrastinating by exploring the recent "fudging" discovery . Despite claims to the contrary on…
Slopegraphs in Python – Slope Colors
As the codebase gets closer to the 1.0 stretch we now have the addition of slope colors for when values go up/down or remain constant between points. The code still only handles two columns of data, but the intent is for each segment to…
Slopegraphs in Python – More Output Tweaks
The best way to explain this release will be to walk you through an updated configuration…
Slopegraphs – The Quintessential Tufte GDP Example Revisited
If you're even remotely familiar with slopegraphs, then you'll recognize Tufte's classic 1970-1979 GDP chart example (click for larger…
Slopegraphs in Python – The Great Refactor
Despite being on holiday, I had a spare hour to refactor the code (@mrshrbrmstr was joining the 1% in the hotel spa). It's up on github and now sports a spiffy JSON-format config file. You now must execute the slopegraph.py script with a "…
Slopegraphs in Python – Attention to Detail
In the previous installment , a foundation was laid for "parameterizing" fonts, colors and overall slopegraph size. However, a big failing in all this code (up until now) was the reliance on character string length to determine label…
Slopegraphs In Python – colors, fonts & alignment
On the heels of last evening's release of Slopegraphs in Python post comes some minor…
An Homage To Flame
They've been lookin' at me, but they never did see— no, no trace of me did they detect; Gave me time to collect all the data at rest. I've got so much in me: LUA, zlib & sqlite3– I can infect the USB in your hand. Don't you know who I am?…
Slopegraphs in Python
I've been a bit obsessed with slopegraphs (a.k.a "Tufte table-chart") of late and very dissatisfied with the lack of tools to make this particular visualization tool more prevalent. While my ultimate goal is to have a user-friendly modern…
New SecurID Soft Token Cloning Weakness : What's The Risk?
I posted a link to Twitter earlier on a recent discovery of the ability to clone RSA SecurID soft…
Feudal Japan's Haiku Clubs A Pre-cursor of Modern-day Twitter?
I recently finished watching "Japan: Memoirs of a Secret Empire" [ Netflix | PBS | Amazon ]. It's a three-part documentary that centers around the 16th & 17th centuries (where a vast majority of my favorite samurai movies are…
Mountain Lion, AirPlay, Screen Captures & DRM
I've been wanting to post this entry for a while, but I didn't have the opportunity to compel an extra pair of hands to assist with some necessary, salient portions of it until…
Off By One : The Importance Of Fact Checking Breach Reports
I didn't read through the Massachusetts 2011 Report on Data Breach Notifications \[PDF\] until recently, but once I went through the report my brain kept telling me "something is wrong". Not something earth shattering, but more of a…
Is Your Organization Ready For a Risk Management Program?
While the slides will be officially available from SIRA web site in the not-too-distant future—complete with video (for all the talks)—I figured it wouldn't hurt to put them up here as…
Both Candidates Weak On [SSL] Security
While the two front-running candidates engaged in a bizarre, Klingon-esque ritual of hubris regarding which one was the better killer, their respective technical campaign staffers were failing to make the grade on security when it comes to…
Angry Birds Keynote Theme
If you went to SOURCE Boston this year (2012), attended my security awareness talk and liked the Angry Birds theme to the slides, here's a copy of the Keynote theme (it's not really a true Keynote theme as there are divergent slides I've…
Slaying the BEAST in nginx
Just a quick post as I noticed that my nginx configuration was vulnerable to the BEAST attack thanks to the #spiffy SSL Certificate Tester from Qualys (I scored an "A" , btw…
A Month With AfterShokz
Quick hit :: Over at the #tri blog, I've got a review of a relatively new bone-conducting headset by…
Getting Homebrew Working in Mountain Lion Developer Preview 2 with Xcode 4.4 Developer Preview 2
Work & home chaos has me a bit behind in the "ThinkStats…in R" posts, but I "needed" to get some of the homebrew kit working in Mountain Lion Developer Preview 2 (to run some network discovery tools while waiting for #4's surgery to be…
ThinkStats … in R :: Example/Chapter 2 :: Example 2.1-2.3
As promised, this post is a bit more graphical, but I feel the need to stress the importance of the first few points in chapter 2 of the book (i.e. the difference between mean and average and why variance is meaningful). These are…
ThinkStats … in R :: Example 1.3
With 1.2 under our belts , we go now to the example in section 1.3 which was designed to show us how to partition a larger set of data into subsets for analysis. In this case, we're going to jump to example 1.3.2 to determine the number of…
ThinkStats … in R (including Example 1.2)
I thought it would be interesting to present some of the examples & exercises in the book in R . Why? Well, once you've gone through the material in a particular chapter the "hard way", seeing how you'd do the same thing in a language…
Two Alfred Extensions For Retrieving IP Address Information
I've been an unapologetic Alfred user since @hatlessec recommended it and have recently been cobbling together quick shell scripts that make life a bit…
An Infosec Hippocratic Oath
I swear to fulfill, to the best of my ability and judgment, this…
Google Spreadsheet "importHTML" Rocks For Quick Analytics
I usually take a peek at the Internet Traffic Report (ITR) a couple times a day as part of my routine and was a bit troubled by all of the red…
USDA Driving Towards Both Food Insecurity And Cyber-Insecurity?
It's rare that two of my passions—food and information security—intersect, but thanks to the USDA's announcement of their Blueprint For Stronger Service , I can touch on both in one…
Getting Things Done : A Cobbler's Tale
Starting sometime mid-year in 2011, I began having more 'stuff' to do than even my eidetic memory could help with. It's not that I forgot things, per se, but the ability to mentally recall and prioritize work, family, personal and other…
Feed Link Has Moved
Feedburner has borked the old RSS feed for the site and has completely disassociated me from it (meaning it's no longer in my Google Feedburner admin options and they won't let me re-claim…
Businessweek Infographic Illustrates The Pounding We Took In 2011
Evan Applegate put together a great & simple infographic for Businessweek that illustrates the number and size of 2011 data breaches pretty…
Improve Your Security Metrics For $14.00USD
First, go to this Amazon link and enter "ETXTBOOK" (no quotes) as the code, you'll get a credit of $10.00USD for Amazon Kindle textbooks. That credit expires on January 9 th , 2012,…
NEISTU 3.0 : Rise of the Tweetup
It's that time again! Coming to Nashua, NH on 2012-01-21 : The New England Information Security Tweetup…
Three Resolutions For Web Developers
I'm on a " three things " motif for 2012, as it's really difficult for most folks to focus on more than three core elements well. This is especially true for web developers as they have so much to contend with on a daily basis, whether it…
Three Resolutions For Mac OS X Users
In 2011, we saw a large increase in web site exploits that exposed private user data as well as a breakdown in the trust of SSL (for various reasons) and the introduction of real malware on to the OS X scene. If there were just three…
An Open Letter to IT Vendors For 2012
2012 is nigh upon us and with the new year, I am throwing down a challenge to each and every IT vendor out there. 2011 was a brutal year of incidents, breaches, outages and FUD and the last thing anyone needs is a repeat performance.…
Still Not A Fan Of Paywalls
As you can probably tell from a previous post , I'm not a fan of paywalls—especially poorly implemented ones. Clicking on a link in an RSS feed post and having it land on a page, only to have it smothered in an HTML layer or — in the…
Predictions? Humbug! Resolve Is Where It's At
This is the time of year when pundits and armchair/amateur analysts make predictions for the coming year. Given that only a tiny fraction of them predicted the Sonage of 2011 (not Sony specifically or the level of pwnage) or the…
You're The Mayor of FUDville!
Given the plethora of FUD-dropping in the article, I could only think of one way to do it justice, and that was a paragraph-by-paragraph check-in via: Every FUD-check…
DNSChanger Detector
The FBI made a tool to help you determine if you were a victim of the DNSChanger…
Why Didn't They Just…?
A while back I was engaged in a conversation on Twitter with @diami03 & @chriseng regarding (what I felt was) the need for someone to provide the perspective from within a medium-to-large enterprise, especially when there are so many folks…
Mid/Northern New England Tweetup
It's at Fort Foster. We thought about it a bit late in the season so no pavillion, but I'll be there wicked-early and have a gazebo-like covering setup over some tables. I highly suggest bringing folding chairs. There is a nominal entrance…
Your New Mega Security Program
Everyone who can read this blog should remember the Deepwater Horizon spill that occurred in the Spring of 2010; huge loss of life (any loss is huge from my persective) and still unknown impact to the environment. This event was a wake-up…
What Can We Learn From The @lulzsec senate.gov Hack Dump?
What can the @lulzsec senate.gov dump tell us about how the admins maintained their…
WEIS 2011 :: Session 2 :: Identity :: Negative Information Looms Longer Than Positive Information
WEIS 2011 :: Session 2 :: Identity :: Negative Information Looms Longer Than Positive Information — rud.is blog archive
WEIS 2011 :: Session 2 :: Identity :: Economic Tussles in Federated Identity Management
Tyler presented really well and it's a great data set and problem to investigate. He & Susan shed a ton of light on an area most folks never think about. Well…
WEIS 2011 :: Session 2 :: Identity :: Social Networks, Personalized Advertising & Privacy Controls
Catherine's talk was really good. She handled questions well and is a very dynamic speaker. I'm looking forward to the…
WEIS 2011 :: Session 2 :: Identity :: The Inconvenient Truth About Web Certificates
Nevena Vratonjic Julien Freudiger Vincent Bindschaedler Jeane-Pierre…
WEIS 2011 :: Session 1 :: Attacks :: The Underground Economy of Fake Antivirus Software
Brett Stone-Gross Ryan Abman Richard A. Kemmerer Christopher Kruegel Douglas G…
WEIS 2011 :: Session 1 :: Attacks :: Sex, Lies & Cyber-crime Survey
WEIS 2011 :: Session 1 :: Attacks :: Sex, Lies & Cyber-crime Survey — rud.is blog archive
WEIS 2011 :: Session 1 :: Attacks :: Where Do All The Attacks Go?
WEIS 2011 :: Session 1 :: Attacks :: Where Do All The Attacks Go? — rud.is blog archive
WEIS 2011 :: Session 1 :: Attacks :: The Impact of Immediate Disclosure on Attack Diffusion & Volume
WEIS 2011 :: Session 1 :: Attacks :: The Impact of Immediate Disclosure on Attack Diffusion & Volume — rud.is blog archive
WEIS 2011 :: Keynote :: Dr Christopher Greer
Dr Greer [cgreer at ostp.eop.gov] is Assistant Director, Information Technology R&D, Office of Science & Technology Policy, The White…
Dropbox 1.2.0 Experimental Build "Fixes" Security Issue
If you are concerned about the Dropbox design flaw exposed by the dbClone attack, then have we got a link for…
RLRAA - Real Life Risk Assessment Acronyms
All the following newly-minted risk assessment types have been inspired by actual situations. Hopefully you get to stick to just the proper OCTAVE/FAIR/NIST/etc. ones where you…
A Fully Operational OS X dbClone
The app can now backup/restore of local config, clone dropbox configs to a URL/file and also impersonate a captured Dropbox…
dbClone "hack" for OS X
Moloch built a Windows & Linux impersonation/cloning utility in Python that was/is meant to be used from a USB/external volume. The utility can save the cloned host id to a local file and also has the capability to use a simple HTTP GET…
"Flatten" HTML Content (i.e strip tags) in Cocoa/Objective-C [UPDATED] [BUG-FIX]
One of my most popular blog posts — 24,000 reads — in the old, co-mingled site was a short snippet on how to strip HTML tags from a block of content in Objective-C. It's been used by many-an-iOS developer (which was the original…
Checkboxes Fail To Defend Maine Department of Conservation Against Attacks
I tweeted a quick note about the 2010 Maine Department of Conservation state park pass ordering system breach . The brief AP story indicated that the breach itself was caused by a malware infection on systems at their SasS provider…
"Repairing" Strict Transport Security in Chrome on OS X
One of my subdomains is for mail and I was using an easy DNS hack to point it to my hosted Gmail setup (just create a CNAME pointing to ghs.google.com ). This stopped working for some folks this week and I've had no time to debug exactly…
Crossroad of ERM and the Parallels to IRM
I was reviewing the - er - highlights? - from the ninth ERM Symposium in Chicago over at Riskviews this morning and was intrigued by some of the parallels to the current situation in enterprise security risk management (the ERM symposium…
Remote Assistance/Information Gathering Aid - SupportDetails
I'm putting together a computer & online safety presentation for an upcoming talk at a senior center in Portsmouth (NH) and came across Support Details in my information hunting trek. This site makes it dirt simple to get basic information…
Behind The Mask : Supporting The New CIO Personas
This morning, @joshcorman linked to an article in the Harvard Business Review " The Conversation " blog that put forth the author's view of The Four Personas of the Next-Genereation CIO . The term persona is very Jungian and literally…
Micropwns :: Risk Microprobabilities for Infosec?
I had not heard the term micromort prior to listening to David Spiegelhalter's Do Lecture and the concept of it really stuck in my (albeit thick) head all…
Post-theft/loss Response & Recovery With Evernote
Last night, the kids left the garage open after sledding all afternoon and I failed to perform my usual rounds due to still being horrendously ill. At some point between 23:00 & 05:30, miscreants did a snatch & grab on some electronics and…
Never A Better Time To Baseline
If you're preparing to install Windows 7 or Windows Server 2008 R2 Service Pack 1 , now would be a good time to give Microsoft's Attack Surface Analyzer a spin. ASA takes a baseline snapshot of your system state and then lets you take…
The 5 Dysfunctions Of A Team
The following excerpt is from The Five Dysfunctions of a Team: A Leadership Fable by Patrick…
Herding [Fire]sheep
By now, many non-IT and non-Security folk have heard of Firesheep , a tool written by @codebutler which allows anyone using Firefox on unprotected networks to capture and hjijack active sessions to popular social media sites (and other web…
Fixing "Are you sure" In Media Upload (WordPress)
If anyone is experiencing the "Are you sure..." problem when trying to upload media to your WordPress blog, it's usually due to a wonky plugin. In my case it was "Google Analytics 3 codes for WordPress". Hopefully this helps others who are…
Securing 'su' with Google Authenticator
Google's new do-it-yourself two-factor authentication (Google Authenticator) enables you to setup stronger logins on your linux system. Nick Wilkens (@nwilkens) has a good/quick tutorial up on his company's blog for acquiring, compiling…
For Everyone Who Thought I Was Just A Zombie
For Everyone Who Thought I Was Just A Zombie — rud.is blog archive
Metricon: Verification versus Validation
Use systemogram to show what systems are supposed to do (very cool visualization for differing views of "security systems…
Metricon: Measuring Metrics Programs (Why Aren't We?)
If metrics are valuable, why aren't we measuring them. Virtually no research on…
Metricon: Software Security's Futures Plural
Metrics are the servants of risk management and RM is about making…
Metricon: Name Server Log Data
"On the use of name server log data as input for security…
Metricon: Automated Incident Reporting
Goal: make finland mostly harmless to the rest of the…
Metricon: Critical Consumption Of Infosec Statistics
Every major infosec company publishes quarterly/yearly summary reports. Some based on survey, some based on real captured…
Metricon: Evidence Based Risk Management
Better management through better measurement Speakers: Wade Baker and Alex Hutton and Chris…
"Web Development Is Dangerous"
Those were the words that greeted me within five minutes of checking out the Flask microframework for Python web applications. I feel compelled to inline those four, short…
Quick Hits :: 2011-02-09
Quick Hits :: 2011-02-09 — rud.is blog archive
Quick Hits :: 2011-02-08
Quick Hits :: 2011-02-08 — rud.is blog archive
Quick Hits :: 2011-01-07
Interesting points/counterpoints on the efficacy of Node.js being tied so closely to the V8 javascript engine: NodeJS: To V8 or not to V8 [bruno fernandez-ruiz] On Bruno’s Concern About the Current Coupling of node.js and V8 [jason @…
'Spaces' for Windows
I've been setting up a relatively new 64-bit Windows 7 Ultimate machine and decided to see if the virtual desktops landscape had changed much in the recent past. It's amazing that with all of the feature duplication between OS X, nix (esp…
AwesomeChartJS Meets Microsoft Security Bulletins
I wanted to play with the AwesomeChartJS library and figured an interesting way to do that was to use it to track Microsoft Security Bulletins this year. While I was drawn in by just how simple it is to craft basic charts, that simplicity…
Backup Workflow
I'm [still] a die-hard OS X user, despite the increasing gatekeeper motif Apple is sporting these days. My main computer is a MacBook Pro which I would stupidly run back into a burning building to rescue. Everything is on it. Everything .…
HDMI Overscan Tweak For Wimpy Windows Font Display
I recently hooked up a Windows 7 box to my Dell ST2310 monitor and was surprised at just how horrid the fonts looked, especially since my MacBook Pro looks fantastic using both DVI and HDMI with the display. I even tried all the ClearType…
Bootstrapping The New Site
A swirling mass of shiny new objects has caught my attention this year. Carving out a more dedicated space to document, opine and…