Chrome, Firefox, or Safari

August 2017:

  • I don’t use Internet Explorer because I run on Mac and Windows, and there is no IE for Mac.
  • I used to avoid Safari because it didn’t pin tabs. Safari now pins tabs. I hate that it creates a ‘favicon’ which is just the first letter of the domain name, but I can learn to live with that.
  • I used to use Chrome instead of Firefox because the Chrome edition of AdBlock was better, but that’s no longer the case.
  • Chrome now prevents blocking of HTML5 video auto-play. There is an extension called Disable HTML5 Autoplay, but it doesn’t block sites such as
  • Chrome consumes way too much Mac battery.
  • Important: Firefox and Safari let you disable extension auto-update. Chrome does not.
  • This works to disable auto-play of video in Safari. I still get lots of video auto-playing in Chrome, even with disable-auto-play extension(s).
  • Safari Problem: LastPass export doesn’t work in Safari (Sept 1, 2017). It silently fails after re-entering my password to enale export. No prompt for export filename or download-starting message. It doesn’t work in Firefox either. Right now, the only way I can export LastPass is via Chrome.
  • is a clever idea, but Wunderground behaves poorly (intermittently), Nirvana suddenly closes item-edits while I’m entering valid data. I don’t need another source of weirdness to debug.

I’ve become concerned about extension security. At a minimum, I am cutting way back on my use of browser extensions.

There have been cases where a Chrome extension developer lost control of his account and a bad guy pushed an unauthorized update to an extension. Every extension in Chrome means I have to trust its developer’s staff not to be tricked by phishing. Every extension on any browser weakens the browser’s security by adding any of the extension’s vulnerabilities to the browser footprint. Malware authors are now targeting extension vulnerabilities.

Extension List:

  • Adblock: I used to really value AdBlock (the one). I now get so much “we won’t show you content because you are blocking ads” that it is almost worthless.
  • Lastpass: I really need a password manager. I need to be able to share passwords with my wife and I need to share between PC, Mac, and Android. Do I need it to be integrated into my browser?
  • Authy: I need Authy. Do I need it integrated into my browser?
  • Session Buddy: I need bullet-proof session restore.
  • Stop Video/Animation: I don’t want movies to auto-play. I need them to be quiet if I can’t block them.
  • Amazon Wish List: Handy to be able to add non-Amazon stuff to my wishlist, but hardly indispensable.
  • Copy All URLS: Handy. It is really slow if I have to copy 99 URLs, one at a time.
  • Pushbullet. Handy. I can live without it, if doing so increases my security.
  • Stylish. Ow. I really like to restyle some sites, but Stylish has had some significant vulnerabilities.

Do Not Use the Default ruby and Do Not sudo gem install

Don’t use the default ruby on Mac OS X.

Don’t run “sudo gem install gemname_here”.

Sooner or later, you will need multiple versions of ruby.

Sooner or later, you will need multiple versions of a gem.

Use chruby and ruby-install to manage different versions of ruby. Create a ~/.ruby-version to specify your default ruby version.

Use bundler to put your gems into your project folder instead of the global OS X folder.

Notes on Using Checkvist


Operation Keystroke(s)
Add line below Enter
Add line above Alt-Enter
Indent Tab
Outdent Shift-Tab
Mark task complete Space

GTD Toolkits Revisited (2017)


I’ve been using Nirvana for Getting Things Done (GTD) with some success, but it is falling down for me in two areas:

  1. When my project count is high, moving items from Inbox to the project is cumbersome because you can’t practically drag-and-drop to a project that’s 35 rows off the page. (Right-click and move is a little more compact, but still cumbersome with 35+ projects.)
  2. I want sub-projects. (Not sub-tasks – subprojects.) I have large projects at work. Those large projects have multiple deliverables. I need to attach tasks to those deliverables. Yes, I could set up each deliverable as a GTD project, but when I ask the question, “What can I do today to move along the top-level project?” separate GTD projects fails for the sub-projects. Nirvana supports one level of sub-tasks, but you can only view those sub-tasks from the parent task. (I think of Nirvana as having implemented “task steps.”)
  3. My Someday list is huge, and I’d like an outline for better managing/reviewing the things I’m not going to be doing this week.
  4. If I’m going to add outlining, I’d like a good outliner, with support for folding/collapsing child nodes.


  • Inbox, for dumping uncategorized items
  • Segregation of tasks and projects
  • Manual tagging as starred/today
  • Work vs personal segregation
  • Supports adding new items at top of list. (When I add something, it is often urgent.)
  • Fast response. (Lag harshes my mellow. This sugests but does not require that there be client-side code which is static, and it works with just data over the wire.)
  • Mark item complete (and archive it forever)
  • Throw item away
  • Manually resequence tasks
  • Ability to view the tasks at the Project level for the project, even if the project contains sub-projects.
  • Some kind of export, in case my employer decides to block access to the web site and I have to leave it
    • Maybe: runs adequately on a kindle fire, so i could use that at at&t if blocked
  • Offline capture and display of pre-synched data on Android phone. (I’d really like it to work well offline, but this is a minimal subset. I do spend time outside of cell coverage.)
  • outline: checklists, project break-downs
  • Easy move-to-area/project
  • Filter for not-assigned-to-work-or-personal
  • Identify errands
  • Review open tasks by project
  • Review just stared/today-tagged items
  • Daily preview-review
  • Completed item stays with project until move-to-archive (or forever).
  • Works well on Mac, Windows, Android phone. Synched data. Desktop apps would be nice, if they add something a site-specific-browser doesn’t.
  • Outline folding.
  • Outline formatting.
  • Checklists (I prefer checkbox over strike-through. I prefer roll-up completion tracking. i.e. auto-complete the top-level if all children are marked complete.)
  • Value commensurate with cost.
  • Send to to-do via my command-line launcher (e.g. Alfred or Slickrun)
  • Things which cannot be done by an outliner with full tagging:
    • Recurring tasks.
    • Tasks which are hidden until a future date. (e.g. Semi-annual car maint.)
    • Deadline (e.g. auto-urgent it on a date)


After some preliminary review, here are the candidates:

  • Checkvist
  • Nirvana+Workflowy
  • Remember the Milk (RTM)+Workflowy

Checkvist and integrate an outliner and to-do. I expect that integration will be more convenient for moving items between the outliner and the to-do list. OTOH, part of my trouble is that Nirvana isn’t giving me enough separation between the two. From a skills perspective, I’d prefer one tool over two.


I selected the “Candidates” above via a cursory review of capabilities. i.e. They provided to-do items and outlines. After a little more investigation I came up with some strategic differences:

  • Nirvana supports GTD natively. It understands Inbox, tasks, and projects. It isn’t ever going to do sub-projects.
  • Checkvist and RTM are general-purpose task-list managers, which can be tailored to GTD via tags, but you’re really going to have to tag everything religiously, or else they fall apart for GTD.
  • wants to integrate itself into my Google ecosystem. I’m not certain I’m comfortable with that. GMail credentials is something I do not want compromised. When I tried to access it via my employer’s network, it spun forever at “Loading document.” I suspect that the browser is trying to access Google Drive, and the firewall is blocking that.

That leaves me with:

  • Native GTD support, but no sub-projects: Nirvana+Workflowy
  • DIY GTD, with sub-projects: Checkvist or RTM+Workflowy

RTM has all the DIY-ness of Checkvist, without bringing an outliner to the table. When compared with Nirvana, it would add subprojects but the DIY-ness adds substantial “friction” to my process. So that leaves me with:

  • Nirvana+Workflowy - incremental change; need a sub-project hack; friction of moving between to-do and outline.
  • Checkvist - revolutionary change; daily friction of non-native GTD; ease of moving between to-do and outline.


  • I could use Checkvist as my outline, and see whether I want to fully migrate to it.
  • I could use Checkvist or Workflowy solely for list management, and move all date-related stuff into my calendar. The gap here is that the only way to find what I want to work on today is to scan all the sub-list, but I already do that each day, to see what to star.
  • Todoist+Workflowy. Todoist isn’t really going to work for me. You can’t control recurring appointments with precision; you can’t indent an item from the keyboard in Chrome (because they re-use the Chrome next-tab keystroke). I don’t see anything like the Next or the Focus folders from Nirvana. It gives you sub-projects but it doesn’t do anything to make them useful.


  • Workflowy supports OPML; Checkvist supports OPML; Nirvana doesn’t. That’s a barrier to easy info sharing. To move between Workflowy and Nirvana is going to be item-by-item, open-item, copy-text, switch-tab, paste. I don’t see a good copy/paste path for Todoist either.
  • There is no “not” in Checkvist tag search. You can’t search for items with neither #project nor #task. Without KNOWING all items are either project or task, I’m going to worry about losing items. (Items which I enter but do not get found by my project search or my task search.)
    • I could keep projects and tasks in separate lists, or give up on sub-projects, and rely on tasks being at level 2 and projects at level 1.
    • I could trust my daily scan for star-this items to either identify un-tagged or to simply star items which I must deal with today.
    • Tag as #na items which are Next Actions and ready to act on. Everything else is just for review anyhow.
  • Workflowy does seem to have complete search with and/not/or. They say they are working on due dates.

Workflowy vs Checkvist

  • Workflowy puts more lines on the page. Denser spacing.

  • Workflowy has a Zen-like simple appearance.

  • Workflowy has a (beta) offline desktop app. Checkvist has no desktop app.

  • Both have OPML export.

  • Checkvist has auto-backup to Dropbox. Workflowy Pro has a “backup” but they say it is not in a user-readable form. (Dunno if it is really non-readable. It is “Pro” so I can’t just look.)

  • Neither has “Someday”. You have to create a separate Someday node in your outline.

  • Workflowy has nice drag-and-drop (plus keyboard) item move; Checkvist’s drag/drop is adequate but a little twitchy.

  • Checkvist has a few things in Zapier. Neither has anything useful in IFTTT.

  • The big differences (for my use:)

    • Checkvist has an API. Workflowy has limited unofficial API which requires PHP, unofficial Perl API, and unofficial Python API.
    • Worflowy has complete tag search - Checkvist can’t do “not” and “or”. This is a big deal.
    • Workflowy puts more lines on the page. Denser spacing.
    • Checkvist has right-click, move-to-another-list; Workflowy has only drag-and-drop or move by 1 row at a time (from keyboard). Moving long distances (e.g. from Someday to active) is going to be a pain in Workflowy; I’ll need to keep separate lists in Checkvist. (Maybe I could write something using the API.)
  • The big gaps for GTD use:

    • Neither has anything like Nirvana’s “Scheduled”, which hides/defers the task until the scheduled date.

    • Checkvist has “due dates” but not starred/focus items, so due dates show up only in a due search. Workflowy has no due dates but says they are working on them.

    • Upshot: If I’m going to use either for GTD, I’m going to need to invent some way long-distance moves and of calling attention to:

      • Deferred items which should be moved to active status, based on date.
      • Active items which should be starred, based on date.
      • For the date issues:
        • Manual resolution: Use tags like #undefer-yyyy-mm-dd and #escalate-yyyy-mm-dd. That will put the earliest up-status items at the top of the tag list. Review the tag list daily.
        • Code resolution: Use the API (official or unofficial) and run a daily report (or a daily up-status job).
      • For the long-distance move issue:
        • Checkvist: Maintain separate, modest-sized lists, and move in 2 steps. (Move to list; position in list.)
        • Workflowy: Tag source and dest; search by tag; drag-and-drop; remove tags.
        • A big thing I wanted to improve about Nirvana is the long-distance move problem, and neither Checkvist nor Workflowy fully solves it.

What Am I Going to Do?

Real choices:

  • Use Workflowy or Checkvist as the electronic equivalent of paper-based GTD lists.
  • Make sub-projects work in Nirvana and use Checkvist/Workflowy to hold my Someday-not-soon.


  • Checkvist/Workflowy - decision = Checkvist:
    • Although Workflowy is more elegant and more compact, Checkvist renders Markdown and Workflowy doesn’t. This is important when embedding epically long links. But Workflowy is so much more compact than Checkvist, that it make not matter that the links are longer. You can use custom CSS with Checkvist Pro ($40/year). I should be able to use Stylish for CSS. I’m going to assume I can make Checkvist fit better via Stylish or Checkvist Pro.
    • Manually move epic-Someday items between my GTD tool and my outline.
  • GTD Tool: Stick with Nirvana
    • Figure out how to better manage sub-projects of projects (“cases” at work) in Nirvana.
      • Don’t try to manage the whole project in Nirvana. Tasks should be atomic; projects should be the final outcome plus any tasks I need to get out of my head. The purpose of a project entry is simply to track the outcome which occurs down the road AFTER it’s next-action.
    • Keep the active list for projects small enough that I can drag a new task from bottom to top of list.

Clojure With the Cursive (IntelliJ IDEA) IDE

I’m developing an app in Clojure, for personal use. I will have a source-level debugger. The only games in town are Counterclockwise (Eclipse), Cursive (IntelliJ), Visual Studio Code with the ‘Clojure Code’ extension, and Emacs.

I’m capturing my learnings/observations from an attempt to make the Cursive IDE my primary Clojure development environment. If you use it for commercial purposes, you have to pay an annual fee. (Maybe the ‘Clojure Code’ extension for Visual Studio Code is ready for prime time if that becomes relevant). You must request a new non-commercial license every 6 months, after a 30-day eval period.

Note: “IdeaIC2017.01” will be updated for newer versions. The 1st and the 5th letters are both capital “i”.

  • Note: To uninstall
    • Drag the .app to the trash.
    • Let Hazel auto-delete the settings files.
    • Delete ~/Library/Application Support/IdeaIC2017.1
    • Delete ~/Library/Preferences/IdeaIC2017.1
    • Delete ~/Library/Caches/IdeaIC2017.1
    • Delete ~/Library/Logs/IdeaIC2017.1
    • Note: It looks like if you delete all of these things and then you re-install, you re-start the 30-day eval.
  • Installing:
    • Download IntelliJ Community Edition from I got version 2017.1.3.
    • Install it
    • Launch it
    • Do not import settings
    • Select the Darcula theme
    • Select the “I’ve never used IDEA” keymap scheme
    • Select “Create a launcher script” as /usr/local/bin/idea
    • On “Tune IDEA to your tasks”:
      • Disable all the build tools
      • Enable git and github VCS
      • Disable all test tools
      • Disable Swing
      • Other Tools: Enable only Terminal, YAML, and XSLT
      • Disable Plugin Development
    • Do not install Featured Plugins
    • On the Welcome screen, select Configure > Plugins > Browse Repositories > search for Cursive > Install > Restart
    • Configure > Plugins:
      • Disable Groovy, Java Bytecode Decompiler, Kotlin. Restart.
    • Open any existing Leiningen project or create a new, throw-away project.
      • When prompted, decline EAP (beta) updates.
      • When prompted, Setup SDK. /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk. It should populate a whole bunch of Classpath lines.
    • Install “Dark One” color theme:
      • Download from
      • Unzip
      • mkdir ~/Library/Preferences/IdeaIC2017.1/colors
      • Copy “One Dark.icls” to ~/Library/Preferences/IdeaIC2017.1/colors
      • Restart
      • PAY ATTENTION: IntelliJ IDEA > Editor > Colors & Fonts > Scheme = One Dark > When prompted, “For all IntelliJ IDEA”
  • Define keymaps. Preferences » Keymap
    • Load file in REPL (either one): Shift-Alt-Cmd-F. (To match Atom.)
    • Switch REPL ns to current file: Ctrl-N
  • Define an IDE command (and assign a keystroke) to execute a REPL command:
    • Tools→REPL→Add new REPL Command
    • Settings→Keymap
    • See “REPL Commands” at
  • TAB key auto-completes intellisense
  • Shift-F6 = rename symbol (under cursor and all references)
  • Alt-up-arrow: expand selection to next semantic unit.
  • Importing the “rebalance” project:
    • File » Open » Navigate to /Users/kevin/Sync/code/clojure/rebalance, and press the Open button.
    • edit core.clj from the project tree.
    • Run » Edit Configurations.
      • Press the “+” button.
      • Navigate to Clojure REPL/Local in the tree.
      • Run nREPL with Leiningen should be selected.
      • Press OK.
  • You should now have a REPL toolbar in the upper-right corner, with a Run and a Debug icon, among others. If you run/debug, you may see a message:
    • objc[47281]: Class JavaLaunchHelper is implemented in both …
    • Ignore it. It is inconsequential, difficult to suppress, and will go away with a future release of the JDK on Mac.
  • Troubleshooting:
    • File»Invalidate Caches seems to fix some problems.
    • Note: If the Cursive project gets hosed, go to the project directory and “rm .idea *.iml” and then re-import it.
    • Remember that src AND test have code, and a messed up namespace in one can affect ability to load the other.
    • Remember that when backing up a file within the project structure, you better rename .clj to .something-else, because it WILL compile .clj files.

Resource Monitor Window Is Empty

The Resource Monitor window is empty. You could say it is transparent. There is a title bar and a frame, but the main window body is empty/transparent.

It turns out that Resource Monitor does not work with the Windows Classic theme. It only works with an “Aero” theme enabled. Yuck!

Impacts Windows 7, and possibly others.

Quicken - Print Securities Within Accounts

I wanted to print a report showing all of my holdings, grouped by account. Quicken 2017 almost cannot do this.

  • Click on INVESTING on the blue bar above the main panel.
  • Choose Show=Value, GroupBy=Accounts, AsOf=(today)
  • Expand each account to show its holdings
  • Right-click on “Show” in the upper-left corner of the main panel
  • Choose “Print this screen”

It can be difficult to see all of the accounts, because the spacing is funny, but they really are all in there.

If you export to text, that also seems to work OK, except it seems to inject blank lines in the middle of some accounts. Also, if your fields aren’t wide enough on the screen, you’ll get “…” in your export. If that happens, go back to the page in Quicken and make the column wider (even if it looks wide enough to you).

Windows Printer Port Configuration Grayed (Disabled)

I needed to change the IP address on a Windows printer. In the search box I entered “Printers” and I selected “Devices and Printers” in Control Panel. Right-click on the printer, choose Printer Properties, and then the Ports tab. Everything is disabled. WTF?


  • Number 1 - you must be logged in as an Administrator. Logout and login if necessary.
  • Go back to the General tab for the printer. You’ll notice that the Configure button has an administrator icon. Click on that. THEN you can update the port.

This might work better:

  • Enter “cmd” in the search box.
  • Right-click on Command Prompt and choose “Run as administrator”.
  • Enter “control” into the command prompt.
  • Navigate to “View devices and printers” under “Hardware and Sound”.
  • Right-click, choose Printer Properties.
  • It was unlocked at this point, for me.