Not quite drone, not quite noise…

This was originally the pump on our Nespresso machine, looped and mangled on an SP-404 before further mangling by a Kaoss Replay and then into an Eventide H-90 for some serious reverb.

This grew out of some work from Disquiet Junto’s “Consumer Drone” project that just wrapped up last week, but isn’t what I posted for that. I found this didn’t quite fit what I was looking for for the project, but something I thought might appeal to others.

New drones!

Another collection of drone sketches.
This one was fun. I did it entirely on the Teenage Engineering OP-1 Field. I did the sound design, laid down one four-track digital tape with the sounds, and then for the three tracks I used different tape speeds and effects on the master bus. The only thing done off of the OP-1 was the loudness normalization at the end.

CUPS-PDF Printing to an iPad via DropBox using a Raspberry Pi

Inspired by printing to a reMarkable tablet. You need to have Dropbox installed on your iPad, and/or a PDF viewer that supports Dropbox syncing.

  1. Follow the instructions here to install CUPS PDF printing on your Pi and set it up as a print server.
  2. Patch the PPD to avoid the problem of printing blank pages (steps here). You’ll need to scp /usr/share/ppd/cups-pdf/CUPS-PDF.ppd to someplace where you can do an upload from your browser.
  3. Install Andrea Fabrizi’s Dropbox Uploader script from here.
  4. Make a directory in your Dropbox to hold your PDFs. I chose _ so it would show up first in my list of files, to make scrolling easy.
  5. Crontab uploads of your PDFs. Do crontab -e, and add an entry such as
0-59/1 * * * * /home/kf6gpe/Projects/Printing/Dropbox-Uploader/dropbox_uploader\
.sh -f /home/kf6gpe/.dropbox_uploader -s upload /home/kf6gpe/PDF _

You’ll need to change the path to your dropbox uploader, the configuration file, the path to your PDF directory locally on the Pi, and your remote directory. Keep the -s flag, which tells the uploader to only upload changed files!

Speaking at BayCon 2019 this morning!

I’m pleased to say that I am one of the speakers lined up to give a talk at BayCon 2019 here in Silicon Valley this morning. I’ll be giving the talk “APRS Turns 35. What’s Next“, which looks at the current state of APRS, especially mobile and pedestrian mobile APRS. I’ll post a link to the audio or video of the talk when it’s available. If you want to use the materials as a basis for your own talk, you can get it at GitHub and make a fork.

A Review of Ben Forta’s “Learning Regular Expressions”

Being able to whip up a regular expression in the ordinary course of data wrangling is one of those skills that separates the computing neophyte from the skilled. Years ago, documentation on the subject was scanty at best, relegated to man(1) pages and the occasional ‘NIX book footnote or appendix. With the widespread adoption of regular expressions in programming languages and the rise of the web, there’s been an explosion of poorly-written Web tutorials which purport to teach you regular expressions, but seldom does more than give your shift and number keys a workout.

Ben Forta’s Learning Regular Expressions, published by Addison-Wesley, aims to change this, and for the most part does an excellent job. Situated somewhere between the first page of Google search results for “regular expression” and Jeffrey Friedl’s Mastering Regular Expressions, it provides a step-by-step tutorial on using regular expressions to match text. Illustrated with common problems including matching phone numbers, postal codes (from three different countries, an nice addition to the tried-and-true example), email addresses, URLs, and snippets of HTML.

The book’s chapters are structured as lessons, each adding on to what you’ve learned in previous chapters. A careful study of the material and working of the examples will bring you not just a basic understanding of word and pattern matching, but more advanced use of regular expressions including position matching, backreferences, look-ahead and look-behind, and even conditional embedding. I’ve been using regular expressions (poorly, I admit, for the most part) for thirty years, and I had several “Oh, that’s how you can do that” moments when reading, especially the last few chapters.

Each chapter provides a set of increasingly sophisticated examples. I hesitate to call this a cookbook, because a competitor I will not name has largely co-pted that format, and truthfully, it’s more didactic than culinary. The presentation works, however; for each section, you’re presented with a problem, some sample text, a regular expression that may or may not solve the problem, and then a discussion of the regular expression and why it did or did not work. Including regular expressions that do not satisfy your goal permits Forta to link one section to another, building on your expectation of how things might work to how they do work. It turns out to be an effective way to present the material, and it’s easy to follow along using a tool such as grep.

The book closes with an appendix on the differences between several popular evironments’ implementation of regular expressions. This is helpful, because almost every reader will come to the book with a slightly different expectation of where they will be using what they learn.

I found Forta’s step-by-step presentation refreshing without being condescending. I would have preferred perhaps a few additional examples on some of the more advanced topics, like look-ahead and look-behind, and even subexpressions. However, he does the job and does it quickly; a motivated reader can go from knowing nothing about the subject to being proficient in just a few evenings, and I found it a quick read.