Skip to content

Instantly share code, notes, and snippets.


Simon Worthington simonwo

View GitHub Profile
simonwo /
Last active Nov 3, 2022
Compile Rust to WASM with WASI
curl --proto '=https' --tlsv1.2 -sSf -o
sh -y
export PATH=~/.cargo/bin:$PATH
rustup target install wasm32-wasi
apt-get install -y build-essential libc6-dev clang-8 gcc-multilib
cd /code
CC_wasm32_wasi=clang-8 cargo build --target wasm32-wasi --release
simonwo /
Created Sep 28, 2021
SQLite Virtual File System for S3 – MVP
import boto3
import apsw
BLOCK_SIZE = 64 * 1024
EMPTY_BLOCK = b"".join([b"\x00"] * BLOCK_SIZE)
# Inheriting from a base of "" means the default vfs
class S3VFS(apsw.VFS):
def __init__(self, s3, bucket, vfsname=f"s3vfs", basevfs=""):
self.vfsname = vfsname
simonwo /
Created Jul 20, 2020
Pulling all of the tables from a Word document into JSON files
#!/usr/bin/env python3
from sys import stdout, stderr, argv
import os.path
import json
from docx import Document
except ImportError:
print("Maybe you should $ pip install python-docx", file=stderr)
simonwo / compact-trello.css
Last active Jul 26, 2017
Compact Trello userstyle. If you have the Stylus extension, you can download the JSON and use "Import styles".
View compact-trello.css
@-moz-document domain("") {
.card-label.mod-card-front {
width: 8px;
height: 32px;
.list-card-labels {
margin-right: 6px;
margin-top: 2px;
float: left;
simonwo /
Created Mar 9, 2015
Script to be called from cron to check Raspberry Pi's wireless connection
# The address of the wireless access point itself
GATEWAY=`netstat -nr | grep wlan0 | grep G | awk '{ print $2 }'`
# Let's try and contact the wireless access point
ping -c 1 $GATEWAY
# Did we succeed? (ping will make $? equal to 1 if it failed, or 0 if it succeeded)
if [[ $? == 1 ]]; then
simonwo / cleartypes.h
Created Feb 25, 2015
These aliases make pointers and references look more like real types. See for more.
View cleartypes.h
#pragma once
/* These type alias templates (introduced in C++11) allow
* us to template typedefs (via a different syntax).
* Here we are templating generic pointer and reference types
* so we could write ptr<T> instead of T*.
* See for more.
simonwo / pending.rb
Created Feb 2, 2015
Pending scenarios in Cucumber
View pending.rb
# Place me in your support/ directory and then use the @pending tag
Unless Cucumber::VERSION =~ /^2\./
Around '@pending' do |scenario, block|
scenario.steps.each &:skip_invoke!
scenario.steps.each {|step| step.status! :pending}
raise "Well done on upgrading to Cucumber 2. It's time to delete #{__FILE__}!"
simonwo / fib-cache.rb
Last active Aug 29, 2015
Cached Fibonacci in Ruby
View fib-cache.rb
Fibonacci = {|h, i| h[i] = h[i-1] + h[i-2]}
Fibonacci[1] = 1
Fibonacci[2] = 1
# And now it's ready to use!
puts Fibonacci[6] # => 8
p Fibonacci # => {1=>1, 2=>1, 3=>2, 4=>3, 5=>5, 6=>8}
simonwo /
Created May 10, 2014
Scripts for auto installing Wordpress plugins. Warning: they're shitty
# Usage:
# $ cd themes/your-theme/
# $ sh ./ plugins.list
wget -i $1
mv *.zip ../../plugins
cd ../../plugins
ls | xargs -n 1 unzip