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
- π―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