Thanks to wpDataTables for sponsoring BrettTerpstra.com this week!
Managing a massive amount of data on your website can be an exercise in frustration. It can take hours to build and integrate a table into your website, only to find that something’s not quite right when you hit refresh.
wpDataTables, the #1 WordPress plugin for tables and charts, avoids data management problems by helping you avoid 5 major issues that can drive you to distraction.
The 5 main issues and the solutions provided by wpDataTables
Major Issue #1: Wasting Time Organizing Data
Building a price list or product catalog for a website can necessitate working with and organizing extensive amounts of data and can be a huge waste of time when done manually.
The Solution: wpDataTables will organize the same amount of data in a matter of minutes. All you need to do is import the data and follow a few simple steps.
A cool $1, one-trick utility for iOS that takes selected or copied text and performs case transformations: title case, URL Encoded, uppercase, lowercase, capitalized, reversed, and “Mocking Spongebob” (random capitalization). Available through a share sheet in any editor or text field.
A $10, 60-sound collection of ringtones combining a selection of digital and acoustic sounds. If you’re tired of unnecessarily checking your phone every time the tri-tone goes off in a TV show, you might want to check these out. I’ve been using them for a couple of weeks now and can vouch that there are some great ringtone/alert replacements in here. (Admittedly, I still use some otherringtones for per-caller customization…)
Do you like Futura but want something that looks a little less… 90 years old? This pay-what-you want font — named after Futura designer Paul Renner and created by Indestructible Type — is worth trying out for your next sans-serif design need. Check out their other fonts while you’re there, they’re doing some cool stuff.
I’m not being hyperbolic: this “one simple trick” is going to save a lot of people a lot of time. (I know, it’s really hard to read that sentence as anything other than hyperbole, but give me a chance.)
I talk a lot about TextExpander and how much time it saves me (and full disclosure, Smile is a regular sponsor of my blog and podcasts). I was recently delighted by an unconventional use for text snippets that came from a Facebook post from Peter Cohen (and pointed out in Bob “Dr. Mac” LeVitus’ newsletter):
One of the smartest text substitutions I’ve made turns “gfy” into “thanks for your valuable feedback.”
— Peter Cohen
I can’t think of a snippet that would save me more time than this. When I feel attacked, offended, or receive negative feedback I consider unfounded, here’s the process I try to stick to:
Type out a smartass or otherwise scathing response
Erase smartass or otherwise scathing response prior to sending
Meditate, take a walk, and/or listen to some favorite music until the initial reaction passes
Force myself to wait until the next morning to reply
Sit down (if still necessary, gritting my teeth) and writing something polite and understanding
Step 5 always ends up being about the same, and a snippet that just reverses my thinking in an instant would literally save me 12 hours of time, and some physical exertion. Talk about a productivity hack…
As an aside, I’ve found that this type of response to aggressive emails almost always changes the conversation immediately. If an angry customer (or otherwise unfamiliar person) suddenly feels heard, everyone proceeds in a civil fashion. Most people who start out angry are simply assuming that they need to be aggressive in order to be heard. I’ve written about this before, and I’ll refer back to my post on “How to write a customer support request.”
(I’ll further note that this isn’t as effective on Twitter. People directly attacking me rarely seem able to read a short, civil response as anything other than sarcastic or condescending. It takes a bit of eloquence that’s not easy in 140-280 characters. Sarcasm, on the other hand, is really easy in only 50-100 characters.)
I’ll add a group to the TE-Tools if I finish up my new “inverse reactions for better customer service” snippet collection.
This is pretty awesome. Machine learning movie recommendations on the command line. Installs with pip and sources the Carnegie Mellon Movie Summary Corpus to provide recommendations based on a selected movie.
Easy Markdown documents in the browser. Just add a script link at the bottom of an HTML page containing Markdown inside an <xmp> tag and it generates an HTML version on the front end using Bootstrap themes (switchable).
Some of us always follow the rabbit. It’s not because we want to. It’s just that the rabbit…
10 a.m., somewhere in Minnesota
Sit down to write a blog post. It’s basically written already in my head, just need 20 minutes to get it down.
Double check some code I’m including, and realize it doesn’t work right in an edge case that just crossed my mind.
Drop back to Sublime Text for some testing. This edge case is revealing a more substantial failure. Get a little frustrated and head to StackOverflow.
Find a StackOverflow answer that wasn’t exactly what I needed but follow a link to GitHub and start examining some code, out of context, that I think might have the answer. See a function used that I’ve never heard of and have to track it down through the repository. Turns out it’s a native function in the language that I’d never seen before.
Consider the possibilities of this functionality. What’s the use case for this? Why was it considered important enough to be part of the core functionality. Figure out some cases, start to think “so what else could this be used for?” I can think of some code that could be refactored to play with.
Grep through to find an old script and start trying out the new method. Little snag, I need to convert the data when it’s ingested. That will require a separate library. Package manager gives me a missing library error.
Run brew update to prepare for installing the needed package. See the list of changed and new packages. Wait, what does that one with the cool name do? brew home newcoolness. What? I didn’t even know this was possible!
Dig into the new package, consulting docs and trying out various pipelines. Holy cow, I should write a blog post about this. Wasn’t I doing that already? Check timestamp. Look at watch. Tomorrow, I guess, it’s time to make dinner now.
The latest book from Luc P. Beaudoin is out: Cognitive Productivity with macOS: 7 Principles for Getting Smarter with Knowledge, available on Leanpub, the iBookstore and Amazon.
Luc is the co-founder of CogSci Apps (creator of mySleepButton), founder of CogZest, and most importantly, a Cognitive Scientist who specializes in Mac and iOS-based productivity. So he’s got credentials. You may even have heard my chat with him on Systematic.
If you’re a fan of this blog, or a listener of shows like Systematic, Mac Power Users, or any of the Mac shows with a productivity focus, this book will be for you. While it certainly has appeal to the academic side of knowledge gathering and consumption, it breaks the processes down in a way that will help anyone working to organize their information. By focusing on key principles in the areas of knowledge gathering, organizing, assessment, and mastery. It includes great info and tips for using Mac apps like OmniFocus and OmniOutliner, Anki, Timing, Leap and Yep, working with plain text and Markdown, and great tips for working in Finder and keeping projects and knowledge organized and accessible.
Luc has a 2-second rule that says any information you use frequently should be accessible on your Mac within two seconds. It’s a rule I clearly love, as I’ve dedicated a good part of my adult life to making it happen for myself. I’ve learned a lot from reading through Luc’s tips surrounding the 2-second rule, and I can’t imagine there’s anybody who wouldn’t walk away with at least 5 new ideas.
I know a few people are using PodTagger, so I thought I should publish the latest updates. It’s mostly fixes, but it also now adds a “metadata” section at the top of the shownotes.md file that it writes out that looks like:
When I post a Systematic to SquareSpace, this is info I need when setting up the external mp3 link, so I figured I’d just have podtagger figure it out for me. A few more steps saved.
Despite the grandiose title, this post is pretty specific: converting RegExRX files to Markdown so I can include them in my nvALT snippets collection. Despite that, I’m sharing it because you can use it as a base to modify and start “rescuing” your own data out of other applications. I understand why applications of any complexity store their data in structured files, whether XML, JSON, or a database format, but I like to keep my data portable. Since the Data Liberation Army isn’t huge in number, the onus falls on us to find our own ways.
This script specifically works with XML and outputs to Markdown, but you could easily make the idea work with JSON files, binary XML (with a little help from plutil), or SQLite database queries, and output to any format you wanted with a little templating.
Ok, diatribe over. Back to the script.
Out of all the editors/testers for regular expressions out there, I’ve always come back to RegExRx. It’s not pretty (the Mac App Store icon couldn’t even get shadow transparency right), but it has all the features I could ask for. As I work, I save my successful regular expressions to RegExRX files. These are plain text XML files with the patterns stored as hex. This makes them pretty human-unreadable, and you know me…
I wrote a script to convert a folder full of these .regexrx files to Markdown files I could drop into nvALT or Quiver. I won’t go into a ton of detail on this because I’m pretty sure there aren’t more than 5 people in the world who will ever need this script, but…
In this script, you can specify a few options when you run it:
$ regexrx2md.rb -h
Usage: /Users/ttscoff/scripts/regexrx2md.rb [OPTIONS]
-o, --output-dir=DIRECTORY Output folder, defaults to "markdown output"
-p, --prefix=PREFIX Prefix added before output filenames
-t, --template=TEMPLATE Use alternate ERB template
-h, --help Display this screen
Specify an output folder, a note title prefix, and your own template for the output (there’s a default one if you don’t make your own). A template is an ERB file that uses the variables @title, @flags, @search, @replace, and @source. The @source one is the contents of the “source text” in RegExRX, a string or text block to test the expression against. There are also helpers like “@source.indent” which will take every line and indent it 4 spaces (to make a Markdown code block). Also, .to_js simply replaces forward slashes with \/ so you can use /[search]/ in your template. Note that it doesn’t account for already-escaped slashes because I don’t use them in RegExRX (its copy-as feature does it automatically), but that’s something I’ll probably fix sooner than later.
Here’s an example template that imports nicely into Quiver:
The result in Quiver:
Side note: annoyingly, a lot of other snippet apps (like SnippetsLab) can’t just import Markdown files as notes. I had to import the results of this script in Codebox (which I think is now defunct) and then import that library in SnippetsLab.
And here’s the Ruby script. You need to have Nokogiri installed, which is (usually) just a matter of running gem install nokogiri (though depending on your setup you may need sudo gem install nokogiri and there’s a 50% chance you run into issues with libXML that you’ll have to search the web about).
Even if you don’t use RegExRX, I hope this inspires some data liberation for some folks.