All data go to hell

Forbes describes how Fitbit data are being used in a personal injury case:

The young woman in question was injured in an accident four years ago. Back then, Fitbits weren’t even on the market, but given that she was a personal trainer, her lawyers at McLeod Law believe they can say with confidence that she led an active lifestyle. A week from now, they will start processing data from her Fitbit to show that her activity levels are now under a baseline for someone of her age and profession.

In this case, the data are being used in a way that's beneficial to the individual on which the data were collected. But that's just this case.

This is such a perfect example of something that I preach to anyone who doesn't seem to care about data privacy. The mindset goes something like this: "I don't care if the government or Big Company X has my data. I haven't done anything wrong."

It's fine if you don't care about privacy, but if you use the innocent-today-therefore-innocent-forever logic to arrive at your apathy, you've gone way astray. You can't possibly anticipate how today's data will be used to implicate you in the future.

You can't possibly foresee how the fact that you went to lunch at a cafe on Broad Street at 11:43 AM on a Wednesday morning in July will become relevant and subpoenaed in a court case involving people you don't even know. You can't possibly be certain that a pattern of perfectly innocuous web searches you did in 2009 will raise suspicion in light of an accusation someone makes in 2021. You can't be sure that future laws will err more on maintaining civil liberties than ensnaring enemies of the state.

In his 1954 book How to Lie With Statistics, Darrell Huff famously said "If you torture the data long enough, it will confess to anything." I would offer a 21st century version: We're all guilty given enough database unions.

via FlowingData

RegexOne

I've always known I'd be better off if I knew how to write regular expressions, but for some reason I never had the patience to teach myself through web searches and online manuals.

Thankfully I just came across RegexOne, a site with interactive tutorials and practical examples using regular expressions. Now I finally know how to write simple regular expressions and know enough to figure out more complex regular expressions when the need arises.

I really like sites that teach with real-time feedback. RegexOne's teaching model is great.

Clink and sync

Gabe Weatherhead and Bradley Chambers. . .

Two guys with demanding day jobs. Two guys with families. Two guys that find the time to make amazing things by mixing some spare time with their passions.

Two guys that inspire me to do more.

And two guys with two very different new products. . .

Bradley wrote another book in his Learning to Love series: Learning to Love Google Drive (available in the iBookstore and outside of it). And thanks to Gabe's new app, TapCellar, beer journaling is a thing in my life.

Now join me in drinking and reading to both. Here's to the crazy ones, especially the ones that ship.

All thumbs

Yuvi likes writing on his iPhone 6 Plus:

I originally thought the iPad would be a perfect writing device but I never found the right keyboard solution. The iPad keyboard is too big for me to happily thumb type on, and I also never enjoyed 10 finger typing on it (doable but uncomfortable). And carrying around an external keyboard started to make me want to just go with the laptop.

The portrait keyboard on the iPhone 6 Plus is just right for me. It works great for fast, two-handed thumb typing, which suits my creative writing pace.

I totally agree, even though I'm using an itty-bitty iPhone 6. It's logical to expect the iPad to be superior to the iPhone for writing because the iPad's keyboard is larger. In practice, the opposite is true.

A few reasons why. . .

Body position matters for the iPad, not the iPhone.

Typing landscape on an iPad is optimal only when sitting in a traditional "laptop" position, ideally at a table or desk. It's maddeningly frustrating in any other body position—especially positions that you really wish it worked in. For example, trying to type on an iPad in your lap while sitting on a sofa seems like a good idea, but that's only if you enjoy being punched in the balls by autocorrect every four seconds.

The position of my body is practically irrelevant when I type on an iPhone. I can stand, sit, or even lay on my back. In every case, the iPhone is in the same orientation with the same degree of thumb accessibility.

I'm sure Yuvi would agree that an iPad just doesn't work in his "sweet setup" for writing—the toilet.

If I can't touch type, just let me have my thumbs.

I can type on an iPhone in portrait orientation with two thumbs just as fast as I can touch type on an iPad in landscape. Even when sitting in a traditional typing position with an iPad, I'm not creating more words per minute.

My iPhone is with me all the time; my iPad isn't.

My iPad is with me about as often as a laptop is with me. My iPhone, on the other hand, might as well be grafted to my skin. Even if the time spent per typing session is less on an iPhone compared to an iPad or laptop, there are way more iPhone sessions.

My iPhone typing speed promotes a more discerning type of typing.

This is really more of a comparison to laptop typing, I guess. I think it's also what Yuvi meant when he said the iPhone "suits his creative writing pace." I couldn't agree more. I just type too damn fast at a "real" keyboard. My emails sometimes read like they were written by a third-grader vomiting words into the IMAP sewer that is unedited, high-volume work email.

When I type on an iPhone, I usually write fewer and richer sentences. I make fewer typos, too.

It's not that I don't use my iPad a lot.

I just don't use it much for writing. My iPad time is almost entirely spent reading technical papers, books, or watching Netflix. For me, my iPad is a natural extension of my Mac's screen when working, and it provides the best experience for reading text—just not creating it.

Read Later is dead

I think Read Later was always a fantasy. The Read Later app genre definitely sustained that fantasy in my mind far longer than it should have.

By waking up from the Read Later dream, I've made more time for reading (usually better) things. If I have time at the end of the day to read, I'd rather spend that time reading text written before Read Later was even a problem that needed solving.

Killing Read Later also means I killed the shittiest of shitty side effects of a Read Later workflow—unread counts. I permanently deleted an entire inbox. I stopped spamming myself.

Today my rule for reading internet text is essentially this: read now or not at all.

In cases where I need to act on a URL later, I use a simple OmniFocus bookmarklet to put it in my OmniFocus inbox along with other things I need to act on. In other words, reading something important is at parity with doing something important.

URLs that I can't read now and don't need to act on in the near future go into a flat Pinboard archive. An article that I may need to look at in the future isn't something I need to read later. It's something I may need to read later. It's just a piece of reference material. A simple search returns it on a whim.

Don't get me wrong. To waste time is to very much be a human being. I'll never be able to completely clockwork orange myself off of the empty calories dripping out of the "social" web. But I can get better at not putting them in a to-go box. Putting Read Later in the trash is just one way.

Adding a little more awesome to Alfred and Alpha

In case you missed it, Dr. Drang wrote a nice response to my post on evaluating LaTeX with Alfred and Wolfram Alpha. Though he doesn't use Alfred, the Professor of Python does write a lot of LaTeX, and it would shock no one that knows of him to learn that he quickly cooked up some .py to query Wolfram Alpha from BBEdit.

For whatever reason, today I felt the urge to make a good thing better, and it occurred to me that someone out there on the internet had probably made a Wolfram workflow with more bells and whistles than the stock Wolfram workflow that ships with Alfred.

Sure enough, a little web search turned up a post from (of course) my good friend Gabe at Macdrifter, who pointed to me such a workflow written by David Ferguson.

David's workflow returns Wolfram results live to the Alfred interface without even having to go to the Wolfram site at all.

In early testing, it works flawlessly with standard LaTeX input. For example, here's the 1.9602 I was trying to get in the last post:

Pressing ⌥↩ even puts the numerical result on my clipboard. So yes, this is a way to evaluate LaTeX expressions right in Alfred without having to even lose sight of your LaTeX code.

You do need a Wolfram app ID for this to work, but you can get one free here.

Evaluating LaTeX code with Alfred and Wolfram Alpha

The LaTeX documents I create have a lot of numerical illustrations. If you write hundreds (maybe thousands) of numerical expressions in LaTeX over the course of a year, you will fat-finger a few digits along the way, and I really hate typos.

For example, my PDF output might have an expression like this:

math-pe.png

Quick. In your head. . . does that really equal 1.9602? Yeah, I don't want to do that either.

My old fashioned editing approach would be to hand check each one with a calculator like Soulver, typing in the expression after it's typeset to PDF and verifying the result. This is because the LaTeX code itself isn't in a format that can be pasted into a typical calculator:

\frac{0.9989 + \frac{0.9975}{1.04}}{0.9989} = 1.9602

A better way

I only recently found out that Wolfram Alpha can evaluate most LaTeX expressions in their raw form. Just paste a LaTeX expression into Wolfram Alpha's text input field, and see what it does.

For an even faster approach—avoiding the need to even leave your favorite LaTeX editor—use the stock "Ask Wolfram" workflow in Alfred:

  1. Invoke Alfred
  2. Start typing wolf... to bring up the Wolfram workflow
  3. Paste LaTeX code and return

The workflow takes you straight to the Wolfram site, which evaluates the expression in a second or two.

That's probably enough digits, Wolfram. But anyway, yeah, there's the 1.9602 I was hoping to see.

This is by far the fastest and most accurate way I've found to audit LaTeX numerical expressions on the fly. In fact, I've started using Wolfram Alpha to evaluate expressions in the first place. This lets me type LaTeX expressions as I "think" them and know that I can evaluate them in-line as I go.

Alfred, after all, is always just a Cmd-Space away.

Update: For ideas on automating this process further with Python, see Dr. Drang's follow-up post.

Update 2: Here's an even faster way to evaulate LaTeX with Alfred and Wolfram.

Using Little Snitch to lower your LTE bill

Your Mac is a tiny but vociferous habitat amid an even more boisterous biome. The internet is a really loud place.

If you could somehow translate network traffic to an audible frequency, I’m sure it would sound like a rainforest of monkeys, tropical birds, frogs, bugs, and God knows what other creatures screaming out incessantly in a programed ritual of information mating.

But how loud should your Mac be? Who should it be allowed to cavort with?

Enter Little Snitch—a Mac application that alerts you any time any application on your Mac attempts to connect to the internet. You’re able to allow or deny connections on a permanent or temporary basis. Little Snitch groups these “rules” into profiles that can be network-specific or global. Best of all, as you join new networks, Little Snitch lets you assign them to profiles.

I use three Little Snitch profiles to muzzle the monkeys:

  1. Home: My home network, including Wi-Fi and ethernet connections
  2. Public Wi-Fi: Any open or public network I join
  3. LTE: Any network created by my iPhone or iPad’s hotspot feature

My Home Profile

On my home network profile, anything goes. I don’t have any data caps or security concerns at home, so I generally cut things loose. If home were the only twig in the internet rainforest I sat on, I probably wouldn’t need Little Snitch at all—though I do like how the menubar icon shows me if something is doing a lot of uploading or downloading.

My Public Wi-Fi Profile

If my home network is a tranquil pond of koi, public Wi-Fi is a muddy swamp full of piranha and pythons—with panthers patrolling the perimeter.

My Public Wi-Fi profile is much more restrictive. I’ve locked down just about everything except essential services, web browsing, and email. If I must connect to a public network, I want as little information flowing in and out of my Mac as possible.

My LTE Profile

When connected to LTE, the concern isn’t privacy predation. It’s data usage. And boy, does Little Snitch really help here.

Before I started using Little Snitch a few months ago, I was routinely running right up against my Verizon Wireless data limit around the 23rd day of each month’s billing cycle. My options were 1) impose a moratorium on LTE usage the last week of the month, 2) go over my limit and incur an overage charge, or 3) increase my data limit.

I stubbornly never chose option (3), meaning that every month I either had to give up the benefits of LTE or give up more money to keep using LTE.

I knew that Backblaze, my preferred online backup service, was part of the problem. Backblaze currently offers no way of restricting backups by network.1 And my Mac currently offers no way to change the behavior of applications on a network-by-network basis. As far as my Mac is concerned, a Wi-Fi network fed by LTE data is the same as any other Wi-Fi network.

To reduce the bleeding, I had to remember to manually pause Backblaze when connecting by LTE, and I frequently did not think to do that until it was too late.2

Now, Little Snitch essentially does the pausing for me. It’s as simple as permanently blocking bztransmit the first time it tries to connect over LTE.

As soon as I began using Little Snitch this way, my LTE data usage issues went away completely. In fact, I barely climb above 2.5 GB of LTE data usage in any given month. Before, I would end up anywhere from 4.0 to 4.5 GB, putting me at or over my 4 GB plan.

Little Snitch lets me use just enough LTE on my Mac to be productive—mostly low-bandwidth web browsing and email.

My Cash Flow Profile

The economics here are what one might call intuitive. Little Snitch costs $35 once, and it saves me $10-15 every month. If you regularly hop across different networks, which each pose unique security and data usage challenges, I highly recommend trying out Little Snitch.


  1. To be clear, this is not a criticism of Blackblaze. I HIGHLY recommend using Backblaze for bulk online backup. We just live at a time when mobile data isn’t yet a fully capable peer (cost-wise) compared to non-mobile networks. ↩

  2. To a lesser extent, Dropbox can also be a data hog, so I usually block Dropbox by default and allow it on an exception basis. Most of my Dropbox work involves text files, so the bandwidth is pretty low. However, I’ve taken data hits in the past when someone else added a large amount of data to a shared folder and Dropbox synced the data while I was connected to LTE. With Little Snitch always watching, there’s no need to worry about these unforeseen data traffic bursts. ↩