I lead (๐) and/or contribute to (๐ฏ) the following open-source projects and documents, some of which are forks (๐ด):
- ๐Cosuite for better meetings and teaching
- Origami
- ๐ฏFOLD is a file format for origami designs/meshes, and JavaScript code to manipulate them
- ๐ฏOrigami Simulator simulates paper folding
- ๐Crease Pattern Editor
- Art
- ๐Algorithmic Character Layout generates random perspective arrangements of images, as used by our Hanging Out sculpture
- ๐ฏVirtual Glass simulates glass blowing, especially cane
- ๐Word Ladder Designer lets you explore sequences like CAT โ COT โ DOT โ DOG.
- ๐Mathematical and puzzle fonts
- ๐Coin Sliding, Cube Folding, Impossible Folding, Integer Sequence, Juggling, Orthogonal Fold & Cut, Path Puzzles, Spiral Galaxies, Strip Folding, Sudoku, Tatamibari, Tetris, Voronoi, Yin Yang
- ๐font-webapp is a small frontend framework (built on furls) for building these apps
- ๐furls is a small frontend framework for synchronizing form state with the page URL
- Talks/slides using a combination of RevealJS, Pug/Stylus, SVG Tiler, etc.
- ๐ฏEvery Author as First Author
- ๐Puzzle Fonts About Puzzles
- ๐Token Swapping and Robot Pivoting
- ๐ฏYin-Yang Puzzles are NP-complete
- ๐Token Swapping on Trees
- ๐reveal-pug-talk is the template for this powerful combination of slide creation technology, and is the basis for the above talks
- ๐Timer counts down remaining time for live presentations
- Mathematics
- ๐ฏEvery Author as First Author: source code for a humorous paper about stacking names on top of each other
- ๐ฏTOPP: The Open Problems Project lists open problems in computational geometry
- ๐mathcestor renders academic ancestor trees from Mathematics Genealogy Project, such as mine
- ๐beancount counts how many papers and coauthors each author has according to DBLP
- Video games
- ๐ดAs-Toroids is higher-genus Asteroids
- ๐Attractor implements magnetic puzzles/counterexamples from a paper
- ๐ฏBust-a-Move / Puzzle Bobble clone with hardness gadgets
- ๐Sliding Squares Puzzle implements the classic n2ย โย 1 puzzle in Solid and Civet, with sliding animations
- ...replacing ๐ด8 puzzle which is a small fork of a 15-puzzle implementation
- ๐ด2048 without merging illustrates a 2048 variation studied in a paper
- ๐recursed-xls2lua makes it easier to design custom Recursed levels
- Figure drawing tools
- ๐SVG Tiler combines SVG tiles according to ASCII art or a spreadsheet
- ๐svgink converts SVG to PDF/PNG via Inkscape
- ๐Computational Geometry Playground lets you interactively write code that computes and renders geometric objects
- LaTeX
- ๐ฏKaTeX renders LaTeX to HTML [maintainer]
- ๐tex2svg-webworker renders LaTeX to SVG in a Web Worker (used by Cocreate)
- ๐ฏCivet is a new programming language that merges modern ECMAScript/TypeScript with CoffeeScript and lots of additional language features and syntactic sugar, transpiling to ECMAScript or TypeScript
- ๐ฏHera is the parser generator that Civet is based on
- Projects here written in Civet: Algorithmic Character Layout, beancount, mathcestor, shtml2html, Sliding Squares Puzzle, Word Ladder Designer
- ๐ฏCoffeeScript
- ๐CoffeeScript for Python programmers: a guide
- ๐python2coffee attempts to convert Python โ CoffeeScript automatically
- ๐WIP branch with TypeScript support (effort moved to Civet)
- Babel
- ๐babel-plugin-module-deps tracks which CJS modules
require
/import
which others for dependency tracking (used by SVG Tiler)
- ๐babel-plugin-module-deps tracks which CJS modules
- ๐ฏSolidJS is a front-end JavaScript framework [docs and ecosystem teams]
- Meteor integration
- ๐meteor-solid supports the SolidJS compiler in Meteor
- ๐solid-meteor-data provides primitives for combining Solid and Meteor reactivity
- ๐solid-meteor-demo is a simple example illustrating the above
- ๐meteor-solid-template-helper enables use of Solid components inside Meteor Blaze templates
- ๐ฏsolid-bootstrap: Bootstrap 5 components
- Meteor integration
- Meteor is a full-stack JavaScript framework
- ๐ดedemaine:file-collection stores uploaded files in MongoDB GridFS (used by Coauthor)
- ๐ดedemaine:sharejs is an aging integration with CodeMirror 5 and ShareJS (used by Coauthor)
- ๐edemaine:static-pug renders static Pug content
- ๐ด@edemaine/meteor-tracker is an NPM version of
meteor/tracker
andmeteor/reactive-var
for testing simple Meteor code without Meteor (used by solid-meteor-data)
- ๐preact-render-to-dom converts Preact VDOM to DOM or xmldom or jsdom without reactivity, faster than stringifying and parsing (used by SVG Tiler)
- ๐ดcodemirror-spell-checker adds basic English spell checking to CodeMirror 4
- ๐shtml2html statically renders Apache's server-parsed HTML
- Discord/Slack
- ๐ดslack-backup exports Slack data (including private channels) for Discord import
- Web scripts
- ๐dark-monkey adds dark(er) modes to some websites
- ๐github-issue.js minimalizes a GitHub issue for printing as a referee response
- ๐when2meet-subset.js enables toggling subset of users in when2meet results view