I'm an independent full time open source developer.
I work on projects in the TypeScript ecosystem, most notably typescript-eslint: the tooling that enables ESLint and Prettier to run on TypeScript code. I'm also the author of O'Reilly's Learning TypeScript book, a Microsoft MVP for developer technologies, and an active conference speaker.
My personal projects range from static analysis to meta-languages to recreating retro games in the browser. Also cats. 🐱
Because I'm independent, I rely on sponsors to fund my work. They deserve our sincere appreciation and gratitude.
Platinum Sponsors (>=$100/mo) | Gold Sponsors (>=$25/mo) | Silver Sponsors (>=$10/mo) | Bronze Sponsors (>=$5/mo) |
---|---|---|---|
💚 Motivated to support my work, or just want your image here? See my GitHub Sponsors profile. Thanks!
If you work with JavaScript or TypeScript, you may have used one of the open source projects I support:
Project ⚙️ | Description 📝 | Role 🧑🏭 | Stars ⭐ |
---|---|---|---|
eslint | Find and fix problems in your JavaScript code. | Committer | |
mocha | ☕️ simple, flexible, fun javascript test framework for node.js & the browser | Maintainer | |
typescript-eslint | ✨ Monorepo for all the tooling which enables ESLint to support TypeScript | Maintainer | |
TypeStat | Converts JavaScript to TypeScript and TypeScript to better TypeScript. 🧫 | Creator & maintainer | |
create-typescript-app | Quickstart-friendly TypeScript template with comprehensive, configurable, opinionated tooling. 💝 | Creator & maintainer |
I also have an interest in making web apps more delightful. These projects will help you add emoji delighters to your page quickly.
Project ⚙️ | Description 📝 | Role 🧑🏭 | Stars ⭐ |
---|---|---|---|
node-emoji | 💖 simple emoji support for node.js projects | Junior maintainer | |
emoji-blast | Blasts emoji like fireworks all up in your HTML page. 🎆 | Creator & maintainer | |
emojipedia | Unofficial static export of emoji technical information from Emojipedia. 📙 | Creator & maintainer | |
emoji-platform-data | Static export of platform-specific metadata for unicode emojis. 🗝️ | Creator & maintainer |
These projects I do because I think they're fascinating and/or fun, if not particularly useful:
Project ⚙️ | Description 📝 | Role 🧑🏭 | Stars ⭐ |
---|---|---|---|
FullScreenMario | An HTML5 remake of the original Super Mario Brothers - expanded for wide screens. | Creator | |
FullScreenPokemon | A free HTML5 remake of the original Pokemon, expanded for modern browsing. | Creator & maintainer | |
EightBittr | Bare-bones, highly modular game engine for 2D 8-bit games. | Creator & maintainer | |
ChooseYourFramework | Choosing a modern JavaScript UI framework, Pokemon-style. | Creator & maintainer | |
Budgie | A unified syntax that compiles into your favorite OOP languages. 🦜 | Creator & maintainer |
I work on assorted projects in the JavaScript/TypeScript ecosystem that make it easier to write high quality applications.
Project ⚙️ | Description 📝 | Role 🧑🏭 | Stars ⭐ |
---|---|---|---|
dedent | ⬅️ ES6 string tag that strips indentation from multi-line strings. | Adoptive maintainer | |
package.json-validator | Tools to validate package.json files | Creator & maintainer | |
eslint-plugin-package-json | Rules for consistent, readable, and valid package.json files. 🗂️ | Adoptive maintainer | |
eslint-plugin-expect-type | ESLint plugin with ^? Twoslash, $ExpectError, and $ExpectType type assertions. 🧩 | Adoptive maintainer | |
ts-api-utils | Utility functions for working with TypeScript's API. Successor to the wonderful tsutils. 🛠️️ | Creator & maintainer | |
prettier-plugin-curly | Prettier plugin to enforce consistent brace style for all control statements. 🥌 | Creator & maintainer | |
refined-saved-replies | Chrome extension for GitHub's Saved Replies that adds replies from a repository's `.github/replies.yml`. 📨 | Creator & maintainer | |
ts-function-inliner | TypeScript transformation that inlines calls to small functions. ⚡️ | Creator & maintainer | |
mock-react-redux | Mocks out Redux actions and selectors for clean React Jest tests. 🎭 | Creator & maintainer | |
github-username-to-emails | Fetches any public emails associated with a GitHub username. 📧 | Creator & maintainer | |
console-fail-test | Gently fails test runs if the console was used during them. 📢 | Creator & maintainer | |
should-semantic-release | Checks whether a semantic release should be run for a repository. 💂 | Creator & maintainer | |
cached-factory | Creates and caches values under keys. 🏭 | Creator & maintainer | |
all-contributors-auto-action | Fills in missing allcontributors entries for a repository. 👪 | Creator & maintainer | |
sentences-per-line | Contributed markdownlint rule for limiting sentences per line. 📐 | Creator & maintainer | |
tidelift-me-up-site | Web app to find your npm packages eligible for Tidelift funding. 💸 | Creator & maintainer | |
are-docs-informative | Checks whether a documentation description introduces any new information. ℹ️ | Creator & maintainer | |
tidelift-me-up | Finds your npm packages that are eligible for Tidelift funding. 💸 | Creator & maintainer | |
release-it-action | Runs release-it as a GitHub Action, with handling for semantic releases and protected branches. 📤 | Creator & maintainer | |
get-github-auth-token | Retrieves the running user's GitHub authentication token. 🪙 | Creator & maintainer | |
github-sponsors-to-markdown | Creates a Markdown table summarizing your GitHub sponsors. 💰 | Creator & maintainer | |
github-username-to-emails-site | Web app to fetch any public emails associated with a GitHub username. 📧 | Creator & maintainer | |
prune-github-notifications | Prunes GitHub notifications you don't care about, such as automated dependency bumps. 🧹 | Creator & maintainer | |
console-table-without-index | The built-in Node.js console.table, but without the annoying (index) column. 📊 | Creator & maintainer | |
description-to-co-authors | Parses co-authors from Git/GitHub-style commit messages. ✍️ | Creator & maintainer | |
text-table-fast | Generates borderless text table strings suitable for printing to stdout. Fast. 🏁 | Creator & maintainer | |
all-contributors-for-repository | Generates an allcontributors list for an existing repository. 🤝 | Creator & maintainer | |
npm-username-to-packages | Fetches any packages associated with an npm username. 📨 | Creator & maintainer | |
co-author-to-username | Fetches the GitHub username for a co-author, if possible. 📇 | Creator & maintainer | |
notion-rich-text-to-markdown | Converts Notion's rich text strings to Markdown. 🪢 | Creator & maintainer | |
sinon-timers-repeatable | A version of Sinon's `useFakeTimers` that you can call multiple times in a test. ⏱️ | Creator & maintainer |
See .github/CONTRIBUTING.md
, then .github/DEVELOPMENT.md
.
Thanks! 💖
Josh Goldberg 🎨 🐛 💻 🚧 🔧 🚇 |
💙 This package is templated with create-typescript-app.