An open API service indexing awesome lists of open source software.

https://github.com/s0/s0

Personal website and profile bio
https://github.com/s0/s0

Last synced: about 2 months ago
JSON representation

Personal website and profile bio

Awesome Lists containing this project

README

          

![](https://github.com/s0/s0/raw/main/header.svg)

## Find me on...

* [NPM](https://www.npmjs.com/~s0)
* [Twitter](https://twitter.com/samlanning)
* [LinkedIn](https://www.linkedin.com/in/smlanning/)

## Previous endeavours

* [Synesthesia Project](https://synesthesia-project.org/) -
An open source lighting & sound project
* [Reach4Help](https://reach4help.org/) -
A global volunteer-run initiative bridging the gap between people in need and
volunteers who can help through the COVID-19 pandemic and beyond.
* [Queerious Labs](https://queeriouslabs.com/) -
A queer, anarchafeminist art+tech community workshop.

## Educational Content

* [Resources for teaching Coding & Computer Science](https://s0.github.io/teaching-resources/)

## Public speaking

* Jan 2023 - Refresh - [Why Use TypeScript and How to Migrate Your Large Projects (Video)](https://www.youtube.com/watch?v=pGKVVFnnaC0)
* No More Whack-a-Mole: How to Find and Prevent Entire Classes of Security
Vulnerabilities:
* [Nov 2019 - BLACK ALPS (Video)](https://www.youtube.com/watch?v=7pXvZsMRVig)
* [Sep 2019 - OWASP Global AppSec Amsterdam (Video)](https://www.youtube.com/watch?v=1wbt1xM9jUc)
* [Sep 2019 - BalCCon2k19 (Video)](https://www.youtube.com/watch?v=HMXa26xJE9Q)
* [May 2019 - RVAsec (Video)](https://www.youtube.com/watch?v=IY7fL7Tkxxc)
* Jul 2019 - OSCON - [Writing npm (JavaScript) libraries using TypeScript (Video)](https://www.youtube.com/watch?v=m6Jr6w0W1xw)
* Jul 2019 - OSCON - [How TypeScript is transforming the JavaScript ecosystem (Video)](https://www.youtube.com/watch?v=b8AHUXxGas8)
* Oct 2018 - Oracle Code One - [How to Avoid 0-Days Due to Unsafe Deserialization [DEV5219] (Joint talk with Oege de Moor & Bas van Schaik)](https://oracle.rainfocus.com/widget/oracle/oow18/catalogcodeone18?search=DEV5219)
* Oct 2018 - GitHub Universe Demo Desk - [Finding and preventing bugs with LGTM (Video)](https://www.youtube.com/watch?v=aXqUWZYlFzs)
* Jan 2017 - Noisebridge 5MOF - [Lights & Music (Video)](https://www.youtube.com/watch?v=egsswPi8yio)

## GitHub Actions

### [`git-publish-subdir-action` - Push git subdirectory as branch](https://github.com/marketplace/actions/push-git-subdirectory-as-branch)

[![](https://github.com/s0/git-publish-subdir-action/workflows/Scheduled%20tests/badge.svg)](https://github.com/s0/git-publish-subdir-action/actions?workflow=Scheduled+tests) [![codecov](https://codecov.io/gh/s0/git-publish-subdir-action/branch/develop/graph/badge.svg)](https://codecov.io/gh/s0/git-publish-subdir-action) [![](https://raw.githubusercontent.com/s0/git-publish-subdir-action/gh-badges/drift.svg)](https://github.com/s0/libyear-node-action) [![](https://raw.githubusercontent.com/s0/git-publish-subdir-action/gh-badges/releases.svg)](https://github.com/s0/libyear-node-action)

### [`libyear-node-action` - Node dependency libyear stats & PR checks](https://github.com/marketplace/actions/node-dependency-libyear-stats-pr-checks)

[![codecov](https://codecov.io/gh/s0/libyear-node-action/branch/develop/graph/badge.svg)](https://codecov.io/gh/s0/libyear-node-action) [![](https://raw.githubusercontent.com/s0/libyear-node-action/badges/drift.svg)](https://github.com/s0/libyear-node-action) [![](https://raw.githubusercontent.com/s0/libyear-node-action/badges/releases.svg)](https://github.com/s0/libyear-node-action)

## NPM Packages

### [get-relative-path](https://github.com/s0/ts-util/tree/develop/get-relative-path)

![](https://badgen.net/npm/v/get-relative-path?icon=npm&label=) ![](https://img.shields.io/npm/types/get-relative-path) [![Language grade: JavaScript](https://img.shields.io/lgtm/grade/javascript/g/s0/ts-util.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/s0/ts-util/context:javascript) ![](https://badgen.net/npm/dt/get-relative-path?icon=npm) ![](https://badgen.net/npm/dm/get-relative-path?icon=npm) ![](https://badgen.net/github/open-prs/s0/ts-util?icon=github) ![](https://badgen.net/github/open-issues/s0/ts-util?icon=github) ![](https://badgen.net/github/stars/s0/ts-util?icon=github)

### [remark-code-extra](https://github.com/s0/remark-code-extra)

![](https://badgen.net/npm/v/remark-code-extra?icon=npm&label=) ![](https://img.shields.io/npm/types/remark-code-extra) [![Language grade: JavaScript](https://img.shields.io/lgtm/grade/javascript/g/s0/remark-code-extra.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/s0/remark-code-extra/context:javascript) ![](https://badgen.net/npm/dt/remark-code-extra?icon=npm) ![](https://badgen.net/npm/dm/remark-code-extra?icon=npm) ![](https://badgen.net/github/open-prs/s0/remark-code-extra?icon=github) ![](https://badgen.net/github/open-issues/s0/remark-code-extra?icon=github) ![](https://badgen.net/github/stars/s0/remark-code-extra?icon=github)

### [remark-tree-sitter](https://github.com/s0/remark-tree-sitter)

![](https://badgen.net/npm/v/remark-tree-sitter?icon=npm&label=) ![](https://img.shields.io/npm/types/remark-tree-sitter) [![Language grade: JavaScript](https://img.shields.io/lgtm/grade/javascript/g/s0/remark-tree-sitter.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/s0/remark-tree-sitter/context:javascript) ![](https://badgen.net/npm/dt/remark-tree-sitter?icon=npm) ![](https://badgen.net/npm/dm/remark-tree-sitter?icon=npm) ![](https://badgen.net/github/open-prs/s0/remark-tree-sitter?icon=github) ![](https://badgen.net/github/open-issues/s0/remark-tree-sitter?icon=github) ![](https://badgen.net/github/stars/s0/remark-tree-sitter?icon=github)

### [tree-sitter-hast](https://github.com/s0/tree-sitter-hast)

![](https://badgen.net/npm/v/tree-sitter-hast?icon=npm&label=) ![](https://img.shields.io/npm/types/tree-sitter-hast) [![Language grade: JavaScript](https://img.shields.io/lgtm/grade/javascript/g/s0/tree-sitter-hast.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/s0/tree-sitter-hast/context:javascript) ![](https://badgen.net/npm/dt/tree-sitter-hast?icon=npm) ![](https://badgen.net/npm/dm/tree-sitter-hast?icon=npm) ![](https://badgen.net/github/open-prs/s0/tree-sitter-hast?icon=github) ![](https://badgen.net/github/open-issues/s0/tree-sitter-hast?icon=github) ![](https://badgen.net/github/stars/s0/tree-sitter-hast?icon=github)

### [gatsby-remark-tree-sitter](https://github.com/s0/gatsby-remark-tree-sitter)

![](https://badgen.net/npm/v/gatsby-remark-tree-sitter?icon=npm&label=) ![](https://img.shields.io/npm/types/gatsby-remark-tree-sitter) [![Language grade: JavaScript](https://img.shields.io/lgtm/grade/javascript/g/s0/gatsby-remark-tree-sitter.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/s0/gatsby-remark-tree-sitter/context:javascript) ![](https://badgen.net/npm/dt/gatsby-remark-tree-sitter?icon=npm) ![](https://badgen.net/npm/dm/gatsby-remark-tree-sitter?icon=npm) ![](https://badgen.net/github/open-prs/s0/gatsby-remark-tree-sitter?icon=github) ![](https://badgen.net/github/open-issues/s0/gatsby-remark-tree-sitter?icon=github) ![](https://badgen.net/github/stars/s0/gatsby-remark-tree-sitter?icon=github)

### [tree-sitter-ql](https://github.com/s0/tree-sitter-ql)

![](https://badgen.net/npm/v/tree-sitter-ql?icon=npm&label=) ![](https://img.shields.io/npm/types/tree-sitter-ql) [![Language grade: JavaScript](https://img.shields.io/lgtm/grade/javascript/g/s0/tree-sitter-ql.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/s0/tree-sitter-ql/context:javascript) ![](https://badgen.net/npm/dt/tree-sitter-ql?icon=npm) ![](https://badgen.net/npm/dm/tree-sitter-ql?icon=npm) ![](https://badgen.net/github/open-prs/s0/tree-sitter-ql?icon=github) ![](https://badgen.net/github/open-issues/s0/tree-sitter-ql?icon=github) ![](https://badgen.net/github/stars/s0/tree-sitter-ql?icon=github)

### [gatsby-remark-highlight.js](https://github.com/s0/gatsby-remark-highlight.js)

![](https://badgen.net/npm/v/gatsby-remark-highlight.js?icon=npm&label=) ![](https://img.shields.io/npm/types/gatsby-remark-highlight.js) [![Language grade: JavaScript](https://img.shields.io/lgtm/grade/javascript/g/s0/gatsby-remark-highlight.js.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/s0/gatsby-remark-highlight.js/context:javascript) ![](https://badgen.net/npm/dt/gatsby-remark-highlight.js?icon=npm) ![](https://badgen.net/npm/dm/gatsby-remark-highlight.js?icon=npm) ![](https://badgen.net/github/open-prs/s0/gatsby-remark-highlight.js?icon=github) ![](https://badgen.net/github/open-issues/s0/gatsby-remark-highlight.js?icon=github) ![](https://badgen.net/github/stars/s0/gatsby-remark-highlight.js?icon=github)

### [remark-code-frontmatter](https://github.com/s0/remark-code-frontmatter)

![](https://badgen.net/npm/v/remark-code-frontmatter?icon=npm&label=) ![](https://img.shields.io/npm/types/remark-code-frontmatter) [![Language grade: JavaScript](https://img.shields.io/lgtm/grade/javascript/g/s0/remark-code-frontmatter.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/s0/remark-code-frontmatter/context:javascript) ![](https://badgen.net/npm/dt/remark-code-frontmatter?icon=npm) ![](https://badgen.net/npm/dm/remark-code-frontmatter?icon=npm) ![](https://badgen.net/github/open-prs/s0/remark-code-frontmatter?icon=github) ![](https://badgen.net/github/open-issues/s0/remark-code-frontmatter?icon=github) ![](https://badgen.net/github/stars/s0/remark-code-frontmatter?icon=github)

### [gatsby-remark-code-frontmatter](https://github.com/s0/gatsby-remark-code-frontmatter)

![](https://badgen.net/npm/v/gatsby-remark-code-frontmatter?icon=npm&label=) ![](https://img.shields.io/npm/types/gatsby-remark-code-frontmatter) [![Language grade: JavaScript](https://img.shields.io/lgtm/grade/javascript/g/s0/gatsby-remark-code-frontmatter.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/s0/gatsby-remark-code-frontmatter/context:javascript) ![](https://badgen.net/npm/dt/gatsby-remark-code-frontmatter?icon=npm) ![](https://badgen.net/npm/dm/gatsby-remark-code-frontmatter?icon=npm) ![](https://badgen.net/github/open-prs/s0/gatsby-remark-code-frontmatter?icon=github) ![](https://badgen.net/github/open-issues/s0/gatsby-remark-code-frontmatter?icon=github) ![](https://badgen.net/github/stars/s0/gatsby-remark-code-frontmatter?icon=github)

### [gatsby-remark-code-extra](https://github.com/s0/gatsby-remark-code-extra)

![](https://badgen.net/npm/v/gatsby-remark-code-extra?icon=npm&label=) ![](https://img.shields.io/npm/types/gatsby-remark-code-extra) [![Language grade: JavaScript](https://img.shields.io/lgtm/grade/javascript/g/s0/gatsby-remark-code-extra.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/s0/gatsby-remark-code-extra/context:javascript) ![](https://badgen.net/npm/dt/gatsby-remark-code-extra?icon=npm) ![](https://badgen.net/npm/dm/gatsby-remark-code-extra?icon=npm) ![](https://badgen.net/github/open-prs/s0/gatsby-remark-code-extra?icon=github) ![](https://badgen.net/github/open-issues/s0/gatsby-remark-code-extra?icon=github) ![](https://badgen.net/github/stars/s0/gatsby-remark-code-extra?icon=github)