Skip to content

Instantly share code, notes, and snippets.

View aoc2022_d01_const_mem.py
#!/usr/bin/env python3
# https://adventofcode.com/2022/day/1 Parts 1 and 2 with constant memory
# Mark Jenkins
from heapq import nlargest
def gen_elf_lines():
"""a generator of consecutive elf lines, converted to int
@markjenkins
markjenkins / aoc2021_d01p1.py
Last active Dec 1, 2022
Advent of code 2021 in Python and Guile Scheme https://adventofcode.com/2021/
View aoc2021_d01p1.py
#!/usr/bin/env python3
EOFDEPTH = -1
def read_depth_line():
try:
line = input()
return int(line)
except EOFError:
return EOFDEPTH
View goprognulinuxobsnotes.txt
While connected to a PC without drivers (such as GNU/Linux) over USB, the GoPro sets itself up as a USB Ethernet card and runs a DHCP server to assign your PC an address. Doesn't mess with my default route, so regular path to the internet still works. In my case the GoPro assigned me 172.23.177.54 and nmap helped me discover the GoPro was on 172.23.177.51.
I had to ask the GoPro to start streaming by visiting http://172.23.177.51/gp/gpWebcam/START?res=1080p
the result returned JSON with
{
"status": 2,
"error": 0
}
@markjenkins
markjenkins / monitor_icecast.py
Last active Mar 20, 2022
Monitor the FSF LibrePlanet icecast servers view counts and total bandwidth
View monitor_icecast.py
#!/usr/bin/env python3
# Monitor the FSF LibrePlanet icecast servers view counts and total bandwidth
# Copyright (C) 2022 Mark Jenkins <mark@markjenkins.ca>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
@markjenkins
markjenkins / 2022-02-22_boardcandidates.txt
Last active Feb 23, 2022
Skullspace Board Election 2022
View 2022-02-22_boardcandidates.txt
Elected by acclamation
Edwin Amsler
Pietra Shirley
Thor Robinson
Michael Kozakewich
@markjenkins
markjenkins / randlines.py
Created Oct 26, 2021
Get N random lines from a file
View randlines.py
#!/usr/bin/env python3
# call with two arguments, the path to the file to read lines from and
# the number of lines
from sys import argv
from random import SystemRandom
with open(argv[1]) as f:
lines = f.readlines()
@markjenkins
markjenkins / validateselectrequired.html
Created Oct 22, 2021
Proof of concept that modern browsers will enforce select required, default option disabled on form submit
View validateselectrequired.html
<!doctype html>
<html lang="en">
<body>
<form method="GET" action="https://duckduckgo.com/">
<select name="q" required>
<option value="" disabled selected>Pick an option</option>
<option value="duck">Duck</option>
<option value="duck">Cat</option>
<option value="duck">Bear</option>
@markjenkins
markjenkins / four_words.py
Last active Oct 8, 2021
wordlist based password generators
View four_words.py
#!/usr/bin/env python3
from __future__ import print_function
from random import SystemRandom
from os.path import join, dirname
sysrandom = SystemRandom()
View grade3_amesment_store_sat_backtracking.scm
;;; https://leosstemhacks.wordpress.com/2018/03/27/np-complete-3rd-grade-math-problems/
;;; https://news.ycombinator.com/item?id=28343073
;;;
;;; I frame this as a satisfiability problem and tackle it with backtracking
;;; and an optimizing heuristic
;;;
;;; The heuristic is this, we sort the items from lowest value to greatest
;;; and only try to add the next lowest item available in our search
;;; if that item puts the total over, then we know all remaining items
;;; which are of greater value will do the same
@markjenkins
markjenkins / Barcode handling.js
Last active Jul 10, 2021 — forked from alexwebr/Barcode handling.js
Code snippet from MB Vaccine App
View Barcode handling.js
}, u.default.createElement(s.Camera, {
onBarCodeScanned: R ? function(t) {
var l, o, u, c, s, p, y;
return n.default.async(function(v) {
for (;;) switch (v.prev = v.next) {
case 0:
return l = t.type, o = t.data, v.next = 3, n.default.awrap(f.getNetworkStateAsync());
case 3:
if (!1 !== (u = v.sent).isConnected && !1 !== u.isInternetReachable) {
v.next = 8;