Skip to content

Instantly share code, notes, and snippets.

View francisrstokes's full-sized avatar
🎥
Low Byte Productions on YouTube

Francis Stokes francisrstokes

🎥
Low Byte Productions on YouTube
View GitHub Profile
@francisrstokes
francisrstokes / GeneratorDSL.js
Last active November 3, 2021 16:39
Game-style DSL using generators
const getDSLValue = (iterator, last) => {
const {value, done} = iterator.next(last);
if (done) {
return value;
}
switch (value) {
case 'sword': {
return getDSLValue(iterator, {
weaponType: "Shiny Sword",
@francisrstokes
francisrstokes / CompositionDSLGenerators.js
Created December 29, 2018 00:53
Function Composition DSL using generators
const getDSLValue = (iterator, last) => {
const {value, done} = iterator.next(last);
if (done) {
return value.slice(1).reduce((x, f) => f(x), value[0]);
}
return getDSLValue(iterator, last ? [...last, value] : [value]);
}
const pipe = gen => getDSLValue(gen(null, ));
@francisrstokes
francisrstokes / PipeDriveForm.js
Created July 12, 2019 08:47
PipeDrive Web Forms React Component
import React from 'react';
class PipeDriveForm extends React.Component {
constructor(props) {
super(props);
this.state = {
randomId: 'id' + Math.random().toString(36).substring(7)
};
}

Keybase proof

I hereby claim:

  • I am francisrstokes on github.
  • I am francisstokes (https://keybase.io/francisstokes) on keybase.
  • I have a public key ASDAQWguSwFKdWeKeEvEeTyzezi0na5Pmhdva4wN2Cwj4wo

To claim this, I am signing this object:

{
"title": "Map CapsLock plus i/j/k/l to Arrows",
"rules": [
{
"description": "Map CapsLock plus i/j/k/l to Arrows",
"manipulators": [
{
"type": "basic",
"from": {
"key_code": "j",
@francisrstokes
francisrstokes / block-facebook.sh
Created July 18, 2022 18:47
Script to route a bunch of known facebook domains to your machine, circumventing tracking
#!/bin/bash
# Run this script as root on a linux machine to
# block (at least some) facebook trackers
echo "0.0.0.0 www.facebook.com" >> /etc/hosts
echo "0.0.0.0 facebook.com" >> /etc/hosts
echo "0.0.0.0 login.facebook.com" >> /etc/hosts
echo "0.0.0.0 www.login.facebook.com" >> /etc/hosts
echo "0.0.0.0 fbcdn.net" >> /etc/hosts
@francisrstokes
francisrstokes / Makefile
Last active October 13, 2022 18:13
Custom STM32Cube Makefile
NAME := firmware
# Utility commands
RM := rm -rf
DIR_DUP = mkdir -p $(@D)
# Compiler commands
GCC_PREFIX := arm-none-eabi
CC := $(GCC_PREFIX)-gcc
OBJCOPY := $(GCC_PREFIX)-objcopy
@francisrstokes
francisrstokes / visbin.py
Created January 18, 2023 20:11
Binary visualizer, inspired by scanlime
#!/usr/bin/env python
import math
import subprocess
from random import choice
from argparse import ArgumentParser
def random_filename():
letters = [chr(ord("a") + x) for x in range(26)]
return "".join([choice(letters) for _ in range(12)])
uint16_t BitReverse16(uint16_t value) {
value = (value & 0xFF00) >> 8 | (value & 0x00FF) << 8;
value = (value & 0xF0F0) >> 4 | (value & 0x0F0F) << 4;
value = (value & 0xCCCC) >> 2 | (value & 0x3333) << 2;
value = (value & 0xAAAA) >> 1 | (value & 0x5555) << 1;
return value;
}
@francisrstokes
francisrstokes / pinout.txt
Created May 23, 2023 11:52
Pinout for the Nucleo-F401RE devboard, which can be easily pasted into a code comment for easy, searchable reference
Pinout for Nucleo-F401RE
_________________________________________________
| O |
| User Reset |
| [B] [B] |
| PC10 PC11 PC9 PC8 |
| PC12 PD2 PB8 PC6 |
| VDD E5V PB9 PC5 |
| BOOT0 GND AVDD U5V |
| NC NC GND NC |