A little while ago, I finally got around to revamping my website
generation. I’d been using Blosxom for nearly two decades, but I’d
also been meaning to move to something a bit newer for a while. So now
I’m using Hugo.
Most of my stuff ported over without too much difficulty. I’d been using
Markdown with Blosxom, so it translated pretty cleanly to Hugo, with the
just the addition of some front matter to each file. Some of the Blosxom
plugins I used had their own de facto front matter, so it was just a
matter of changing it into YAML.
Overall, Hugo is very nice. Its server mode and draft posts are
particularly useful as I write things. There were many times I wanted to
preview a post in Blosxom and didn’t have a good way to do so. Hugo
solves that problem. Draft posts let me work on things in the same
repository as my published work without making things live until they’re
ready.
Because Hugo facilitates working with the website as a whole much more
readily, I also finally developed a proper deployment mechanism. It’s
just a Makefile with a few lines to generate intermediate files, run
hugo to generate the HTML, and then scp the files to my webhost. But
having that automation makes it far easier to update things. I could
have done something similar with Blosxom, but Hugo has better affordances
for it.
While I was at it, I also reworked my website theme. I’ve had a lot more
design practice since I put together the old theme. While I might not say
I’m good at this yet, I think I’ve at least gotten better. You can
compare, say, the old version and new version
of my ebook post to see some of the difference.
I doubt anyone outside of me really care about the particulars of this
website design. But in case you do, the theme is available on
GitLab.
There are, however, a lot of key combinations. See the X11R7.7
documentation for its full list. So this page focuses on the
patterns in the key combinations and restricts itself to the ones I use
more often.
Note: I use the XKB configuration option compose:prsc on my systems to
map my Print Screen key to the compose key. How I do that varies. On
some systems, I have Option "XkbOptions" "compose:prsc" in the
InputClass section for my keyboard in an xorg.conf file. On other
systems, where it isn’t as easy to modify the system config files, I run
setxkbmap -option compose:prsc automatically when I log in.
You can see what other keys are available to map as a compose key with:
The less-than and greater-than keys (or left and right angle brackets, if
you prefer) can be combined with single and double quotes to make curly
left and right quotes. They can be typed in either order; both < ' and
' < result in a left single quote mark.
A comma can be used instead of an angle bracket to produce the low version
of the quote symbol, for languages that use it to open quotes.
<
>
,
'
‘
’
‚
"
“
”
„
Guillemets are the result of doubling angle brackets. Use a leading
period for single guillemets.
Most letters can be combined with another character to add an accent. The
letter and accent character can be typed in either order; both ' a and
a ' will give “á”. Typing the letter last is preferred, since there are
some multi-accent combinations that only make sense if you type all of the
accents first.
The standard accent characters are:
Character
Accent Type
Example
Note
' (single quote)
acute accent
' a → á
` (backtick)
grave accent
` a → à
^ (caret)
circumflex
^ a → â
> (greater than sign) also works: > a → â
~ (tilde)
tilde
~ a → ã
" (double quote)
diaeresis; umlaut
" a → ä
* (asterisk)
ring
* a → å
Lowercase o also works, but only if it precedes the letter to be modified: o a → å
, (comma)
cedilla
, c → ç
Also works as an ogonek: , a → ą
/ (forward slash)
slash
/ o → ø
- (dash)
macron
- a → ā
_ (underscore) also works: _ a → ā
. (period)
dot
. e → ė
Also removes the dot from a lowercase i: . i → ı
In similar ways, the < (less than symbol) combines as a caron
(e.g. < e → ě); - (dash) combines as a stroke (e.g. - d → đ); and
= (equals sign) combines as a double acute accent (e.g. = o → ő). I
don’t really use those, though.
There are some patterns for characters with multiple additions (e.g. * ' A → Ǻ, LATIN CAPITAL LETTER A WITH RING ABOVE AND
ACUTE), but (1) I don’t use them often enough to need to remember
the key combinations, and (2) many of them rely on keyboard layouts that
can directly generate precomposed characters with one of the two
modifiers.
I use these with some regularity, but they’re unfortunately not available
as compose character combinations. In some media, the HTML codes suffice.
In others, I can sometimes type the codepoint in hex.
Symbol
Character
Codepoint
HTML
(Single) Prime
′
U+2032
′
Double Prime
″
U+2033
″
Triple Prime
‴
U+2034
‴
Quadruple Prime
⁗
U+2057
⁗
In many programs, I can press Ctrl-Shift-U, followed by the Unicode
codepoint, followed by the space or enter key. So I can get a prime
symbol with Ctrl-Shift-U 2 0 3 2 Enter. That works for my terminal
program and Firefox, at least.
In Emacs, I have to use C-x 8 Ret 2 0 3 2 Ret (et al.).
Regardless, I have to actually remember the codepoint, which is less
convenient than the mnemonics afforded by compose key combinations.
All of the digits, as well as the characters plus sign (+), equals sign
(=), left parenthesis, and right parenthesis can be superscripted or
subscripted by prefixing them with a caret or underscore, respectively.
The letters i and n can be superscripted with the sequences ^ _ i and
^ _ n, respectively.
A number of math symbols are available. Unfortunately, the Unicode
character U+2212 MINUS SIGN (−) is not
available, even though it’s a better choice than the plain dash in
mathematical contexts. The same techniques described in “Prime
Symbols” above can be used to insert a minus sign by its
codepoint. You can also use − in HTML.
Most math symbol combinations can be typed in either order, but the
inclusive inequalities (≤ and ≥) need the equals sign to come after the
less-than or greater-than character..
Any one- or two digit number can be put in a circle by surrounding it with
parentheses. The same works for single upper- and lowercase letters.
For example:
( 1 ) → ①
( 4 2 ) → ㊷
( S ) → Ⓢ
Note: For the copyright and registered copyright symbols, use o c and
o r (or their variants; see “Other Characters”
below). The simple circled letters are different codepoints.
Two space characters turn into a nonbreaking space. (Or you can use
in HTML.)
A space and a period turn into U+2008 PUNCTUATION
SPACE. The Unicode specification says this is a “space equal to
narrow punctuation of a font”, or about the width of a period.
Using space characters other than the normal space is, of course, risky,
since many programs won’t indicate that the alternate characters are any
different from the normal ones.
You can think of this as either a raised dot (combining a period with a caret) or a smaller bullet (using a dash with a period instead of the bullet combination's equals sign with a period).
Any mix of capitalization. C O and C o also
work, but combinations starting with lowercase c don't
(they give different characters). So I prefer to always start with the
o.
o r O R O r o R
®
U+00AE
REGISTERED SIGN
Any mix of capitalization. R O also works, but none of the
other capitalization mixes make characters with the "r" first. So, just
as with the copyright symbol, I prefer to always start with the
o.
A couple of months ago I got a FitBit Luxe. I’ve long used the pedometer
on my phone for step tracking, but it’s not always accurate and I don’t
always have it on me. (Plus, I really wanted longitudinal heart rate
data, which isn’t feasible with something like a phone.)
To “celebrate” having an always-on health tracker, I’m going to start on a
project I came across a while back but for which I hadn’t put together the
pieces of participation until now: taking the One Ring to Mordor with
Frodo.
This is most directly influenced by Nerd Fitness’s “Walking to Mordor and
Back” Google spreadsheet. It’s a fitness motivation
tool that, in turn is based on the Éowyn Challenge.
The Éowyn Challenge takes all the traveling various characters do in The
Lord of the Rings and breaks it into segments, as shown on their “Walk
to Rivendell and Beyond” page. The goal of the Éowyn
Challenge is to pick a segment and track your personal progress in
traveling the same distance as the characters. Each segment has a
breakdown by day and mile of where the characters went and what they did.
Nerd Fitness has taken all of Frodo’s segments from the Éowyn Challenge
(Hobbiton to Mount Doom back to Hobbiton and then to the Grey Havens) and
put them into a spreadsheet for ease of tracking. They omit all the
mile-by-mile details in favor of looking at the overall distance
traveled—a bit over 3,600 miles.
Nerd Fitness’s spreadsheet is designed around having a group of
participants and adding their miles to get a total. (Which is not how
group travel works, but we’ll ignore that for now.) I’m just going to
track myself and see how long it takes me to hit all the landmarks myself.
I expect it’ll be significantly longer than it took Frodo.
I have an IFTTT rule to add each day’s fitness
summary to a Google spreadsheet. So I added a sheet to my copy of the
“Walking to Mordor and Back” document; that sheet just imports all the
lines from my FitBit spreadsheet and calculated a running mileage total.
I’ve modified the main sheet of the “Walking to Mordor and Back” to
automatically pull data from that secondary sheet. It’ll update the mile
total and arrival dates all on its own.
With all of that automated, I just have to wear the FitBit and live as
usual. As long as I remember to check on the spreadsheet periodically,
I’ll be able to see how I’m doing.
I’m starting the mile accumulation today, January 1. Let’s see how long
it takes me to finish!
This post grew out of a comment I made on Reddit in response to someone
who was frustrated with the Kindle walled garden and wanted more
generally-usable books.
I like to read. I have no idea how many books I’ve read in my lifetime,
but I own hundreds and hundreds of physical books, at least half of which
I’ve read; my digital library has around nine hundred books, most of which
I have yet to read; and I’ve read many more books besides the ones I own.
(When I was a teenager I’d walk out of the public library with a literal
armful of books, read them, then return two weeks later to do the same
thing all over again.) These days I prefer to read ebooks. It’s easier
to manage my ebook library and I can carry a lot more books around with me
in ebook form as compared to physical form. (No more armfuls of physical
books.) It really helps that I have a tablet
that doubles as an excellent ebook reader.
But I also prefer to actually own the things I’ve nominally purchased.
Many ebooks, including everything in Amazon’s Kindle ecosystem, come with
digital rights management, or DRM. DRM gives a book’s publisher control
over how you use your copies of their books. It’s theoretically intended
to impede piracy, but (a) it’s not too hard to bypass if you’re actually
intent on pirating the material, and (b) it effectively means that you
don’t fully own things you’ve purchased unless you go out of your way to
bypass it. It has enabled things like Amazon removing a copy of
Nineteen Eighty-Four
from a high school student’s Kindle library.
As a matter of principle, I will not pay for DRM-encumbered digital
media. If I buy something, I want to feel I actually own it, which
means I don’t have to rely on someone else mediating my use of the
media. So here’s where I get my DRM-free ebooks.
When I want to buy a particular book, my first stop is
eBooks.com. They have a good selection
of books, and they clearly indicate whether a given book has DRM or not.
Many book publishers or imprints have their own book stores, and some of
those offer DRM-free copies of their books. Some of the ones I know of are:
InformIT for several of Pearson’s
imprints, including Addison-Wesley. InformIT ebooks are DRM-free, but
are digitally watermarked to connect them to your account.
No Starch Press has books on programming,
computers, and other “geek entertainment”. They’ve got a very
good line of books for getting kids into programming.
I don’t have a problem with digital watermarks like the ones InformIT
uses. They don’t prevent any personal use of the watermarked
ebook; all they do is allow the publisher to take a copy shared online and
track it back to the person who originally bought it. For the most
part, digital watermarking doesn’t restrict use of the book any more than
copyright law restricts use of a physical book.
In addition to their ebook store linked above, Baen also has the Baen
Free Library, which
has a periodically-rotating selection of their books completely for free
(and also without DRM).
Tor Books, another science fiction/fantasy publisher, doesn’t have its own
storefront (it sells through ebooks.com, among others, and appears to
generally do DRM-free books), but it does have an Ebook of the Month
Club. To join the club, you simply sign up
for their newsletter. Every month you’ll get a link to download a free,
DRM-free book from their catalog. [The Ebook of the Month Club may
have been discontinued. The preceding link now redirects to the main
website, and it’s been a while since one of their newsletters mentioned a
free book.]
A good resource for out-of-copyright books is Standard
Ebooks. It’s a volunteer-run organization
dedicated to turning existing books into high-quality ebooks. Because of
the nature of their operation, they mostly focus on books that are no
longer restricted by copyrights. Their books are all well-typeset, with a
uniform appearance and consistent, well-curated metadata. (If you’re so
inclined, you can also contribute your own time and
talents to their efforts.)
Standard Ebooks largely stands as as an alternative to Project
Gutenberg. Project Gutenberg also has
ebook versions of many out-of-copyright books, but Project Gutenberg
focuses more on quantity than quality. (Also, they’ve been around a lot
longer; Project Gutenberg will celebrate its 50th anniversary later this
year.) In general, if a book is available from both Standard Ebooks and
Project Gutenberg, get it from Standard Ebooks. But if Standard Ebooks
doesn’t have it and Project Gutenberg does, Project Gutenberg’s copy will
be serviceable, even if it’s not necessarily formatted prettily and has
occasional typos from the automated optical character recognition.
I also follow Humble Bundle. They
periodically offer ebook bundles which are typically DRM-free and
available in EPUB, PDF, and MOBI formats. (Their quality has been
gradually declining over time, unfortunately. For example, some recent
book bundles have not had all of the formats for every book.) Not all of
Humble’s partners have good books (looking at you, Packt), and I’m not
always interested in the style, genre, or even just the particular
selection of books in a bundle. But I have gotten some good books out of
the bundles over the years, so I keep following them.
I have, over time, received recommendations from other people for
additional sources of DRM-free ebooks. Anything in this section is from
those recommendations. I haven’t used these sources extensively, if at
all, so take these with however many grains of salt you need.
The FreeEBOOKS subreddit is more
focused on ebooks that don’t cost anything, as opposed to ebooks without
DRM, and they don’t restrict themselves by ereader compatibility.
Nevertheless, many of the free books they link to are available as
DRM-free EPUBs.
Verso Books is an independent publisher
primarily focused on politically left-oriented content. Books are
DRM-free but watermarked.
Smashwords is an ebook store that focuses
on self-published authors. Their official position on DRM is that they
think it’s a bad idea but the decision of whether to use it is up to
books’ authors and publishers, not them. But, as of 2023, none of their
books have DRM and they say if they add DRM-encumbered books at some
point, such books would be clearly labeled as such.
Leanpub is a combination storefront and publisher.
They don’t use DRM on any of the books they publish and sell.
My preference for ebooks is for the EPUB format. It’s an open standard,
has broad compatibility, and is adaptable to a variety of readers and
environments. But there are some sources for books that use other
formats, most often PDF. PDF isn’t great as an ebook format because it
presupposes a page size and that page size is quite often either A4 or US
letter paper. Most ereaders have smaller screens than that, which means
the text is either small and annoying to read or you have to zoom in and
pan around to read everything. But sometimes a PDF is the best option for
a particular book.
The Internet Archive Text Archive has
scans of millions of books. Everything they’ve scanned is available in a
web browser where you can page through the scanned images. If the book is
still covered by copyright, you have to create an account and check the
book out in order to read it. Checkouts last for an hour and they can be
renewed. This whole system is pretty convenient in my experience,
especially for doing research, when you don’t necessarily need a book for
longer than it takes to look up and read a section, take any needed notes,
and check the section’s cross-references.
Some Internet Archive books are also available in EPUB, PDF, and other
formats. In those cases, you can download the file and do whatever you
like with them.
An alternate entry point to the Internet Archive Text Archive is the
Internet Archive Open Library. It facilitates
finding books in all sorts of libraries, but the Internet Archive Text
Archive is one of the sources checked. The site tends to be better for
finding either physical or browser-readable books, rather than
ereader-compatible books, though.
Wikibooks uses a wiki as a platform for
collaborative authoring of books. Most if not all of the book on
Wikibooks are nonfiction reference material. If you read the books on
their website, you’ll always get the most up-to-date text, but many books
can be downloaded in PDF format. A handful are also available in EPUB.
O’Reilly, a publisher of high-quality computer-related and technical
books, used to sell DRM-free copies of their books. If you’ve previously
bought any of those, you can still access them through
members.oreilly.com, but you can’t buy new
copies, as far as I can tell. O’Reilly seems to be moving instead to
subscription-based access to their ebooks, while still selling the
physical versions. They still have O’Reilly Open
Books, which links to all of the books
they’ve published under open licenses of various sorts, but very few of
them are available in EPUBs. Most of the open book links go to webpage
versions of the books, which aren’t as easy to get into an ebook reader
as a premade EPUB is.
The Emisar D4S flashlights use a firmware named RampingIOS V3. (The
Emisar D4, D1, and D1S all use RampingIOS V2.) There’s
not really a manual; the only thing we get is the diagram on the right.
It’s reasonably comprehensive, but there’s a fair amount of detail it
merely summarizes, so I thought a textual manual would be nice.
The Emisar D4S only works when the head and tailcap are tightened fully.
You can physically lock it out—prevent it from turning on
accidentally—by simply loosening the tailcap a small amount. A quarter
turn will do it.
Emisar lights are known for their ramping interfaces. Rather than have a
small number of distinct brightness levels, they can vary their brightness
anywhere between their lowest and highest levels, like a light on a
dimmer. The D4S is in ramping mode by default, but it also has a stepped
mode that can be configured to be closer to how non-ramping lights work.
Each mode—ramping and stepped—can have differently-configured brightness
floors and ceilings.
The driver for the D4S has two different chipsets. At low brightness
levels, a fairly-efficient but low-power chipset (called a 7135) is
used. These lowest brightness levels are called the “regulated levels”.
Each regulated level will always be the same brightness regardless of how
much charge the battery has. Above a particular brightness level, the
light switches over to a less-efficient but high-power chipset (called a
FET). These levels are called “direct-drive”. The brightness of the
direct-drive levels is directly related to the battery’s charge level; the
more charged the battery, the brighter the levels. The light is at its
most efficient, in terms of power used for every lumen generated, at the
brightest regulated level. When the light is first powered by tightening
the tailcap, it will default to this level.
At higher brightness levels, the light’s LEDs generate a lot of heat. If
the light exceeds its configured maximum temperature, it will begin
dimming itself automatically until the temperature drops below the allowed
maximum.
The D4S has a set of cyan-colored auxiliary LEDs that can be on when the
main LEDs are off. You can configure the behavior of the aux LEDs.
The default mode for the light is ramping mode. Triple-pressing the
button (3 clicks) while the light is on will toggle between ramping
and stepped mode.
While the light is off, press and release the button (1 click) to turn
it on. It will turn on at the last-used brightness level. (This is
called “mode memory”.) Immediately after loosening and tightening the
tailcap (or after changing the battery), the memorized level will be the
light’s max regulated level.
When the light is on, 1 click will turn it off. The current brightness
level will be memorized for future use. There’s a fraction of a second
delay between pressing the button and the light actually turning off.
That’s because of the way the light processes input; it’s waiting to make
sure you’re only going to press the button once (since multiple presses
will trigger other actions).
When the light is on, holding the button down will brighten the light. In
ramping mode, the brightness will increase gradually ("ramping up"). In
stepped mode, the light will jump through increasing brightness levels.
If you press, release, and then hold the button, it will begin dimming.
In ramping mode, the brightness will decrease gradually ("ramping
down"). In stepped mode, the light will jump through decreasing
brightness levels. While the light is changing, if you release the button
and immediately hold it again, the direction (dimming or brightening) will
switch.
In ramping mode, while the light is ramping, it’ll briefly blink off and
on again at two different brightness levels: the maximum regulated level
and the brightness ceiling.
While the light is off, double-pressing the button (2 clicks) will
immediately jump to the brightness ceiling.
While the light is on, 2 clicks will jump to the maximum brightness
level, regardless of the configured brightness ceiling. Another two
clicks will go back to the previous brightness level.
While the light is off, if you hold the button the light will turn on at
its lowest level. If you continue holding the button, the light will
begin brightening from there.
The light has several different configuration modes. Each of those modes
works more or less the same way. The mode will have a series of menu
items that it will go through. For each menu item, the light will first
blink a number of times corresponding to the item number (first, second,
etc.) After that, the light will begin fluttering on and off fairly
quickly. While the light is fluttering, you can click the button a number
of times; the light will count the number of button presses and use that
number as its new configuration for that menu item. After a short period
of time, the fluttering will stop and the light will move on to the next
menu item. After the light has gone through all of the menu items, it
will return to whatever mode it was in before entering the configuration
mode.
If you don’t press the button during a particular menu item’s fluttering,
that item will remain unchanged.
While the light is on, 4 clicks will enter ramping or stepped
configuration mode, depending on which mode the light was in before the 4
clicks.
For ramping mode, there are two menu options:
Brightness floor (default 1/150)
Brightness ceiling (default 150/150)
During the floor configuration, press the button equal to the number of
ramping levels (out of 150) at which the floor should be. To set the
lowest possible floor, click the button once.
The ceiling is configured similarly, but you press the button equal to the
number of steps away from maximum brightness. To set the highest possible
ceiling (at max brightness), click the button once.
The other modes largely involve multiple clicks from off. Most of them
are not generally needed for everyday use, but they supplement the light’s
basic operations.
From off, 3 clicks will enter “BattCheck” mode, which blinks out the
current battery voltage. First it blinks the number of volts, then it
pauses, then it blinks out the tenths of volts. Thus, if the battery were
at 3.5 volts, the light would blink three times, pause, then five times.
For zeroes, it gives a very short blink.
A fully-charged lithium-ion battery is 4.2 volts. The light considers 2.8
volts to be an empty battery and won’t turn on if the battery is at or
below 2.8 volts.
The voltage sequence will continue blinking until you turn off the light
with a single click.
While the light is in BattCheck mode, 2 clicks will enter TempCheck
mode. Instead of blinking out the battery voltage, the light will start
blinking out its current temperature in degrees Celsius, first the tens
digit then the units digit. Like BattCheck mode, the light will continue
blinking out the temperature until you turn it off with a single click.
While the light is in TempCheck mode, 4 clicks will enter thermal
configuration mode. See the thermal configuration mode documentation
below for how that works.
From off, 4 clicks will enter “tactical” or “momentary” mode. The
light will flash once to show that it’s entered the mode. The auxiliary
LEDs will turn off (if they were on). In tactical mode, the light will
turn on at its memorized brightness for as long as the button is being
held down. It will turn off as soon as the button is released.
There’s no button press combination that will exit tactical mode. To exit
it, you will have to partially unscrew and retighten the tailcap.
From off, 6 clicks will enter lockout mode. The light will flash
twice to show that it’s entered the mode. There’s a separate aux LED mode
for lockout mode, so you can tell whether the light is in lockout or not.
In lockout mode, pressing the button will turn on the light at its lowest
brightness ("moonlight mode") for as long as the button is held down.
Another 6 clicks will exit lockout mode. The light will flash twice to
show that it’s left the mode.
While in lockout mode, 3 clicks will cycle through the various
settings for the aux LEDs in lockout mode. The four modes are, in order:
low, high, blink (on high), and off. The default mode is blink.
Remember that loosening the tailcap a quarter turn will also lock out the
light. Using the 6 clicks is called “electronic lockout”, while turning
the tailcap is “physical lockout”.
From off, 8 clicks will enter beacon mode. In beacon mode, the light
will blink on and off every few seconds.
By default, the light will blink every two seconds. To change the timing,
use 4 clicks while in beacon mode. The light will enter a one-item
menu. During the flickering for input, press the button a number of times
equal to the number of seconds between blinks.
From off, 10 clicks will enter thermal configuration mode.
The menu items here are:
Current temperature (every click is one degree Celsius)
Temperature ceiling (every click is one degree above 30°C)
The “current temperature” item can be used to adjust the calibration of
the light’s temperature sensor. To use it, make sure the light has been
off long enough that all of its components have cooled (or warmed) to the
ambient temperature. Check the ambient temperature using a thermometer
you trust. Go to thermal configuration mode, and enter the current
temperature by clicking the button a number of times equal to the
temperature in degrees Celsius. (If it’s 22°C, click the button 22
times.)
You can check the default calibration by entering TempCheck mode from a
room-temperature light. The D4Ss are supposed to go through a temperature
calibration at the factory, so hopefully most of them won’t need manual
thermal calibration.
The temperature ceiling is simply the highest temperature the light should
be allowed to reach. Once it hits its temperature ceiling, it will
progressively dim itself until the temperature stabilizes below the
ceiling. Note that the number of clicks in that menu option is added to
30 to reach the actual ceiling. (Thus, you can’t set a ceiling below
31°C.) The maximum allowed ceiling is 70°C.