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
- 🌟Ada, 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
- 👯Tiling with Three Polygons is Undecidable: Implementation of a paper converting Wang tiles into three polygons with equivalent tilings
- 👯PokeTree: Animated demos of Binary Search Trees (BSTs) and AVL trees with Pokémon
- 👯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
- 👯Texlish: Better LaTeX that compiles to 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, PokeTree, shtml2html, Sliding Squares Puzzle, Tiling with Three Polygons is Undecidable, 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