Skip to content

Instantly share code, notes, and snippets.

@Kirkman
Kirkman / gist:47bbf2dbcf68894f3df053f5f1951188
Created November 19, 2025 19:32
ConcatField - Aggregation for Python's Agate library, to concatenate every value in a column into a single string
class ConcatField(agate.Aggregation):
"""
Concatenate every value in a column into a string.
:param column_name:
The name of any column.
"""
def __init__(self, column_name, sep='|'):
self._column_name = column_name
self._sep = sep
@Kirkman
Kirkman / test.js
Last active November 12, 2025 04:23
Debugging black/black issue with Frame.js
load("sbbsdefs.js");
load("frame.js");
// COLOR CODES
var lowRed = '\1N\1R\10';
var lowBlue = '\1N\1B\10';
var lowWhite = '\1N\1W\10';
var highCyan = '\1H\1C\10';
var lowBlack = '\1N\1K\10';
var highBlack = '\1H\1K\10';
@Kirkman
Kirkman / gist:d27cb5b30e7bbb16b5d247d29afa136a
Created February 9, 2024 15:28
QGIS field calculator expression for converting SLMPD's numeric crime categories into Part I labels
CASE
WHEN to_int("Crime" / 10000) = 1 THEN 'homicide'
WHEN to_int("Crime" / 10000) = 2 THEN 'rape'
WHEN to_int("Crime" / 10000) = 3 THEN 'robbery'
WHEN to_int("Crime" / 10000) = 4 THEN 'assault'
WHEN to_int("Crime" / 10000) = 5 THEN 'burglary'
WHEN to_int("Crime" / 10000) = 6 THEN 'larceny'
WHEN to_int("Crime" / 10000) = 7 THEN 'auto'
WHEN to_int("Crime" / 10000) = 8 THEN 'arson' ELSE ''
END
@Kirkman
Kirkman / ct-gist.js
Created September 11, 2023 18:45
Chart Tool update/redraw on page load
window.addEventListener("load", function() {
document.querySelectorAll('.ct-chart').forEach(this_chart => {
let this_id = this_chart.getAttribute('data-chartid');
const obj = ChartTool.read(this_id);
this_id = this_id.replace('ct-','');
ChartTool.update(this_id,obj.data);
});
});
@Kirkman
Kirkman / sbbs-mac.md
Last active December 20, 2018 03:52
Get SBBS to compile on a Mac

Make sure you're using homebrew for adding libraries like nspr.

  1. Need to specify clang so that SpiderMonkey will compile
    CC=clang CXX=clang++ make install SYMLINK=1
    
@Kirkman
Kirkman / gist:8a780d73cfca7722dd1d0d2860dc61b5
Created May 25, 2017 16:46
Convert Unicode tabbed text saved from Excel into standardized CSV (preserves special characters)
in2csv -v -t -f csv -e utf16 data.txt > data.csv
@Kirkman
Kirkman / color_sensor_snippet.py
Created June 11, 2016 20:39
Little snippet that I hope will make the color sensor work
# Connect the color sensor
cs = ColorSensor(); assert cs.connected
# List of modes available here: http://www.ev3dev.org/docs/sensors/lego-ev3-color-sensor/
cs.mode = 'COL-REFLECT'
# Get current color value
color_value = cs.value()
@Kirkman
Kirkman / ansi_art_converter.py
Last active August 26, 2016 01:33 — forked from jdiaz5513/ascii_arty.py
Console ANSI Art Generator
#! /usr/bin/env python2
# -*- coding: utf-8 -*-
#
# This routine is adapted from: https://gist.github.com/jdiaz5513/9218791
#
# Things I changed:
# * Cache the results of color_distance() lookups, for a big speed-up.
# * Adjusted the RGB values for ANSI_COLORS to match original CGA values
# * Changed default fill character to a PC-ANSI shaded block character
# * Added some timer code to help with optimizing the conversion routine
For future reference, here is the sequence of commands that resulted in
success for me:
cd /sbbs
export CVSROOT=:pserver:[email protected]:/cvsroot/sbbs
./src/cleanall.sh RELEASE=1
cvs update -d exec
cvs update src 3rdp
cd /sbbs/src/sbbs3; make RELEASE=1 clean; make RELEASE=1 USE_DOSEMU=1
cd /sbbs/src/sbbs3/scfg; make RELEASE=1 clean; make RELEASE=1 USE_DOSEMU=1
@Kirkman
Kirkman / 1tileset-test.js
Last active October 14, 2015 19:37
Synchronet tileset test
load("sbbsdefs.js");
load("frame.js");
var cols = console.screen_columns;
var rows = console.screen_rows;
var _tiles = [];
var frame = new Frame(
1,
1,