Skip to content

Instantly share code, notes, and snippets.

View henriquegogo's full-sized avatar

Henrique Gogó henriquegogo

View GitHub Profile
@henriquegogo
henriquegogo / orchestrator.go
Created September 29, 2024 04:27
Sender / Receiver through socket
package main
import (
"fmt"
"net"
"os"
"sync"
"time"
)
@henriquegogo
henriquegogo / kamby.scm
Last active November 20, 2024 13:32
Kamby Language in Scheme. Usage: $ scheme kamby.scm < sample.ka
(define (tokenize script-text)
(let ((tkns (list "")) (in-str? #f))
(define (append-str! str)
(set-car! tkns (string-append (car tkns) str)))
(define (add-tkn! . strs)
(if (string=? (car tkns) "") (set! tkns (cdr tkns)))
(set! tkns (append (reverse strs) tkns)))
@henriquegogo
henriquegogo / funplate.js
Created September 1, 2024 01:13
HTML createElement with arguments and nested children
'a abbr address area article aside audio b base bdi bdo blockquote body br \
button canvas caption cite code col colgroup data datalist dd del details dfn \
dialog div dl dt em embed fieldset figcaption figure footer form h1 h2 h3 h4 \
h5 h6 head header hgroup hr html i iframe img input ins kbd label legend li \
link main map mark math menu meta meter nav noscript object ol optgroup option \
output p param picture pre progress q rp rt ruby s samp script section select \
slot small source span strong style sub summary sup svg table tbody td \
template textarea tfoot th thead time title tr track u ul var video wbr \
'.split(' ').forEach(tag => window[tag] = (...args) => {
const el = Object.assign(document.createElement(tag), ...args);
@henriquegogo
henriquegogo / useDebounce.ts
Last active June 16, 2023 14:22
Create a debounce hook to wait a textfield change and dispatch an event after specific milliseconds
export function useDebounce(handler: (value: string) => void, millisec: number = 500) {
const [value, setValue] = useState('');
useEffect(() => {
const timeoutId = setTimeout(() => handler(value), millisec);
return () => clearTimeout(timeoutId);
}, [value, handler, millisec]);
return setValue;
}
@henriquegogo
henriquegogo / love.lua
Last active April 10, 2022 08:24
Lua LÖVE file reference for autocomplete
-- takes all
love = {
audio = {
getActiveEffects = function(...) end, --Gets a list of the names of the currently enabled effects.
getActiveSourceCount = function(...) end, --Gets the current number of simultaneously playing sources.
getDistanceModel = function(...) end, --Returns the distance attenuation model.
getDopplerScale = function(...) end, --Gets the global scale factor for doppler effects.
getEffect = function(...) end, --Gets the settings associated with an effect.
getMaxSceneEffects = function(...) end, --Gets the maximum number of active effects.
getMaxSourceEffects = function(...) end, --Gets the maximum number of active Effects for each Source.
@henriquegogo
henriquegogo / .xinitrc.keycode
Created March 19, 2022 04:46
Remap key in linux
xmodmap -e "keycode 49 = apostrophe quotedbl bar bar bar"
@henriquegogo
henriquegogo / .bashrc-fluidsynth
Last active February 15, 2022 14:23
Autoload fluidsynth. Copy to .bashrc
#!/bin/bash
# Add these lines in .bashrc and set Raspberry Pi to auto login
if [ ! -f /tmp/fluidsynth-bootloaded ]; then
touch /tmp/fluidsynth-bootloaded
killall fluidsynth
fluidsynth -a alsa -g 1 /usr/share/sounds/sf2/default-GM.sf2 -o midi.autoconnect=1 -c 4
fi
@henriquegogo
henriquegogo / sac.hp12c
Last active October 11, 2021 01:28
HP Calculators Programs - SAC for 12c | TVM for 42s
// Constant Amortization System for HP12C (Platinum)
// Author: Henrique Gogó (henriquegogo@gmail.com)
//
// Instructions: enter n, i and PV values and set FV as 0.
// Set register 9 if you want to get an specific payment number.
//
// After program ends, the result saved in registers will be:
// X: current payment value
// FV: remaining amount to pay
// PMT: amortization value (fixed)
@henriquegogo
henriquegogo / qemu-create.sh
Last active June 28, 2020 04:00
Scripts to create and run qemu VMs
qemu-img create -f qcow2 "$@" 80G
@henriquegogo
henriquegogo / speechListenSpeak.js
Created June 25, 2020 15:50
Speech recognition and speak using native browser API
let recognition = new webkitSpeechRecognition();
recognition.lang = 'pt-BR';
recognition.onresult = ({ results }) => {
const transcript = results[0][0].transcript;
speechSynthesis.speak(new SpeechSynthesisUtterance(transcript));
}
recognition.start();