home about me text processing with ruby

I’m Rob Miller

I work as a business strategist, a software developer, a marketer and a writer. I'm based in London, and I work with consumer businesses to help them solve brand, tech, and marketing problems.

If there’s a problem I might be able to help with, feel free to email me. You can see my CV here.

Recent posts

  • 🌐 The Spatial Politics of Geofencing (→

    Interesting thoughts about Code of Conscience, a project that geo-fences heavy duty vehicles, restricting their usage within protected wilderness areas, and what that technology might mean for policymaking. For example:

    You can easily imagine… a dystopian scenario in which geofenced medical prostheses cease to operate when they cross an invisible GPS boundary into an unserviced region—perhaps as a way to protect the host company from the illegal installation of black-market, security-compromised firmware updates, but with immediate and perhaps fatal health effects on the user. Or, say, regions of a metropolis—perhaps near centers of governance or military installations—where civilian vehicles or unregistered photographic equipment of a particular resolution can no longer physically function.

    Just as easily, you could imagine something like the spatial opposite of Code of Conscience, where, for example, future GPS-tagged hunting rifles only work when they are located inside permitted wilderness areas. The instant you step outside the field or forest, your gun goes dead.

  • 🌐 The intelligence coup of the century (→

    For half a century, the CIA secretly controlled one of the world’s most widely used cryptography companies, using that control to backdoor allies and enemies alike and eavesdrop on their most sensitive communications. This perhaps explains their concern about Huawei.

  • 🌐 The high school students who uncovered a toxic waste scandal (→

    Geoff Manaugh on a remarkable story of teen journalists in the 1990s uncovering what the “real” press was unable or unwilling to. An example of just what teens are capable of if given a project with meaning, import, and autonomy.

  • 🌐 The hidden biases that drive anti-vegan hatred (→

    Why do vegans provoke such ire in non-vegans? This interesting article looks at the cognitive biases that might lead to such strong feelings.

  • 🌐 Artificial Morality (→

    Bruce Sterling on AI ethics:

    In the hermetic world of AI ethics, it’s a given that self-driven cars will kill fewer people than we humans do. Why believe that? There’s no evidence for it. It’s merely a cranky aspiration. Life is cheap on traffic-choked American roads — that social bargain is already a hundred years old. If self-driven vehicles doubled the road-fatality rate, and yet cut shipping costs by 90 percent, of course those cars would be deployed.

    Technological proliferation is not a list of principles. It is a deep, multivalent historical process with many radically different stakeholders over many different time-scales. People who invent technology never get to set the rules for what is done with it.

  • 🌐 Sayre's law (→

    Related to the last link is Sayre’s law, which states that “in any dispute the intensity of feeling is inversely proportional to the value of the issues at stake”. We’re distracted by trivialities and are powerless to effect meaningful change.

  • 🌐 #distracted – BLDGBLOG (→

    A piercing view of modern outrage culture, which sees the opposition to fascism distracted by low-stakes nonsense while society is slowly dismantled.

  • 🌐 The Unhappy King of Snooker (→

    From five years ago, but still beautiful and resonant: a profile of Ronnie O’Sullivan, the haunted and preternaturally gifted snooker player.

  • 🌐 Elizabeth Wurtzel and the Illusion of Gen-X Success (→

    A poignant piece on the passing of Elizabeth Wurtzel (author of Prozac Nation) and the precariousness and vapidity of the modern creative industries.

  • 🌐 Sn*wflakes and F*ggots (→

    A wonderfully thoughtful and thought-provoking article about the growing culture war in the UK, as we slowly circle the drain.

  • 🌐 Cardiologists and Chinese Robbers (→

    A useful name for an intuitive fallacy.

  • 🌐 How to Make A Memex (→

    I discovered this after writing up my post about Roam Research and, inevitably, it says much of what I wanted to say more effectively than I was able to say it.

  • 🌐 How a cabal of romance writers cashed in on Amazon Kindle Unlimited (→

    It turns out the world of self-published, Kindle Unlimited romance novels is cuthroat and scammy. Algorithm-gaming, fake readers, fake content, all generating millions in revenue. Kindle Unlimited is particularly susceptible because of the way it calculates and shares revenue.

  • 📄 A fortnight with Roam Research

    I’ve been using Roam Research for a couple of a weeks now, and I have some thoughts about it.

  • 🌐 The Evolution of Socio-Technical Systems (→ PDF,

    A fabulous paper from the early 1980s. Taking examples from coal-mining, it explains the interactions between people and technology and the evolution and emergence of productive relationships between the two. There are so many lessons here for modern technical teams.

  • 📄 Ruby’s $_ variable

    Ruby has many cryptic variables, but one of them is particularly useful – especially if you’re processing text from the command line.

  • 📄 Mini Munging, Brighton Ruby conference, July 2015

    The slides and summary from my talk at Brighton Ruby 2015.

  • 📄 Command-line purging of Varnish caches

    Varnish, the HTTP proxy, is a fantastic tool. Here’s a way to purge cached pages from the command line, a task I find myself wanting to do frequently.

  • 📄 A Caching Analogy

    Explaining caching is hard; here’s an attempt.

  • 📄 Ruby regular expressions: the /o modifier

    An explanation of the little-used – but handy-to-know – o modifier to Ruby’s regular expressions.

  • 📄 Real progress in long-running command-line scripts

    Sometimes, you write Ruby scripts that take a long time to execute. Here’s how to show progress to your scripts’ users – part two in a series, this time showing how to display real progress to users.

  • 📄 Faking progress in long-running command-line scripts

    Sometimes, you write Ruby scripts that take a long time to execute. Here’s how to show progress to your scripts’ users – part one in a series, this time dealing with how to show indeterminate, faked progress to reassure users that something is happening.

  • 📄 Persisting data in Ruby with PStore

    Ruby comes with a powerful persistent storage system that’s backed by flat files and handles concurrent access and transactions out of the box – stuff you’d expect to need a database for. It’s criminally underused, and it’s called PStore. Never roll your own file locking code again!

  • 📄 Paths aren't strings

    If you find yourself passing around lots of file paths in your Ruby scripts, you should save yourself a headache and use Pathnames, not strings.

  • 📄 Nokogiri as a command-line tool

    Most Rubyists are familiar with Nokogiri. It’s a combination XML and HTML parsing tool most commonly used for “screen scraping”: that is, fetching a web page, and searching through it to extract information of interest. When a website you’re interested in doesn’t offer an API, it’s often the only way to extract information from it.