How do I email?

Here are two things about me that some people don't know:

  1. I like e-mail. I mean, nobody looks forward to going through 700 e-mails every morning (which is about how many I get that I have to at least glance at), but it's far better than 700 meetings, 700 HipChats, 700 Slack messages, or anything else that requires synchronous attention. I'm all about being able to asynchronously "serially multitask", and being able to route everything through the dumb but asynchronous pipe of email makes that a lot easier. People who try to sell you on an e-mail-less office in favor of instant messaging tools are people who hate your productivity.
  2. I despise Gmail. I hate that most of the features only work in the awful web interface. I hate that the offline features of the mobile app only sort of work, and the web app hasn't been usable offline since Google Gears shut down. I hate that the IMAP server will sometimes turn off for 10 or 15 minutes and doesn't properly support the SEARCH command. Unfortunately, tech companies seem to exclusively use either Gmail or Outlook/Exchange, and Exchange is even worse than Gmail.

As you might expect given the intersection of those two facts, I have a pretty unusual mail setup. So I thought I'd share it on the Internet!

read more

Beating the Compiler

We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%.

— Donald Knuth

Measure. Don't tune for speed until you've measured, and even then don't unless one part of the code overwhelms the rest.

— Rob Pike

We spend a lot of our time in the modern, web services-driven technology industry ignoring performance issues. What's the point of micro-optimizing a 3ms function call when each request spends 8 or 9 seconds inside the SQLAlchemy ORM? Well, sometimes it's nice to practice those optimizion skills anyway, and today I'm going to walk you through micro-optimizing a simple problem and we'll see just how much better we can do than a naive solution... even though we probably normally shouldn't.

read more

"DevOps" is a dumb word

Until recently, my job was to synthesize a deep understanding of operating systems, networking, system administration, and my company's application and to use that synthesis to fix our existing systems and design better ones. A lot of folks in the technology industry (particularly in the bubble of Greater San Francisco) use the word "DevOps" when putting out job postings for roughly those tasks, and I just wanted to briefly write about why this word is somewhere between inaccurate and offensive and why you shouldn't use it.

read more

some old hardware

My fiancée persuaded me to go through my drawer of old electronics and I thought I'd post a picture of some of the (working) portable computers that we went through today:

various old electronics

Included:

  • Apple Newton MessagePad 2100
  • Apple iPhone 3G
  • Nokia 770 (running Internet Tablet OS 2006)
  • Sony Cliè PEG NX-80V
  • Handspring Visor Edge
  • HP TouchPad

Combined, they might have as much computing power as the iPhone 6 I recently acquired. Probably not, though. It certainly is interesting to look at what has and hasn't changed over the last 20 years.

Also poked at today (but not pictured)

If you're interested in any of this stuff, let me know.

iPhone 6

iPhone 6

Hello friends. As you may remember from a few years ago, I am an iPhone user. Like several million of you, I decided to upgrade to the iPhone 6 this year. I thought I'd share some really brief impressions:

  • The 6 is gigantic. I have no idea how anyone is using the 6+. The photo above shows my 5s (which was already quite large) looking dwarfed by the 6. It still doesn't have anything on the iPad, though.
  • The curved edges of the front really do feel a lot better for the forward/backward swipe gestures in iOS when compared to the flat screens of the iPhone 5s and the iPad.
  • The screen is noticably better, particularly from extreme angles. Check out this shot of the two iphones and the iPad from a very low angle and in the dark; there's no contest about the contrast:
iPhone 6 angles
  • The screen is also noticeably cooler; setting a white background on it next to my iPhone 5s or my rMBP makes the 5s look yellow, the rMBP look neutral, and the 6 look blue.
  • iTunes is terrible. It took me at least two hours to get the iPhone up and running because when I plugged it in to restore from backup (thinking that a USB2 connection would be faster than restoring from "the cloud" over my Comcast internet connection), iTunes insisted on installing the versions of all my applications which it had backed up some time in 2013. So then I had to go download updates to 70+ applications over the WiFi anyway. Blech.
  • This is more of an iOS 8 thing, but Swype is great. I remember having it on the Motorola Droid that we had to use for on-call at Yelp and liking it there, and it seems to have made the transition to iOS with aplomb.
  • The camera does indeed focus faster. Otherwise, it seems identical to the iPhone 5S camera.
  • I wish it didn't have a camera bump. I might get a case (which I never do) just to hide the camera bump. Maybe the new Karvt skins will be thick enough to be level with it?
  • Scaled-up applications are really annoying. Jason Snell does a good job of explaining why in his iPhone 6/6+ Preview; the keyboard is the wrong size on scaled-up apps. And, of course, third-party keyboards are disabled in scaled-up apps. I am very eager for Tweetbot, Hipchat, and Google's apps to update.

That's it for now.

Sorry for going so long between posts; I have some posts with actually content (instead of just commercial blathering) in them queued up, and maybe I'll put one of those up soon.

Until then, ciao.

Thoughts on the Moves Privacy Policy

For a while, I've been using the Moves app for iOS. It's a little application that uses the accelerometer and GPS data from your phone to tell you where you've been and how many steps you've taken and so on and so forth. I've been using it in no small part because of their strong third-party privacy policy, which said:

We do not disclose an individual user’s data to third parties unless (1) you have given explicit consent to each such disclosure, (2) we are required to comply with a legal obligation or (3) if our business or assets, or parts of them, are acquired by a third party.

Unfortunately, as you may know, Moves was acquired by Facebook last month, and I'm sorry to say that their stance on user privacy has not improved. Today, Moves updated their Privacy Policy, and it's not good stuff.

For better or worse1, Moves (like many companies) does not post diffs when they change their privacy policy. So I'm doing it for you. I extracted the current privacy policy (as of 2014-05-05) and the previous one (edited 2013-09-17) from The Wayback Machine, then reformatted them as Markdown. You can view them at https://gist.github.com/Roguelazer/7e59bb615c3e5a38b036; the diff itself is at https://gist.github.com/Roguelazer/7e59bb615c3e5a38b036#file-september_versus_may-patch.

Important Disclaimer

I am not a lawyer. If you think you may be affected by the changes to this legal document, you should consult with your attorney. Please don't cite me in court or sue me over interpretation. This document does not consitute legal advice and is for entertainment and outrage purposes only.

Interpretation of Changes

The biggest change, to me, is the fact that Moves is now reserving the right to share all of your data with (roughly) anyone at any time. The relevant clause:

We may share information, including personally identifying information, with our Affiliates (companies that are part of our corporate groups of companies, including but not limited to Facebook) to help provide, understand, and improve our Services.

Also interesting to me is the following passage which was removed:2

We will not display or otherwise disclose information where individual users can be recognized. Furthermore, our developers need to occasionally review raw data and the results for recognized activities/routes/places to improve the system. They will only see the unique identifier number with the data.

As far as I can tell, Moves is being set up by Facebook to monetize, share, and potentially leak your personal movements, and to inherit up Facebook's famously-shoddy isolation of user PII.

Having read this document, I have removed the Moves application from my phone. If anyone is aware of any personal-awareness-movement-tracking apps which promise not to sell your location to the highest bidder, please let me know. And if you still have the Moves application on your phone, well, I hope you get a chance to take a look at the detailed changes to the Privacy Policy and make an informed decision.

1

Who am I kidding: for worse. Any company that does this is scummy and untrustworthy and, unfortunately, is also every single company I can think of (including the one I work for).

2

This is of particular interest to me because it was one of the best such clauses in the industry. A lot of companies (including Facebook) do not do anything to prevent developers from viewing your most personal information, and there have been some rather hushed-up scandals related to that. I would love to live in a world where developers take the time to do their jobs without looking at your personal travel logs or selfies. It's laziness and some slavish adherence to "agile" which prevents companies from embracing this philosophy, and it's definitely one of my pet peeves.

TeX is Huge

I was installing MacTeX on my MacBook Pro today and had an amusing realization. First, some background: for those of you who don't know, TeX is a phenomenal family of typesetting programs originally written in 1978 by two of the giants of 20th Century computer science, Don Knuth and Guy Steele. Most people now use it in conjunction with a slightly more modern set of extensions called LaTeX released in 1981 or so. I used TeX/LaTeX to typeset several thousand pages of homework and other assignments in college.

Now, in early 2014, the download for the OS X distribution of TeX+LaTeX is 2.3GiB, and it actually occupies about 3.5GiB of disk space when installed. How does this compare to 1978? Well, one of the cheapest options for storage in 1978 was the DEC RK05, a gargantuan 2.5MiB cartridge disk drive, which cost $7,900 for the drive and $99 for each disk.

To store the installation of MacTeX-2013, we'd need 1,434 of these disks. This would cost $149,866 ($543,133 in 2014 dollars) and would form a cylinder 14" in diameter and 358' tall1, which would weigh about 100,000 pounds2. Based on some cursory googling, this seems like it'd be a stack of disk cartridges roughly as tall as a 25-story skyscraper and weighing about as much as 10 African bull elephants. Also, apparently the cartridges have embedded read/write head magnets and will erase one another if left in close proximity3, so that stack would be a terrible way to store your data.

I wonder what Knuth and Steele think of the fact that their little typesetting software would be the largest building in a good fraction of the cities in the world?

At least it's still cheaper than San Francisco real estate.

1

In this image, the cartridge is 77 pixels tall and the image is 245 pixels tall. According to this table, the entire assemblage is 10.5" tall. Multiplication yields 3.3" for the cartridge, and since DEC tended to like round numbers, I'm going to assume that it's actually 3" per disk. Multiply that by 1,434 disks, and you get 358 feet.

2

This article indicates that the later, lighter RL02 drive cartridges weighed 70 pounds each

3

RK05 Disk Drive Maintenance Manual section 2.4 "Cartridge Packing and Shipping"

Alfred + dc

I use Alfred 2 a lot on OS X in order to get things done. It doesn't completely change how I use the operating system, but it comes close. However, one of my pet peeves about it has always been that the built-in calculator is pretty terrible (even with the "advanced" equals-sign calculator). I realized this morning that I could fix this, and, lo, the dc alfred workflow was born.

It just takes its input and runs it through the dc command-line utility, giving you a fully-programmable RPN calculator. It's not quite as great as PCalc, but it's just a ^-space away. If you have Alfred, you can just install the workflow and then use the script filter "dc" to run your math commands. Example:

dc alfred workflow screenshot

Interesting SSL Issue

Shortly after I upgraded to OS X 10.9.2, I was connecting to battle.net, and I got an SSL error. At the time, I didn't think anything of it (after all, sites have bad SSL certificates all the time). However, I noticed it again today when looking at the page for Reaper of Souls, and decided to look into it again. When I did, I found something very unusual: my system has a second copy of the DigiCert root CA certificate in the "login" keychain. For those of you who aren't familiar, OS X uses a hierarchy of binary key/password databases called "keychains" to store sensitive materials. Generally, Root CA certificates are only found in the Trusted Roots keychain; the "login" keychain (which is a per-user keychain writable without root privileges) is only used to store passwords and other application-level data.

read more

Pebble Steel First Impressions

I've had an article sitting in Draft status since June 2013 about the Pebble smartwatch which I bought during their Kickstarter campaign. The article essentially said that the Pebble has awesome features, but feels like a toy and scuffs if you look at it askance. I was planning on going into detail about how apps like httpebble and smartwatch+ feel immensely hackish.

Well, as of today, I'm confident reporting that Pebble has resolved all of these issues with the Pebble Steel and Pebble OS 2.0.

read more