4 Buckets

At some point I realized that there was no one place all my notes could live. Indeed, one of the things that regularly killed any “one system (or app) to rule them all” that I tried was it got bogged down with too many notes. This made me realize that all I want from a GUI-notetaking system, which is currently Craft, is an interface that lets me track the somewhat-larger-than-it-should-be collection of notes that reflects my attempts to tackle too much both cognitively and practically. (This is an admission of ineffectiveness and lack of discipline.)

So, the best way to manage a GUI-notetaking system is to limit it to current projects, works-in-progress, lists-wanting-to-be-something-more, and the like. Once something is done, it needs to go some place else. I know this runs counter to the archival mindset that revels in the every-text-at-your-fingertips of NValt-like apps. These are great: they are not just for me.

In a moment of clarity, or what seemed like one after a week and a half of a head cold, I wrote down a list of text buckets I currently maintain and which seem to be working as such:

  • public notes live here on jl.net
  • public documents live in a portfolio on GitHub
  • working notes live in Craft
  • private notes live in a directory on my computer synced via iCloud

This means all notes are available on the two devices I own, my computer and my phone, and also via web interfaces on devices I do not own. (Craft’s web interface has come a long way, and it is perfectly serviceable to my mind.)

It has taken me a long time to arrive at this moment, and I still have a long way to go in herding documents created in other applications into plain text and then into their proper silo, most of which are conference papers. (And then there’s all the PDF versions of offprints of hard-to-find essays that I would like to be available to anyone interested in them.)


Part of journey is getting notes out of other applications. If like me you spent some time with Evernote, then perhaps you have an enex file or two lying around and you are wondering what to do about it. As luck would have it, Doug Diego has created a Python script which will transform your enex file into a directory of markdown files: dougdiego/ever2simple: Migrate from evernote to simplenote with markdown formatting.

Open Source Fonts

It’s been 13 years since I posted about open source, and often free, fonts. I previously titled such a post “free fonts,” but that is not terribly precise. Also, I don’t want to confuse further anyone reading this post: there are a lot of “free fonts” out there, some of which are legitimately free and some of which may not be so free. Creating a good type face is no trivial matter, and releasing one for free is a labor of love. Gentium remains an amazing accomplishment, and there are a number of type face creators who release things for free, some of whom you can discover through Google Fonts. To these resources, I would like to add the Velvetyne Type Foundry.


My podcast listening changes with the seasons, with moods, with variations in interest. Currently I am listening to podcasts that either help me understand the Army in particular or national security issues in general and I am also maintaining an interest in podcasts that focus on science and scholarship.


In addition to the URLs below, all of these podcasts should be discoverable in your podcast app. I use downcast and I just type in the name of a podcast, search, and click to add it.

  • Modern War Institute is produced by USMA (West Point). They get great interviews from senior people who are usually very articulate — sometimes they get too far into a technical dimension for me, but everyone will have their own limits.
  • The Convergence is produced by Army Futures Command’s Mad Scientist Lab. It’s a good resource of non-traditional experts: they have interviewed a number of science fiction writers in the past few years, for example.
  • Leader Up is the in-house podcast of AMSC. Useful to get quickly caught up on the leadership concepts that are often referenced in conversations.

General Science

  • The Joy of x is produced by Quanta magazine, a publication I often enjoy more than Scientific American. It tends to be more mathy, and the host of the podcast is himself a mathematician.
  • Parsing Science is a podcast that bills itself as “the unpublished stories behind the world’s most compelling science, as told by the researchers themselves.” I’ve just started listening, so the jury is still out.

Python List Indices

I needed to delete this code from a notebook, because it wasn’t doing anything, but the code was useful enough to keep:

shorts = [ texts.index(text) for text in texts if len(text) < 500 ]


There seems no end to the number of posts and videos, as well as books and other materials, that seek to explain data science at various levels and to various audiences. I try to read them as I come upon them in order, first, to discover what new things I can learn and, second, to determine if they might be useful as a basis for explaining things to others.

Data science is such a multitude of things: applied mathematics (statistics and probability, yes, but also linear algebra and calculus). I did not get a good foundation in any of these in my formal education, so I am having to make up for that. Mathematics and programming are best learned by practicing. I don’t get the chance to do that as much as I would like — it’s hard to find time to do the essential re-working of a professional career that tracked along one path for such a long time.

It’s hard to know where to start. The list below is a collection of things that I am currently working through in an effort to learn as I go. I keep it here on the blog to make it easier to access when I am traveling. (If I have access to a web browser, I am set to learn.) As of Spring 2022 this list is very much under construction: use at your own risk.

Flattening a List of Lists in Python

Sometimes you have a list of lists and you just need a list. In my case, I have a list of texts within which is a list of sentences. But all I really need is the list of sentences. To peel off the additional layer of listiness, use the following list comprehension.

flattenedList = [[t for t in l if None not in t] for l in test]

And if that doesn’t work, try flattening:

import itertools
flat_list = list(itertools.chain(*regular_list))

UPDATE: some better code using itertools:

from itertools import chain

flattened = chain.from_iterable(iterable)

Syncing Files on macOS

When you don’t have access to Carbon Copy Cloner, which is apparently uses rsync, there is rsync itself: rsync -avrP source dest with -E thrown in when files are “particularly Mac-ish” according to Ars Technica community member Jonathon.