Skip to content

Instantly share code, notes, and snippets.

View infogulch's full-sized avatar

Joe Taber infogulch

View GitHub Profile
@infogulch
infogulch / multisort.go
Last active May 6, 2016 23:59
How to design a Go slice type that needs to be sortable in many ways.
// How to design a Go slice type that needs to be sortable in many ways.
package main
import (
"fmt"
"sort"
)
type data struct {
i int
@infogulch
infogulch / utf8.cpp
Created December 6, 2018 03:49
UTF-8 Decoder in Mill assembly
// decode accepts a byte and a vector of the next 3 bytes (the %first byte and the possible
// %continuation bytes and returns a decoded code point in an integer, and the number of bytes
// consumed (including the first byte) The vector may contain NaR bytes if at the end of a buffer
F('decode') %first, %cont;
// fast path for 1 byte
con(v(0xe0, 0xf0, 0xf8)) %prefmask, //R0 # masks of the three possible prefixes
lssu(%first, 0x80) %onebyte, // E0 # check if the first byte is < 0x80
andlu(%first, %prefmask) %masked, // E1 # bit-and with bitmasks of 3 possible prefixes
retntr(%onebyte, %first, 1); // F0# if < 0x80 return the first byte & consume one byte
@infogulch
infogulch / RegionGetColor.ahk
Created May 13, 2020 17:50
RegionGetColor - AutoHotkey script c.2008 that uses a raw x86 machine code accelerated kernel to sum the rgb components of a pixel buffer in order to find the average color of a portion of the screen
;RegionGetColor.ahk
;#############################################################
regionGetColor(x, y, w, h, hwnd=0) {
; created by Infogulch - thanks to Titan for much of this
; x, y, w, h ~ coordinates of the region to average
; hwnd ~ handle to the window that coords refers to
DllCall("QueryPerformanceCounter", "Int64 *", Start1)
regionGetBmp(bmp, dc, obj, x, y, w, h, hwnd)
@infogulch
infogulch / README.md
Last active September 16, 2023 13:47 — forked from alimbada/Export-Chocolatey.ps1
Export installed Chocolatey packages as packages.config - thanks to Matty666

Put update.ps1, install.ps1, record.ps1, and packages.config inside a git repository to enable tracking which versions you have installed at any one time. This means you can sync between systems and backup via any git host.

Update procedure is:

git pull
./update.ps1
git commit -m "Updated $env:computername"

git push