Measuring developer productivity in 2019

Until I spent the better part of 50 hours writing this guide about measuring developer productivity, I had little appreciation for how far we’ve come in the past four years. If you’re an engineering manager, there’s a growing body of data that suggests you can make a blanket increase in engineering efficacy. If you’re a great developer, you now stand to earn your due. These are exciting times to be programming.

Additional topics covered in the (admittedly a bit too epic) guide:

If you manage developers, would love to hear what you think of this effort? Is it relevant to you? Anything that could make it better?

Alternatives to Xmarks (now discontinued)

Xmarks (nee Firemarks) has been a reliable companion to address my cross-platform bookmarking needs over the past 10 years. As such, I was saddened to receive word that parent company Lastpass has chosen to discontinue Xmarks as of mid-2018. This sent me on a quest to find the best Xmarks alternative, but the first Google result I was presented (alternative.to) when searching “Xmarks alternatives” contained a spate of services that had precious little relevance to users like myself who simply want the means to save bookmarks in a cross-browser compatible extension, with as few other bells and whistles as possible.

After considerable Googling, here are the top three recommendations I’d present to other Xmarks users being forced to abandon ship:

Eversync

There’s good reason that this is the most-cited service you’ll find (alongside Xmarks) when Googling terms like “cross browser bookmarks.” It supports all the major browsers/platforms (including my current laptop, running Chromium on Arch Linux). It has been doing this long enough to have a quaint (read: “embarrassingly outdated”) little website that imputes the difficulty of building a business with via bookmarking extension.

Eversync’s web site welcomes you to the 90s

Most importantly, it’s got impeccable ratings. As of March 2018, it maintains a 4.5 star rating on the Chrome app store with about 3,000 ratings. I consider this an incredible feat, given that greater volume of ratings typically drive a product’s average toward the 3 stars.

The biggest gripe I have with Eversync is that its creators package a collection of junk like “Speed Dial.” If you’re a power user with more than 500 bookmarks, Nimbus (who appears to have purchased the extension from Everhelper at some point) will try to charge you $45/year for the extension (plus Nimbus bloat). Woe that it does cost money to maintain a web service.

Chrome sync

Ok, technically this isn’t a cross-browser solution. But if you’re like me and you only stray outside of Chrome on occasion (usually to test a page I’m developing on another browser), then the simplest way to sync bookmarks is to simply use the browser’s built-in capability. No extensions to download, no potential that you’re going to have to change managers again when software maker abandons their product.

If you choose this option, you will most likely want to visit your browser’s Settings -> Sync settings and disable the properties that you don’t want or need synced on all of your workstations:

Raindrop.io

This option “only” manages 4 stars on 300 ratings in the Chrome app store, so it’s a half-step below Eversync in terms of its user reputation. I’m including it here anyways because its home page inspires me to believe that its developers are actively working on it, and thus its functionality may be more likely to improve compared to Eversync. Further, it’s list of features including “Duplicate finder” and “Broken link finder” indicate a level of product dogfooding (creator using own product = creation of features to maximize user satisfaction) that was largely absent in Xmarks. For what it’s worth, the Pro version of Raindrop is also a few bucks cheaper than the Pro version of Eversync ($5/month for Eversync vs $3/month for Raindrop).

If anyone has firsthand experience with Raindrop, I’d be much obliged to learn your satisfaction level in the comment section below.

Why’s “open link in new tab” not working in Safari + iOS 10 + iPhone 7?

From the files of “endlessly frustrating problems that Google wouldn’t help me with.”

When I bought my iPhone 7, I couldn’t open links in new tabs in Safari for the first six months I owned it. Whenever I tried to hold a link to open it, Safari would sometimes ignore me, sometimes it would start showing a preview of the destination for that link. Which behavior it chose to do seemed to depend on the whether Mercury was in retrograde.

After much searching, I eventually learned this behavior isn’t a “bug.” According to Apple, it is the “feature” that they have long been marketing as “3d touch.” That is, your iPhone is now paying attention to how hard your touch your Safari links. If you hold a link “hard,” then, instead of popping up the context menu that allows you to open the link in a new tab, you instead get the obnoxious popup preview of the next page.

The solution to being able to pop the standard iOS Safari context menu? Hold on a link in Safari, but do it lightly, tenderly, as if you were stroking a baby dove.

This is what “intuitive UI” has become on the new iPhone.

Turning off 3d touch

If, like me, you find 3d touch to be more of a nuisance than a feature, you can disable it as follows: open Settings, search for “Touch,” and pick what should be the first option in the list:

Then click into the 3d touch option, which can be turned off for a 32% less aggravating mobile experience:

PS bonus fix! Have you had trouble moving your iPhone’s icons around since upgrading to iOS 10.1? Guess why. That’s right, 3d touch. As with the above, to move around app icons on a 3d-touch device, you have to touch them ever so lightly.

I will continue waiting for this to feel like a “feature.”

Evernote vs Quip: A note taker’s detailed comparison

Over the past 5 years, I’ve probably spent more time in Evernote than most any other productivity app. I’ve created thousands of notes across Evernote’s OS X, iOS and web clients, becoming intimately familiar with the limitations of each. Over the years, I’ve periodically tested alternatives, mostly when Evernote obliterates my changes via merge conflicts with unsynched notes. I had high hopes for Onenote when I gave it a few weeks’ test run recently, but ultimately determined it was even more fatally flawed than Evernote (not to mention how difficult they make it to import past work from Evernote).

A couple days ago I discovered Quip. It is a multiplatform note-taking app that apparently started as a collaboration platform, and was acquired by Salesforce for $750m in 2016. It sports a reasonably effective built-in Evernote importer, plus an impressive suite of free features. Based on my initial impressions, I’m giving it even odds to replace Evernote as my note-taking app of choice. Yet, like Evernote, it too comes with a set of warts.

Given how powerful-yet-flawed both products are, I’m going to attempt to enumerate, from a note-taker’s perspective, where each shines. Hopefully this list (ordered roughly by impact on my everyday productivity) helps others decide which set of drawbacks is most forgivable to them.

Evernote Advantages

  • Notes can be displayed in grid while ordered by recency of update or other criteria (Quip only allows user-defined sorting in list view…and only on desktop clients at that. C’mon dudes, allowing notes ordered by recency of update is utterly essential feature)
  • Can navigate from note to note with single click, since list of notes remains visible in left pane even when a note is being edited
  • Better UI for text formatting: resides permanently at top of each note (in Quip, text formatting options are hidden behind a sometimes temperamental popout in left gutter)
  • Support for searching phrases (not just individual words)
  • Essentially instant search
  • Not as aggressive about trying to spam all my contacts during install (unlike Quip — forcing me to manually uncheck every Google contact during iOS install. Not a great approach to build goodwill with a new user, Quip)

Quip Advantages

  • Notes are saved in real time as they’re created (!). The note’s text is automatically synchronized to all devices that have the note open. Not only does this fix Evernote’s most fatal shortcoming (merge conflicts), it also allows multiple people to edit the same document concurrently, a la Google Docs
  • Less janky checkboxes for todo lists. They don’t slow down the note when there are lots of them, they can be copy-pasted without introducing weirdness, and their line gets crossed out when you check off your todo item.
  • Spreadsheets with full Excel-like functionality (functions, etc) are natively supported, and can be inserted inline into any note
  • Code blocks can be inserted into any note (!)
  • Variety of attractive pre-built font themes can be selected and set as default for notes
  • Can use across more than two devices for free (Evernote now charges for this functionality)
  • Note’s edit history can be viewed without paying monthly fee
  • More robust feature set for collaboration (collaboration seems to have been the initial purpose behind Quip’s existence) than Evernote. Can add inline comments to any line of any note.
  • More intuitive interface for working with multi-level lists (arrows to move back and forth between list level, rather than needing to use tab+shift)
  • Can organize notes into subfolders within a notebook
  • No upsells as yet in free version

Both apps allow chatting (because everyone wants to chat in their note taking app…right?), and both allow some degree of collaboration on notes (Quip much stronger here). It’s my goal to use Quip as my primary app for the next couple weeks before I make a final call on the victor. If you have experience with either app, would be delighted to hear your power user tips in the comment section below!

Evernote QA Report: Merge & Sync

Hi Evernote,

Your sync and merge has long been broken, and I hope to provide you enough detail to get it fixed here. All the below should be reproducible, let me know if you find otherwise.
List Fruits 1

It starts simple. Create a note in Evernote webview. List some fruits. If you’re anything like me, you probably make a couple lists like this per day. All seems well. Later that day, you remember this list, and have a burning need to add “Starfruit” to it. All looks well?

2015-11-05 16.06.47
But things are not so well, because when we return to the webview, there’s some bad news awaiting:
List Fruits Double Note               ^– Now two notes, instead of one

That’s right, my fruit list has split itself in two lists with edits from desktop and mobile. Similar problems persist as I try to use the document.

Unless one is fastidious enough to sync every note when finished, and then manually sync when resuming on another platform, you are liable (at rate inversely proportional to speed of your internet connection) to soon find yourself with something like this:

Two Syncs Later

Every time I switch devices, I must remember “ensure save,” then pre-sync on the new device (and remember to confirm sync finished). Granted, there are a number of trigger points for syncs, but it’s impossible to be sure which, if any, have triggered/completed. One too-fast move, and I’m back in the ghetto of Mergetown.

I usually don’t even know I’ve been losing list items (to duplicated versions), until I notice the note lags in load/save time. And then I realize there are 10 copies of the list in my note, below the (already long) version I was treating as the “real list.”

I sympathize that getting sync to work reliably across disparate platforms is a hard problem [2]. So why not, instead of fully fixing the sync, just spend a few days fixing the merge?

If you could automatically add new lines to both documents without creating duplicate copies, that would be a good start. If you kept the note differences in the area they were found (not bottom of document), that would help. Source control tools have spent 20+ years building great systems to merge two documents. You can probably crib most of your implementation from a plugin/library in that domain? Or at least mark “duplicate documents” so I know I’ll need to hand merge them?

Thanks for considering these improvements. I take the time to write this because I still believe you’re the best solution in your space. If you could just address this fundamental stuff, I’d reap benefits greater than the (sizeable) time it took to create this report.

[1] Lists featuring fruits.
[2] Albeit the hard problem you ostensibly built your business to solve

Fix it: Ubuntu CTRL-SHIFT-V Won’t Paste Into Terminal

Ugh, just spent an hour traveling from forum to forum trying to figure out why I couldn’t CTRL-C in Rubymine and CTRL-SHIFT-V into terminal. As many forum posters were eager to point out, it is possible to use CTRL-SHIFT-INSERT or middle click to paste into terminal, just not CTRL-SHIFT-V. Unfortunately, those workarounds were not OK since my insert key is in the arctic circle of my keyboard, and I don’t want to touch the mouse.

Luckily, the folks at Rubymine helped me figure out the answer where Google couldn’t.

The problem is that when running Rubymine via OpenJDK, the clilpboard used is not compatible with the clipboard used in terminal. The solution was to run Rubymine with Oracle Java instead. In Rubymine, this is a matter of first installing Oracle Java (I’ll let you Google that one, you have to add a repository) and then adding the following lines to the beginning of your Rubymine startup script:

export JAVA_HOME=/usr/lib/jvm/java-6-sun
export JDK_HOME=$JAVA_HOME
export RUBYMINE_JDK=$JAVA_HOME

After that you should be golden. In my hour of Googling I read that many other IDEs (Netbeans in particular) seem to be subject to the same problem with CTRL-SHIFT-V not working. I’d reckon that if these users were to change their application to use Oracle Java it would probably resolve the problem in other IDEs as well.