Skip to content

Instantly share code, notes, and snippets.

Working from home

Michael Mitchell Ovyerus

Working from home
View GitHub Profile
Ovyerus /
Last active May 11, 2021
Beautiful Discord Installation Guide
  1. Install Python BeautifulDiscord is created in the Python programming language, and as such you must install it. Open in your preferred web browser and download the latest version. Install Python and at the end therre should be an option that says something along the lines of Add to PATH. If you don't check this, it'll make a future step slightly harder.

  2. Install BeautifulDiscord Open a command prompt/terminal, and enter python -m pip install -U, this will download and install BeautifulDiscord so that you can use it. If you did not add Python to PATH, navigate to the directory of where Python is installed and run the command. If you get an error while installing that says something along the lines of Microsoft Visual C++ 14.0 is required, follow these steps. A. If you do not have Visual Studio 2015 installed, go to and download the Visual C++ Build Too

View discord-buttons-round.css
/* Account Panel */
.account .btn-mute, .account .btn-deafen, .account .btn-settings {
border: none;
box-shadow: none;
transition: background-color 0.2s;
.account .btn-group {
border-radius: 50px;
Ovyerus /
Last active Aug 7, 2020
Sexy fish prompt
set -g symb ''
set -g leading_brace 0
set -g has_launched 0
function git_info
set -l branch (git rev-parse --abbrev-ref HEAD 2> /dev/null)
printf "%s(%s%s%s)" $c0 $c1 $branch $c0
set -l changes (git status --porcelain --ignore-submodules 2> /dev/null)
Ovyerus /
Last active Feb 28, 2020
Helpful fish aliases and stuff
# Store normal bins
alias _cat (which cat)
alias _find (which find)
alias _grep (which grep)
alias _ls (which ls)
alias _nano (which nano)
# Alias cool and swag bins
alias cat 'bat'
alias find 'fd'
Ovyerus / yes.js
Created Feb 22, 2020
Serially execute a chunk of parallel tasks one after another (without caring about return value)
View yes.js
const chunk = (arr, n) =>
Array.from({ length: Math.ceil(arr.length / n) }, (v, i) =>
// eslint-disable-next-line no-mixed-operators
arr.slice(i * n, i * n + n)
const data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
chunk(data, 2)
// Turn each chunk into a function that will await all of its parts to resolve before finishing
Ovyerus / index.js
Created Jan 31, 2020
cool async generator helper for nodejs stdin
View index.js
/** Helper for working with `process.stdin` as a char-by-char iterator */
async function* stdin() {
if (process.stdin.isTTY) process.stdin.setRawMode(true);
for await (const char of process.stdin) {
// raw mode doesn't get set when piping text into stdin, so often text is
// given altogether
if (char.length > 1) {
Ovyerus / cameraplus.cfg
Created Jan 10, 2020
My CameraPlus config
View cameraplus.cfg

Keybase proof

I hereby claim:

  • I am ovyerus on github.
  • I am ovyerus ( on keybase.
  • I have a public key ASBQtl_G8qlPAfiXLFkr95Ydxe61RFiCQn2tkbj2QjgCjQo

To claim this, I am signing this object:


Plans for Clarisa

  • Move to Erisa org and either keep name, or rename to @erisa/micro.
  • Essentially micro for bots.
  • Either single function export or programmatic instantiation.
    • Programmatic returns an instance of Erisa - still wraps single function.
  • Function export gets called with clarisa or @erisa/micro on the command line.
  • Ability to use command system without programmatic API
    • Either export as exports.commandSystem = true or config file?
    • Sets up a folder as a directory to load commands from.
    • Commands follow single function export like main.