Skip to content

Instantly share code, notes, and snippets.

View mshroyer's full-sized avatar

Mark Shroyer mshroyer

View GitHub Profile
@mshroyer
mshroyer / keybase.md
Created May 26, 2017 06:13
Keybase verification

Keybase proof

I hereby claim:

  • I am mshroyer on github.
  • I am mshroyer (https://keybase.io/mshroyer) on keybase.
  • I have a public key ASBE2vOmDs6o0yxIi8V0LhJEAoCtkDuXe3QqM8VJPib5hQo

To claim this, I am signing this object:

@mshroyer
mshroyer / icalendar_todos.py
Created December 28, 2016 16:46
Extract plaintext TODOs from Remember the Milk (RTM) iCalendar export
#!/usr/bin/env python3
import argparse
import functools
import icalendar
import operator
import re
TAGS_PATTERN = re.compile(r'Tags: ([\w\d]+(?:, [\w\d]+)*)')
INGREDIENTS
2 cups buttermilk (Bisquick) baking mix
2/3 cup milk
1/2 cup shredded sharp Cheddar cheese
1/4 cup butter, melted
1/4 tsp garlic powder
DIRECTIONS
@mshroyer
mshroyer / switch.c
Created May 3, 2014 20:07
Example of GCC's -Werror=switch
/*
* gcc -Werror=switch will produce an error for this
*/
#include <stdio.h>
enum language {
ENGLISH,
SPANISH,
GERMAN
@mshroyer
mshroyer / config.json
Last active August 29, 2015 13:59
Bootstrap 3 customization for markshroyer.com
{
"vars": {
"@gray-darker": "lighten(#000, 13.5%)",
"@gray-dark": "lighten(#000, 20%)",
"@gray": "lighten(#000, 33.5%)",
"@gray-light": "lighten(#000, 60%)",
"@gray-lighter": "lighten(#000, 93.5%)",
"@brand-primary": "#070",
"@brand-success": "#5cb85c",
"@brand-info": "#5bc0de",
#!/usr/bin/env python
"""webhook
Implements web hooks for BitBucket, etc. on my Amazon EC2 instance.
"""
__author__ = 'Mark Shroyer'
;; nasm -f elf64 prog.asm && gcc -o prog prog.o
%define under 1000
section .data
output:
db "Result: %lu",10,0
section .text
extern printf
(destructuring-bind (offset in-path out-path) (cdr sb-ext:*posix-argv*)
(with-open-file (in in-path :element-type '(unsigned-byte 8))
(with-open-file (out out-path :direction :output :if-exists :supersede)
(do ((c (make-array 32)) (n 0) (a (parse-integer offset :radix 16) (+ a n)))
((zerop (setq n (read-sequence c in))))
(format out ":~2,'0X~4,'0X00" n a)
(format out "~2,'0X~%" (mod (- (apply #'+ a (ash a -8) n (map 'list (lambda (b) (format out "~2,'0X" b) b) (subseq c 0 n)))) 256)))
(format out ":00000001FF~%"))))
@mshroyer
mshroyer / hexgolf.c
Last active August 29, 2015 13:57
bin2hex golf
int main(int a, char *v[]) {
sscanf(v[1], "%x", &a);
void *fi=fopen(v[2], "r"), *fo=fopen(v[3], "w");
for (unsigned char s=a/256+a, c[32], n; n=fread(c, 1, 32, fi); a+=n, s=a/256+a) {
fprintf(fo, ":%02X%04X00", n, a);
for (int i=0; i<n; s+=c[i++]+1) fprintf(fo, "%02X", c[i]);
fprintf(fo, "%02X\n", (256-s)&255);
}
fputs(":00000001FF\n", fo);
}
@mshroyer
mshroyer / coerce_kiln.py
Last active December 16, 2015 11:29
Python 3.3 script to coerce Kiln Harmony into finishing conversion of a large git repository (e.g. the Linux kernel), simulating multiple presses of the Repair button until the job is done. Requires BeautifulSoup 4, Requests, and pointfree.
#!/usr/bin/env python3
"""Force Kiln Harmony to finish repairing a large repository
I'm currently seeing an issue with Kiln Harmony where an imported Linux
kernel git repository fails partway through translation to Mercurial. It
seems that I can keep clicking the "Repair Repository" button to prod Kiln
into finishing more of the translation, however this is time consuming.
This script automates the process of checking whether the translation of a