notes on improving the computing-web

an assessment of micromanaging global information processing

[See also computer processor theory history notes]


  • Separable attachments and messages, that keep connected while in separate folders....

    HTML, General Mark-Up Language (plus 1978-79 notes revised to work with HTML)


    <­element="title/idea/purpose/value"> (shows cf tooltip/'page-tip')
    e.g. <­a=> (i.e. purpose/value is redirect)
    <­element "alttext"> (implicit alt="alttext" not attribute alttext)
    u&uml; ~ &uuml; (or u&umlmod; or &diauml;)
    &NBSP; ~ &nbsp; (but &NBSP; larger to better fit ALL-CAPS acronyms)
    <­HEAD> is extraneous—albeit decades ago it also needed <­NECK> for self-framing
     (but n.b. <­HEAD id=head_id> can group nonprinting specifications for editing, saving)
    <­STYLE> should appear anywhere, and inside elements should so restrict its range
    <­SCRIPT> already appears anywhere (some prior specs. said do-not) yet is global
    <­element script={... ...} style={... ...}> (in-addition-to ="... ..." or ='... ...')
    TABLE, is a rectangle of self-aligning anythings, rows, columns, borders: a 2-D precedence-interpretation blocking text and elements: Example:--
    <­table>...text and sub-table, default 100%-width of the enclosing space...
    <­tr>...row of text, 100%-width of the enclosing table...<­/tr>
    <­tc>...column of text below the tr, 100%-height of the remaining space...
    <­tc>...second column of text, to the right and fitted-with...
    <­tr>...specific row of text within this column...<­/tr>
    <­tc>...third column of text to the right, 100%-height of the space...<­/tc>
    <­tr>...row of text clearing to below the preceding rows and columns...<­/tr>
    ...additional text in the table, below the rows and columns...<­/table>

    locate=left, right, center, justify ... is outer alignment, cf table (n.b. "align" is w3-revisional)
    text-align=left, right, center, justify ... is inner alignment, cf "text"
    text-padding=[px] ... inline-flow within container, around objects, blocks, border-margins

    e.g. <­table width=50% locate=right text-align=left> --places a half-width table on the right, its inner text left.

    Note that TR here facilitates without rebuilding the array with multiple TR's and TC-rowspan=2's; (cf HR, BR-with-border).

    Note also here that unclosed-TR,TC-elements pack sequentially, until a specified closing (else TR,TC go inside TC,TR).


    Because user-data can be locally-relative comparative statistics over a sliding range where vertical columns would runoff absolute-page-right, slanting columns keeps them on-page, e.g. Gantt Scheduling charts of progressive-overlapping process phases, with current years 'centered'.

    e.g. <­table slant> or <­table style=slant:±deg>

    SHINGLED TABLE HEAD (tilted/slanted)

    For column head title/abbreviations longer than 2em while their column data is only flag-letters/symbols, a 40° tilt-up {skew, rotate, matrix} has a footprint, depending on font family and text, roughly two-letters horizontal width ample-but-not-excessive for such data, but contemporary css-text-line-tilting does-not compact column width. [remedy: TH width:2em DIV position:absolute transform:skew() or :rotate(), and transform-origin]

    (Row-sidebar-TH and TFOOT TH might also be tilted to match-all-table-heads)


    Footer data element TF distinct from TH, TD, TC,

    'Natural language' automatic colgroup/col allocation/assignment/association by style/attribute/class on (or placement of col/colgroup before/around) associated TH, or TD, TC, TF, (better than html4/5 'sub-assembler-level-efficiency-col-identification-by-col-spanning-raw-numbers...')

    Events on col/colgroup contents, e.g. TR TH/TH COLGROUP onclick=... TH/TH TH/TH /COLGROUP TH/TH /TR

    Table row break BR after /TD etc., or its own TRBR, to restart placement of row subelements at the left-next without a new TR, e.g. same TR nth-child color (more-consistent with individual rowspan; see also DITTO next)

    'Natural language' automatic rowspan-from-above by attribute rowspan=-1 or style=display:DITTO/ASSUME/ELIDE to effect none-by-this-but-add +1 to column-prior rowspan on TD, TH, TF... default no text unless specified by style before/after content: e.g. dittomark... (Alternate method, style=visibility:DEFER/ELIDE possibly more consistent with html structure as column-prior subelement does not specify its own rowspan+=1)

    Alternatively, CSS selector specification-same/not-as-prior id, attribute, value,...
    (And then, new, exor color spec with #variant, alternate style selection, add to nth-child-span,...)


    A reserved set of HTML 'stem-object/elements', user-programmable, enclosure-closable,
     severally sibling-closable; Specification of parent-child family, child auto-closure assumed;
     e.g. <­XA>, <­XB>, <­XC>,,,<­/XA> (rather than commandeer DL, DT, DD, /DL, or others that work);
     e.g. <­XA>, <­XB>, <­XC>,,,<­/XB> closes XB, XC,,, but not XA (by alphabetic precedence)
    (n.b. some HTML4 had declarable elements, e.g. <­o:o><­/o:o>) 
    (N.B. HTML5 upgrades this to include any invented element e.g. <­xxx><­/xxx>)


    <­!DOCTYPE html> is extraneous (and should need "/>" closure),
    The declaration protocol should be <­HTML HTML5> (class/attribute, prior HTML4.5, HTML4);


    HTML5 should ignore FRAMESET, FRAME, NOFRAMES, (or convert-w/flag if no IFRAME)
    HTML5-capable should preferentially-implement IFRAME inside NOFRAMES (same effect)
    i.e. NOFRAMES innerHTML should-be/always-was-to-be the BODY IFRAME document
    IFRAME innerHTML should render as the default/first document,
     ('alt=' text was while-loading-or-if-none/couldn't)
     (note this is a concept-shift: onevent works on the innerHTML only)


    Forward: '?' should auto-find on the arriving ordinary-document, (scripting may do otherwise)
    Backward: Some way to pass parameters back from a called webpage, (cf simple JSON phrase)
    [remedy (recheck reliability) ongoback=history(-2) replace with referringURL?returnmessage]


    Object/element tagNames and nameSpaces are essentially classNames in angle-brackets:
    * (multiple instances possible)
    e.g. <­div:b:i:classic:redlined>...<­/div>
    e.g. <­.classic>...<­/.classic> (implicit <­span classic>)
    n.b. <­div.classic:redlined>...<­/div> uses div-defined .classic else general
    n.b. <­p:b>...<­/p> is a p-style block with b-style inline adjustments
    n.b. <­b:p>...<­/b> is a b-style inline-block with p-style adjustments
    nameSpace = HTML:, MYML:, nameSpace:stylePrefixTagName:,
    tagName = HTML, BODY, nameSpace:tagName, tagName:className,
    className = :MYSTYLE,
    <­HTML> opens HTML nameSpace use
    <­DL> is, in HTML nameSpace
    <­DL:DL> is <­DL> in the DL-DL-styleSheet, in HTML nameSpace
    <­MYML> opens MYML nameSpace use
    <­DL> is, in MYML nameSpace
    <­DL:HTML> is <­DL> in HTML nameSpace, despite MYML
    <­DL.MYSTYLE> is with CLASS=MYSTYLE in MYML nameSpace
    <­/MYML> closes MYML nameSpace use
    <­DL.MYSTYLE> is with CLASS=MYSTYLE in HTML nameSpace
    <­/HTML> closes HTML nameSpace use, and global closure on MYML
    N.B. <­DL:HTML> closes with /DL or its-enclosure closure, or by full /DL:HTML
    N.B. <­HTML:DL> closes with /HTML or its-enclosure closure


    e.g. SELECT VALUE="optionLabel" should auto-SELECT that OPTION labeled "optionLabel"
    (There would of-course be precedence rules for this, e.g. SELECT MULTIPLE VALUE="B,C,D")
    (e.g. this could be used in php-downloading-html from a database of selections)
    ((n.b. {label, text, innerText} overlap in meaning in this case contemporarily))

    STYLE is an ATTRIBUTE that is a CLASS that is a STYLE

    i.e. <­STYLE> ≡ <­ATTRIBUTES> so that CLASS can be assigned similarly too
    e.g. #clicktable TD:focus {contenteditable:keyboard} invokes the touchscreen keyboard


    SUGGESTED text input property (cf sticky-placeholder verbatim-virtual-prepopulate)
    —shows 'til taken/finished or differing/canceling letter entered
    —ONSUGGESTEND event property taken=true/false/just/part, e.g. script-update next-suggestion


    ONLOAD= is bookkeeping that should work on all elements (e.g. prep a table)
    ONCONTEXTMENU= positions/details: rovot-'mouse', fingers long-touched, cursor selection/ranges
    ONOVERFLOW= maybe with/out onscroll/onresize
    ONOVERMAX= on overflow-prevented by {maxwidth, maxlength, maxsize}
    ONTRIPLECLICK= (e.g. select a paragraph; cf double-click, a word)
    Events should be mensurable from the detecting element, not-only the triggering element
     (cf offsetY was [previously] a portion of the detecting-container's offsetHeight)
    Elements should be able to invoke button/key parameters
    e.g. <­INPUT> NumLock the Numberpad
    e.g. pop-up the {Ctrl-F} Find Dialog
    e.g. pop-up the Find Dialog with more capability {e.g. multiword find-after}
    e.g. pop-up the keyboard (without being contenteditable)

    SCRIPT (half-better than Script was -supposed- to become)

    NATURAL LANGUAGE (definition and discovery)

    Turns out that javascript is not the natural-like language promised in the 1970's,-- not only does it not 'know-what-I-mean' when my program refers to associated values of a process, e.g. textrange.move('character',1) returns the distance moved ~1, but should also be capable of returning the new position of the textrange so-moved ..., but it also lacks the basic logic expression IF...THEN, explicitly, the negative-logic-action of ELSE which it does have, where several chained IF...ELSE's ready to consider the next-ELSE would then be capable of considering-not and doing something more for the already-satisfied-IF's cumulative, before the next ELSE:--

    N.B. THEN, explicit, does not terminate the IF...ELSE chain;
    N.B. THEN, may appear after ELSE; but redoubled THEN...ELSE...THEN is extraneous;
    N.B. 'NELSE', I've also-suggested, is the same as THEN-explicit, (if it's not too 'space-alien'ish).

    IF (A) [then] {X}
    ELSE IF (B) [then] {Y}
    THEN {XY}
    ELSE IF (C) [then] {Z}
    THEN {XYZ}
    ELSE {W}
    I.e. IF A then X, or-ELSE IF B then Y, and if-either A or B THEN XY too (XY after either X or Y), or-ELSE IF C then Z, and if-any A, B, C THEN XYZ too, or-ELSE if none A nor B nor C, (X or Y or Z) then W; and thereafter logically general-free again....

    It's important because the ELSE {W} can also belong to an outer-IF...[not]...

    N.B. This might also implement natural-language BUT-FIRST: e.g. IF(A){X} ELSE IF(B){Y} BUT-FIRST{XY-ANTE} THEN{XY-POST}.

    Also, Fix IF(A)IF(B)x;ELSE y; z ... because--

  • the semicolon ";" before ELSE should also ELSE-y on IF(A), as well as on IF(B);
  • the IF(B) needs a way to SKIP the z (without quipping FOR(i in i)...CONTINUE/BREAK...).

    SIMILARLY, The For... and For...In loops need a grand-Then-or-Else post-conclusion distinguished on whether the loop finished-all or broke-out-on-internal-if...Break: The loop exhausting all cases, would invoke the grand-Else: For...Else, is comparable to If...Else...Else.

    ALSO, For...Of should apply to attributes, and For...In to Array values.

    Also, Text and HTML need an intermediate HTxt that acts like Text alphabetically but retains its HTML as unrendered nulls, so that in-line FONT, B, BR, &c, are not lost in the final text-of-HTML-edition .... HTxt becomes a security-concern, and so is a third-type.

    '&NBSP;', the .toUppercase() of '&nbsp;' needs be an nb-space too .... Lots of HTML entities are in that dingy: Uppercase &delta; δ is &DELTA; and should be equivalent to &Delta; Δ at-least (but Math-entities should not re-case).

    IFNOT()/IF¬()-statements that handle object-extancy [temporal property exi-stance, not just program existence] properly ... equiv. to IF( !(extancy-and-logic) )

    At-least-one contemporary version among SCRIPT's, appears to not-implement constructors for methods with arguments: e.g. Construct Array.methods.item = Function(item) {for(i in this) if(this[i]==item) return this[i] ; ELSE return this.push(null)} ... cf Object.attribute and Array.item( (The .methods method is an intrinsic non-enumerated .prototype [interfaces] method).

    (N.B. this[i]==item, means value-equality distinct from identically this[i]===item.)

    Also desirable, deeper implied intent, for brevity:
    e.g. = function() {window.getSelection().removeAllRanges();window.getSelection().addRange(this)}
    even though some of its definition submethods are not-defined-as having return values...

    Better-choice logic-negation mark (cf ¬), as "!" really means "Do it!" not 'does-not' nor 'you're-not-doing-it...'

    SCRIPT FUNCTIONS (Caller-ID, argument persistence behavior)

    Each time a function is called, it should remember -by itself- the prior value/values of the argument/arguments ... It should-not have to rely on the calling scripts to each setup persistence variables and unique names, complexifying the simplicity:

    i. persistence of argument(s) prior value(s);
    ii. identification, and persistence thereto, of calling-scripts, caller-and-message;
    iii. eliminate old-style name-coding for multiple instances of the same call.
    It is the responsibility of certain types of functions to adjust for repeat calls from repeat-caller scripts ...

    e.g. A popup warning any time a peculiar segment of script is invoked, should-not require display-timing variable name-declarations in each calling script, to augment an otherwise-constant display-time ... A popup script should take that responsibility and recognize the caller and its message, and adjust display parameters (e.g. shorten time, shorten text) on repeat occurrences.

    This can be implemented by 'modifiable-constant' argument-- A function called with a constant, remembers the argument instance, the argument adjusted whether constant or variable, e.g. repeated warn("actor name missing",2000) calls be gradually reduced to 500ms.

    Conceptually, It does-not require caller-reprogramming name-generations, to do simple tasks for the program-user: It is a function's responsibility to know who-called and what-was-said ... like Caller-ID on a telephone-- yet contemporary script is too old-fashioned-fortran-esque, to handle that call....

    The old 'MOO' needs recognize functions and program-users as viable objects themselves.

    (N.B. some HTML4 had scripting objects, e.g. HTMLDivElement, String, etc., for prototyping methods)
    (N.B. HTML5 upgrades scripting to include these as "interfaces," e.g. HTMLDivElement, Range, String, etc.)


    Like search-or-find equality-vs-identity, functions too take parameters on call-by-name/reference and call-by-value/calculation, but scripting should go a step further to include call-by-tree/construction/concatenation i.e. such that parameter values can be returned through the call, like by-name/reference but combined, attributes, by 'climbing' back up their tree/construction/concatenation...

    (p.s. some function-oriented languages specify names for each listed parameter, like an assumed-constructed inline list object e.g. f(x=5,y=6).)



    ?N, !N, e.g. ?0,?1-?9,!0,!1-!9

    Output conditions:
    ?N 'if-$N',
    !N 'if-not-$N',
    ?0 'else',
    !0 'always';
    \?,\! are plaintext;

    Logical compounds:
    ?N1?N2 'if-$N1-and-$N2';
    ?N2?N1 'if-$N2-or-$N1' in implicit natural order;
    (n.b. this order may be the less-efficient because latter finds are oft conditioned on earlier, in the input evaluation);
    ?0 reverts from a condition string to non-conditional, (as does any of the !N),
    n.b. !0 can be used to break an AND-string into OR-strings, (Ordinarily a countdown does this, but in instances of process-speed it may be preferred to choose which condition is tested first, e.g. ?1?2?0?3?4 is ?1-AND-?2-OR-?3-AND-?4.)
    !0 means ELSE, a convenience, e.g. ?1?2first!0second is simpler than ?1?2first!1!2second.

    Enable on /c .

    e.g. "?1?2?2?3!1!3xxx" = (if ($1 and $2) or ($2 and $3) or ((not $1) and not $3) then) xxx

    e.g. html-to-rtf conversion, .replace(/&(:(lt)|(gt));/gic,"?1<?2>")

    SKIPLOCK/SKIPAHEAD (cf 'Lookbehind')


    Skip-when-found, the local-match-pointer is advanced to the end of the match, i.e. ignore the match-to-its-end without trying inside;
    (Skiplock is a Lookahead-option, equal (?=), not-equal (?!), pass over (??), like a forward-implementation of backward Lookbehind).

    N.B. This is an interim pointer that collapses-right upon match, without match-loss, within its ()-grouping, and locks-out until the front pointer passes ... the ??-doublet is a 'once-or-not-option' operator, but may be group-quantified /(??exception-rule)*/gic.

    e.g. Split an HTML string on free-/;/ not bound in HTML-entities, skipping such entities; The /;/-character being the tail of HTML-entities requires lookbehind... Skiplock /(??&[\w\d#]+;);/ will find a general HTML-entity and lockout-ignore it past its end, then find the free-/;/ ... Note the outer-subsequent /;/-semicolon is a reduplication as happens after lookahead.

    (cf Perl-style fixed-stare-lookbehind would require several |-alternations to check every possible length of HTML-&-entities.)
      Open-development questions:
    1. Should Skiplock update along the way and advance its release-pointer?
    2. Should multiple Skiplocks start from the inside-left-pointer, or inside-right-pointer?
    3. Should Skiplock be resettable, as when enclosed in a lookahead, and until stepped-on?
    Cf for replace(), a simplistic 'positive-lookbehind' might then be implemented by:
    /(??preface(?=(match)))\1/ where match is found by Lookahead, preface is Skiplocked, and match is refound by captured \1.


    ^ should match also the current-beginning new after each match, 'dragging the anchor'.
    ^^ would then be the absolute once-only beginning.
    n.b. 'Lookbehind' would need to drag and match $ likewise, with $$ the absolute ending.


    \s should match \240 rendered &nbsp; (Major contemporary implementations do not)
    n.b. RegExp/Regex no longer recognizes /[]>]/ (use verbatim-literal /[\]>]/) so that /[^]/ works equally consistently for 'everything'



    #FC3 = #FFCC33 = 0xFFCC33
    100px = 100 (default unit)
    100% = 1.00 (default unit)
    100em + 50em = 150em; 100% + 50% = 150%
    100em + 100en ≈ 145em (mixed arithmetic, default/preference; approx. ratio en ≈ ex)
    (HTML5 has some of this with css calc(a ± b) n.b. necessary spacing)


    2-6 letters; 7-8-letter only if shortest single word desirable not abbreviable, (cf 'mint, livid, lavend, lavender');
    Recognizable color-names common unto stereotypical:


    Special colors, modifiers, 2:4:1-pixel-spaced, regular, irregular, swirls:


    Names that can be read and correctly-interpreted in plaintext or preferentially-converted-to their corresponding font-set characters

    PLAINTEXT FONT-VARIATIONS (direct controls+keys, utf-x, iso-all)

    Special-code character-modifiers to effect sup/sub/over/under/invert/flip(rotate,turn)/sideways/tilt/bold/allcaps/... single/multiple; full set; (uniform, unlike contemporary special-entities, jumbly, gathered from other applications)


    Barely recognizable in contemporary scripting:
     Two objects may be--
    0. the same object (under differing reference names)
    1. defined the same (by-at-from-since the same original definition)
    2. set to the same definition (passed by others from the original definition)
    3. unchanged duplicates (by-at-from-since the same original definition)
    4. the same specification as the definition (the same parameters and values)
    5. similar specification as the definition (the corresponding parameters are the same)
    6. the same unrendered source value (cf htmlText)
    7. the same rendered value (cf text)
    8. the same said-value (e.g. <­img src=[icon] alt=[icon-as-text]; <­span alt=spelt)
    9. the same hover value (cf title e.g. img src=[icon] title=[icon-as-name])
    10. the same transcription value (æ ö ü vs. ae oe ue)
    11. the same trimmed verbal value (e.g. " spacy " vs. "spacy")
    12. the same alphabetic spelling value (e.g. "Capital" vs. "capital")
    13. the same reduced numeric value (e.g. "seven" "7" 7 6+1 17-mod-10 #7 7em)
    (Contemporary technology is a smattering mix-mess of operators and methods, spotty spotting.)


    Right-button-down grabs the document page for yanking, (whatever became of Scroll Lock).

    (N.B. HTML5 distinguishes touch-down grabbing-vs.-data-entry.)

    Touch-screens should also have two-touch range-specification.

    Touch-screens should also have control-keys and control-press-while-touching-text.

    (P.S. Keyboard upshift key-cap should show downshift when presuming up.)


    The Number Pad in-Num-Lock, does Cursor Control upon Shift, but not upon Ctrl:
     This is "utterly laughable" ... a qua-dribble fault:--
    1. The shiftKey is inaccessible by the right-thumb... "ngyuck ngyuck ngyuck"
     (unless pressing the ctrlKey with it... "ngyuck ngyuck ngyuck")
    2. The Cursor Controls are be-low the big, Number Pad Numbers... "har har har"
     (unless the Number Pad is read upside-down like a telephone... "har har har")
    3. The Number "1" always-was typewriter-Letter "l", so, uppercase "1"--
     always-was typewriter-Letter "L"-- not a Cursor Control... "Ha, Ha, Ha"
    4. And, Really-- the whole concept of Cursor "Control", is,-- Ctrl...!
    In total-- a misnomer, misnom[b]er;-- The question remaining,
     should Num-Lock be Ctrl-Lock too...?
    (I also suggest the "End" be on the lower-right key: not lower-left.)
    (And Number Pad "5" might be a finger-wiggle-Rovot-'mouse'-Control.)



     general user (typ. 10M×100 styles),
     uncertified application (typ. 1M×1K users),
     certified application (typ. 10K×100K users),
     certified browser (typ. 10×100M users),
     certified operating kernal (typ. 10×100M users),
     certified computation engine (typ. 10×100M users)

    Several premise discoveries under the title,

    Grand-Admiral Petry
    'Majestic Service in a Solar System'
    Nuclear Emergency Management

    © [1978-79 co-ARPAnet rev.], 2005-2018