Skip to content

Instantly share code, notes, and snippets.

Avatar
🔰
( ͡ᵔ ͜ʖ ͡ᵔ )

Max Ogden maxogden

🔰
( ͡ᵔ ͜ʖ ͡ᵔ )
View GitHub Profile
@maxogden
maxogden / analyse.sh
Last active Nov 4, 2022
birdnet laptop mode
View analyse.sh
#!/bin/bash
TIMEFORMAT='Elapsed Time: %0R seconds.'
time {
export YEAR=`date '+%Y'`
export MONTH=`date '+%m'`
export DAY=`date '+%d'`
export WEEK=`date '+%U'`
# kill `cat /home/max/tweet/recording.pid`
for f in `ls /home/max/tweet/samples/${YEAR}/${MONTH}/${DAY}/*.wav`
do
@maxogden
maxogden / index.html
Last active Sep 30, 2022
la county impervious surface assessor parcel map
View index.html
<html>
<head>
<meta
name="viewport"
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui"
/>
<link
rel="stylesheet"
href="https://unpkg.com/leaflet@1.8.0/dist/leaflet.css"
crossorigin=""
@maxogden
maxogden / readme.md
Created Sep 1, 2021
Metro Micro API (RideCo API)
View readme.md

i downloaded the metro micro APK, extracted it, and then unminified the ionic JS source code, then reverse engineered these calls using my own username/password

# get a token
curl -H "Accept: application/json; version=rccmtp-2.18.0" -X POST https://api.metro-micro.net/api-token-auth/ -F "username=youremail" -F "password=yourpass"

# get geocode results
curl -H "Accept: application/json; version=rccmtp-2.18.0" -X GET "https://api.metro-micro.net/rest/geo/places/autocomplete/?value=yourtexttogeocode&session_token=$MICRO" -H "Authorization: Token $MICRO"

# get a trip/ride id
@maxogden
maxogden / readme.md
Created Feb 19, 2021
Bitcoin Regtest Local Server Instructions
View readme.md
  1. Grab the latest bitcoin-core .tar.gz release and unpack it https://bitcoin.org/en/download
  2. Add the bin folder to your path
  3. Start the regtest server bitcoind -regtest
  4. Create a test wallet bitcoin-cli -regtest createwallet test
  5. Get a bcrt address for your wallet bitcoin-cli -regtest getnewaddress
  6. 'Mine' some regtest btc bitcoin-cli generatetoaddress 10 <address-from-previous-command>
  7. Make sure it worked `bitcoin-cli getblockcount
@maxogden
maxogden / index.js
Last active Mar 5, 2021
JavaScript Base-40 Class
View index.js
// based on https://github.com/blockstack/blockstack-core/blob/ff86948ed2f720824cd5e6ece6a63aaaf2bf81ff/blockstack/lib/b40.py
class B40 {
constructor() {
this.B16_CHARS = '0123456789abcdef'
this.B40_CHARS = '0123456789abcdefghijklmnopqrstuvwxyz-_.+'
}
divmod(x, y) {
const div = x / y
const rem = x % y
View index.js
#!/home/max/.nvm/versions/node/v0.12.18/bin/node
var fs = require('fs');
var Speaker = require('speaker'); // version 0.3.0
var OpenJTalk = require('node-openjtalk').OpenJTalk;
console.log(process.argv[2])
// pre-included HTS voice file
var fn_voice = OpenJTalk.voices.mei_normal;
// instantiate OpenJTalk with an HTS voice
var open_jtalk = new OpenJTalk({voice: fn_voice});
// synthesize a voice synchronously
@maxogden
maxogden / difflint
Last active May 30, 2021
Run eslint + prettier on only files that you've staged/commited on the current branch
View difflint
#!/usr/bin/env bash
# chmod +x this and save in your PATH. Assumes `eslint` + `prettier` are in your `devDependencies`
BRANCH=$(git branch | grep \* | cut -d ' ' -f2)
BASE=$(git merge-base master $BRANCH) # change master to whatever your trunk branch is
COMMITED=$(git diff --name-only $BASE $BRANCH)
STAGED=$(git diff --staged --name-only)
FILES=$(printf "$COMMITED\n$STAGED" | sort | uniq)
LINT="npx eslint --ignore-path=.prettierignore $FILES"
PRETTIER="npx prettier --list-different $FILES"
View index.js
const bip39 = require('bip39')
function twelveWords (missing) {
return `fold supreme boat absurd mango menu number brick ${missing} sun gold stone`
}
function loadWords () {
return `abandon
ability
able
@maxogden
maxogden / index.js
Created May 24, 2019
ed25519 private and public keys to pem
View index.js
import { composePrivateKey, composePublicKey } from 'crypto-key-composer'
function privateToPem(privateKey) {
var decomposed = {
format: 'pkcs8-pem',
keyAlgorithm: { id: 'ed25519' },
keyData: {
seed: privateKey,
},
}
@maxogden
maxogden / index.js
Created May 24, 2019
slip-0010 hdkey ed25519 derivation from seed in javascript
View index.js
var ehdKey = require("@hawkingnetwork/ed25519-hd-key-rn")
var EdDSA = require('elliptic').eddsa
// test vector from https://github.com/satoshilabs/slips/blob/master/slip-0010.md
var seed = new Buffer('fffcf9f6f3f0edeae7e4e1dedbd8d5d2cfccc9c6c3c0bdbab7b4b1aeaba8a5a29f9c999693908d8a8784817e7b7875726f6c696663605d5a5754514e4b484542', 'hex')
var ed25519 = new EdDSA('ed25519')
var derived = ehdKey.derivePath("m/0'/2147483647'", seed.toString('hex'))
var keys = ed25519.keyFromSecret(derived.key)
// expected test vector outputs