Skip to content

Instantly share code, notes, and snippets.

View rumblefrog's full-sized avatar
I may be slow to respond.

rumblefrog rumblefrog

I may be slow to respond.
  • United States
  • 10:09 (UTC -05:00)
View GitHub Profile
View t.bundle
This file has been truncated, but you can view the full file.
{"meta":{"name":"Core","description":"SourceMod Core","author":"AlliedModders LLC"},"source":{"type":"git","merge":null,"repository":"","endpoints":null,"patterns":["plugins/include/*.inc"]},"strands":{"regex":{"functions":{"CompileRegex":{"name":"CompileRegex","refLine":144,"docStart":5801,"docEnd":6380,"docs":{"brief":"Precompile a regular expression. Use this if you intend on using the\nsame expression multiple times. Pass the regex handle returned here to\nMatchRegex to check for matches.","tags":[{"tag":"","text":"Precompile a regular expression. Use this if you intend on using the\nsame expression multiple times. Pass the regex handle returned here to\nMatchRegex to check for matches."},{"tag":"param:pattern","text":"The regular expression pattern."},{"tag":"param:flags","text":"General flags for the regular expression."},{"tag":"param:error","text":"Error message encountered, if applicable."},{"tag":"param:maxLen","text":"Maximum string length of the er


Client CIDR filter system with polling centralized TCP polling server.


  • Current relational structure dependence of CIDR Blocker requires full-row scan and value operation in order to determine potential candidate
  • Relational structure stores have O(n) storage instead and compute complexity.
  • Radix tree cannot be sanely implemented in such relational dependency, much less providing continuous updates.
  • Radix tree provides O(log n) storage and a worst-case of O(4) access, with the worst storage space cost of 256^4 bytes with every IPv4 address within the filter, with a mean cost of 256^3 bytes.


A network of Raspberry Pi Zero W that interconnect via GCP and potentially deployed using Kubernetes, and could potentially incorporate some ML processing on stored traffic data.

These traffic data could be incorporated to display live heat-map for specific locations and nodes and the ability to create and predict future trends.


Pi -> Redis? -> InfluxDB -> HTTP API -> Frontend

View fish.cpp
SourceManager::createFromBuffer(ReportingContext& cc, UniquePtr<char[]> buffer, uint32_t length)
const char* path = "fish-glub-glub";
Atom* atom = strings_.add(path);
AtomMap<RefPtr<SourceFile>>::Insert p = file_cache_.findForAdd(atom);
if (p.found())
return p->value;
rumblefrog /
Created July 21, 2019 23:32
Parses iptable logs
import re
import fileinput
from collections import Counter
pair_re = re.compile('([^ ]+)=([^ ]+)')
portlist = []
iplist = []
for line in fileinput.input():
line = line.rstrip()
rumblefrog / tasks.json
Last active April 7, 2021 20:06
SourcePawn VSCode Task
View tasks.json
// See
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
"label": "Compile plugin",
"type": "shell",
"presentation": {
rumblefrog / helix.js
Created March 28, 2019 02:14
Sophisticated Helix Antenna Design with matching Coax to 50 Ω
View helix.js
function mehrWind() { x = document.generator.n.value * 1; x = x + 1 ; document.generator.n.value = x.toFixed(0) ; rechnen();}
function wenigerWind() { x = document.generator.n.value * 1; x = x - 1 ; if (x<1) x=1; document.generator.n.value = x.toFixed(0) ; rechnen();}
function mehrCond() { x = document.generator.d4.value * 1; x = x + 0.1 ; document.generator.d4.value = x.toFixed(2) ; rechnen();}
function wenigerCond() { x = document.generator.d4.value * 1; x = x - 0.1 ; if (x<0.1) x=0.1; document.generator.d4.value = x.toFixed(2) ; rechnen();}
function rechnen()
var freq;
freq = document.generator.freq.value * 1;
rumblefrog / channelsorter.go
Created February 18, 2019 08:04
Sort Discord channels (category, text, voice) in an one dimension array
View channelsorter.go
package channelsorter
import (
type ChannelGeneric struct {
Underlying *discordgo.Channel
View dynamic json.go
func dynamicUnmarshal(text string) ([][]interface{}, error) {
var data [][]json.RawMessage
if err := json.Unmarshal(text, &data); err != nil {
return nil, err
result := make([][]interface{}, len(data))
for i, _ := range result {
result[i] = make([]interface{}, len(data[i]))
rumblefrog /
Last active May 27, 2018 20:04
Steam Spring Cleaning AppID Simulator


  1. Put these two files in the same directory
  2. Run yarn or npm install
  3. Update the accountName and password on line 11 and 12


  1. Run node index in that directory
  2. Enter Steam Guard Code (If prompted)