Faculty at University of Pennsylvania's Department of Computer & Information Sciences. I love to teach, to mentor and advise students, to think "at scale", to build stuff open source, and to expand the circle of people who identify as "programmers."
- 🔭 I’m currently working on music digital humanities project + CS education, code grading/teaching projects
- 🌱 I’m currently learning TypeScript/React/front-end + machine learning
- 👯 I’m looking to collaborate on open-source projects, especially that reduce the friction to building
- 💬 Ask me about scaling, academic peer review, gamification, centralization/decentralization, capitalism, good software engineering practices, veganism 🐮
-
🎶
imslp
: A Python package to query and retrieve scores from the International Music Score Library Project (IMSLP). -
🎼
incipit
: A Python package and command line tool to slice a musical score into bars, staves and systems. Was originally designed to extract the first line of each of Domenico Scarlatti's 555 sonatas to create a searchable catalog with incipit.
You can also visit the GitHub organization of the Domenico Scarlatti Foundation.
-
☢️ React Templates
- Front-end only:
react-ts-starter
(React/TypeScript/GitHub Pages) - Front-end + database + login:
supabase-react-example
(React/JavaScript/GitHub Pages/Supabase)
- Front-end only:
-
🪚 Scraper template:
basic-git-scraper-example
(Python/GitHub Actions) -
🕸️ Website templates (Hugo/GitHub Actions/GitHub Pages):
- https://github.com/jlumbroso/hugo-github-example
- https://github.com/jlumbroso/hugo-geekdoc-github-example
- https://github.com/jlumbroso/hugo-timeline-example
- https://github.com/jlumbroso/hugo-github-bearblog-template
- https://github.com/jlumbroso/hugo-theme-bootstrap-skeleton
- https://github.com/jlumbroso/hugo-apero-github-template
-
📧 Google Spreadsheet Mail Merge: An easy-to-use template for no-coders to send mail merges with SendGrid from a list of recipients that is contained in a Google Spreadsheet.
-
🌊 Many data streaming probabilistic algorithms, including those I design and study, use families of hash functions. Hard to find families with good properties (simple, efficient, not too correlated). A affine transform of CRC32 hash, with factors drawn from Mersenne Twister provides a good empirical family. Details are tricky to get right—so I get them right for you!
- Python implementation at
python-random-hash
and available on PyPI; Java implementation available atjava-random-hash
, on Maven Central and GitHub Packages.
- Python implementation at
-
🙆🏼 Affirmative Sampling (2022) with Conrado Martínez (PDF), is a novel probabilistic sampling algorithm of which the size of the sample grows as a function of the (unknown) number of distinct elements, making it uniquely adaptive to queries that depend on the relative proportion of elements. Reference implemented in Python at
affirmative-sampling
-
HyperBitBit (2024) with Bob Sedgewick and Svante Janson, is a successor to HyperLogLog that uses half the memory: https://github.com/robert-sedgewick/hyperbitbit