My worknotes have been largely unmaintained for years.
This situation will likely persist for years to come.

TL;DR: Despite the recent mobile optimization and reorganization, this shit is as unmaintained as ever.

  1. My worknotes are now mobile-friendly!

    Incidentally, I decided to reorganize the entire site on a single page, mostly to lower my future maintenance burden. Doing this reorganization with my current (non-)infrastructure was an excruciatingly manual and painful process, but I think it was worth it. I actually liked the old structure better, but given that every page on the site was tiny, the additional weight was not worth it.

    I did not actually update the content, I'm not currently using my worknotes so this shit will likely remain as unmaintained as ever for the foreseeable future.

    For now the "blocks" and "blocked by" links (and possibly a few others) are broken, because I'm tired of this insanity-inducing manual-fixing bullshit.

I should elaborate much more than that on my approach...

This section was last updated on .

It turns out that I'm unable to work effectively when trying to manage my 50+ pending projects and their relative states of completion and priorities entirely in my head. Please remember that this section is intended primarily to help me, so it's entirely possible that some things are explained badly or not at all. You're welcome to spy on it, and hopefully it can help you and/or entertain you in some way!

My worknotes are still being populated at this time and many projects have not even received an initial review, with which the current state of the project and what needs to be done is determined.

This section was last updated on .

Worknotes about my Common Lisp libraries.

This section was last updated on .

Libraries for which a ready-to-use version is available.

This page was last updated on .

Library name Status Priority
map-bind Features pending, partly blocked Low
positional-lambda Feature pending, blocked. None
enhanced-eval-when Maintenance None
enhanced-multiple-value-bind Maintenance None
macro-level Maintenance None
cartesian-product-switch Features pending, partly blocked. Low
place-modifiers Features pending?, partly blocked. Low
anaphoric-variants Maintenance, blocked Very low
multiple-value-variants Maintenance, blocked Low
parse-number-range Features pending. Low
bubble-operator-upwards Maintenance, feature pending? Low
incognito-keywords Maintenance, feature pending. Very low
symbol-namespaces Features pending. Low
clhs Features pending Very low
place-utils EOL pending? None

This section was last updated on .

State Ready to use
Status Features pending, partly blocked
PSI Low

  • Adopt HTML documentation.
  • Add a formal description of map-bind.
  • Add more usage examples.
  • Showcase (already-existing) actual usage of map-bind in actual code of some of my other libraries.
  • Explain that map-bind thoroughly solves one of the long-standing problems of mapping operators (variable/value distance) and thus that the suitability of mapping versus other methods should be reconsidered.
  • Show macro call/expansion correspondance on mouseover.

  • Make map-bind expand to a call to a new exported macro that can accept a symbol other than lambda to use in the final expansion.
  • Add a way to define new map-bind-like operators (using something else than lambda internally) easily.
    (Blocked by definitions-systems.)

  • Slime: Add support for converting calls to mapping operators to map-bind calls in one operation.
  • Slime: Add support for showing a preview of the map-bind expansion in the modeline while writing the bindings.
  • Slime: Add support for completion (C-c TAB) of at least the standard mapping operators while writing the prologue.

This section was last updated on .

State ready-to-use
Status Feature pending, blocked.
PSI None

  • Adopt HTML documentation.
  • Add a formal description of plambda.
  • Add more usage examples.
  • Showcase (already-existing) actual usage of plambda in actual code of some of my other libraries.
  • Explain that plambda addresses one of the long-standing annoyances of mapping operators (explicit naming of variables which is redundant because of surrounding context) and thus that the suitability of mapping versus other methods should be reconsidered.
  • Show macro call/expansion correspondance on mouseover.

  • Add a way to define new plambda-like operators (using something else than lambda internally) easily.
    (Blocked by definitions-systems.)

This section was last updated on .

State Ready to use
Status Maintenance
PSI None

  • Adopt HTML documentation.
  • Add simple descriptions of each exported operator.
  • Add a few more usage examples.
  • Add a quick overview of what's the purpose of using eval-when with all situations specified, for the benefit of newbies.

  • Add an eval-always ASDF system alias.

This section was last updated on .

State Ready to use
Status Maintenance
PSI None

  • Adopt HTML documentation.
  • Add a (somewhat redundant) simple description of the exported operator and its alias.
  • Showcase (already-existing) actual usage of enhanced-mvb:multiple-value-bind in actual code of some of my other libraries.

  • Add package nickname e-mvb.

This section was last updated on .

State Ready to use
Status Maintenance
PSI None

  • Adopt HTML documentation.
  • Add a (somewhat redundant) simple description of macro-level.
  • Add an example of not having to use a gensym in a macro thanks to macro-level.
  • Add at least one example of using macro-level directly instead of writing out something by hand or using the macrolet equivalent.
  • Further explain the Slime support that could eventually be added and how it would be useful, including an example.

This section was last updated on .

State Ready to use
Status Features pending, partly blocked.
PSI Low

  • Adopt HTML documentation.
  • Add a formal description of cartesian-product-switch.
  • For the existing usage example, show the somewhat convoluted code one would have to write by hand otherwise. In fact there are 2 straightforward alternatives and point out choosing and converting between those 2 is much harder than in the case of the cartesian-product-switch equivalents.
  • Add more cartesian-product-switch usage examples.
  • Add a formal description of all built-in testclause kinds.
  • Explain how cartesian-product-switch makes it easier to ensure you've considered all possible case combinations.
  • Add examples of defining custom testclause kinds.

  • Refactor the definition and info APIs as a definitions-system.
    (Blocked by definitions-systems.)

  • Slime: Add support for completion (C-c TAB) of testclause kinds.
  • Slime: Add support such that putting point on or mousing over a testclause or testclause case highlights all corresponding clauses.
  • Slime: Add support such that putting point on or mousing over a clause highlights all corresponding testclause cases.
  • Slime: Add support so that it's easy to rearrange the order of testclauses or their cases while making corresponding changes in the "body".

This section was last updated on .

State Ready to use
Status Features pending?, partly blocked.
PSI Low

  • Adopt HTML documentation.
  • Add a big table (on a separate page) describing the hundreds of built-in variants.
  • Explain how to select variants other than the primary.
  • Explain guidelines for how to determine the order of spots for the variants.
  • Markup code comments in the usual manner.
  • Maybe add a call for consolidation? Remove reversef et al. from libraries and use modify instead?

  • Finish support for :each-of?
  • Refactor the definition and info APIs as a definitions-system.
    (Blocked by definitions-systems.)

  • Slime: Add support for completion in modify.
  • Slime: Add support for showing the spot(s) in the modeline and code for modify.

This section was last updated on .

State Ready to use
Status Maintenance, blocked
PSI Very low

  • Adopt HTML documentation.
  • Add a formal description of anaphoric.
  • Add formal descriptions of all built-in variants.
  • Add more usage examples.
  • Showcase (already-existing) actual usage of modify in actual code of some of my other libraries. (Actually I'm not 100% sure I started using this yet, but I remember using or wishing to use anaphoric macros in several places in my old code awaiting cleanup.)
  • Add examples of defining custom anaphoric-variants.
  • Show macro call/expansion correspondance on mouseover.
  • Maybe add a call for consolidation? Remove aif et al. from libraries and use modify instead? (Though anaphoric may not appeal to those fixated on brevity at all costs.)

  • Refactor the definition and info APIs as a definitions-system.
    (Blocked by definitions-systems.)
  • Extract variants stuff into new library "operator-variants"?

  • Slime: Add support for hinting of options (generic if form is not already supplied, else specific to the operator of form).
  • Slime: Add support for completion of the operator of form.
  • Slime: Maybe add support for directly changing forms such as
    (awhen foo (bar it))
    into
    (anaphoric it (when foo (bar it)))
  • Slime: Maybe also add support for directly changing forms such as
    (let ((foo bar)) (when foo quux))
    into
    (anaphoric foo (when bar quux))
    but it seems complicated beyond trivial cases such as this one.

This section was last updated on .

State Ready to use
Status Maintenance, blocked
PSI Low

  • Adopt HTML documentation.
  • Add a formal description of multiple-value.
  • Formalize descriptions of all built-in variants.
  • Add more usage examples.
  • Showcase (already-existing) actual usage of multiple-value (mostly the multiple-value mapping operators) in actual code of some of my other libraries.
  • Add examples of defining custom anaphoric-variants.
  • Illustrate how accumulating multiple "layers" in one pass (using multiple-value mapping) for a macroexpansion is often vastly superior to repeated mapping.

  • Refactor the definition and info APIs as a definitions-system.
    (Blocked by definitions-systems.)
  • Extract variants stuff into new library "operator-variants"?

  • Slime: Add support for hinting of options (generic if form is not already supplied, else specific to the operator of form).
  • Slime: Add support for completion of the operator of form.

This section was last updated on .

State Ready to use
Status Features pending.
PSI Low

  • Adopt HTML documentation.
  • Add usage examples.
  • Add an example of implementing hypothetical do-index (or "do-range"?) macro similar to dotimes. (Don't implement declarations handling but point that fact out.)

  • Add a way to request different biases in flags-to-keywords.
  • Add a function somewhat reminiscent of get-setf-expansion taking the fundamental values as input and returning initialization, end test and stepping forms as multiple values.
  • The semantics of unparse with a clause-kinds of 2 elements is messy. Maybe just disallow that (or rework semantics). Technically a backwards-incompatible change but probably doesn't matter in this case.
  • The semantics of unparse with a clause-kinds of 1 element is straightforward but of questionable utility. Maybe just disallow that also. Technically a backwards-incompatible change but hopefully doesn't matter in this case.

  • Refactor out whatever "stupid repetition" the comment above kind is talking about...

This section was last updated on .

State Ready to use
Status Maintenance, feature pending?
PSI Low

  • Maybe eventually add a way to bubble multiple operators simultaneously in a form, with the different operators possibly interacting in more or less complex ways while bubbling up. It's very speculative at this point and one or more concrete examples of how that could be useful in practice could help reason about the possible semantics and how to implement it.

This section was last updated on .

State Ready to use
Status Maintenance, feature pending.
PSI Very low

  • Adopt HTML documentation.
  • Mention i nickname for ikeyword package.
  • Mention that it's usually best to just treat ikeywords as a "transparent alias" for the plain keyword counterpart.
  • Explain how to seamlessly integrate ikeywords support in definitions-systems that the user is then free to use or not (using plain keywords instead).
  • Point out that ikeywords can be used in loop, avoiding both the use of plain keywords (which look unaesthetic to some (but not to me)) and the use of non-keyword symbols (which tends to intern arbitrary symbols in arbitrary packages).
  • Illustrate the various potential definition conflicts scenarios with examples.

  • Add built-in ikeywords package for loop keywords.
  • Add while and unless built-in ikeywords with their obvious macro definitions. ikeywords normally never have any definitions in the standard namespaces but this would be a very convenient exception. Many DSLs could make good use of while and unless ikeywords, including loop, and being able to use the aforementioned macros without conflicts or additional effort would be a definite plus. It would be possible to make a library just for while and unless and I've been known to make some micro-libraries but in this case I think it would be a bit much, especially considering this convenient solution. It helps that there's only one obvious canonical definition of while and unless ((condition &body body), block nil, tagbody). Include a cleaned up version of this rationale in the documentation.

  • Slime: Add support for optionally distinguishing ikeywords visually, in a subtle manner by default.

This section was last updated on .

State Ready to use
Status Features pending.
PSI Low

  • Adopt HTML documentation.
  • Provide at least one example of the motivating use-case, "conceptually allow[ing] multiple definitions of the same kind on a single symbol, without conflicts".

  • Refactor with definitions-systems.
    (Blocked by definitions-systems.)
  • Make it possible for some namespaces and implicitly-managed symbols to be named by lists of symbols instead of just a symbol. Interesting concept for hierarchical naming. Dealing with lists is much easier than dealing with strings...
  • I think the current default make-package-name method theoretically allows false matches. It also produces inconveniently long names. Implement a sequential numbers based approach and let the user choose between the old and new naming strategies.

This section was last updated on .

State Ready to use
Status Features pending
PSI Very low

  • Deprecate print-emacs-setup-form (and possibly also related functions) and make an easy-to-use (mouse-supporting) installation and configuration helper using Emacs instead. No or very little prior knowledge of Emacs should be assumed of the users.

This section was last updated on .

State Ready to use
Status EOL pending?
PSI None

  • Extract setf-expanderlet to a dedicated library? Also bring with-resolved-places along, if so.
  • Deprecate updatef, funcallf, applyf and oldf. Reference place-modifiers' modify for all modify-macro needs.

Libraries for which no ready-to-use version is yet available.

This section was last updated on .

Library name Status Priority
configurable-variants Stub High
definitions-systems Brink, blocked Critical
first-class-lambda-lists Blocked Critical
first-class-declarations Incomplete, redesign pending. Critical
option-lists Early development phase High
explicit-bind Brink, blocked High
lispy-format Early development phase, back burner High
leanify-expand Stub, blocked Medium
return-values-hints Status unknown Medium
with-shadowed-bindings Brink, blocked N/A
combining-alternatives Early design stage Low
with-loop-edge-cases Early design stage Medium
evaluated-flet Incomplete Medium
hextml Formerly usable but undocumented, redesign pending, blocked Critical
hecss Formerly usable but undocumented, redesign pending, blocked Critical
mc-logger Early development phase, back burner Medium
hexql Incomplete, fate unknown Low
linkval Formerly usable, redesign pending Low (ev. Critical)
com.hexstreamsoft.lib.form Formerly usable, redesign pending Low (ev. Critical)
type-maker Brink? Very high
flexiconf Formerly buggy, currently unusable, complete redesign pending, back burner Very high
cl-native-terminfo Stub, back burner High
clos-relations Stub High
automixin Stub High
hextest Early development phase, back burner High
phased-generic-functions Incomplete, blocked, back burner High?
clhs-urltools Early development phase, back burner Medium
adaptable-reader Stub, back burner Low
easy-backquote-nesting Maintenance Low
bigname Minimalist, renaming pending, features pending, back burner Low
stream-lisp Stub, back burner Unknown
bounds-arithmetic Fate unknown Unknown
hexstream-color Minimalist but formerly usable (still?), status unknown, fate unknown Unknown
clos-featuresets Brink? Unknown
interdependent-bindings Fate unknown Unknown
hexstream-project-template Maintenance None
weak-symbol Formerly usable (still?), old newbie project, status unknown, fate unknown None
system-dependable Formerly usable (still?), old newbie project, status unknown, fate unknown None
rotx Old newbie project, marginal value, fate unknown None
throwaway-scripts Early design stage Low
hexstream-html-doc-mode Usable but raw and undocumented Very low
map-symbol-definitions Unknown Very low
elevator-restarts-game Unknown Very low

This section was last updated on .

State Not yet ready
Status Stub
PSI High

This section was last updated on .

State Not yet ready
Status Brink, blocked
PSI Critical

This section was last updated on .

State Not yet ready
Status Blocked
PSI Critical

This section was last updated on .

State Not yet ready
Status Incomplete, redesign pending.
PSI Critical

This section was last updated on .

State Not yet ready
Status Early development phase
PSI High

This section was last updated on .

State Not yet ready
Status Brink, blocked
PSI High

This section was last updated on .

State Not yet ready
Status Early development phase, back burner
PSI High

This section was last updated on .

State Not yet ready
Status Stub, blocked
PSI Medium

This section was last updated on .

State Not yet ready
Status Status unknown
PSI Medium

This section was last updated on .

State Not yet ready
Status Brink, blocked
PSI N/A

This section was last updated on .

State Not yet ready
Status Early design stage
PSI Low

This section was last updated on .

State Not yet ready
Status Early design stage
PSI Medium

This section was last updated on .

State Not yet ready
Status Incomplete
PSI Medium

This section was last updated on .

State Not yet ready
Status Formerly usable but undocumented, redesign pending, blocked
PSI Critical

This section was last updated on .

State Not yet ready
Status Formerly usable but undocumented, redesign pending, blocked
PSI Critical

This section was last updated on .

State Not yet ready
Status Early development phase, back burner
PSI Medium

This section was last updated on .

State Not yet ready
Status Incomplete, fate unknown
PSI Low

This section was last updated on .

State Not yet ready
Status Formerly usable, redesign pending
PSI Low (ev. Critical)

This section was last updated on .

State Not yet ready
Status Formerly usable, redesign pending
PSI Low (ev. Critical)

This section was last updated on .

State Not yet ready
Status Brink?
PSI Very high

This section was last updated on .

State Not yet ready
Status Formerly buggy, currently unusable, complete redesign pending, back burner
PSI Very high

This section was last updated on .

State Not yet ready
Status Stub, back burner
PSI High

This section was last updated on .

State Not yet ready
Status Stub
PSI High

This section was last updated on .

State Not yet ready
Status Stub
PSI High

This section was last updated on .

State Not yet ready
Status Early development phase, back burner
PSI High

This section was last updated on .

State Not yet ready
Status Incomplete, blocked, back burner
PSI High?

This section was last updated on .

State Not yet ready
Status Early development phase, back burner
PSI Medium

This section was last updated on .

State Not yet ready
Status Stub, back burner
PSI Low

This section was last updated on .

State Not yet ready
Status Maintenance
PSI Low

This section was last updated on .

State Not yet ready
Status Minimalist, renaming pending, features pending, back burner
PSI Low

This section was last updated on .

State Not yet ready
Status Stub, back burner
PSI Unknown

This section was last updated on .

State Not yet ready
Status Fate unknown
PSI Unknown

This section was last updated on .

State Not yet ready
Status Minimalist but formerly usable (still?), status unknown, fate unknown
PSI Unknown

This section was last updated on .

State Not yet ready
Status Brink?
PSI Unknown

This section was last updated on .

State Not yet ready
Status Fate unknown
PSI Unknown

This section was last updated on .

State Not yet ready
Status Maintenance
PSI None

This section was last updated on .

State Not yet ready
Status Formerly usable (still?), old newbie project, status unknown, fate unknown
PSI None

This section was last updated on .

State Not yet ready
Status Formerly usable (still?), old newbie project, status unknown, fate unknown
PSI None

This section was last updated on .

State Not yet ready
Status Old newbie project, marginal value, fate unknown
PSI None

This section was last updated on .

State Not yet ready
Status Early design stage
PSI Low

This section was last updated on .

State Not yet ready
Status Usable but raw and undocumented
PSI Very low

This section was last updated on .

State Not yet ready
Status Unknown
PSI Very low

This section was last updated on .

State Not yet ready
Status Unknown
PSI Very low

Libraries that are being retired and scavenged for scraps.

This page was last updated on .

Library name Status Priority
trivial-declaration-identifiers Merge pending N/A
triage-declarations Scavenge and merge into pending redesign of first-class-declarations? N/A
destructuring-bind-star Merge into first-class-lambda-lists pending, blocked N/A
com.hexstreamsoft.lib Formerly used extensively, abandoned, scavenge pending N/A
rearrange-args Incomplete, abandoned, scavenge pending Unknown
defmacro-system Old newbie project, marginal value, abandoned None
loopless-accumulators Incomplete, abandoned, scavenge pending N/A
loopless-iterators-minimal Incomplete, abandoned, scavenge pending N/A
loopless-map-minimal Incomplete, abandoned, scavenge pending N/A
loopless-formerly-private Incomplete, abandoned, scavenge pending N/A
loopless Formerly usable but buggy, abandoned, scavenge pending N/A
loopless-map Incomplete, abandoned, scavenge pending Unknown
loopless-iterators Incomplete, abandoned, scavenge pending Unknown
hexstream-shared-html-css Formerly usable (still?), abandoned, scavenge pending N/A
com.hexstreamsoft.lib.web Big monolithic mass, scavenge pending N/A
hexttp-config Scavenge pending N/A
hevent Formerly usable but documented, fate unknown, scavenge pending Unknown
botchlog Delete when mc-logger is usable None
local-clhs-helper Incomplete, abandoned, scavenge pending Very low
clsdb Early development phase, abandoned, scavenge pending Unknown

This section was last updated on .

State Not yet scavenged
Status Merge pending
PSI N/A

This section was last updated on .

State Not yet scavenged
Status Scavenge and merge into pending redesign of first-class-declarations?
PSI N/A

This section was last updated on .

State Not yet scavenged
Status Merge into first-class-lambda-lists pending, blocked
PSI N/A

This section was last updated on .

State Not yet scavenged
Status Formerly used extensively, abandoned, scavenge pending
PSI N/A

This section was last updated on .

State Not yet scavenged
Status Incomplete, abandoned, scavenge pending
PSI Unknown

This section was last updated on .

State Not yet scavenged
Status Old newbie project, marginal value, abandoned
PSI None

This section was last updated on .

State Not yet scavenged
Status Incomplete, abandoned, scavenge pending
PSI N/A

This section was last updated on .

State Not yet scavenged
Status Incomplete, abandoned, scavenge pending
PSI N/A

This section was last updated on .

State Not yet scavenged
Status Incomplete, abandoned, scavenge pending
PSI N/A

This section was last updated on .

State Not yet scavenged
Status Incomplete, abandoned, scavenge pending
PSI N/A

This section was last updated on .

State Not yet scavenged
Status Formerly usable but buggy, abandoned, scavenge pending
PSI N/A

This section was last updated on .

State Not yet scavenged
Status Incomplete, abandoned, scavenge pending
PSI Unknown

This section was last updated on .

State Not yet scavenged
Status Incomplete, abandoned, scavenge pending
PSI Unknown

This section was last updated on .

State Not yet scavenged
Status Formerly usable (still?), abandoned, scavenge pending
PSI N/A

This section was last updated on .

State Not yet scavenged
Status Big monolithic mass, scavenge pending
PSI N/A

This section was last updated on .

State Not yet scavenged
Status Scavenge pending
PSI N/A

This section was last updated on .

State Not yet scavenged
Status Formerly usable but documented, fate unknown, scavenge pending
PSI Unknown

This section was last updated on .

State Not yet scavenged
Status Delete when mc-logger is usable
PSI None

This section was last updated on .

State Not yet scavenged
Status Incomplete, abandoned, scavenge pending
PSI Very low

This section was last updated on .

State Not yet scavenged
Status Early development phase, abandoned, scavenge pending
PSI Unknown

Groupings of collaborating projects with strongly related purpose and development.

This section was last updated on .

I, for one, can't live without them.

This section was last updated on .

Over time I've grown annoyed by what I perceive as some lackings in the Common Lisp language. Fortunately, Common Lisp is very flexible so all I need to do to address my concerns is write some portable libraries. I've already made some simple ones (that you can also use) to fix some of these annoyances, but the major ones are yet to be completed. Finishing them is my most critical priority because I can't stand to write in "plain Common Lisp" anymore for non-trivial projects.

I shall eventually relegate LOOP to COBOL status.

This section was last updated on .

A work-in-progress (and currently unusable) collection of libraries seeking to eventually relegate loop (and all similarly monolithic alternatives such as Iterate) to COBOL status by providing powerful lispy composable iteration facilities.

That undocumented and bit-rotted dynamic web framework of mine.

This section was last updated on .

A coherent bunch of libraries that can be used together as a dynamic web framework. Actually this is currently completely unusable and undocumented. I've successfully developed and used these for myself in the past for my old mega-project BahagonTools. I've been looking to clean this up for years now and haven't yet been successful but it will happen as I absolutely need this and my policy is to only use those libraries I made that are documented and usable by others.

Worknotes about my websites.

This section was last updated on .

Some global "assets" that I reuse across my websites.

This section was last updated on .

  • Initial review.
  • Improve CSS for navlist quick-links and status-indicators. (Probably "display: table".)

"Public Domain Common Lisp R&D"

This section was last updated on .

State Usable, but unreasonably low-tech.
(Hand-written static HTML5 and CSS3.)
Status Continuous development, partly blocked
PSI Critical

  • Extract documentation of libraries into their respective repositories. The content and presentation should make sense standalone and the online version with the elaborate navigation structure should be generated from it. Blocked by hextml and hecss.
  • Navboxes: Make it so that hovering over inlined-nodes doesn't highlight the item-count for its inlining-node.
  • Add secondary library categorization: complexity (simple, medium, complex). (Somewhat suggestive. Dependencies don't count and hopefully I'd always extract and refactor such that projects almost never become complex. Documentation does count in complexity assessments?)
  • Add secondary library categorization: novelty (low, medium, high). (Suggestive answers to the questions: "To what extent has this been (or not been) done before? How obvious (or non-obvious) was the concept?")
  • Add secondary library categorization: scope (narrow, medium, wide). (Is the library useful for a very specific purpose that not many people would need or it's something that potentially very many people could find useful?)
  • Make "/libraries/categories/" be an actual page that describes the various categorisations instead of just redirecting to "/libraries/".
  • Make a summary table of the various categorisations of each library.
  • Add at least one example for each library in library category pages.

  • Highlight corresponding part of expansion or macro call when hovering over code samples.
  • Properly mark up output and result values in code samples.
  • Add recommendation for nearlyfreespeech.net (my web host) in "Resources".

  • Adopt HTML documentation.
  • Put a "last updated" date at the top of every page.
  • Make dynamic the more transient fields of library factsheets: latest release (version and date) and Quicklisp (status and version).

Worknotes about the subset of articles (to be) published on hexstreamsoft.com.

This section was last updated on .

"Informal yet helpful information on the standard symbols and their bindings."

This section was last updated on .

State Incomplete, but already useful.
Status Partly blocked
PSI High

"Learn about the definitive Common Lisp reference and how to use it more effectively."

This section was last updated on .

State Ready.
Status Done.
PSI Low

This section was last updated on .

State First part ready.
Status In progress.
PSI Medium

"I'm documenting what tools I'm using and how [...]"

This section was last updated on .

State Incomplete.
Status A good start...
PSI High

"[...] Spy on me as I work if you want!"

This section was last updated on .

State Usable, but unreasonably low-tech.
(Hand-written static HTML5 and CSS3.)
Status Continuous development, partly blocked
PSI Critical

  • Review and fix all meta descriptions.
  • Cross-reference projects by priority.
  • Cross-reference metaprojects with their constituents.
  • Group all loopless projects at the end of "Not yet scavenged".
  • Cross-reference all blockages.

  • I should start tracking hexstream-keyboard-svg, but I don't know where to put it since it's neither a library nor a website nor a config... Well, it's sort of a config but... not really.

  • Rename "PSI" ("Personal Strategic Importance") to just "Priority".

"A new dialect of Lisp, derived from Common Lisp. Currently at early concept stage."

This section was last updated on .

State Not yet "launched".
Status Very little information.
PSI Medium

Worknotes about the subset of articles (to be) published on stream-lisp.hexstreamsoft.com.

This section was last updated on .

"Axioms that drive design decisions, disclosure of my plans."

This section was last updated on .

State Rough draft.
Status Needs much work.
PSI Medium

"A comparison of Common Lisp's 978 symbols and their Stream Lisp counterparts."

This section was last updated on .

State Very incomplete.
Status Partly blocked.
PSI High

Partly blocked by notes-tips-standard-common-lisp-symbols.

Articles are part of websites but tracked as separate entities.

This section was last updated on .

Name State Status Priority
www.hexstreamsoft.com
Notes and tips: Standard Common Lisp symbols Incomplete, but already useful. Partly blocked. High
Getting started with the Common Lisp HyperSpec Ready. Done. Low
Common Lisp FORMAT reference First part ready. In progress. Medium
stream-lisp.hexstreamsoft.com
Principles and intents Rough draft. Needs much work. Medium
Standard Common Lisp symbols Very incomplete. Partly blocked. High

To help me keep track of stuff.

This section was last updated on .

Stuff I'm actively working on; subject to erratic changes.

This section was last updated on .

  • Finish preliminary version of evaluated-flet. (No support for declarations.)
  • Finish preliminary version of explicit-bind. (No support for declarations and extensibility.)

Recursively going down the rabbit holes without getting lost.

This section was last updated on .

  1. Release slightly upgraded version of multiple-value-variants.
  2. Finish option-lists.
  3. Finish definitions-systems.
  4. Finish first-class-declarations and triage-declarations.
  5. Finish evaluated-flet.
  6. Finish with-shadowed-bindings.
  7. Finish explicit-bind.

  1. Finish hextml.

  1. Improve my Notes and tips: Standard Common Lisp symbols article strategically, in ways that will benefit the Stream Lisp braindump, since both will be structurally similar.
  2. Finish my initial Stream Lisp braindump. I guaranteed I'd do it in 2014, so I'll look real bad if I don't. Well, FUCK!

  1. Finish common-lisp-format-reference.
  2. Finish definitions-systems.
  3. Finish lispy-format.

Consistent execution of multi-step procedures.

This section was last updated on .

  1. Create local repository:
    1. cp -r hexstream-project-template new-project
    2. cd new-project/master
    3. rm -rf .git
    4. git init
    5. Remove, rename and add files as necessary.
    6. Update file contents as necessary (especially README if there is one).
    7. git add .
    8. git commit -m 'Initial commit.'
  2. Create repository on github:
    1. Create repository, usually reusing the description from README.
    2. Follow on-screen instructions for "existing repository" (add remote, push)
    3. Refresh page.
  3. Update worknotes:
    1. Add link to project in the appropriate category.
    2. Add project entry in the appropriate table.
    3. Cross-reference from appropriate metaprojects.
    4. Update "last updated" date.
    5. Commit, push to live (website), push to origin (github).

This is way too manual. Fortunately, I'm not making releases often yet.

  1. Update repo:
    1. Make sure the .asd indicates a suitable new version number.
    2. Reference relevant github issues from the commit(s), if applicable.
    3. Create an appropriate version tag. Make sure to push it too.
  2. Make tarball:
    1. cp -r project-name/master project-name-version
    2. ./make-tarball.sh project-name-version
    3. Remove version from tarball name.
    4. rm -rf project-name-version
    5. Upload tarball to S3, make sure it's publicly accessible. Download to test.
  3. Update website:
    1. Update "latest versions" page. Update the tarball.
    2. Update "timeline" page.
    3. Update the factsheet for the library page.
    4. Make an announcement on the main page if deemed newsworthy enough.
    5. Don't forget to update the "page last modified" dates!

Named tasks to be realized in multiple projects.

This section was last updated on .

Task summary Projects awaiting processing Priority
Initial review.
All libraries except the ready-to-use ones and hexstreamsoft.com. Critical
Adopt HTML as
primary documentation format.
All libraries. (Partially done for all ready-to-use libraries.) Very high
Rename some projects.
From To
hextml hexstream-html
hecss hexstream-css
hextest hexstream-test
bigname cl-french-bignums
hexql hexstream-postgres-client
linkval hexstream-validators
com.hexstreamsoft.lib.form hexstream-forms
com.hexstreamsoft.lib hexstream-lib
hexttp-config hexstream-web-config
hevent hexstream-events
Low
Convert all tabs to spaces.
Ensure tabs are banished forever.
All projects. Low

Assorted raw notes that belong elsewhere, or perhaps nowhere.

This section was last updated on .

Nothing in this section is supposed to make any sort of sense.
Some of it still might by accident, but don't waste your time.

(I left some comments regardless because I can't help it...)

Some of this doesn't have anything to do with worknotes, it's more like personal stuff that I should set up some sort of personal website for. I've just decided to reduce my private backups to the minimum possible.

In my .bashrc:

#prepend the prompt with the exit status of the last command
PS1="\$?|$PS1"

HISTCONTROL+=:erasedups

To configure ASDF, I put this in ~/.config/common-lisp/source-registry.conf.d/lisp.conf: (:tree "/home/hexstream/data/projects/lisp/")