Skip to content

Instantly share code, notes, and snippets.

@felixr
felixr / compression_puzzle.uiua
Last active July 19, 2024 21:36
compression puzzle in uiua
https://www.uiua.org/pad?src=0_12_0-dev_2__8J-UoiDihpAg4oqCwrDii5XiipniiqLiirjip7sK8J-XnO-4jyDihpAg4pmt4oi14peH8J-UouKKnOKWoeKKuC1AIAriiY0iM0EyQjJBMUMi8J-XnO-4jyJBQUFCQkFBQyIK
🔢 ← ⊂°⋕⊙⊢⊸⧻
🗜️ ← ♭∵◇🔢⊜□⊸-@
≍"3A2B2A1C"🗜️"AAABBAAC"
@felixr
felixr / LenovoL13YogaGen2.json
Created January 20, 2024 17:45
Lenovo L13 Yoga Gen2 nbfc config
{
"NotebookModel": "LENOVO 20R4001CBR",
"Author": "Rafaelti",
"EcPollInterval": 2000,
"ReadWriteWords": false,
"CriticalTemperature": 92,
"FanConfigurations": [
{
"ReadRegister": 149,
"WriteRegister": 148,
@felixr
felixr / background.js
Last active January 1, 2021 16:15
Proof of concept chrome extension to listen to all tab events
function handleEvent(name, payload) {
fetch('http://localhost:8118/report?'+JSON.stringify({name, payload}));
}
chrome.tabs.onActivated.addListener(
(tabId, windowId) => handleEvent("activated", {tabId, windowId}));
chrome.tabs.onActiveChanged.addListener(
(tabId, selectInfo) => handleEvent("activeChanged", {tabId, selectInfo}));

Intro

This describes an adaptive, stable, natural mergesort, modestly called timsort (hey, I earned it ). It has supernatural performance on many kinds of partially ordered arrays (less than lg(N!) comparisons needed, and as few as N-1), yet as fast as Python's previous highly tuned samplesort hybrid on random arrays.

In a nutshell, the main routine marches over the array once, left to right, alternately identifying the next run, then merging it into the previous

(defn insertion-sort [arr left right]
(for i (+ left 1) (+ right 1)
(def temp (in arr i))
(var j (- i 1))
(while (and (>= j left) (> (in arr j) temp))
(set (arr (+ j 1)) (in arr j))
(-- j))
(set (arr (+ j 1)) temp))
arr)
@felixr
felixr / debug.janet
Last active December 19, 2020 18:59
Debug macro for janet
(defmacro dbg! [form]
(let [func (first form)
args (drop 1 form)]
(var accum @['do])
(var syms @[])
(each arg args
(let [sym (gensym)]
(array/push accum (tuple 'def sym arg))
(array/push syms [arg sym])))
@felixr
felixr / generate_search_index.js
Created December 10, 2020 17:10
Generate searchIndex entries for janet docset
function dtype(t) { return t=="function" ? "Function" : (t=="macro" ? "Macro": "Builtin");}
let s = "";
for (let b of document.querySelectorAll('.binding')) {
s += `INSERT OR IGNORE INTO searchIndex(name, type, path) VALUES ("${b.firstChild.id}","${dtype(b.children[1].innerText)}","api/index.html#${b.firstChild.id}");\n`;
}
s
@felixr
felixr / rm_lines.ksy
Created November 27, 2020 18:20
reMarkable lines format (v3 and v5)
meta:
id: remarkable_lines
file-extension: rm
endian: le
seq:
- id: header
type: header
- id: page
type: page
enums:
#!/bin/bash
# Create animated gif by rotating a GIF
ORIG=$1
i=100
for deg in `seq 0 30 330 | xargs`; do
i=`expr $i + 1`
convert ${ORIG} \( +clone -background none -rotate $deg \) -gravity center -compose Src -composite loading_$i.gif
done