Skip to content

Instantly share code, notes, and snippets.


Ben Hoyt benhoyt

View GitHub Profile
benhoyt / flattenjson.go
Created Jul 7, 2020
Little Go tool to flatten JSON input
View flattenjson.go
// Flatten JSON input
// Example:
// $ echo '{"user":"Ben","ints":[true,false,null],"sub":{"x":1,"y":2}}' | go run flattenjson.go
// _.ints[0] = true
// _.ints[1] = false
// _.ints[2] = null
// _.sub.x = 1
// _.sub.y = 2
benhoyt /
Created Oct 17, 2019
Overview of (parts of) the Python standard library

I'm going to demo a bunch of Python builtin and stdlib functions. There's a lot to get through, so I'll be going fast, but please stop me and ask questions as we go. The goal is to give you a taste of Python's power and expressivity if you're not a Python person, or maybe teach you a few new tricks if you are already.

Built-in functions

# enumerate: iterate with index *and* item
>>> strings = ['123', '0', 'x']
>>> for i, s in enumerate(strings):
...     print(f'{i} - {s}')  # f-strings!
benhoyt / join.awk
Created Nov 20, 2018
AWK program to compare time complexity of joining strings
View join.awk
# AWK program to compare time complexity of joining strings using a
# simple O(N^2) algorithm and a slightly more complex O(N log N) one.
# Join array elements, separated by sep: O(N^2) version
function join1(a, sep, i, s) {
for (i = 1; i+1 in a; i++) {
s = s a[i] sep
if (i in a) {
s = s a[i]
benhoyt / mandelbrot.go
Created Sep 21, 2018
Go program to print the Mandelbrot set on stdout
View mandelbrot.go
// Print the Mandelbrot set on stdout
package main
import (
const (
benhoyt /
Created May 8, 2018
Calculate edit distance with simple (memoized) recursive algorithm
def distance(s, t, cache=None):
"""Return minimum edit distance between s and t, where an edit
is a character substitution, deletion, or addition.
if not s:
return len(t)
if not t:
return len(s)
if cache is None:
benhoyt / connect4.go
Last active Jan 25, 2018
Connect 4 solver
View connect4.go
// A little "Connect Four" game
package main
import (
benhoyt / server.go
Last active Nov 29, 2017
Simple HTTP server with regex-based router in Go
View server.go
// Simple HTTP server with regex-based router
package main
import (
benhoyt / tiny-vdom-speed.html
Created Oct 28, 2017
Speed test of tiny virtual dom and merge algorithm
View tiny-vdom-speed.html
<head><title>More speed tests</title></head>
<h1>More speed tests</h1>
<div id="main"></div>
{% for item in items %}
<li>item: {{ item }}</li>
benhoyt / test_dom.html
Created Oct 25, 2017
Test speed of various methods of building DOM
View test_dom.html
<title>Test speed of various methods of building DOM</title>
Test speed of various methods of building DOM
benhoyt / is_none_bytecode.diff
Created Jun 27, 2017
Add COMPARE_IS_NONE opcode to CPython for performance
View is_none_bytecode.diff
diff --git a/Include/opcode.h b/Include/opcode.h
index 99c3b0ef81..dceedc662a 100644
--- a/Include/opcode.h
+++ b/Include/opcode.h
@@ -12,6 +12,8 @@ extern "C" {
#define ROT_THREE 3
#define DUP_TOP 4
#define DUP_TOP_TWO 5
+#define COMPARE_IS_NONE 6
You can’t perform that action at this time.