OS X Sidebar Missing Favorites

The sidebar in my OS X el Capitan is missing my Faviorites, but just in file Open/Save dialogs, not in Finder.

There are published work-arounds. Some of them result in having to recreate one’s Favorites. I don’t like that.

What worked for me on September 27, 2017:

  • Make a change to my Favorites on my Finder sidebar. (Add/delete/move an item.)
  • Reboot

I think you have to do both. It might be enough to change Favorites and then restart Finder.

Tiddlywiki or zim

I’ve been using TiddlyWiki Classic (TWC) as a personal knowledgebase (PKB). At first, it was real handy in that I just had a single file with the code and data and it ran in any browser.

Then that devolved to “runs in Firefox with the Tiddlyfox extension” due to browsers ‘improving’ their security. (Yeah, I’m aware of the stand-alone TiddlyWiki browser.) Soon, it will stop running in Firefox, when Firefox drops support for the old extension architecture.

I could keep an old copy of Firefox around, just to run the old extension. Under Windows, I’d use an old Firefox Portable. Under Mac, I’d go through a song-and-dance to use two Firefox.app. And I’d also have to ensure that the different editions of Firefox never stepped on each other’s profile. No thanks.

Why not use Evernote? It’s real handy, but I’m not willing to bet they will never be compromised. I store seriously confidential data like account numbers.

Why not use OneNote? I use Mac and Windows, and the Mac edition does not support local notebooks. It’s real handy, but I’m not willing to bet they will nev er be compromised. I store seriously confidential data like account numbers.

OK. So I’m going to run a local app (or at least an on-MY-server app). What else do I want?

  • Store each note in a separate file, searchable by my OS’s search routine, with content recovery via plain-text editor.

    • I’ve decided on the single-file-local-search paradigm in the past. It has many advantages (documented elsewhere).
  • Need to access content from my employer-provided (and controlled) notebook, and on my Macbook.
  • Need real wiki-style hyperlinking.
  • Some ability to include images. It is OK if the images must be stored separately, although integrated image management is better. Plain copy/paste is best, with zim’s “attachments” being a compromise.
  • I need some way to import 700+ tiddlers from my TWC.

Windows Portability:

  • I’m not supposed to install un-approved software on my employer’s notebook. Right now, node.js is on the approved list, but it could vanish or they could decide that “approved” means “on a server”. There are reports of how to run node.js without install, which could become my work-around, or I could move my work notebook to a personal (or Amazon AWS) web server. Or there’s zim portable. Advantage: tie

OS Portability:

  • node.js TW and zim both can be made to work on Windows, Mac, Linux. Advantage: tie

Moving the Wiki Portability:

  • With the Windows portable-zim, you can just copy the directory tree to a new Windows PC. You can’t move it to OS X that way.
  • Whether zim or TW5 on node.js, it isn’t just copy-the-wiki-file like it was with TWC.

Learning:

  • I’d like to better learn Python; I’d like to better learn JavaScript. Advantage: tie
  • It might be interesting to run node.js TW via Docker.

File format:

  • Both the node.js TW and zim store documents as separate files. Advantage: tie

Import:

  • node.js TW is going to import my TWC tiddlers. zim isn’t. I could import TWC into TW5, then write code to move the TW5 files to zim, along with re-formatting. Lots of work. Advantage: TW

Markdown:

  • Markdown is a non-standard. Every implementation is different. But it is at least a pseudo-standard. TW5 and zim both use unique ‘blended’ markup. But TW5 can be told to use Markdown. Advantage: TW

Putzing:

  • TW has a high risk of wasting time tinkering with it. zim less so. Advantage: zim

Export:

  • zim has more options to export to something else. TW exports to TW. That’s automated export. With either one, they store data as files, so I could write my own. Advantage: zim.
  • Both can export the whole wiki as a single HTML file for viewing elsewhere.

Math:

  • I dabble in statistics. I need to be able to enter mathematical formulae. There’s a MathJax plugin for TW. zim has Equation Editor. Advantage: tie

Table:

  • I insist on being able to create tables. Both offer some form of tables. Neither does them as slick as Word. Advantage: tie

Transclusion:

  • TW does; zim doesn’t. Advantage: tie

WYSIWYG:

  • zim has it built-in; TW has a plugin at http://bjtools.tiddlyspot.com. Advantage: zim

Recent Changes:

  • TW lists recently updated pages; zim doesn’t. Advantage: TW

Attachments:

  • zim has built-in attachments; TW5 yes, with some limits. Advantage: not sure.

As I was creating this document, I had a thought: “What about just using Jekyll?” I’m already using Jekyll (via GitHub Pages) for my blogs. I could focus my learning on a sigle platform if I kept a private Jekyll notebook.

  • Advantage: Learn one platform; learn it well.
  • Disadvantage: Higher friction to get content into it. You can certainly create pages, and you can search pages, but you can’t just add a wiki word to a page and then follow it to a new page.
  • Disadvantage: Have to get Ruby onto my employer’s laptop, where it is classed as “emerging” (meaning “not forbidden but you must justify its use.”)

Someone really could build a hybrid of jekyll and jekyll-admin and add wiki-like features to it, but right now, friction is the killer for using jekyll as a PKB.


Conclusion: zim and TW5 are roughly on par with each other. If I were starting a new PKB, I might choose otherwise, but TW5’s ability to import TWC makes moving to TW5 much easier than any other choice. I’m moving my PKB to TW5 on node.js.

Side note: I’m going to start using jekyll-admin for my blogs. It is simple, but handier than using vi.

Chrome, Firefox, or Safari

August 2017:

Issues with IE:

  • I don’t use Internet Explorer because I run on Mac and Windows, and there is no IE for Mac.

Issues with Safari:

  • Safari isn’t available on Windows. (Not a current version.)
  • I used to avoid Safari because it didn’t pin tabs. Safari now pins tabs. It sometimes does not load favicons on these tabs which Chrome does.
  • 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.
  • Fluid.app 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.

Safari Advantages:

Issues with Firefox:

  • I used to use Chrome instead of Firefox because the Chrome edition of AdBlock was better, but that’s no longer the case.

Firefox Advantages:

  • TiddlyFox. (Although this extension will die when Firefox upates to its new extension model.)

Issues with Chrome:

  • Chrome’s extension ecosystem is a break-in waiting to happen. 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.
  • Important: Firefox and Safari let you disable extension auto-update. Chrome does not.
  • Chrome consumes way too much Mac battery.
  • Consumes excess battery on my Macbook

Chrome Advantages:

  • 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 https://www.usatoday.com/story/news/politics/onpolitics/2017/07/11/majority-republicans-say-colleges-have-negative-impact-country-poll-says/468869001/.
  • LastPass export doesn’t work in Safari or Firefox. Right now, Chrome is the only way I can export/back-up my critical Lastpass data.
  • Right now Chrome is the dominant browser. This means most sites will test with Chrome.

Extension List:

  • Adblock: I used to really value AdBlock (the getadblock.com 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

Operations

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)

Motivation

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.

Requirements

  • 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.
  • HTTPS
  • 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)

Candidates

After some preliminary review, here are the candidates:

  • Checkvist
  • moo.do
  • Nirvana+Workflowy
  • Remember the Milk (RTM)+Workflowy

Checkvist and moo.do 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.

Pre-filter

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.
  • moo.do 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.

Alternatives:

  • 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.

Random

  • 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.

Actions:

  • 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 http://www.jetbrains.com/idea/download/index.html. 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 https://github.com/yurtaev/idea-one-dark-theme
      • Unzip idea-one-dark-theme-master.zip
      • 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 https://cursive-ide.com/userguide/repl.html
  • 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.