Polyester sleeved Kevlar makes a good shoelace.

A diameter of 1.65 mm puts it in the same neighborhood as Type I Paracord, but with a little over twice the tensile strength. It fits through more eyelets than the typical Type III Paracord, making it appropriate for a wider range of footwear. It holds knots well, will pop through zip-ties in a jiffy, and the inner Kevlar can be broken down into three strands. I buy it from TwinLine.


This post was published on . It was tagged with micro, gear.

Jailing the Browser

The web browser is one of our computers’ primary means of interaction with the unwashed mashes. Combined with the unfortunately large attack surface of modern browsers, this makes a sandbox which does not depend on the browser itself an attractive idea.

Firejail is a simple, lightweight sandbox that uses linux namespaces to prevent programs from accessing things they do not need.

Firejail ships with default profiles for Firefox and Chromium. These profiles drop capabilities, filter syscalls, and prevent access to common directories like /sbin, ~/.gnupg and ~/.ssh. This is a good start, but I see little reason to give the browser access to much of anything in my home directory.

The --private flag instructs Firejail to mount a new user home directory in a temporary filesystem. The directory is empty and all changes are discarded when the sandbox is closed — think of it as a more effective private browsing or incognito mode that also resets your browser to factory defaults.

$ firejail --private firefox

A more useful option for normal browsing is to specify a directory that Firejail should use as the user home. This allows you to keep a consistent browser profile and downloads directory, but still prevents the browser from accessing anything else in the normal user home.

$ mkdir ~/firefox
$ mv ~/.mozilla ~/firefox/
$ firejail --private=firefox firefox

This is the method I default to for my browsing. I’ve created my own Firejail profile for Firefox at ~/.config/firejail/firefix.profile which implements this.

include /etc/firejail/disable-mgmt.inc
caps.drop all

# Use ~/firefox as user home
private firefox

The only inconvenience I’ve discovered with this is that linking my Vimperator configuration files into the directory from my dotfiles repository creates a dangling link from the perspective of anything running within the jail. Since it cannot access my real home directory, it cannot see the link target in the ~/.dotfiles directory. I have to copy the configuration files into ~/firefox and then manually keep them in sync. I modify these files infrequently enough that for me this is worth the trade-off.

The temporary filesystem provided by --private is still useful when accessing websites that are especially sensitive (such as a financial institution) or especially shady. In my normal browser profiles, I have a number of extensions installed that block ads, disable scripts, etc. If these extensions completely break a website, and I don’t want to take the time to figure out which of the dozens of things I’m blocking are required for the website to function, I’ll just spin up a sandboxed browser with the --private flag, comfortable in the knowledge that whatever dirty scripts the site is running are limited in their ability to harm me.

I perform something like 90% of my web browsing in Firefox, but use Chromium for various tasks throughout the day. Both run in Firejail sandboxes, helping to keep me safe when surfing the information superhighway. Other programs, like torrent applications and PDF readers, also make good candidates for running within Firejail.

This post was published on . It was tagged with linux, privacy.

Antisocial Activity Tracking

A GPS track provides useful a useful log of physical activities. Beyond simply recording a route, the series of coordinate and time mappings allow statistics like distance, speed, elevation, and time to be calculated. I recently decided that I wanted to start recording this information, but I was not interested in any of the plethora of social, cloud-based services that are hip these days. A simple GPX track gives me all the information I care about, and I don’t have a strong desire to share them with a third party provider or a social network.

Recording Tracks

The discovery of GPSLogger is what made me excited to start this project. A simple but powerful Android application, GPSLogger will log to a number of different formats and, when a track is complete, automatically distribute it. This can be done by uploading the file to a storage provider, emailing it, or posting it to a custom URL. It always logs in metric units but optionally displays in Imperial.

What makes GPSLogger really stand out are its performance features. It allows very fine-grained control over GPS use, which allows tracks to be recorded for extended periods of times (such as days) with a negligible impact on battery usage.

For activities like running, shorter hikes and bicycle rides I tend to err on the side of accuracy. I set GPSLogger to log a coordinate every 10 seconds, with a minimum distance of 5 meters between points and a minimum accuracy of 10 meters. It will try to get a fix for 120 seconds before timing out, and attempt to meet the accuracy requirement for 60 seconds before giving up.

For a longer day-hike, the time between points could be increased to something in the neighborhood of 60 seconds. For a multi-day backpacking trip, a setting of 10 minutes or more would still provide great enough accuracy to make for a useful record of the route. I’ve found that being able to control these settings really opens up a lot of tracking possibilities that I would otherwise not consider for fear of battery drain.


Storing Tracks

After a track has been recorded, I transfer it to my computer and store it with git-annex.

Everything in my home directory that is not a temporary file is stored either in git or git-annex. By keeping my tracks in an annex rather than directly in git, I can take advantage of git-annex’s powerful metadata support. GPSLogger automatically names tracks with a time stamp, but the annex for my tracks is also configured to automatically set the year and month when adding files.

$ cd ~/tracks
$ git config annex.genmetadata true

After moving a track into the annex, I’ll tag it with a custom activity field, with values like run, hike, or bike.

$ git annex metadata --set activity=bike 20150725110839.gpx

I also find it useful to tag tracks with a gross location value so that I can get an idea of where they were recorded without loading them on a map. Counties tend to work well for this.

$ git annex metadata --set county=sanfrancisco 20150725110839.gpx

Of course, a track may span multiple counties. This is easily handled by git-annex.

$ git annex metadata --set county+=marin 20150725110839.gpx

One could also use fields to store location values such as National Park, National Forest or Wilderness Area.

Metadata Views

The reason for storing metadata is the ability to use metadata driven views. This allows me to alter the directory structure of the annex based on the metadata. For instance, I can tell git-annex to show me all tracks grouped by year followed by activity.

$ git annex view "year=*" "activity=*"
$ tree -d
└── 2015
    ├── bike
    ├── hike
    └── run

Or, I could ask to see all the runs I went on this July.

$ git annex view year=2015 month=07 activity=run

I’ve found this to be a super powerful tool. It gives me the simplicity and flexibility of storing the tracks as plain-text on the filesystem, with some of the querying possibilities of a database. Its usefulness is only limited by the metadata stored.

Viewing Tracks

For simple statistics, I’ll use the gpxinfo command provided by gpxpy. This gives me the basics of time, distance and speed, which is generally all I care about for something like a weekly run.

$ gpxinfo 20150725110839.gpx
File: 20150725110839.gpx
    Length 2D: 6.081km
    Length 3D: 6.123km
    Moving time: 00:35:05
    Stopped time: n/a
    Max speed: 3.54m/s = 12.74km/h
    Total uphill: 96.50m
    Total downhill: 130.50m
    Started: 2015-07-25 18:08:45
    Ended: 2015-07-25 18:43:50
    Points: 188
    Avg distance between points: 32.35m

    Track #0, Segment #0
        Length 2D: 6.081km
        Length 3D: 6.123km
        Moving time: 00:35:05
        Stopped time: n/a
        Max speed: 3.54m/s = 12.74km/h
        Total uphill: 96.50m
        Total downhill: 130.50m
        Started: 2015-07-25 18:08:45
        Ended: 2015-07-25 18:43:50
        Points: 188
        Avg distance between points: 32.35m

For a more detailed inspection of the tracks, I opt for Viking. This allows me to load the tracks and view the route on a OpenStreetMap map (or any number of other map layers, such as USGS quads or Bing aerial photography). It includes all the detailed statistics you could care about extracting from a GPX track, including pretty charts of elevation, distance, time and speed.

If I want to view the track on my phone before I’ve transferred it to my computer, I’ll load it in either BackCountry Navigator or OsmAnd, depending on what kind of map layers I am interested in seeing. For simply viewing the statistics of a track on the phone, I go with GPS Visualizer (by the same author as GPSLogger).

Electronic Support Package

I carry a selection of tools to support the electronic devices that I utilize throughout the day. This electronic support package is part of my level 2 EDC, which means it is carried in my bag. Specifically, the items are stored in a GPP1 pouch attached to my Litespeed. The pouch is a little larger than it needs to be for what I carry, and if size and weight constraints were more of a concern, the package could be further paired down without too great a loss in capability by removing some of the less frequently used items, but I find this selection works pretty well for my daily life.


The electronic devices that this package supports are primarily my phone, helmet light, and the flashlight on my belt1. While these items serve multiple purposes, they tend to fall into the category of critical safety devices. As such, it is important to have the accessories needed to support their regular use.

I do carry a laptop between home and work, and to a lesser extent some of the items in this package support that, but for the most part the things needed to support the laptop (power adapter, peripherals, etc) live at both home and work. They’re not items that I carry.

Electronic Support Package

Battery Pack

The outer pocket of the pouch holds an AmazonBasics Portable Power Bank. This USB battery pack offers 5,600 mAh. I very rarely use this, but when I do need it, I’m extremely glad to have it. The ability to power devices away from other infrastructure is a valuable capability.

The profile of this particular battery makes it easy to carry and to use — it can easily slide into a small pocket on a pair of pants or a jacket when in use with a phone. In the pouch, it takes up no noticeable space.


Immediately inside the main compartment of the pouch are a pair of Westone Adventure Series Beta earphones. I do not frequently listen to music when away from home or work (and I find the sound from these Westones to be less than desirable for music anyway), but I do value a hands-free interface to my phone. I use earphones for talking on the phone and (more frequently) navigation. One earphone placed in an ear combined with an OpenStreetMap application and offline routing makes for an improved bike trip in strange lands.

These particular earphones have an IPX-3 rating, which is about the weakest water resistant rating you can get, but makes me feel a bit better about sweating all over them and exposing them to rain.


While critical in the backcountry, a headlamp is less useful in normal daily life. I carry a flashlight on my belt. Between that and my helmet light, this headlmap rarely gets used. I keep it the package mostly just because I have space and don’t mind the additional weight.

I went with the Princeton Tech Remix Pro. It’s compact, lightweight, and offers both red and white LEDs. That set of criteria is critical to me, and fairly easy to satisfy. The reason I chose the Remix Pro over other offerings is that it uses a single CR123. I have mixed feelings about CR123 batteries, but the flashlight I carry uses one. This headlamp allows me to standardize on replaceable batteries for my every day carry.


I carry 2 spare CR123 batteries in a Deep Carry Tube from OscarDelta.


I backed the ChargeTech Wall and Car Charger on IndieGoGo a while back. The car charger is nothing special — I’ve had other car chargers the same size — but the wall charger is unusually small. I’ve carried a wall charger in my pack ever since getting my first smart phone, but this is the first one that didn’t suck to carry. It’s no bigger than it needs to be.

Chew Can

The Westone earphones came in a small hard-sided container that screws shut, providing some measure of protection from weather and crushing. I don’t care enough about the earphones to store them in the container, but it happens to be the right size to fit most of the smaller items in this package that I do care about.

It also looks like a tactical chew can, which amuses me2.

Electronic Support Package

Micro USB Cable

These days enough devices have micro USB ports that carrying a cable is pretty much required3. I carry a 6 ft MOS Spring Micro USB Cable, which is probably not worth the money, but has some cool features like a woven jacket and spring strain relief near the connector.

USB Condom

The USB Condom is the least used device in the whole package. Between the micro USB cable, battery pack and wall and car chargers, I can power my phone without much worry about data leakage. For those rare times when I do need to draw juice from an unknown USB port, the condom offers peace of mind. As with the headlamp, I have the space and don’t mind the weight, so I leave it in.

Card Reader

The Transcend USB 3.0 Card Reader is another device that I don’t use too frequently. Most of the time when I need to read a card, it is an SD card from a camera. My laptop has a built-in SD card reader. But occasionally it is useful to be able to read microSD cards, and occasionally it is useful to be able to do so on other machines. I choose to carry this rather than a microSD-SD adapter so that I may read any card on any machine.

USB Sticks

I carry 2 USB sticks. One is an old 8GB Verbatim stick that runs Tails.

The second is a 64GB Corsair Flash Voyager GO, which has a normal USB 3.0 male connector one end and micro USB on the other. I only recently learned that these type of sticks were a thing, but it certainly makes sense. This gives me an additional method to transfer data between my phone and laptop (in addition to a wireless network, the micro USB cable, and the card reader).

I have not performed any quantitative testing of the Corsair, but it seems to be slow compared to other USB 3.0 sticks. Still, it is large in capacity, small in size, well-built, and I bought it for a good price.


  1. Although not part of my EDC, I will throw a Kindle in my pack if I’m planning to be gone for more than a day. Fortunately, this creates no new support requirements in addition to those already set by the phone.
  2. I also have a set of S&S Precision Tactical Chew Cans, which are much nicer than the Westone container, but too small for this application.
  3. Nobody likes a cable moocher.

This post was published on . It was tagged with gear, edc.