Skip to content

Instantly share code, notes, and snippets.

View elcritch's full-sized avatar

Jaremy Creechley elcritch

View GitHub Profile
@elcritch
elcritch / other.exs
Created June 25, 2020 19:23
Byte String Pad
0x4A |> Integer.to_string(2) |> String.pad_leading(8, "0") |> String.pad_leading(10,"0x")
@elcritch
elcritch / valgrind.log
Created October 29, 2020 19:01
JSON RPC Memory Corruption - Nim 1.4.0
> $ valgrind -v --leak-check=yes ./rpcsocket_json [±compiler-1_4_0_failure-test ●]
==529377== Memcheck, a memory error detector
==529377== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==529377== Using Valgrind-3.16.1-36d6727e1d-20200622X and LibVEX; rerun with -h for copyright info
==529377== Command: ./rpcsocket_json
==529377==
--529377-- Valgrind options:
--529377-- -v
--529377-- --leak-check=yes
--529377-- Contents of /proc/version:
@elcritch
elcritch / gpio_setup_example.nim
Created March 7, 2021 20:33
Nim Hard Port Configuration Example
type
Direction* = enum
input
output
PinConf* = object
dir: Direction
Port0* = object
@elcritch
elcritch / usbreset.nim
Created March 12, 2021 04:34
usbreset.nim -- Nim version of USB port reset on Linux
## usbreset -- linux program reset a usb port using /dev/ttyUSB<n> file paths
# usage: usbreset /dev/ttyUSB0
# Install:
# nim c usbreset.nim
# sudo cp usbreset /usr/local/bin
# Setuid to not need sudo (at your own peril):
# sudo chmod 4555 /usr/local/bin/usbreset
import os, system, osproc, posix, strutils, re, strformat
@elcritch
elcritch / setup.sh
Created May 19, 2021 23:58
Manjaro dev tools setup because I always forget
sudo pacman -Syu base-devel --needed
@elcritch
elcritch / linux-keybindings.json
Last active January 18, 2023 17:52
VSCode Keybindings
// Place your key bindings in this file to override the defaults
[
{ "key": "meta+f", "command": "actions.find",
"when": "editorFocus || editorIsOpen" },
{ "key": "meta+s", "command": "workbench.action.files.save" },
{ "key": "meta+g", "command": "editor.action.nextMatchFindAction",
"when": "editorFocus" },
{ "key": "meta+a", "command": "editor.action.selectAll" },
{ "key": "meta+c", "command": "editor.action.clipboardCopyAction" },
{ "key": "meta+x", "command": "editor.action.clipboardCutAction" },
@elcritch
elcritch / dts_example.nim
Created October 5, 2021 05:03
Example of DTS tree encoded into a pure Nim Macro
deviceTree:
&mikrobus_i2c {
status = "okay",
spi-max-frequency = `<100000>`,
}
&mikrobus_spi:
status: "okay"
click_spi2: spi-device@1 {
# Useful helpers for manjaro
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
@elcritch
elcritch / 00-setup-zephyr-opensuse.sh
Created December 7, 2021 01:43
Setup Zephyr Linux
sudo zypper in libusb-compat-devel
sudo zypper in mbedtls-devel libmbedtls13
sudo zypper in usbsdmux-udev udev-browse udev-extra-rules
sudo zypper install git cmake ninja-build gperf ccache dfu-util dtc wget \
python3-pip python3-tkinter xz file glibc-devel libstdc++-devel python38 \
SDL2-devel
@elcritch
elcritch / kalman_simple.nim
Last active February 26, 2022 09:38
Example Nim port of a Kalman filter
## * A simple kalman filter example by Adrian Boeing
## www.adrianboeing.com
## original at: https://gist.github.com/jannson/9951716
## Note: I imported this to Nim, but haven't run or tested it.
import std/random, std/strformat, std/math
proc runKalman*() =
## initial values for the kalman filter