Skip to content

Instantly share code, notes, and snippets.

@bramp
bramp / make.py
Last active July 2, 2023 18:34
Creates a model of a 3D Hilbert curve, suitable for 3D printing.
#!/usr/bin/env python3
# Creates a model of a 3D Hilbert curve, suitable for 3D printing.
# by Andrew Brampton (bramp.net) 2023
# See https://www.printables.com/model/518431
#
# Usage:
# python3 make.py 4 4 4 --voxelizer voxelmap --spacing 3
# python3 make.py 4 4 4 --voxelizer trimesh --spacing 2
#
@bramp
bramp / ucode.py
Created October 13, 2011 23:46
Prints some simple information about ucode firmwares such as those used by Intel Wifi cards
#!/usr/bin/python
# Prints some simple information about ucode firmwares
# such as those used by Intel Wifi cards
#
# Version 1.0 Jan 2011
# by Andrew Brampton
#
# Example
# ./ucode.py /lib/firmware/*.ucode
#
@bramp
bramp / 401k.dot
Created November 14, 2017 05:48
401k/IRA flow chart
digraph "401k" {
label = "Assumptions - 2018 - Age < 50 - Single - Income > $135k - 50% company match of 401(k)\n";
"Pay Cheque (Pre-tax)" -> "Pre-tax 401(k)" [ label = "Max $18.5k*" ];
"Pay Cheque (After-tax)" -> "Roth 401(k)" [ label = "Max $18.5k*" ];
"Pay Cheque (After-tax)" -> "After-tax 401(k)" [ label = "Max $27.25k" ];
"Pay Cheque (After-tax)" -> "Bank Account (After-tax)";
@bramp
bramp / mysql_simple_test.go
Created October 1, 2017 19:21
Example of a failing ANTLR MySQL Parser
/**
* Copyright 2017 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
@bramp
bramp / CaseChangingStream.go
Created September 28, 2017 14:20
Example antlr.CharStream that changes the case of the input.
/*
Copyright 2017 Google Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
@bramp
bramp / clip.class.php
Created November 26, 2011 18:05
PHP Polygon Clipping using the Sutherland-Hodgman algorithm
<?php
/**
* Polygon Clipping
* @author Andrew Brampton me <at> bramp <dot> net
* @url http://bramp.net/blog/2011/11/php-polygon-clipper-using-the-sutherland-hodgman-algorithm/
*
* Based on the Sutherland-Hodgman algorithm (1974).
* http://en.wikipedia.org/wiki/Sutherland%E2%80%93Hodgman_algorithm
*
* This approache assumes four clip edges (the bounding box).
@bramp
bramp / turn-on-github-ssl.py
Created June 9, 2016 03:24
Prints a list of all owned repositories with pages.
#!/usr/bin/env python
# Prints a list of all owned repositories with pages.
# by Andrew Brampton 2016 https://bramp.net
#
# Copyright 2016 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
@bramp
bramp / gist:5183117
Last active December 15, 2015 01:49
# Simple script that reads a mongodb datafile (by Andrew Brampton) Finds all documents starting with _id reads the record, and prints out compressed and uncompressed results.
# Simple script that reads a mongodb datafile
# Finds all documents starting with _id
# reads the record, and prints out compressed and uncompressed
# results.
#
import mmap
import os
import struct
import zlib
@bramp
bramp / persec.py
Created October 10, 2011 13:08
A python script similar to GNU Watch, but works out the differences between each iteration and displays in units per second.
#!/usr/bin/env python
# Turns a series of numbers into counts per second
# by Andrew Brampton 2009
# TODO Make this smarter, so that it can parse numbers in blocks of text, and highlight the numbers it is changing.
# TODO Make sure the value is divided by the real interval
# TODO If the number printed is smaller than the previous number, then make sure to add extra padding to remove the old number
#
import subprocess
import sys
import time
Benchmark Mode Cnt Score Error Units
UnrolledCopierBenchmark.ByteLoopState.test thrpt 25 32035617.621 ± 203057.890 ops/s
UnrolledCopierBenchmark.ForLoopState.test thrpt 25 137210309.246 ± 3297133.141 ops/s * For loop
UnrolledCopierBenchmark.LoopState.test thrpt 25 148544358.728 ± 10786777.032 ops/s * While loop
UnrolledCopierBenchmark.HandUnrolledState.test thrpt 25 447763590.583 ± 7256308.885 ops/s
UnrolledCopierBenchmark.UnrolledState.test thrpt 25 455870292.662 ± 4004173.595 ops/s
(Larger scores the better)
https://github.com/bramp/unsafe/blob/master/unsafe-unroller/src/main/java/net/bramp/unsafe/LoopingForUnsafeCopier.java#L36
https://github.com/bramp/unsafe/blob/master/unsafe-unroller/src/main/java/net/bramp/unsafe/LoopingUnsafeCopier.java#L38