Skip to content

Instantly share code, notes, and snippets.


Alex Johnstone alexjj

View GitHub Profile
View grid-experiment-no-6.markdown
alexjj /
Created Dec 6, 2021
Converts drummer opml file to series of markdown files based upon date
import pathlib
from datetime import datetime
from xml.etree import ElementTree
def process_date(date):
Converts opml created date into python datetime object
datetime_object = datetime.strptime(date, '%a, %d %b %Y %H:%M:%S %Z')
return datetime_object
alexjj / docker-compose.yml
Created Nov 29, 2019
Sample docker-compose with Traefik v2.0 and Lets Encrypt
View docker-compose.yml
version: "3.7"
image: bitwardenrs/server:latest
container_name: bitwarden
- /home/alex/docker/bitwarden:/data
restart: unless-stopped
alexjj /
Created Jan 7, 2019 — forked from rgreen13/
Python script to fetch stock prices for gnucash using api. Since Quotes::Finance fetching from Yahoo finance no longer works, it is an alternative.
# INSTALL DEPENDENCIES BEFORE RUNNING: pandas, sqlite3, sqlalchemy, requests
# There is one thing you have to do though: gnucash needs to know the price's currency and it needs a guid (unique identifier)
# for this. This guid is unique for each installation, so you need to find yours and assign it to CURRENCY_GUID.
# OR: you can just leave it, and the script will fetch the currency from the last price added
import pandas as pd
import sqlite3
import sqlalchemy
from sqlalchemy import create_engine
import time
View passwordbreakerexcel.vba
Sub PasswordBreaker()
'Breaks worksheet password protection.
Dim i As Integer, j As Integer, k As Integer
Dim l As Integer, m As Integer, n As Integer
Dim i1 As Integer, i2 As Integer, i3 As Integer
Dim i4 As Integer, i5 As Integer, i6 As Integer
On Error Resume Next
For i = 65 To 66: For j = 65 To 66: For k = 65 To 66
For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66
For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66
alexjj /
Created Sep 10, 2017 — forked from paulc/jail.conf
FreeBSD ZFS Jail
[ -z "${DEBUG}" ] || set -x
JAIL_RELEASE=${JAIL_RELEASE:-$(sysctl -n kern.osrelease | sed -e 's/-p[0-9]*$//')}
JAIL_ARCH=${JAIL_ARCH:-$(sysctl -n hw.machine_arch)}
alexjj / Swap sign in qif
Last active Aug 14, 2016
Switch sign in bank qifs to fix import errors with YNAB
View Swap sign in qif
import sys
def main(argv):
for inFilename in argv:
if not inFilename.endswith('.qif'):
print "Error: expected QIF file"
raw_input("Press enter to get outa here...")
return 1
outFilename = inFilename.replace('.qif', '.negated.qif')
alexjj /
Created Mar 11, 2016
Help output of bean-report


Generated with bean-report FILENAME.beancount {report name}


    Print out the trial balance of accounts matching an expression.
    Print out a balance sheet.
alexjj /
Last active Dec 21, 2015
HandbrakeCLI a folder
# Change this to specify a different handbrake preset. You can list them by running: "HandBrakeCLI --preset-list"
PRESET="AppleTV 3"
if [ -z "$1" ] ; then
alexjj /
Last active Nov 13, 2015
HSBC US .csv to YNAB
# A simple script to convert csv from Money Management Tools website to be readable by YNAB.
# YNAB wants: Date,Payee,Category,Memo,Outflow,Inflow
__author__ = "Alex Johnstone <>"
#Input file from HSBC US
import_csv = 'ExportData.csv'
#Drop any transaction prior to this date
cutoffdate = '2015-09-01'