Skip to content

Instantly share code, notes, and snippets.

View roguh's full-sized avatar

Felina Rivera Calzadillas roguh

  • New Mexico, USA
  • 02:35 (UTC -06:00)
View GitHub Profile
@roguh
roguh / mtplvcap_command.js
Created September 16, 2025 16:23
mtplvcap_command.js: Send commands to mtplvcap, control your Nikon camera through the CLI. See https://github.com/puhitaku/mtplvcap
#!/usr/bin/env node
const addr = process.env.MTPLVCAP_ADDRESS || "ws://localhost:42839/control"
// TODO: add the other mtplvcap commands
const payload = {af_focus_now: true}
let ws = new WebSocket(addr)
ws.onopen = () => {
ws.send(JSON.stringify(payload))
ws.close(1000, "Normal Closure")
}
@roguh
roguh / diff_and_conway.py
Last active March 27, 2025 15:37
With this code, you can define a Polynomial and find its derivative, its root (real or complex), and print it out as LaTeX math notation like 5x^2 + 2x - 3
"""This program is for working with Polynomials.
With this code, you can define a Polynomial and:
- convert it to LaTeX math notation
something like 5x^2 + 2x - 3
- find the derivative of a polynomial
- find a root of a one dimensional polynomial (floating point or complex/imaginary)
"""
from math import isclose
from typing import Sequence, Generic, TypeVar
@roguh
roguh / usda_hardiness_zones.json
Created February 22, 2025 17:16
USDA Hardiness Zones: described, programmatically defined, and serialized as JSON
{"0": [-459.66999999999996, -60], "1": [-60, -50], "2": [-50, -40], "3": [-40, -30], "4": [-30, -20], "5": [-20, -10], "6": [-10, 0], "7": [0, 10], "8": [10, 20], "9": [20, 30], "10": [30, 40], "11": [40, 50], "12": [50, 60], "13": [60, 70]}
[[0, "A", -459.66999999999996, -65], [0, "B", -65, -60], [1, "A", -60, -55], [1, "B", -55, -50], [2, "A", -50, -45], [2, "B", -45, -40], [3, "A", -40, -35], [3, "B", -35, -30], [4, "A", -30, -25], [4, "B", -25, -20], [5, "A", -20, -15], [5, "B", -15, -10], [6, "A", -10, -5], [6, "B", -5, 0], [7, "A", 0, 5], [7, "B", 5, 10], [8, "A", 10, 15], [8, "B", 15, 20], [9, "A", 20, 25], [9, "B", 25, 30], [10, "A", 30, 35], [10, "B", 35, 40], [11, "A", 40, 45], [11, "B", 45, 50], [12, "A", 50, 55], [12, "B", 55, 60], [13, "A", 60, 65], [13, "B", 65, Infinity]]
[["0A", -459.66999999999996, -65], ["0B", -65, -60], ["1A", -60, -55], ["1B", -55, -50], ["2A", -50, -45], ["2B", -45, -40], ["3A", -40, -35], ["3B", -35, -30], ["4A", -30, -25], ["4B", -25, -20], ["5A", -20, -15], ["5B", -15,
@roguh
roguh / colorbrewer_rgb_3int.json
Last active May 17, 2024 19:05
All of Brewer's color themes defined as lists of 3 integers representing RGB colors. Divergent/Sequential type, color theme name, and sequence size is preserved.
{"type":{"Spectral":"div","RdYlGn":"div","RdBu":"div","PiYG":"div","PRGn":"div","RdYlBu":"div","BrBG":"div","RdGy":"div","PuOr":"div","Set2":"qual","Accent":"qual","Set1":"qual","Set3":"qual","Dark2":"qual","Paired":"qual","Pastel2":"qual","Pastel1":"qual","OrRd":"seq","PuBu":"seq","BuPu":"seq","Oranges":"seq","BuGn":"seq","YlOrBr":"seq","YlGn":"seq","Reds":"seq","RdPu":"seq","Greens":"seq","YlGnBu":"seq","Purples":"seq","GnBu":"seq","Greys":"seq","YlOrRd":"seq","PuRd":"seq","Blues":"seq","PuBuGn":"seq"},"Spectral":{"3":[[153,213,148],[255,255,191],[252,141,89]],"4":[[43,131,186],[171,221,164],[253,174,97],[215,25,28]],"5":[[43,131,186],[171,221,164],[255,255,191],[253,174,97],[215,25,28]],"6":[[50,136,189],[153,213,148],[230,245,152],[254,224,139],[252,141,89],[213,62,79]],"7":[[50,136,189],[153,213,148],[230,245,152],[255,255,191],[254,224,139],[252,141,89],[213,62,79]],"8":[[50,136,189],[102,194,165],[171,221,164],[230,245,152],[254,224,139],[253,174,97],[244,109,67],[213,62,79]],"9":[[50,136,189],[102,194
@roguh
roguh / tox.ini
Last active March 29, 2024 22:38
# This demonstrates using tox to test different Python versions and different library versions on select Python versions.
# TODO: use asdf, pyenv, Dockerfile to install many py versions
# Dependencies: aiohttp
# Dev dependencies: pytest pytest-asyncio pytest-cov tox tox-pyenv
[tox]
envlist =
# The oldest Python version we support
# 3.7 is EOL and 3.8 only has 1 more year of security updates
@roguh
roguh / gist:34e93d2568d637be93b2c72695b46abd
Last active July 31, 2023 22:07
Lua resolve hostname with resty.dns.resolver
function resolve_hostname(hostname)
local dns_resolver_lib = require("resty.dns.resolver")
local dns_resolver, dns_resolver_err = dns_resolver_lib:new({
-- Kubernetes default nameserver IP
-- If your hostnames are public, try Google's DNS nameserver 8.8.8.8
nameservers = {"kube-dns.kube-system.svc.cluster.local"},
-- 250 milliseconds
timeout = 250,
retrans = 2
@roguh
roguh / gist:cd110ee563006c7aca4e15478efc9823
Last active April 24, 2023 18:22
First shot at building a chip, connecting NAND gates
# See updates here: github.com/roguh/gdsfactory_nand2tetris.git
# python 3.11 support. unit tests seem ok, may need some reference GDS files
# download https://gdsfactory.github.io/skywater130/ (sky130 package) but make sure to use laatest version of gdsfactory, run `make install`
# `pip install gdsfactory[full,dev]`
# use https://github.com/gdsfactory/kweb for visualization
# put file x.gds into gds_files and navigate to localhost:8000/gds/x to see it
# TODO: list gds files at homepage /, route should be /gds_files/x with /gds_files/x.gds redirect
# gdsthing.plot_matplotlib() is slow
@roguh
roguh / countries.json
Last active July 26, 2022 01:40 — forked from keeguon/countries.json
A list of countries in JSON
[
{
"name": "Afghanistan",
"code": "AF"
},
{
"name": "Åland Islands",
"code": "AX"
},
{
@roguh
roguh / redis_con.py
Last active February 4, 2022 16:47
Connect to a redis sentinel
from redis.sentinel import Sentinel
def connect_to_redis(address: str, port: int, redis_set: str):
sentinel = Sentinel([(address, port)], socket_timeout=0.5)
con = sentinel.master_for(
redis_set,
decode_responses=True,
socket_timeout=0.5,
)
con.echo("test")
return con
#!/usr/bin/env python3
import fileinput
import json
import re
import sys
from argparse import ArgumentParser
from dataclasses import dataclass
from pprint import pprint
from typing import Any, Dict, List, Optional, Union