This page was last updated on .

Worknotes » All projects (in categories)

Ready to use (15) Not yet ready (48) Not yet scavenged (22) Metaprojects (4)

Worknotes » All ready-to-use projects (15)

Project name Status PSI
map-bind [R] [G]
Features pending, partly blocked Low
  • Adopt HTML documentation.
  • Doc: Add a formal description of map-bind.
  • Doc: Add more usage examples.
  • Doc: Showcase (already-existing) actual usage of map-bind in actual code of some of my other libraries.
  • Doc: 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.
  • Doc: Show macro call/expansion correspondance on mouseover.
  • API: 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.
  • API: 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.
positional-lambda [R] [G]
Feature pending, blocked. None
  • Adopt HTML documentation.
  • Doc: Add a formal description of plambda.
  • Doc: Add more usage examples.
  • Doc: Showcase (already-existing) actual usage of plambda in actual code of some of my other libraries.
  • Doc: 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.
  • Doc: Show macro call/expansion correspondance on mouseover.
  • API: Add a way to define new plambda-like operators (using something else than lambda internally) easily.
    (Blocked by definitions-systems.)
enhanced-eval-when [R] [G]
Maintenance None
  • Adopt HTML documentation.
  • Doc: Add simple descriptions of each exported operator.
  • Doc: Add a few more usage examples.
  • Doc: Add a quick overview of what's the purpose of using eval-when with all situations specified, for the benefit of newbies.
  • API: Add an eval-always ASDF system alias.
enhanced-multiple-value-bind [R] [G]
Maintenance None
  • Adopt HTML documentation.
  • Doc: Add a (somewhat redundant) simple description of the exported operator and its alias.
  • Doc: 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.
macro-level [R] [G]
Maintenance None
  • Adopt HTML documentation.
  • Doc: Add a (somewhat redundant) simple description of macro-level.
  • Doc: Add an example of not having to use a gensym in a macro thanks to macro-level.
  • Doc: Add at least one example of using macro-level directly instead of writing out something by hand or using the macrolet equivalent.
  • Doc: Further explain the Slime support that could eventually be added and how it would be useful, including an example.
cartesian-product-switch [R] [G]
Features pending, partly blocked. Low
  • Adopt HTML documentation.
  • Doc: Add a formal description of cartesian-product-switch.
  • Doc: 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.
  • Doc: Add more cartesian-product-switch usage examples.
  • Doc: Add a formal description of all built-in testclause kinds.
  • Doc: Explain how cartesian-product-switch makes it easier to ensure you've considered all possible case combinations.
  • API: Refactor the definition and info APIs as a definitions-system.
    (Blocked by definitions-systems.)
  • Doc: Add examples of defining custom testclause kinds.
  • 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".
place-modifiers [R] [G]
Features pending?, partly blocked. Low
  • Adopt HTML documentation.
  • Doc: Add a big table (on a separate page) describing the hundreds of built-in variants.
  • Doc: Explain how to select variants other than the primary.
  • Doc: Explain guidelines for how to determine the order of spots for the variants.
  • Doc: Markup code comments in the usual manner.
  • Doc: Maybe add a call for consolidation? Remove reversef et al. from libraries and use modify instead?
  • API: Finish support for :each-of?
  • API: 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.
anaphoric-variants [R] [G]
Maintenance, blocked Very low
  • Adopt HTML documentation.
  • Doc: Add a formal description of anaphoric.
  • Doc: Add formal descriptions of all built-in variants.
  • Doc: Add more usage examples.
  • Doc: 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.)
  • Doc: Add examples of defining custom anaphoric-variants.
  • Doc: Show macro call/expansion correspondance on mouseover.
  • Doc: 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.)
  • API: Refactor the definition and info APIs as a definitions-system.
    (Blocked by definitions-systems.)
  • 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.
  • Extract variants stuff into new library "operator-variants"?
multiple-value-variants [R] [G]
Maintenance, blocked Low
  • Adopt HTML documentation.
  • Doc: Add a formal description of multiple-value.
  • Doc: Formalize descriptions of all built-in variants.
  • Doc: Add more usage examples.
  • Doc: Showcase (already-existing) actual usage of multiple-value (mostly the multiple-value mapping operators) in actual code of some of my other libraries.
  • Doc: Add examples of defining custom anaphoric-variants.
  • Doc: Illustrate how accumulating multiple "layers" in one pass (using multiple-value mapping) for a macroexpansion is often vastly superior to repeated mapping.
  • API: Refactor the definition and info APIs as a definitions-system.
    (Blocked by definitions-systems.)
  • 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.
  • Extract variants stuff into new library "operator-variants"?
parse-number-range [R] [G]
Features pending. Low
  • Adopt HTML documentation.
  • Doc: Add usage examples.
  • Doc: 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.)
  • API: Add a way to request different biases in flags-to-keywords.
  • API: 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.
  • API: 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.
  • API: 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.
  • Impl: Refactor out whatever "stupid repetition" the comment above kind is talking about...
bubble-operator-upwards [R] [G]
Maintenance, feature pending? Low
  • Adopt HTML documentation.
  • Doc: Formalize description of bubble-operator-upwards, even though it's not straightforward to do.
  • API: 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.
incognito-keywords [R] [G]
Maintenance, feature pending. Very low
  • Adopt HTML documentation.
  • Doc: Mention i nickname for ikeyword package.
  • Doc: Mention that it's usually best to just treat ikeywords as a "transparent alias" for the plain keyword counterpart.
  • Doc: Explain how to seamlessly integrate ikeywords support in definitions-systems that the user is then free to use or not (using plain keywords instead).
  • Doc: 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).
  • Doc: Illustrate the various potential definition conflicts scenarios with examples.
  • API: Add built-in ikeywords package for loop keywords.
  • API: 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.
symbol-namespaces [R] [G]
Features pending. Low
  • Adopt HTML documentation.
  • Doc: 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".
  • API: Refactor with definitions-systems.
    (Blocked by definitions-systems.)
  • API: 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...
  • API: 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.
clhs (trivial ASDF wrapper) [R] [G]
Features pending Very low
  • Adopt HTML documentation.
  • Doc: Document the small API.
  • 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.
  • Finish and publish my CLHS FAQ and reference it from the documentation.
place-utils [R] [G]
EOL pending? None
  • Adopt HTML documentation.
  • Extract setf-expanderlet to a dedicated library? Also bring with-resolved-places along, if so.
  • Doc: Improve markup.
  • Doc: Review documentation.
  • API: Deprecate updatef, funcallf, applyf and oldf. Reference place-modifiers' modify for all modify-macro needs.

Worknotes » All not-yet-ready projects (38)

Project name Status
PSI
com.hexstreamsoft [G]
Continuous development, partly blocked Critical
  • Adopt HTML documentation.
  • Put a "last updated" date at the top of every page.
  • Partly blocked by hextml.
  • Partly blocked by hecss.
  • 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.
  • Make dynamic the more transient fields of library factsheets: latest release (version and date) and Quicklisp (status and version).
  • Navboxes: Make it so that hovering over inlined-nodes doesn't highlight the item-count for its inlining-node.
  • Highlight corresponding part of expansion or macro call when hovering over code samples.
  • Properly mark up output and result values in code samples.
  • 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.
  • Add recommendation for nearlyfreespeech.net (my web host) in "Resources".
org.stream-lisp [G]
Stub Low
hextml [G]
Formerly usable but undocumented, redesign pending, blocked Critical
hecss [G]
Formerly usable but undocumented, redesign pending, blocked Critical
definitions-systems [G]
Brink, blocked Critical
first-class-lambda-lists [G]
Blocked Critical
first-class-declarations [G]
Incomplete, redesign pending. Critical
type-maker [G]
Brink? Very high
flexiconf [G]
Formerly buggy, currently unusable, complete redesign pending, back burner Very high
option-lists [G]
Early development phase High
cl-native-terminfo [G]
Stub, back burner High
clos-relations [G]
Stub High
automixin [G]
Stub High
explicit-bind [G]
Brink, blocked High
lispy-format [G]
Early development phase, back burner High
hextest [G]
Early development phase, back burner High
phased-generic-functions [G]
Incomplete, blocked, back burner High?
leanify-expand [G]
Stub, blocked Medium
clhs-urltools [G]
Early development phase, back burner Medium
return-values-hints [G]
Status unknown Medium
mc-logger [G]
Early development phase, back burner Medium
hexstream-stumpwmrc [G]
Raw and undocumented Low
adaptable-reader [G]
Stub, back burner Low
easy-backquote-nesting [G]
Maintenance Low
bigname [G]
Minimalist, renaming pending, features pending, back burner Low
hexql [G]
Incomplete, fate unknown Low
linkval [G]
Formerly usable, redesign pending Low (ev. Critical)
com.hexstreamsoft.lib.form [G]
Formerly usable, redesign pending Low (ev. Critical)
with-shadowed-bindings [G]
Brink, blocked N/A
stream-lisp [G]
Stub, back burner Unknown
bounds-arithmetic [G]
Fate unknown Unknown
hexstream-color [G]
Minimalist but formerly usable (still?), status unknown, fate unknown Unknown
clos-featuresets [G]
Brink? Unknown
interdependent-bindings [G]
Fate unknown Unknown
hexstream-project-template [G]
Maintenance None
weak-symbol [G]
Formerly usable (still?), old newbie project, status unknown, fate unknown None
system-dependable [G]
Formerly usable (still?), old newbie project, status unknown, fate unknown None
rotx [G]
Old newbie project, marginal value, fate unknown None
combining-alternatives [G]
Early design stage Low
throwaway-scripts [G]
Early design stage Low
hexstream-emacs-init [G]
Raw and undocumented Very low
hexstream-html-doc-mode [G]
Usable but raw and undocumented Very low
with-loop-edge-cases [G]
Early design stage Medium
hexstream-sbcl-init [G]
Raw and undocumented Very low
map-symbol-definitions [G]
Unknown Very low
elevator-restarts-game [G]
Unknown Very low
hexstream-screenrc [G]
Trivial and mostly undocumented Very low
evaluated-flet [G]
Incomplete Medium

Worknotes » All not-yet-scavenged projects (22)

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

Worknotes » All metaprojects (4)

Metaproject summary Projects awaiting processing
PSI
Initial review.
hextml, hecss, definitions-systems, first-class-lambda-lists, first-class-declarations, type-maker, flexiconf, option-lists, cl-native-terminfo, clos-relations, automixin, explicit-bind, lispy-format, hextest, phased-generic-functions, leanify-expand, clhs-urltools, return-values-hints, mc-logger, hexstream-stumpwmrc, adaptable-reader, easy-backquote-nesting, bigname, hexql, linkval, com.hexstreamsoft.lib.form, local-clhs-helper, trivial-declaration-identifiers, loopless-accumulators, with-shadowed-bindings, loopless-iterators-minimal, loopless-map-minimal, hexstream-shared-html-css, loopless-formerly-private, triage-declarations, destructuring-bind-star, loopless, com.hexstreamsoft.lib, com.hexstreamsoft.lib.web, hexttp-config, stream-lisp, clsdb, bounds-arithmetic, hevent, hexstream-color, rearrange-args, loopless-map, loopless-iterators, clos-featuresets, interdependent-bindings, hexstream-project-template, bahagontools, defmacro-system, weak-symbol, system-dependable, rotx, combining-alternatives, throwaway-scripts, hexstream-emacs-init, hexstream-html-doc-mode, with-loop-edge-cases, hexstream-sbcl-init, map-symbol-definitions, elevator-restarts-game, hexstream-screenrc, evaluated-flet, botchlog. Critical
Adopt HTML as
primary documentation format.
com.hexstreamsoft, hextml, hecss, definitions-systems, first-class-lambda-lists, first-class-declarations, type-maker, flexiconf, option-lists, cl-native-terminfo, clos-relations, automixin, explicit-bind, lispy-format, hextest, phased-generic-functions, leanify-expand, clhs-urltools, return-values-hints, mc-logger, map-bind, place-modifiers, cartesian-product-switch, parse-number-range, bubble-operator-upwards, multiple-value-variants, symbol-namespaces, hexstream-stumpwmrc, adaptable-reader, easy-backquote-nesting, bigname, hexql, linkval, com.hexstreamsoft.lib.form, clhs, anaphoric-variants, incognito-keywords, local-clhs-helper, trivial-declaration-identifiers, loopless-accumulators, with-shadowed-bindings, loopless-iterators-minimal, loopless-map-minimal, hexstream-shared-html-css, loopless-formerly-private, triage-declarations, destructuring-bind-star, loopless, com.hexstreamsoft.lib, com.hexstreamsoft.lib.web, hexttp-config, stream-lisp, clsdb, bounds-arithmetic, hevent, hexstream-color, rearrange-args, loopless-map, loopless-iterators, clos-featuresets, interdependent-bindings, macro-level, positional-lambda, enhanced-multiple-value-bind, enhanced-eval-when, place-utils, hexstream-project-template, bahagontools, defmacro-system, weak-symbol, system-dependable, rotx, botchlog. 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. (Properly expand and cross-reference later.) Low