Skip to content

Instantly share code, notes, and snippets.


Matt Westcott gasman

View GitHub Profile
gasman /
Created Aug 23, 2021
Python script for building the TIC-ROLL TIC-80 cartridge
#!/usr/bin/env python3
import wave
from io import BytesIO
from PIL import Image
wave_buffer = BytesIO()
data_len = 0
with'nevergonna-1920.wav', 'rb') as wav:
# Encode inputfile.tar.gz as a series of video frames
# Frames are written to frames/frameNNNN.png
from PIL import Image
with open('inputfile.tar.gz', 'rb') as f:
data =
WIDTH = 120
gasman / results.txt
Created Jun 3, 2020
Rich text benchmarking - management command
View results.txt
On a real-world site with 3058 HTML fragments
with richtext-benchmark/original:
1. 13.098440
2. 14.320241
3. 13.525923
with richtext-benchmark/loic:
from collections import defaultdict
from import Mapping
import html
import re
import warnings
from django.utils.html import conditional_escape, format_html
from django.utils.safestring import mark_safe
gasman /
Created Apr 26, 2018
Splitting multi-paragraph StreamField blocks into individual blocks
from __future__ import absolute_import, unicode_literals
from bs4 import BeautifulSoup, Tag
from django.db import models
from wagtail.wagtailadmin.edit_handlers import StreamFieldPanel
from wagtail.wagtailcore import blocks
from wagtail.wagtailcore.fields import StreamField
from wagtail.wagtailcore.models import Page
from wagtail.wagtailcore.rich_text import RichText
from django.db import models
from django.utils.translation import ugettext_lazy as _
from django.utils.encoding import python_2_unicode_compatible
from modelcluster.models import ClusterableModel
from modelcluster.fields import ParentalKey
from wagtail.wagtailcore.models import Orderable
from wagtail.wagtailadmin.edit_handlers import FieldPanel, InlinePanel
from wagtail.wagtailimages.edit_handlers import ImageChooserPanel
from __future__ import unicode_literals
from django.db import models
from wagtail.wagtailcore.blocks import StructBlock, CharBlock, URLBlock, StreamBlock
from wagtail.wagtailcore.models import Page
from wagtail.wagtailcore.fields import StreamField, RichTextField
from wagtail.wagtailimages.blocks import ImageChooserBlock
from wagtail.wagtailimages.edit_handlers import ImageChooserPanel
from wagtail.wagtailadmin.edit_handlers import FieldPanel, MultiFieldPanel, \

Keybase proof

I hereby claim:

  • I am gasman on github.
  • I am mattwestcott ( on keybase.
  • I have a public key whose fingerprint is 4D33 A325 2D66 7384 42E7 FF9E 1A92 6186 FECD 38FE

To claim this, I am signing this object:

View gist:8e7eb18686af0af966ef
import six
class ModelBase(type):
def __new__(meta, name, bases, dct):
print("ModelBase.__new__(%s)" % name)
result = super(ModelBase, meta).__new__(meta, name, bases, dct)
print("/ModelBase.__new__(%s)" % name)
return result
def __init__(cls, name, bases, dct):
gasman / pt3_player.asm
Created Jan 14, 2015
Vortex Tracker II PT3 playback routine
View pt3_player.asm
; Vortex Tracker II PT3 playback routine - written by Sergey Bulba
; usage:
; ld hl,address_of_pt3_data
; call pt3_init
; then every 1/50 second:
; call play
; to silence:
; call mute