Skip to content

Instantly share code, notes, and snippets.

View fnrhombus's full-sized avatar

Thomas Butler fnrhombus

  • Butler Software
  • Atlanta, GA
View GitHub Profile
@fnrhombus
fnrhombus / tsconfig.json
Created March 4, 2021 07:11
Typescript config for generating @types
{
"compilerOptions": {
"noImplicitAny": false,
"strictFunctionTypes": false,
"strictPropertyInitialization": false,
"strictBindCallApply": false,
"noImplicitThis": false,
"noImplicitReturns": false,
"alwaysStrict": false,
"esModuleInterop": true,
@fnrhombus
fnrhombus / Spectrogram-1v00.js
Last active May 22, 2024 06:21
JavaScript graphics functions to draw Spectrograms.
// http://arc.id.au/Spectrogram.html
const [Waterfall, Rasterscan] = (function () {
Waterfall = function (ipBufAry, w, h, dir, options) {
var direction = typeof dir === "string" ? dir.toLowerCase() : "down";
switch (direction) {
case "up":
return new Spectrogram(ipBufAry, w, h, "WF", false, true, options);
case "down":
@fnrhombus
fnrhombus / Winlogon_Startup.hta
Created December 5, 2021 20:39
change window default shell to this
<html>
<head>
<title>IT Tasks for Users</title>
<HTA:APPLICATION
APPLICATIONNAME="IT Tasks for Users"
ID="IT Tasks for Users"
VERSION="1.0"/>
<STYLE></STYLE>
@fnrhombus
fnrhombus / Complex.js
Last active October 29, 2024 01:52
Complex number data structure & operators
// https://github.com/RobTillaart/Arduino/blob/master/libraries/Complex/complex.cpp
function format(real, imag){
if(this.imag == 0){
return real
}
if(real == 0){
return 'i' + imag;
}
return `${real} ${imag < 0 ? `-` : `+`} ${Math.abs(imag)}i`;
@fnrhombus
fnrhombus / enable-rdp.sh
Last active July 15, 2022 21:34
Configure Ubuntu to be accessible via RDP
#!/bin/bash
# chmod +x ./enable-rdp.sh
sudo apt install xrdp
sudo systemctl enable --now xrdp
sudo ufw allow from any to any port 3389 proto tcp
sudo ufw allow from any to any port 3399 proto tcp
@fnrhombus
fnrhombus / RefreshEnv.cmd
Created June 17, 2023 21:58
refreshenv
// https://github.com/chocolatey/choco/blob/0.10.15/src/chocolatey.resources/redirects/RefreshEnv.cmd
@echo off
::
:: RefreshEnv.cmd
::
:: Batch file to read environment variables from registry and
:: set session variables to these values.
::
:: With this batch file, there should be no need to reload command
@fnrhombus
fnrhombus / fluent-object-builder.ts
Last active May 22, 2024 04:55
Fluent Object Builder
import { Func } from "@rhombus-toolkit/func";
type Func<Args extends any[], Result = void> = (...args: Args) => Result;
type AnyRecord = Record<string|symbol, any>;
type AnyFunction = (...args: any[]) => any;
type MakeBuilder<T extends AnyRecord> =
T extends infer a extends AnyRecord | infer b extends AnyRecord ? ObjectBuilder<a> | ObjectBuilder<b> : ObjectBuilder<T>;
@fnrhombus
fnrhombus / tuple.ts
Last active July 15, 2023 19:54
pointless tuple
type Dec<Length extends number, Acc extends never[] = []> =
[never, ...Acc]['length'] extends Length ? Acc['length'] :
Dec<Length, [never, ...Acc]>;
type MakeRange<TMin extends number, TMax extends number, Acc extends number = never> =
TMax extends TMin ? TMax | Acc
: MakeRange<TMin, Dec<TMax>, TMax | Acc>;
type TupleBaseType = readonly any[] & { length: MakeRange<1,10> }
/**
* generate this code with:
* =======================
// http://burnignorance.com/vc-application-development-tips/hooking-a-message-box-in-vc/
HHOOK hMsgBoxHook;
LRESULT CALLBACK MsgBoxProc(int nCode, WPARAM wParam, LPARAM lParam)
{
TCHAR ach[140];
HWND hwnd;
HWND YES;
HWND NO;
HWND CANCEL;
@fnrhombus
fnrhombus / packuft8.js
Last active May 24, 2024 03:30
pack uint8 to utf8
(function () {
const UTF8_SIGNIFICANT_BITS_SIZE = 7;
const BITS_IN_BYTE = 8;
globalThis.setChar = function (char, excludeCharacters) {
if (typeof excludeCharacters === 'string') {
return setChar(char, Array.prototype.map.call(excludeCharacters, c => c.charCodeAt(0)));
}
if (typeof char === 'string') {
if (char.length !== 1) {