Categories
Tech

Conveying Presence/Availability During Remote Work

My day job is Business Systems Architect at Princeton University Press. As a precautionary measure to prevent the spread of the COVID-19 virus, all staff in the Princeton office have been asked to work from home for the next month.

The team I work with at the Press consists of programers, analysts and project managers. The Press has a robust infrastructure built up around Zoom to support remote meetings and many of us regularly work from home. That said, a month away from face-to-face interaction with my colleagues is going to be a different kind of experience, for sure. As such I’m documenting here the friction points, possible solutions, tips/hacks, etc. that we discover during this month-long exercise.

User Presence

I believe that once you get the various communication infrastructure established for remote meetings, remote file access, etc (of which I’ll write more as the days go on here), one of the challenges of working remotely is conveying presence/availability while working at home.

It is easy to walk by a colleague’s desk at work and get a sense if you can comfortably interrupt with a question or comment, much harder to do so when working remotely. There are many tools that could be used for this. Many programming shops use Slack, others Skype. At the Press, all staff are on Zoom and some are regular users of Microsoft Teams.

So I am looking here primarily at conveying user presence in Zoom vs Teams:

Both Teams and Zoom offer a “chat” section in their applications where you can set your availability and view whether or not your co-workers are available, away, busy, etc.

Zoom Status Guide

Zoom’s status options don’t synchronize well across devices. Meaning, if you set your Desktop Zoom application to “away” and then close Zoom on your desktop because you are expecting to use your mobile device, co-workers will continue to see you as “away” until you re-open your desktop Zoom app and change your status to “available.”

Meaning, your availability on your mobile device is not conveyed to your other co-workers.

The best way to think about Zoom status is: whatever your Desktop status is set to (or was last set to when you closed the app) is how your co-workers will likely see your status appear in the Chat section of Zoom.

Teams Status Documentation

Team’s status is the hands-down winner here. It almost-instantly synchronizes across all devices (mobile/desktop) when you change it (using the Desktop app you change your status by clicking your initials in the upper right corner of the application).

Also, the Teams iPhone application seems to be much better at providing chat notifications when the app is in the background then Zoom. Zoom chat alerts on the iPhone are pretty inconsistent in my experience.

Likewise Teams offers a very handy “Set status message” that you can fill out so that if someone messages you in the Teams chat area, they will get an auto-response to their message.  Meaning you could set your status message to “letting the dog out, back at 1:55pm” and if someone chats with you they’ll get that message as a reply automatically. Much more useful than a generic away/available status icon.

I have spent an equal amount of time using the chat function on Teams as I have on Zoom. They both have their benefits but clearly when it comes to conveying user-presence, Teams is superior. This opens up questions such as:

  • Do we standardize on one tool for chat even though multiple staff regularly use Zoom for chat?
  • Or, do we maintain user-presence/status in two apps and hope that we remember to set them both correctly?

We’re only on Day 1 here, so I don’t have a clear answer yet but, stay tuned.

Disclaimer: I’m writing about my experience of mandatory remote work at Princeton University Press during the COVID-19 pandemic, any comments and opinions here are entirely my own.

Categories
Automation Tech

Logging throughout the day with Day One and iOS shortcuts

Spending some time on the Day One community page on Facebook it seems like for those who journal multiple times per day–adding notes, thoughts, activities throughout the day–there are two schools of thought for capturing throughout the day:

1.) create a new entry in Day One for each of the day’s multiple entries
2.) append to a single daily entry throughout the day.

I fall firmly into the second camp, using markdown bullets and a time stamp to log entries to a single entry throughout the day.

Unfortunately, for all of Day One’s strengths and features it does not make it especially easy to automate the process of appending thoughts/notes to a single day’s entry throughout the day.

In the past, I might have relied on a bit of AppleScript or Keyboard Maestro to solve this problem. But now, my time is split evenly between sitting behind my Mac and using my iPad.

Apple is making it harder and harder to write one-size-fits-all automations that can be used on the Mac and on the iPad and iPhone. Automation is now platform specific: shortcuts on iOS and some combination of automator, AppleScript, keyboard maestro, Alfred, etc. on the Mac.

But whether I’m in front of my Mac or my iPad, I always have my iPhone with me. And while it’s not the best device for capture, I decided to focus my “capture and append” automation efforts on the iPhone rather than string together a bunch of hacks on my Mac.

I wrote an iOS shortcut I wrote does the following:

  • checks to see if a Day One entry exists for today
  • if one doesn’t exist it prompts you to create either:
    • a blank entry
    • an entry using a few prompt questions
  • prompts for log entry
  • asks if you want to put time with the log entry
  • appends the time/log entry to the end of today’s journal entry

If you are going to use this shortcut you must expand the six “Day One” actions in the shortcut and change the “Journal” field to match the name of the journal you’re using in Day One.

You may also want to edit the questions in the “A new entry from prompts” section. Just make sure to split them up with a line break.

Once you make those changes, it should just work for you.

The big caveat here is that if you use Day One on both iPad and iPhone, this shortcut seems to only work on one device. It works great on my iPhone. But if I try to use it on my iPad and I haven’t yet opened Day One on my iPad the shortcut doesn’t realize that I’ve already created an entry for today on my iPhone.

This seems to be related to background syncing of the journal contents. The solution is just use it on one iOS device OR make sure you open up Day One and that it syncs before running it on that other device. That being said, even when I do run it on the iPad, the appended line doesn’t show up on the entry, which is weird because if I view the entry on my iPhone, it’s there.

Again, syncing seems to be the issue here. Day One support has been helpful (as always) in helping me troubleshoot this but it seems like iPadOS background syncing is just flakey right now.

Here’s a link to the shortcut. Ok, happy logging!

Note/Update: the shortcut now copies the entry to your clipboard. Occasionally it seems like the shortcut doesn’t actually append the log entry as expected. I don’t know why. Restarting my iPhone seemed to solve the problem so probably syncing related but in any case, by copying the entry to your clipboard if for some reason the log note doesn’t appear when the entry is opened, you can always just paste it in from the clipboard. Lame, I know. I wish shortcuts were more reliable.

Categories
Tech

10 years of Instapaper

Scouring the web for new/interesting stuff to read is one of the best things about the Internet for me. My workflow for this foraging has been pretty similar for a very long time: browse RSS feeds of interesting people, read short interesting stuff immediately, save the longer stuff in a “read it later” tool.

For the past 10 years, my “read it later” tool of choice has been Instapaper.

To celebrate 10 years of using Instapaper, I went through and cleaned out my “unread” folder and archived the stuff from the past 10 years that I will probably never read completely. Now I’ve got 9 unread articles and 996 articles in my archives as read/mostly read.

I also ran some analysis on my 10 years of reading history using python and the Instapaper API. I repurposed a bunch of code from this project  and that gave me a real head start on putting together some python code to analyze my Instapaper usage.

Unfortunately the Instapaper API is limited to 500 bookmarks so my time analysis below only represents the last 500 articles I read, so I am not sure how accurate/valuable it is.

Instapaper aby

That said, if you visit the “settings” page of your Instapaper account you can download a .csv file with your complete list of bookmark titles and URLs. Having a complete list of all article titles allowed me to do some cool word cloud analysis of the titles of the articles I’ve saved for the past 10 years:

Instapaper wc

Funny how just about right that word cloud is in capturing my reading habits/interests! I love that Jim Harrison gets his own little line in the upper left.

Anyway, suggestion to the guys who are currently keeping Instapaper alive: make it possible to include the date, progress and bookmark_id in the .csv that is downloadable through the settings page. Including in the .csv those attributes that are available via the API’s bookmarks/list method would allow the ability to do a full analysis on how many articles I saved/read per month over the past 10 years.

Instapaper is a joy to use and is very tightly integrated into my reading life and how I use the internet. I thought it was surprising/cool/interesting to realize that I have been using it for 10 years now. Thanks @MarcoArment for writing it and @bthdonohue for keeping it alive!

Categories
HowTo Tech

Reset All Finder Window Customizations

Sometimes you need to go nuclear and get back to baseline on all of those Finder window customizations that you make over time and start afresh. This will get rid of all the .DS_Store files that hold those customizations. I save it as a bash script, chmod it 775 and keep it in my ~/bin/ directory as reset_finder_windows.sh

#!/bin/bash
sudo find / -name .DS_Store -delete; killall Finder
Categories
Tech

On Not Splitting up a Mac Fusion Drive

I’ve been second-guessing drive read/write speeds on my new iMac because it has a fusion drive. My iMac has a 2Tb Fusion Drive so that means it has 128GB SSD and the rest is spinning platters.

I never really know if I’m reading/writing to/from the SSD or the platters. I mean, it seems zippy so my inclination is just to leave it as-is and trust that Apple knows what they are doing.

I have entertained the idea of splitting up the fusion drive and trying to manage the SSD space on my own but thanks to this post, I’m feeling less inclined to do so. Rauol Pop did it and then ran some tests that show splitting the drive up yields equivocal benefits and some measurable negatives so, I’m trusting that the engineers at Apple know what they’re doing.

That, and I’m making good use of 24GB of RAM and just loading up all my applications into RAM anyway, so, there’s that. Also, as soon as they come down in price just a smidge, I’m going to pickup an external SSD that supports Thunderbolt 3 like the Samsung X5, that ought to be pretty close to the speeds of the internal SSD.

Categories
Tech

Installing pyinstapaper on Mac OS

lxml 4.0 doesn’t build on Mac OS Mojave. But the latest version does. Unfortunately pyinstapaper looks for 4.0 when it builds.

I would have never figured this out but another developer submitted a merge request that noted the lxml issue.

The request hasn’t been accepted yet so if you try to install pyinstapaper using pip it will error out. That said, you can still install pyinstapaper from source (assumes you have jumped through all of the ‘brew install $foo’ requirements stuff) to get python 3.x running on your Mac.

To get pyinstapaper to install:

  • Download the the code for this module as a zip file.
  • Extract zip.
  • Edit the setup.py file and change  the line that reads:
  • ‘lxml>=3.4,<=4’, to ‘lxml>=3.4,<=5’,
  • save the change and then from within the directory that you downloaded the source run
    ‘python setup.py install’ and you should be good to go.
Categories
Automation Post Tech

Adding todos to Today list in Things using AppleScript

Really pulled my hair out for a while on this issue so hoping to help someone out here.

set newToDo to make new to do ¬
		with properties {name:CurrentTodo} at beginning of list "Today"

This, despite the Cultured Code documentation using Today as an example list in the AppleScript guide.

So, if you use that code and replace “Today” with “Someday” it works like a champ but if you pass it the list “Today” the todo item is created in the Inbox and not the Today area of Things. Weird and it was making me crazy.

Anyway, the easy solution is:

set newToDo to make new to do ¬
		with properties {name:CurrentTodo, due date:current date} 
Categories
Post Tech

Shortcut: Day One braindump to Things

I use Day One as a journal almost every day. Most mornings start with me doing a bit of a brain dump into Day One, listing anything that’s on my radar that I need to deal with.

So I wrote a shortcut to help me deal with those brain dumps a bit better.

This shortcut:

– takes a list of items from the clipboard (so, I would just select/copy the list in Day One) and creates entries in Things (my todo list app of choice for the past many years).

– With a bit of a rub: if the tasks contains the word “today” (e.g. I need to call Joe today) the shortcut puts the task in the Today section of Things instead of in the Inbox section.

Admittedly this is not really wizardry level stuff here and the inability to run a similar procedure on my Mac (shortcuts only working on iOS I mean) limits its use a bit. But anyway, for anyone running Day One on iOS who is interested, here’s the shortcut I use to extract a brain dump from Day One and load the tasks into Things.

Categories
Post Tech

Could Competition from Private Equity Make Kindle Suck Less?

I received a Kindle for Christmas. I love it despite the fact that it feels like Amazon has done little if anything to advance the technology of the ebook reader in the 10 years that have passed since I bought my wife her first Kindle 2.

Highlighting passages in an ebook on a Kindle still feels janky and broken. The interface, or lack thereof, forces users to hunt and peck around the screen with a fingertip, making wild guesses about what effect various taps will have.

Much smarter people than I have thought hard about how much better ebook reading could be. Craig Mod is one of those people and has written about this on Medium and his personal site.

That said, receiving the Kindle for Christmas motivated me to dig out my Princeton University library login and see what kind of books were available on loan for me to read.

Some background: This was not my first attempt at borrowing digital materials from the library. A few months ago I tried borrowing an audiobook from the PU library and was prompted to download an application on my iPhone called Overdrive to search and borrow materials.

The Overdrive experience was awful.

So bad in fact that I immediately shelled out $15/month to audible.com even though the user experience there is only a bit less tedious.

No doubt part of the friction with my first attempts using the Overdrive application to borrow digital materials from the library was having to jump through Princeton’s dual-factor authentication to validate that I could borrow materials.

As I switched back and forth from the Overdrive app to Safari, back to Overdrive, my inner-coder could sense just how precarious and failure-prone this authentication process would be.

This is all to say that I didn’t have very high hopes when on the day after Christmas I grabbed a completely unnecessary plate of Christmas cookies and fired up my iPad to see what ebooks might be available for me to borrow from the library to read on my new Kindle.

This time though instead of using the Overdrive app to access the library’s materials, I was promted to download an app called Libby.

Libby is a much better version of the original Overdrive. More polish, less janky. Moreover, it did two things straightaway that indicated it had been completely rewritten from the ground up:

  • it handled the two factor authentication without a hiccup. Library authentication was dumbfoundingly easy and very elegantly integrated into the Libby app. Morevoer, Libby seems to handle multiple libraries with ease.
  • the app asked me right out of the gate if I wanted to read ebooks that I’ve borrowed in the app or on my Kindle. It handled the Kindle integration with ease as well.

With Libby the friction of borrowing ebooks from the library is barely any more difficult than purchasing an ebook from the Kindle store. [note: When I read something (physical, digital) from a library and I really enjoy it I will in most cases purchase the hardcover version of the book for my bookshelf. Both to support the author and to give me some visual cues of what I’ve read. That’s just me. Judgement-free zone here.]

I get that borrowing digital materials from the library comes with its own bag of problems around revenue and timing of book sales (publishers now delay making digital versions of their books available to libraries for a few weeks after the hardcover hits to avoid cannibalizing sales, etc.). Throughout my career I’ve worked with libraries in various capacities and experience has taught me that on the whole, librarians are both passionate and vigilant.

So, when private equity behemoth KKR announced their purchase of Overdrive from Rakuten at 6:30pm on Christmas Eve there was a bit of a stir on twitter about how this spelled the end for Overdrive and its swell Libby application:

Twitter has me thinking that librarians, who may be our most vocal ambassadors of a freely available commons of knowledge and information, don’t seem to have a lot of love for the folks in private equity. In particular a lot of angst seemed to stem from KKR’s acquisition and dissolving of Toys R Us and there appears to be some expectation that they’ll do the same with Overdrive.

BoingBoing.net’s Cory Doctorow seems to take a similar view with his coverage of the acquisition noting KKR’s model here is:

to buy profitable, productive companies, load them up with debt (paying themselves out of the money that was borrowed), cut costs by slashing wages and degrading the quality of their products and services, then allowing the company to go bust, stiffing the creditors, workers, and suppliers (that is, libraries, publishers and writers).

I am a fan of BoingBoing as well as Doctorow’s fiction but something wasn’t sitting right with the way this acquisition was being portrayed. So I did some Googling and found a few interesting facts about KKR:

  • First off, while I’m sure many Toys R Us employees would have preferred to have kept their jobs instead of seeing their employer go under, KKR and Bain put up $20mil as severance pay for Toys R Us employees who were let go. I thought that was interesting and somewhat overlooked in the Twitter rage-fest about KKR’s evils.
  • Secondly, why buy such a strange, niche company/product as Overdrive/Libby just to drain revenue? Where is the revenue? Did I miss something about the cash cow lurking in libraries and digital media? So then I discovered that KKR has also recently acquired RBMedia, an audiobook publisher that also owns audiobooks.com and RBDigital.
  • Thirdly, I read this paragraph in a Forbes piece on KKR (the whole article is worth reading):

According to Kravis [one of the K’s in KKR], Japan is littered with cheaply priced conglomerates loaded with underperforming assets. He recalls asking the CEO of one of Japan’s big trading companies how many subsidiaries the company owned. The Japanese executive said 2,000. When Kravis asked how many were core, the answer was still 2,000 . .
“I’ve been going to Japan since 1978. I always saw the light at the end of the tunnel. Now it’s real,” Kravis says with a youthful glint in his eye. Roberts adds, “Japan today reminds me of the 1960s and 1970s in the United States.”

Taking these three points together (Rakuten is, of course, a Japanese company with a bunch of subsidiaries) seems to me like KKR may actually have some kind of strategy here to integrate these disparate acquisitions. Maybe they want to make money the old-fashioned way by building something that makes it easier/better to borrow digital materials from the library than what currently exists in the market? Who knows?

All that said, this whole thing would have been way more interesting if KKR had purchased Rakuten’s Kobo (ebook) subsidiary.

I don’t know enough about libraries to know who KKR is competing with as it (hopefully) builds out its Libby/audiobook.com/RBDigital integration. But I do know that it they buy Rakuten’s Kobo subsidiary they may have enough resources to wake Amazon from the complacency that has allowed the flaws in the Kindle to exist for so long. Maybe Overdrive was just the first bite at the apple? Who knows. But in contrast to most of the hot takes on Twitter, I’m skeptical that KKR purchased Overdrive just wring out revenue and shut it down.

Categories
HowTo Tech

Troubleshooting PDF OCR using Python on Mac

I wrote a script to extract some text from a PDF (image-based text, so pdftotext wouldn’t work).

Using pdf2image convert_from_path I simply could not get any data out of the pdf. I tried multiple PDFs while testing and convert_from_path just kept returning an empty variable.

Turned out that my homebrew install of xpdf was interfering with my homebrew install of poppler.

Uninstalling xpdf (brew uninstall xpdf) and reinstalling poppler (brew install poppler) seemed to fix things up. My suspicion is that they both come with their own versions of pdfinfo which is used by pdf2image. Just a hunch, I don’t know enough about what’s going on under the hood. So, anyway, if pdf2image isn’t working correctly for you and you’re on a Mac, make sure you’ve got poppler installed and that xpdf’s pdfinfo isn’t being used.

Categories
Post Tech

Essential Mac Apps – 2019 edition

This week I’ve been building up my new iMac from a base-install of Mojave. I have a text file that lists all of the apps that I had installed on my dead MacBook Pro (and, good backups, thankfully), but instead of just reinstalling all of the apps I had, in the spirit of Cal Newport’s Digital Minimalism, I’m just installing the apps that are essential to my intentional use. We will see how this goes!

Here’s what I’ve got so far as apps that are absolutely essential for me:

  • Things – best todo list manager ever. Installed on and syncs with all of my iOS devices.
  • DayOne – best journal application ever. Installed on and syncs with all of my iOS devices.
  • Reeder – my RSS Reader of choice. Linked to a Feedly account (but only because that was the free/easy migration path from Google’s RSS days)
  • Byword – my Markdown/editor for the past year or so. I use this on the desktop and iA Writer on my iOS devices. Both editors read from the same iCloud folders.
  • Spark – returning to this email client because I can never get the default Mail.app to mirror what is going on in my Google Inbox in any relevant, useful way. My fault probably, but I’m tried of futzing with it and Spark, generally, just works.
  • MarsEdit – where I write/edit weblog stuff. Though, notably, my first drafts usually go in Byword or iA Writer depending on what device I’m working on.
  • Pixlemator – been using this forever. you never know when you need some layer-based image manipulation.
  • TextMate – No idea why/how this ended up as my programming tool of choice but I can not remember ever not using it. Always been very happy with its syntax highlighting regardless of what language I’m in.

When I’m remotely working for Princeton University Press:

  • MS Office 365 (Mac versions, including Outlook for mail)
  • Teams, thankfully, runs on my iOS devices, so I don’t really ever have to spend too much time in Windows, but when I do there’s . . .
  • Parallels with . . .
  • SQL Server Management Studio because I need a SQL client.

Sort-of essential/system utilities stuff that I’ve installed in addition to my “essential” apps:

  • Spotify
  • Backblaze (offsite backup for all the Macs in my house)
  • iStat Menus (nerdy, probably unnecessary)
  • Mosaic (nerdy, necessary)
  • SuperDuper (for my local backups. Easiest most-bulletproof backups ever)
  • Alfred (new to me but needed text expansion and a better Spotify interface, so. . . ) and the Alfred Spotify Mini Player
  • Linen background from Initial Charge