Skip to content

Instantly share code, notes, and snippets.

jiaaro /
Last active Apr 27, 2021
Coinbase Export: Parse and Process "Convert" Transactions
import csv
csv_path = "/path/to/Coinbase-xxxxx-TransactionsHistoryReport-2021-03-13-22-28-28.csv"
outcsv_path = csv_path + ".processed.csv"
with open(csv_path, "r") as fi, open(outcsv_path, "w") as fo:
r = csv.reader(fi)
w = csv.writer(fo)
for i, row in enumerate(r):
if row and row[-1].startswith("Converted"):
jiaaro / controller.lua
Last active Jun 11, 2021
gamepad emulation of playdate crank
View controller.lua
-- uses:
local Object = require 'classic'
local lume = require 'lume'
---@class Controller
local Controller = Object:extend()
local function getStickAngle(x, y)

How to use:

  1. (On a mac) Launch "Script Editor"
  2. Change the language to javascript if needed
  3. Paste the code from wine-launcher.jxa
  4. Save with the file format "Application", and uncheck "Show startup screen" and "Stay open after run handler" (I recommend putting it in your user/Applications directory)
  5. Make sure wine is installed, you can use homebrew
  6. Right click an ".exe" file, choose "Get Info", and then change the "Open with" application to your Wine app that you just made. To make it work for all .exe files, click "Change All…" afterward.

Now you can double click any exe and it'll launch in wine :)

jiaaro / hexcolor.lua
Last active Nov 29, 2020
Hex colors to love2d
View hexcolor.lua
-- converts CSS-style hex colors to love2d 0 - 1 scaled colors
-- e.g., hexcolor("ccff99") == {0.8, 1.0, 0.6}
-- supports alpha, e.g., hexcolor("ccff9966") == {0.8, 1.0, 0.6, 0.4}
-- supports shorthand, e.g., hexcolor("cf96") == hexcolor("ccff9966")
-- automatically strips common prefixes, e.g., hexcolor("#cf9"), hexcolor("0xcf9")
local function hexcolor(c)
-- strip leading "#" or "0x" if necessary
if c:sub(1, 1) == "#" then
c = c:sub(2)
elseif c:sub(1,2) == "0x" then
jiaaro / konami.lua
Last active Jun 8, 2020
Love2d Konami Code module
View konami.lua
Example use:
function love.keypressed(key)
konami(key, function()
love.window.showMessageBox("Konami", "the konami code was entered")
local MAX_DELAY = 1.5
import asyncio
async def sum_queue_vals(q):
result = 0
while True:
val = await q.get()
if val is None:
result += val
return result
jiaaro /
Last active Mar 27, 2020
Set up local testing for codebuild
docker --version
if [[ $? != 0 ]]; then
brew cask install docker
echo "Make sure you have $HOME/bin in your PATH"
mkdir -p ~/bin/
curl > ~/bin/
jiaaro /
Last active May 7, 2021
Run some commands asynchronously in bash and then make sure to kill the child processes if the user kills the process with CTRL-C (or similar)
trap "exit" INT TERM # Convert INT and TERM to EXIT
trap "kill 0" EXIT # Kill all children if we receive EXIT
# Run stuff in the background
sleep 3 &
sleep 4 &
# Find child processes and wait for them to finish so this script doesn't
from pydub import AudioSegment
from pydub.utils import db_to_float
# note: see usage example at the bottom of the gist :)
class Mixer(object):
def __init__(self): = []
def overlay(self, sound, position=0):
In [1]: paste
import array
from pydub import AudioSegment
from pydub.generators import Sine, Square
# make two mono sounds (300 Hz tones)
sound1 = Sine(300).to_audio_segment(duration=30000)
sound2 = Square(300).to_audio_segment(duration=30000)
def x():