trip logs / gnuvola


Trip Log 2017-07-04 h16

It's been several weeks since the last entry so this one covers quite a bit of ground.  First, a recap of my goings-on writing-wise, then some reflection on the continuing job search, and finally some public gratitude. 

Writing text for humans is fun, and writing programs for computers is fantastically fun.  The latter is, despite my recent(ish) turn towards the former, overwhelmingly addictive, presenting challenges and rewards that I succumb to with very little reservation.  My weakness is evident: two packages released (EDB and ttn-do), a bunch of devops for the trip log portion of the site: 

$ git show-branch o p
! [o] New entry: 2017-06-09 h22
 * [p] Release: mkfeed 1.1
--
 * [p] Release: mkfeed 1.1
 * [p^] mkfeed: Add support for ‘--verbose’.
 * [p~2] mkfeed: Make ‘--help’ output more regular.
 * [p~3] Comment munging; nfc.
 * [p~4] [vu] New command (and binding): vu-merge-tags (C-c C-m)
 * [p~5] Release: gtl2html 2.1
 * [p~6] gtl2html: Make automatic ‘~div’ addition more precise.
 * [p~7] [gtl2html int] Remove debugging ‘pk’.
 * [p~8] [gtl2html int] Use ‘filename-components’ more.
 * [p~9] [gtl2html int] Use ‘string-tokenize’ et al more.
 * [p~10] gtl2html: Write tags in lexical order.
 * [p~11] Release: tags-boss 1.2
 * [p~12] tags-boss: On write, ensure database file is writable.
 * [p~13] Release: gtl2html 2.0
 * [p~14] gtl2html: Add auto-anchor support in pre, outline, paras.
 * [p~15] gtl2html: Add auto-anchor support in cartouche.
 * [p~16] [gtl2html int] Make ‘pretty’ always return a form ‘(list ...)’.
 * [p~17] [gtl2html int] Reorg some procs.
 * [p~18] [gtl2html int] Incorporate ‘no-angle’ into unique caller.
 * [p~19] gtl2html: Drop double-quote markup.
 * [p~20] [gtl2html int] Use ‘w/o-<&>’ more.
 * [p~21] Release: tags-boss 1.1
 * [p~22] tags-boss: Don't depend on program location.
 * [p~23] Release: mkfeed 1.0
 * [p~24] [int] mkfeed: Do file-by-file I/O.
 * [p~25] mkfeed: Fix bug: Don't write to stdout if ‘--output FILENAME’.
 * [p~26] [gtl2html int] Use ‘(gnuvola atom)’ procs.
 * [p~27] [gtl2html int] Add abstraction: stem.
+* [o] New entry: 2017-06-09 h22

as well as for the site itself: 

$ git show-branch o p
! [o] New module: (gnuvola atom)
 * [p] sw-set-news: Also jam ‘mon’ and ‘utim’ fields.
--
 * [p] sw-set-news: Also jam ‘mon’ and ‘utim’ fields.
 * [p^] [sw] Drop sub: ls-sw-homepage
 * [p~2] ls-sw: Support synthetic field ‘homepage’.
 * [p~3] ls-sw: Show ‘utim’ as if in UTC.
 * [p~4] remote-stamp: Accept PROJ-REF arg; handle exactly one PROJECT.
 * [p~5] [sw db] Change ‘utim’ type to include time zone.
 * [p~6] [int] Use ‘(gnuvola ct-sw) F-T-gmtime’ more.
 * [p~7] [sw] New (gnuvola ct-sw) proc: F-T-gmtime
 * [p~8] remote-stamp: Don't output useless ‘ref’ on "cur:" line.
 * [p~9] [doc] remote-stamp: Describe what's going on in ‘--help’ output.
 * [p~10] [int] remote-stamp: Drop pretention of "remote" handling, in all but name.
 * [p~11] Use ‘DIE’ instead of ‘error’ for programs.
 * [p~12] Move ‘file-util’ to ‘(gnuvola ct-sw)’; zonk ‘(gnuvola file-utim)’.
 * [p~13] [int] Use ‘(gnuvola file-utim) file-utim’.
 * [p~14] New module: (gnuvola file-utim)
 * [p~15] [sw] Drop ‘utim’ stamping from ‘standard-release’.
 * [p~16] [int] Decruft: Don't import unused stuff.
 * [p~17] ls-sw: Omit ‘news’ if no fields specified.
 * [p~18] [sw] No longer bother w/ software/.{stamp,standard-release.scm}.
 * [p~19] [db] Formalize schema alterations protocol.
 * [p~20] New directory: defs-vader
 * [p~21] Conditionalize ‘(define-module (guile-user) ...)’ to gnuvola-do invocation.
 * [p~22] [int] Use ‘gnuvola-dot-d’ more.
 * [p~23] [int] Use ‘command-ok’ more.
 * [p~24] [int] Prefer ‘fln’ to ‘fso’.
 * [p~25] [sw] set-mon: Handle PROJ-REF on command-line.
 * [p~26] [sw int] Decruft: Don't import unused stuff.
 * [p~27] [sw] New (gnuvola release-utilities) proc: project-news
 * [p~28] [sw] Add more interventions for ‘project-worker’.
 * [p~29] 0.org munging; nfc
 * [p~30] [db] New ‘(gnuvola comtab)’ proc: temp-view-worker
 * [p~31] sw-set-news: Handle PROJ-REF; handle "-" to clear.
 * [p~32] [sw] New (gnuvola ct-sw) proc: project-worker
 * [p~33] New (gnuvola common) proc: DIE
 * [p~34] gnuvola-do: Don't force successful exit.
 * [p~35] [gnuvola] Replace ‘uri-metadata!’ w/ ‘uri-type!’.
 * [p~36] [gnuvola] Add proc ‘(gnuvola atom) directory-name?’.
 * [p~37] Comment munging; nfc.
 * [p~38] [sw] New sub: sw-set-news
 * [p~39] [sw db] Add column ‘news’ to table ‘sw_maint’.
 * [p~40] Comment munging; nfc.
 * [p~41] [maint] Move info files into 0.org.
 * [p~42] [gnuvola] Fix dangling reference.
 * [p~43] [gnuvola] Add abstraction: format-atom-dateTime
 * [p~44] [gnuvola incompat] Drop arg ENC to ‘format-atom-feed’; hardcode "utf-8".
 * [p~45] Comment munging; nfc.
+* [o] New module: (gnuvola atom)

and various and sundry hacking (on both code and documentation) that I won't detail here, but might show up on GitLab some day when I get around to that particular pleasantry. 

“But ttn, what's in it for me and your other (presumably) human audience members?” 

Indeed, aside from the released packages, most of these changes benefit the site maintainer (me) more than anyone else.  However, there are three changes in particular that you might enjoy: (a) new auto-anchor support in the trip logs; (b) addition of URI ‘type’ information in various contexts; (c) full NEWS in the Atom feed. 

With (a), I can now write URIs directly, by enclosing them in ‘<’ and ‘>’, and they are rendered as proper links.  Your browser might already have such a feature (e.g., for w3m, you can achieve the same effect by pressing the ‘:’ key), but this makes it available for everyone.  (Please permit me this small marketing tic: “frictionless”. :-P)  For example: <http://www.gnuvola.org> or: 

┌───────────────────────────────────────────────┐
│                                               │
│ <http://www.fsf.org><https://www.gnu.org/> │
│                                               │
└───────────────────────────────────────────────┘

Pretty straightforward, although to be honest, the support extends only to ‘http’ and ‘https’ schemes.  Good enough for now. 

The benefit of (b) is more subtle.  You can look for it on the ttn-do homepage in the ‘AUTHORS’ link, for instance.  If you look at the source of the page, you can see that the link (i.e., “anchor element” in XHTML-speak) looks something like: 

<a href="AUTHORS" type="text/plain" charset="UTF-8">AUTHORS</a>

(Careful readers will note I've omitted the ‘<tt>’ in this excerpt.)  The ‘type’ and ‘charset’ attributes tell your browser that the referenced file is plain text encoded in UTF-8, so that on following the link, your browser need not try to infer that meta-information (possibly incorrectly, requiring you to manually perform a “re-read with different encoding” operation).  The upshot is that everyone has a better chance of seeing Martin Grabmüller's name displayed correctly (hi, Martin!) than before. 

The benefit of (c) can be seen in the GNUVOLA Atom feed (link text: “gnuvola”), which sports fully marked-up NEWS for the recent software release entries (EDB and ttn-do).  This is a time-saving convenience for most people, who I would guess are not willing to download, install and play with the releases, but might be interested in their progress, nonetheless. 

That last sentence, with “most people” and “guess”, has an uncertain feel to it, and thus is in a good position to segue out of the first section of this trip log entry (which still deserves treatment of some rather egregious PEBKAC points — perhaps later), and into the next, where I reflect on the continuing job search.  What is the state of things?  Why is it so? 

First off, “two weeks' worth” of trip log entries have come and gone, so the writing portfolio (for humans) part is in place (and grows still).  The writing portfolio for computers part, a GitLab account showing lots of activity, is not.  More precisely, the account exists but I have not yet accessed it, neither to participate in this discussion (despite saying I would), nor to push personal repos.  Lastly, I have not sent a CV to anyone.  In summary, a solid core (internal activity) but no cladding (externally-visibile activity). 

This is procrastination.  I think this procrastination is due to fear. 

Lots to of potential fear sources these days for me, from the general direction of humanity (and my part in it) to the specific tribulations of family life (and my part in them).  I've always been a somewhat abstract- (and absent-) minded person, and a pervading orthogonal (applicable at all scales) fear revolves around my ability to perceive reality.  In plain terms, am I crazy?  Or rather, to move beyond the asceptic binary into the continuous muck, how crazy am I?  (Is degree of craziness a proper fear, a meta-fear, an attribute of fear, or an element in which fear is an attribute, or ... mu?) 

Oops, that's a lot of filosofical mumbo jumbo.  (That's another weakness of mine.)  Back on track, then...  With respect to getting a job, I fear rejection, primarily.  It's no secret that experienced writers (of both code and documentation) have a difficult time finding employment these days.  Strangely enough, a close second to rejection is acceptance.  What if the actual reason for acceptance is not “cool” (somehow) — how to handle imposter syndrome?  What are the chances of my discovering the actual reason, anyway?  Am I capable of fording the political currents that separate management from non-management? 

All these are fears rooted in uncertainty (a topic I've previously broached).  On the other hand, I also fear some unavoidable (certain to obtain) aspects that a job would portend.  Two, in particular, vie for primacy: drudgery and tribalism.  Both are not great fears, more like gnawing misgivings, since they are aspects that I've already experienced (sometimes with great gusto) and discovered coping mechanisms for.  The misgiving lies in re-applying those mechanisms, which requires a lot of energy and a certain (yuk yuk) relaxation of personal ethics. 

So, the result of these fears is inaction, or rather, frenetic activity on only one part of the task (not coincidentally, the most fun part), and inaction on the rest.  Where to find the courage to overcome these fears and proceed?  Well, one classic font of courage is the act of sharing them, such as by writing them down.  Done!  Another is to look to others who display courage and take inspiration from them. 

This brings us to the last section of this trip log entry, where I thank my wife and child for their display of courage in dealing with a difficult matter.  A while back, pop psych guru and all-around cool being Yoda outlined this “standard progression”:

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                                        ┃
┃   Fear is the path to the dark side.   ┃
┃          Fear leads to anger.          ┃
┃          Anger leads to hate.          ┃
┃        Hate leads to suffering.        ┃
┃                                        ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Obviously, there are other paths to suffering, but I'll build on top of this, here, rather than dig into it.  On second thought, I won't trouble you with elaborate expository; to make a long story short, there's a lot of suffering at home these days, and I am a large part of it.  This is exacerbated by my huge programmer-trained ego and uncompromising (aka pig-headed) attitude on principles that might serve well a solitary warrior (ready to die) but have proven unsuitable in a family context.  (I am a poor husband and father.)  I am grateful to them for not only putting up with me (so far and for so long), but for showing the courage to overcome their fear of talking to me and telling me about how I make them suffer. 

“Well ttn, time to grow a pair and kill the rat-bastard that's keeping you down?”

Heh, killing is not the nice hack I seek... 


Copyright (C) 2017 Thien-Thi Nguyen