Skip to content

Instantly share code, notes, and snippets.

View MarkTiedemann's full-sized avatar

Mark Tiedemann MarkTiedemann

View GitHub Profile
function DataAppender(array = new Uint8Array(8)) {
let length = array.length;
let offset = 0;
let view = new DataView(array.buffer);
const textEncoder = new TextEncoder();
const grow = () => {
length = array.length * 2;
@MarkTiedemann
MarkTiedemann / toJson.kt
Created April 11, 2024 21:43
Kotlin toJson Extensions
private fun convertToJson(v: Any?): String {
return when (v) {
is String -> v.toJson()
is Boolean -> v.toJson()
is Number -> v.toJson()
is Array<*> -> v.toJson()
is Collection<*> -> v.toJson()
is Map<*, *> -> v.toJson()
else -> v?.toJson() ?: "null"
}
@MarkTiedemann
MarkTiedemann / power-query-pagination.m
Last active March 5, 2024 23:43
Power Query Pagination Example
let
BaseUrl = "https://fake-odata-api.com/v1/Entities?",
Token = "F4K3-T0K3N-D0NT-U5E-L0L",
EntitiesPerPage = 1000,
GetJson = (Url) =>
let Options = [Headers=[ #"Authorization" = "Bearer " & Token ]],
RawData = Web.Contents(Url, Options),
Json = Json.Document(RawData)
in Json,
@MarkTiedemann
MarkTiedemann / download-latest-release.ps1
Last active March 4, 2024 18:39
Download latest GitHub release via Powershell
# Download latest dotnet/codeformatter release from github
$repo = "dotnet/codeformatter"
$file = "CodeFormatter.zip"
$releases = "https://api.github.com/repos/$repo/releases"
Write-Host Determining latest release
$tag = (Invoke-WebRequest $releases | ConvertFrom-Json)[0].tag_name
const rawString = Symbol();
export interface RawString {
[rawString]: string;
};
export function raw(str: string): Readonly<RawString> {
const obj: RawString = Object.create(null);
obj[rawString] = str;
return Object.freeze(obj);
// Ported from https://github.com/deoxxa/proquint
const encodeConsonants = "bdfghjklmnprstvz".split("");
const encodeVowels = "aiou".split("");
const decodeConsonants = Object.fromEntries(encodeConsonants.map((x, i) => [x, i]));
const decodeVowels = Object.fromEntries(encodeVowels.map((x, i) => [x, i]));
export function encode(array: Uint16Array) {
const view = new DataView(array.buffer);
const bits = [];
<!DOCTYPE html>
<script>
customElements.define("x-input", class extends HTMLElement {
static formAssociated = true;
#input;
#internals;
constructor() {
super();
this.#input = document.createElement("input");
@MarkTiedemann
MarkTiedemann / ds.cmd
Last active March 9, 2023 22:50
Direct Strike Leaderboard API
@echo off
setlocal enabledelayedexpansion
if not exist %~dp0timeit.exe (
curl -Lo %~dp0timeit.exe https://github.com/MarkTiedemann/rktools2k3/raw/master/timeit.exe
)
if not exist %~dp0jq.exe (
curl -Lo %~dp0jq.exe https://github.com/stedolan/jq/releases/download/jq-1.6/jq-win64.exe
)
@echo off
setlocal
:: Example for using the JGit CLI on Windows
:: Downloaded from https://gist.github.com/MarkTiedemann/4a91db19983867fa1cd0c72f496ead2e
:: d(irectory) p(ath) of argument 0 (the current batch file)
set "basedir=%~dp0"
:: Remove trailing slash
set "basedir=%basedir:~0,-1%"
CSS Diner: https://flukeout.github.io/
Flexbox Froggy: https://flexboxfroggy.com/
Grid Garden: https://cssgridgarden.com/