Now with Hugo

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.

Common X11 Compose Key Combinations

X11 has a useful feature called the compose key.  After pressing the compose key, you can type a sequence of keys on the keyboard to get various Unicode characters.  For example, Compose o c generates a copyright symbol (©).  This allows for typing a lot of extended characters with a US keyboard map (without the need to have dead keys or other non-US layout features).

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:

grep "compose:" /usr/share/X11/xkb/rules/base.lst

Anyway, on to the list.

§ Quote Marks

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.

Combination Result Unicode Name

§ Accented Characters

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.

§ Prime Symbols

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 &prime;
Double Prime U+2033 &Prime;
Triple Prime U+2034 &tprime;
Quadruple Prime U+2057 &qprime;

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.

§ Fractions

Many fractions can be created by typing two digits in sequence.  The first digit will be the numerator and the second will be the denominator.

All denominators from two to ten can be used with a numerator of one:

  • 1 2 → ½
  • 1 3 → ⅓
  • 1 4 → ¼
  • 1 5 → ⅕
  • 1 6 → ⅙
  • 1 7 → ⅐
  • 1 8 → ⅛
  • 1 9 → ⅑
  • 1 1 0 → ⅒

For non-unit numerators, all multiples of ⅙ and ⅛ are available, in their simplified forms (which means all multiples of ⅓ and ¼ are also available).

Multiples of ⅙:

  • 1 6 → ⅙
  • 1 3 → ⅓
  • 1 2 → ½
  • 2 3 → ⅔
  • 5 6 → ⅚

Multiples of ⅛:

  • 1 8 → ⅛
  • 1 4 → ¼
  • 3 8 → ⅜
  • 1 2 → ½
  • 5 8 → ⅝
  • 3 4 → ¾
  • 7 8 → ⅞

And, weirdly, 0 3 composes to ↉.

§ Subscripts and Superscripts

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.

For example:

  • ^ 2 → ²
  • _ 8 → ₈
  • _ ) → ₎
  • ^ _ i → ⁱ

§ Math Symbols

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 &minus; 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..

Combination Result Unicode Name
: -
- :
- ,
, -
+ -
- +
/ =
= /

§ Circled Numbers

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.

§ Currency

Key combinations for currency symbols often cover every ordering and capitalization combination.  They include:

Combination Result Unicode Name
C =
= C
c =
= c
E =
= E
e =
= e
C |
| C
c |
| c
L -
- L
l -
- l
Y =
= Y
y =
= y
Y -
- Y
y -
- y
O x
o X
o x
X o
x O
x o

§ Whitespace

Two space characters turn into a nonbreaking space.  (Or you can use &nbsp; 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.

§ Other Characters

Combination Result Unicode Name Note
- - - U+2014 EM DASH
- - . U+2013 EN DASH
o o
0 *
* 0
° U+00B0 DEGREE SIGN I find o o the easiest to type.
. ^
^ .
. -
· U+00B7 MIDDLE DOT 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).
. = U+2022 BULLET
s o
o s
§ U+00A7 SECTION SIGN Either order; upper- or lowercase
t m
T m
t M
U+2122 TRADE MARK SIGN Any mix of capitalization
s m
S m
s M
U+2120 SERVICE MARK Any mix of capitalization
o c
O c
o C
© U+00A9 COPYRIGHT SIGN 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
® 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. 

Éowyn Challenge – Walking to Mordor and Back

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.

§ Walking to Mordor and Back

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.

§ My Plan

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!

Where to Get (DRM-free) Ebooks

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.

§ Context

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.

§ The List

When I want to buy a particular book, my first stop is  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.
  • Baen’s Ebook Store primarily sells science fiction/fantasy books.

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

§ Other Recommendations

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.

§ Non-EPUB Books

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.

§ Dishonorable Mention

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

RampingIOS V3 Manual

RampingIOS V3 UI diagram

RampingIOS V3 UI diagram

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.

§ Basic Usage

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.

# Configuration Menus

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.

# Configuring the Basic Modes

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:

  1. Brightness floor (default 1/150)
  2. 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.

For stepped mode, there are three menu options:

  1. Brightness floor (default 20/150)
  2. Brightness ceiling (default 120/150)
  3. Number of steps (default 7)

§ Other Modes

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.

# BattCheck/TempCheck Modes

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.

# Tactical Mode

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.

# Lockout Mode

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

# Aux LED Configuration

From off, 7 clicks will cycle to the next aux LED mode.  The four modes are, in order:  low, high, blink (on high), and off.  The default mode is low.

# Beacon Mode

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.

1 click will exit beacon mode.

# Thermal Configuration Mode

From off, 10 clicks will enter thermal configuration mode.

The menu items here are:

  1. Current temperature (every click is one degree Celsius)
  2. 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.

The default temperature ceiling is 45°C.