Mischa POSLAWSKY [Sun, 2 Jan 2022 00:00:51 +0000 (01:00 +0100)]
word/edit: remap/rename priority levels
Insert additional levels to distinguish within animal groups, such as
recent mapping of different species with various levels of notoriety.
Splits priority 2 and 3 into two options each:
UPDATE word SET prio = prio + 1 WHERE prio > 2;
0 essential → essential : core terms and categorisation
1 basic → ubiquitous : beginner level words
2 common → basic : internationally known
→ common : expected, readily recognisable
3 distinctive → distinctive : native names, popular genus
4 optional → specialised : significant species in field
5 invisible → rare : expert distinction or knowledge
invisible : placeholder group, ignored
For future listings of people, it would map to Brian Buckley's hierarchy
of fame <https://briandbuckley.com/2017/08/07/a-hierarchy-of-fame/>:
1 = l8 Incredulity (Einstein, Shakespeare, Jesus, Batman)
2 = l7 Reassessment− (Joan of Arc, Bill Gates, Moses, Vader)
3 = l6 Hiccup− (Newton, Jobs, Lennon, Lancelot, Jabba)
4 = l5 Ambivalence (Elon Musk, Carl Sagan, Lovecraft, Boba Fett)
5 = l4 Hiccup+ (Randall Munroe, Shigeru Miyamoto, Sylvia Plath, Mothma)
6 = l3 Reassessment+ (Douglas Hofstadter, Carl Linnaeus, Kosh)
7 = l2 Explanation (notable not famous: Lu Xun, Jane Espenson, Sim Aloo)
Mischa POSLAWSKY [Thu, 30 Dec 2021 07:14:29 +0000 (08:14 +0100)]
word/quiz: category selection from location hash
Mischa POSLAWSKY [Fri, 31 Dec 2021 13:35:54 +0000 (14:35 +0100)]
word/memory: manual grid size override option
Temporary workaround for unsupported aspect ratio and custom amounts.
Mischa POSLAWSKY [Fri, 31 Dec 2021 04:02:19 +0000 (05:02 +0100)]
word/edit: ignore missing binomial name in wp download
Mischa POSLAWSKY [Thu, 30 Dec 2021 07:05:35 +0000 (08:05 +0100)]
word/memory: pick cards to fit grid dimensions
Mischa POSLAWSKY [Thu, 30 Dec 2021 07:04:53 +0000 (08:04 +0100)]
word/multichoice: stop when answers run out
Mischa POSLAWSKY [Thu, 30 Dec 2021 02:41:30 +0000 (03:41 +0100)]
word/multichoice: skip imageless (unanswerable) questions
Mischa POSLAWSKY [Thu, 30 Dec 2021 07:04:05 +0000 (08:04 +0100)]
word/memory: celebration pause after each rotation
Normal visibility for 2 seconds.
Mischa POSLAWSKY [Thu, 30 Dec 2021 06:20:31 +0000 (07:20 +0100)]
word/memory: mirrored duplication of unpaired images
More typical gameplay operating on normal selections, but still distinguish
matches for added difficulty.
Mischa POSLAWSKY [Thu, 30 Dec 2021 04:55:21 +0000 (05:55 +0100)]
word/quiz: filter preset category and empty subcategories
Calculate category tree from references added in the previous commit.
Configure preset.cat to test.
Mischa POSLAWSKY [Thu, 30 Dec 2021 02:31:41 +0000 (03:31 +0100)]
word: language includes for general use
Reorder translation columns and add (possibly foreign) category references
as stable interface for quizzes. Exceptional category index format for .en
English moved to extensionless include.
Mischa POSLAWSKY [Thu, 30 Dec 2021 00:40:43 +0000 (01:40 +0100)]
word/quiz: preset configuration filters level
Manual option preset.cat to test difficulty selection.
Mischa POSLAWSKY [Thu, 30 Dec 2021 00:40:13 +0000 (01:40 +0100)]
word/wijzer: answers below image in vertical orientation
Mischa POSLAWSKY [Mon, 27 Dec 2021 02:02:38 +0000 (03:02 +0100)]
word/wijzer: quiz based on Per Seconde Wijzer
Mischa POSLAWSKY [Wed, 29 Dec 2021 05:04:34 +0000 (06:04 +0100)]
word/quiz: fisher-yates shuffle algorithm
Fixes very bad randomisation in some browsers.
Reference: <https://javascript.info/array-methods#shuffle-an-array>
Mischa POSLAWSKY [Wed, 29 Dec 2021 05:00:24 +0000 (06:00 +0100)]
word/quiz: common js function to shuffle arrays
Mischa POSLAWSKY [Thu, 30 Dec 2021 04:57:50 +0000 (05:57 +0100)]
word/quiz: common base class for all subpages
Only json loading from multichoice to start with.
Mischa POSLAWSKY [Thu, 30 Dec 2021 04:54:04 +0000 (05:54 +0100)]
word/quiz: rename initial subpage to multichoice
Free the generic name since most pages will be quizzes.
Mischa POSLAWSKY [Mon, 27 Dec 2021 00:00:54 +0000 (01:00 +0100)]
word: ignore non-numeric selection arguments
Mischa POSLAWSKY [Wed, 29 Dec 2021 04:23:31 +0000 (05:23 +0100)]
word: webp images at double resolution
Modern compression format supported by modern Imagemagick and browsers,
efficient enough to allow 600x400 quality (better detail @2x pixel density
or as workaround for upscaled covers and in quizzes, until dedicated
alternatives) at acceptable file sizes ~25kB.
Mischa POSLAWSKY [Sun, 26 Dec 2021 20:06:12 +0000 (21:06 +0100)]
word: store data entries as prepared subarrays
Time to split strings is comparable to directly loading structured values.
Considered hashes for scalability with more (optional) columns, but not
worth the cost at this time.
Benchmark loading 1264 rows in perl:
rate memory size
strings 468/s 52kB 15kB
split 257/s 152kB "
arrays 221/s 133kB 17kB
hashes 126/s 188kB 27kB
Mischa POSLAWSKY [Thu, 23 Dec 2021 02:12:13 +0000 (03:12 +0100)]
word/memory: fullscreen grid of 4x3 or 2x6 cards
Mischa POSLAWSKY [Thu, 23 Dec 2021 01:27:04 +0000 (02:27 +0100)]
word/memory: celebration animation on completion
Mischa POSLAWSKY [Sat, 11 Dec 2021 12:29:03 +0000 (13:29 +0100)]
dieren: fill remaining placeholders for paard and hond
Replace adjective forms by distinct entities, but also an obscure easter egg
over non-animal turnpaard.
Mischa POSLAWSKY [Wed, 24 Nov 2021 23:58:19 +0000 (00:58 +0100)]
source: subdirectory index for tools/
Mischa POSLAWSKY [Wed, 24 Nov 2021 23:51:05 +0000 (00:51 +0100)]
source: highlight preprocessor code like statements
Identify @media parts in css.
Mischa POSLAWSKY [Wed, 24 Nov 2021 23:48:49 +0000 (00:48 +0100)]
source: cache syntax highlighted html
Massive speedup on repeated requests since Text::VimColor is so slow
(but the only readily available option for plp syntax).
Mischa POSLAWSKY [Wed, 24 Nov 2021 23:45:16 +0000 (00:45 +0100)]
source: prepare highlighted lines before output
Code cleanup for readability and to facilitate upcoming caching.
Mischa POSLAWSKY [Wed, 17 Nov 2021 01:37:54 +0000 (02:37 +0100)]
browser: replace inter-feature links to caniuse.com
Mischa POSLAWSKY [Mon, 15 Nov 2021 20:28:21 +0000 (21:28 +0100)]
browser: indicate release year in version title
Mischa POSLAWSKY [Mon, 15 Nov 2021 20:27:24 +0000 (21:27 +0100)]
browser: retain prefix of merged agents
Mischa POSLAWSKY [Mon, 15 Nov 2021 19:41:49 +0000 (20:41 +0100)]
browser: merge deprecated agents on newer target
Originally inverted to keep deprecated names, but after this long Edge
should be more familiar than IE. Special case and_chr to keep shorter
"And." though.
Mischa POSLAWSKY [Mon, 15 Nov 2021 19:09:42 +0000 (20:09 +0100)]
browser: determine development status from version release
Instead of assuming special status of last three version columns,
convert version metadata into a lookup hash so it can be used.
Mischa POSLAWSKY [Mon, 15 Nov 2021 18:15:25 +0000 (19:15 +0100)]
browser: store only changed values in version support
Full storage does not scale well, taking over 1.2s to load the current 23MB
perl structure (mostly indentation, minified it's 3MB like the original json).
Simple deduplication reduces this to 2.6MB pp (800kB as json) which takes only
0.2s excluding parsing.
Mischa POSLAWSKY [Mon, 15 Nov 2021 18:12:57 +0000 (19:12 +0100)]
browser: coalesce duplicate agent version in caniuse data
Development version 95 in android is joined with and_chr.
Mischa POSLAWSKY [Mon, 15 Nov 2021 18:11:35 +0000 (19:11 +0100)]
browser: drop unused agent version metadata
Mischa POSLAWSKY [Mon, 15 Nov 2021 17:58:01 +0000 (18:58 +0100)]
browser: omit empty values from caniuse data
Currently shaves 460kB off 23MB.
Mischa POSLAWSKY [Mon, 15 Nov 2021 16:52:10 +0000 (17:52 +0100)]
latin: capital suetterlin letters on hover
Show additional divergent forms already available in font.
Restriction on first-letter seems broken in Firefox, but wanted to prevent
all-caps samples.
Mischa POSLAWSKY [Mon, 15 Nov 2021 16:51:46 +0000 (17:51 +0100)]
latin: enlarge horizontal domino tiles to letter height
Mischa POSLAWSKY [Mon, 15 Nov 2021 16:51:07 +0000 (17:51 +0100)]
latin: alternate tap styling using crossed dashes
Mischa POSLAWSKY [Mon, 15 Nov 2021 16:50:43 +0000 (17:50 +0100)]
latin: palm graffiti font placeholder
Downloaded from https://blogfonts.com/graffiti--palm--1.font as preview.
Mischa POSLAWSKY [Mon, 15 Nov 2021 16:43:40 +0000 (17:43 +0100)]
word: common language handling in quiz
Replace hardcoded nl include by same ?lang result as overview.
Mischa POSLAWSKY [Mon, 15 Nov 2021 16:42:59 +0000 (17:42 +0100)]
word/quiz: answer selection styling (hover)
Mischa POSLAWSKY [Mon, 1 Nov 2021 23:38:57 +0000 (00:38 +0100)]
word: prevent infinite loops on invalid data
Mischa POSLAWSKY [Wed, 10 Nov 2021 23:37:52 +0000 (00:37 +0100)]
sc: redirect subpage aliases to preferred canonical names
Mischa POSLAWSKY [Wed, 10 Nov 2021 03:15:57 +0000 (04:15 +0100)]
sc: display upgrade range of 0 bonus damage
Fix missing values for Hellbat and Tempest, after initial workaround in
commit
v1.11-29-g7813ee51b9 (2018-05-10) [visibility of optional hellbat
bonus damage].
Mischa POSLAWSKY [Wed, 10 Nov 2021 01:27:04 +0000 (02:27 +0100)]
sc: lotv unit updates to patch 5.0.2 BU
Changes copied from Blizzard patch notes.
Retains all earlier values since patch 4.1.4 hidden behind a hardcoded
version variable.
Mischa POSLAWSKY [Thu, 28 Oct 2021 00:20:18 +0000 (02:20 +0200)]
sc: lower precedence of hp order
Mischa POSLAWSKY [Sat, 16 Oct 2021 15:50:38 +0000 (17:50 +0200)]
sc: apply html paging to 404 errors
Mischa POSLAWSKY [Tue, 9 Nov 2021 03:10:17 +0000 (04:10 +0100)]
sitemap: link recently developed pages
In order: dieren, codec, sc/hots, keyboard, sample, plan.
Mischa POSLAWSKY [Mon, 8 Nov 2021 19:19:33 +0000 (20:19 +0100)]
base: group related columns and rows
Divide about halfway conveniently after decimal, and after every 8-16 rows.
Mischa POSLAWSKY [Sun, 7 Nov 2021 04:40:47 +0000 (05:40 +0100)]
index: link scope in git messages to existing page
Assumes prefix matches page names.
Mischa POSLAWSKY [Sun, 7 Nov 2021 04:36:31 +0000 (05:36 +0100)]
index: retrieve git log from cached text include
While git is fast, it still results in a ~50ms command for an otherwise
static ~5ms landing page. Run `make -B UPDATE` as post-commit git hook
(and post-rewrite, and post-checkout) on live checkouts.
Mischa POSLAWSKY [Sun, 7 Nov 2021 00:41:07 +0000 (01:41 +0100)]
digraphs: parse recent plan9 character additions
Fix syntax warnings for 2020-05-19 change in upstream repository to support
higher-plane unicode references. Record download rule for future validation.
Mischa POSLAWSKY [Tue, 2 Nov 2021 02:52:55 +0000 (03:52 +0100)]
codec: page intro from format data
Mischa POSLAWSKY [Tue, 2 Nov 2021 00:02:43 +0000 (01:02 +0100)]
codec: derive column groups from generation sequence
Not specific to hardcoded image formats.
Mischa POSLAWSKY [Sat, 30 Oct 2021 02:42:10 +0000 (04:42 +0200)]
codec: audio type with 5 lossy music formats
Some readily available facts and opinions about the most popular audio
codecs AFAIK.
Mischa POSLAWSKY [Sun, 31 Oct 2021 01:00:48 +0000 (02:00 +0100)]
codec: page request overrides image type
Mischa POSLAWSKY [Fri, 29 Oct 2021 20:28:14 +0000 (22:28 +0200)]
codec: constant table column widths
Styling hack assuming ≤10 similar cells regardless of missing data.
Mischa POSLAWSKY [Sun, 31 Oct 2021 00:59:03 +0000 (02:59 +0200)]
codec: netpbm (pnm) format for completeness
Does not compress, but significant for legacy Unix compatibility
and good as lossless baseline.
Mischa POSLAWSKY [Fri, 29 Oct 2021 18:52:23 +0000 (20:52 +0200)]
codec: calculate theoretical minimal overhead
Optimal sizes of 1x1 black images as researched by Jon Sneyers [1]
with later AVIF data [2] and 2021-10-25 breakthrough for JPEG-XL [3].
An example found for HEIC [4] may not be golfed, but kind of irrelevant
considering the container. Its 212 byte JPEG-2000 example is larger than a
naive ImageMagick conversion.
[1] https://cloudinary.com/blog/one_pixel_is_worth_three_thousand_words
[2] https://twitter.com/jonsneyers/status/
1333037638840967169
[3] https://twitter.com/jonsneyers/status/
1452727349405966341
[4] https://github.com/mathiasbynens/small/commit/
e05a006dd
Mischa POSLAWSKY [Fri, 29 Oct 2021 18:52:16 +0000 (20:52 +0200)]
codec: rate browser support in my biased opinion
Likely the most important and most subjective (except for jpeg ubiquity).
Of the newer formats currently only webp and avif have been widely adopted.
Personal bonus point for any kind of implementation or compatibility.
Mischa POSLAWSKY [Fri, 29 Oct 2021 16:29:00 +0000 (18:29 +0200)]
codec: technical values or details om hover
Explain disputable ratings like royalties, and other optional annotations
to clarify included source values and maybe prevent complaints.
Mischa POSLAWSKY [Fri, 29 Oct 2021 15:24:26 +0000 (17:24 +0200)]
codec: append data values to score array
Store as single entries as they are different representations of the same
results and should not be maintained separately.
Mischa POSLAWSKY [Fri, 29 Oct 2021 13:34:18 +0000 (15:34 +0200)]
codec: gif format (best effort comparison)
Should definitely be included as major legacy web format, despite palette
restrictions not present in other competitors. Colour quantisation can be
graded as quality loss similar to 4:2:0 subsampling.
Mischa POSLAWSKY [Fri, 29 Oct 2021 14:39:35 +0000 (16:39 +0200)]
codec: prefer webp for thumbnail fidelity
Diverge from the original assessment, likely thinking of an even lower
quality level for which jpeg-xl is less suited imho.
Mischa POSLAWSKY [Fri, 29 Oct 2021 13:57:29 +0000 (15:57 +0200)]
codec: categorise related features in groups
Mischa POSLAWSKY [Fri, 29 Oct 2021 13:26:59 +0000 (15:26 +0200)]
codec: grade numeric results and freeness levels
Mischa POSLAWSKY [Fri, 26 Feb 2021 11:15:03 +0000 (12:15 +0100)]
codec: compare 7 image encoding formats
An initial summary of current technologies following the completion of
JPEG-XL. Started out with original research, but then encountered an
article by Jon Sneyers with very similar results, so copied that instead:
https://cloudinary.com/blog/time_for_next_gen_codecs_to_dethrone_jpeg
Mischa POSLAWSKY [Thu, 28 Oct 2021 00:29:12 +0000 (02:29 +0200)]
plan: publish todo text as html page
Parsing as Markdown results in intended formatting after a single character
escape.
Mischa POSLAWSKY [Mon, 25 Oct 2021 21:04:23 +0000 (23:04 +0200)]
word: minify put.js library using uglifyjs
Reduce download size from 3.4kB compressed to just 1.2kB.
Dependency node-uglify chosen because of Debian availability.
Mischa POSLAWSKY [Mon, 25 Oct 2021 20:57:11 +0000 (22:57 +0200)]
word/memory: card game to find matching pairs
Another quiz concept well suited to this image dataset. Initially populated
with distinct sets of grebes (currently the only untranslated references) to
experiment with variance as a somewhat unique selling point.
Mischa POSLAWSKY [Mon, 25 Oct 2021 19:14:25 +0000 (21:14 +0200)]
word/edit: allow unnamed and/or untranslated entries
Alternative variants can be populated without textual distinction, for
example sexual dimorphism without specific terms, identified by category
override alone.
Probably still a good idea to describe eventually, but this is optional
metadata for visual presentations.
Mischa POSLAWSKY [Mon, 25 Oct 2021 14:36:10 +0000 (16:36 +0200)]
word/edit: search query ^ to search root categories
Also fix Unicode conversion for anything else.
Mischa POSLAWSKY [Wed, 20 Oct 2021 21:35:08 +0000 (23:35 +0200)]
word/quiz: rewrite javascript object to class
Mischa POSLAWSKY [Wed, 20 Oct 2021 21:33:04 +0000 (23:33 +0200)]
word/quiz: put-selector library to build html in js
An <10kB include (upto 1.2kB minified and compressed) to facilitate element
wrangling without need for larger jqueries and the like. Easier to maintain
and should save more.
Mischa POSLAWSKY [Mon, 25 Oct 2021 21:07:22 +0000 (23:07 +0200)]
word: make target to build include dependencies
Mischa POSLAWSKY [Mon, 25 Oct 2021 22:29:08 +0000 (00:29 +0200)]
htaccess: upgrade only sheet.shiar.nl, redirect .net tld
No valid ssl certificate for dev domain and other checkouts.
Mischa POSLAWSKY [Wed, 20 Oct 2021 22:22:05 +0000 (00:22 +0200)]
htaccess: align rewrite configuration arguments
Mischa POSLAWSKY [Wed, 20 Oct 2021 22:20:26 +0000 (00:20 +0200)]
htaccess: https redirect on Upgrade-Insecure-Requests header
Enables encryption on most modern browsers as frequently recommended,
without forcing (old or slow) clients if they don't need or want to.
Mischa POSLAWSKY [Wed, 20 Oct 2021 21:39:27 +0000 (23:39 +0200)]
termcol: move ansi88 to legacy page
Rarely used since rxvt-unicode compiles with 256 colours by default
(even in Debian nowadays).
Mischa POSLAWSKY [Wed, 20 Oct 2021 21:39:11 +0000 (23:39 +0200)]
termcol: import ZX Spectrum fan palette zxarne
Another nostalgic design by Arne Jansson, similar to his cgarne.
> Palette here is WIP (v5.2). It was initially more graphical and saturated,
> but I decided to give more of a natural or photographic focus.
> By replacing the bright magenta with a brown it lost graphical width,
> but gained the ability to... do strip poker games.
Mischa POSLAWSKY [Wed, 20 Oct 2021 21:40:49 +0000 (23:40 +0200)]
index: link to dieren page
Mischa POSLAWSKY [Mon, 18 Oct 2021 22:03:19 +0000 (00:03 +0200)]
dieren: aliases in name definitions (instead of image symlinks)
Move metadata from untracked file names.
Mischa POSLAWSKY [Sun, 17 Oct 2021 11:35:03 +0000 (13:35 +0200)]
dieren: reduced captions on mobile screens <960px
Focus on image visibility if width is insufficient for full labeling.
Mischa POSLAWSKY [Sun, 17 Oct 2021 11:34:27 +0000 (13:34 +0200)]
dieren: regular cell width regardless of contents
Mischa POSLAWSKY [Sat, 16 Oct 2021 22:01:05 +0000 (00:01 +0200)]
dieren: high-resolution webp image alternatives
Modern compression format allows for much higher quality at the same size,
enough for (1920px / 3 columns) or 2x DPR at previous 320px width, even then
with generally less visible artifacts than JPEG; in direct comparison only
pig (and its porpoise sibling) are significantly worse due to lost details.
Automatically served by Apache if advertised in client Accept header
(currently supported by 95% ie all modern browsers).
Mischa POSLAWSKY [Sat, 16 Oct 2021 16:07:05 +0000 (18:07 +0200)]
dieren: 3 column beknopt mode of 39 custom words
Mischa POSLAWSKY [Sat, 16 Oct 2021 15:52:29 +0000 (17:52 +0200)]
dieren: aggregate distinctive subpage metadata
Mischa POSLAWSKY [Sat, 16 Oct 2021 15:10:57 +0000 (17:10 +0200)]
dieren: fill last placeholders and improve existing words
Mischa POSLAWSKY [Sat, 16 Oct 2021 22:58:25 +0000 (00:58 +0200)]
font: fix code warning about sprintf arguments
Mischa POSLAWSKY [Fri, 15 Oct 2021 11:42:20 +0000 (13:42 +0200)]
word/edit: ignore unicode in json metadata
The shorthand function enables utf8 for binary safety, but breaks on
"wide characters" in our encoded values (such as in label convert options).
Mischa POSLAWSKY [Fri, 15 Oct 2021 11:29:37 +0000 (13:29 +0200)]
word/edit: align translations list, last item right
Mischa POSLAWSKY [Fri, 15 Oct 2021 10:46:11 +0000 (12:46 +0200)]
htaccess: prevent directory indexes in case of mod_autoindex
Disabled on the current server, but probably installed by default.
Mischa POSLAWSKY [Fri, 15 Oct 2021 10:42:28 +0000 (12:42 +0200)]
word/edit: replace hardcoded urls to the current page
Mischa POSLAWSKY [Thu, 14 Oct 2021 16:45:19 +0000 (18:45 +0200)]
word: workaround unicode breakage in edit subpage
Prevent some perl/PLP quirkiness with encoded scalars.
Mischa POSLAWSKY [Fri, 15 Oct 2021 10:37:55 +0000 (12:37 +0200)]
word: move subpages and includes to word/ directory
Mischa POSLAWSKY [Thu, 14 Oct 2021 16:50:15 +0000 (18:50 +0200)]
word: prefer reference image id in exportform rows
Mischa POSLAWSKY [Fri, 20 Aug 2021 13:50:19 +0000 (15:50 +0200)]
countries: ?v script to compare unicode flags
Mischa POSLAWSKY [Wed, 21 Feb 2018 08:56:40 +0000 (09:56 +0100)]
keys: experiment to omit keyless rows