RSS

Tools
Steg Hide or find zip archives in image files. Steg works offline as a single page static site. The tool combines a given image and zip archive (or a custom message) into a polyglot file. The produced file appears as either the image or the zip depending on whether its name ends with the original image extension or '.zip'. The tool can also separate a polyglot file back into a .zip and image file.
Tern Convert tables and 2D tabular data between formats. Made for plain-text tables, flat object lists, and key value pairs, the project covers a library of custom converters, and single page converter site. The tool handles simple JSON, ASCII, Markdown, CSV, TSV, and HTML data.
Perline Format text in a one sentence per line style. The project includes a live two-way converter tool with a maximum line width option for further semantic wrapping.
Folder Maker Make a zip of folders from lines of text.
Text Join Join text files into one text file. Works with any text based files: txt, md, html, css, js, json etc.
Text Split Split text files into parts based on their content. The tool can act on one file or a batch of files. It splits the text of each given file every time its content matches a given regex pattern or substring.
Stow Edit tables and store tabular data in a JSON format. Written in vanilla JavaScript, the GUI tool reads and writes local (gzipped) plain text files, runs offline in a Chromium browser, and bundles everything into a HTML monofile that weighs under 50KB.
Tbook Convert EPUBs to folders and chapters to MD text files. The project covers an open format and batch converter site.
Koad Edit and run JavaScript snippets live. This project features a simple to use and lightweight JavaScript playground that runs code live or on demand. Written in vanilla JS with no dependencies, this basic tool works offline in a browser as a single page static site.
Tasks Custom todo app (WIP)
Get Links Extract then act on URLs in pasted clipboard text. The tool lists unique links found in the plain and rich text system clipboards, to copy, save or batch open.
Mull Calculates named values, ranges and sums in plain text. A notepad style interface captures and names values and ranges to express sums clearly and make live calculations simpler to reason about, quicker to edit, and easier to read. When working with ranges, the tool presents side-by-side running totals for the potential minimums, averages, and maximums. The vanilla JavaScript tool runs offline in a browser and bundles to a single HTML file weighing under 20KB.
Static Site Generator Demo video of my portfolio site builder. Written in vanilla JavaScript to run offline in a browser, this tool has a simple drag and drop user interface to turn a folder of files into a ready-to-upload interlinked HTML + CSS site.
Zip-Look See the content of a zip file and extract select files.
Tools - Art/Image
Swotch Make limited palette PNGs and swatch SVGs from images. A single file ~14KB tool that runs offline in a browser. Written in vanilla JavaScript.
Armature Make composition guides for art and design work. The project presents a simple tool to generate composition design guides based on classical art theory. It covers harmonic symmetry, dynamic symmetry, rabatment, and other baroque ideas. The tool packs everything involved into a single html file which can run offline in a web browser. It features a simple UI with built in presets to control a custom JavaScript library, and can save the generated armatures as ready to use lightweight SVG vector files, and PNG raster images.
Chop Split one image to many and perform basic OCR. Written in vanilla JavaScript, Chop runs offline in a browser as a single page tool. The monofile version weighs <120KB.
JS Functions / Scripts / Libs
2024 Chute Use dot-notation like a pipeline operator.

Written as a vanilla JS function, Chute can chain and send data through a mix of functions and methods using a dot-notation style.

Without any setup steps, a single chute can alternate between: (A) calling any native or custom methods the current data has; and (B) sending the current data through functions (whether global-scope or local-scope, top level or deeply nested, made for chaining or not).

Chute works with unary, curried, and non-unary functions. Chute can send the current data through non-unary functions, at any specific argument position, by using its custom-namable placeholder variable. Chute also allows sub-chains and one-off inline functions at any step in a chute. Chute has its own page, as well as a repo at GitHub.

//Demo return chute(initialData)// begin a chute .regularMethod() //map reduce etc. //any external functions: .nameOfGlobalNativeOrCustomFn() .do(nameOfLocalScopeFn) .nameOfGlobal.nestedFn() //.JSON.stringify() | Math.… // etc. ()// End

With a setup step, Chute can do a few more things.

2022 Glon Format JSON-like data as a list (valid Markdown). The project introduces a Markdown compatible open format for plain-text data based on a bullet point list. It also includes a two way JSON to GLON converter tool, documentation, and a live playground site.
Snippets & Small Fns
Paste Intercept Act on pasted clipboard data before it lands.
Asides Paragraph / inline notes instead of footnotes. (HTML+CSS)
Split JS String Before, at, after, or around a pattern. A simple JavaScript function to split strings more easily.
Ideas
Monotext Typeset copy as monospace plain text. The project includes a markup syntax, a JavaScript tool, and a live playground site, to produce Monotext. It defines Monotext as monospace plain text typeset in a specific style that follows the conventions of typesetting with a typewriter.
Skip Parse plain text, markup and Markdown to HTML with JS/XSLT.
MD Editor Focus on one document section at a time.
Early Store and load page settings in URLs without JavaScript.
Colour Timestamps Use hex colour codes as timestamps. Generate short, case insensitive, chronologically sorted, 6 character strings, each mapped to a timestamp and hex colour. For IDs, reference stamps, and URL slugs.