Skip to content

Instantly share code, notes, and snippets.


Alex Bowe alexbowe

View GitHub Profile
alexbowe / funky_typedef.c
Last active Dec 20, 2015
C function pointer typedef example (for nicer variable declarations).
View funky_typedef.c
I have read a bunch of posts about function pointers,
such as
but I rarely see this *one weird trick*.
It is C's (admittedly clunky) syntax for typedefing a function pointer of a given signiature.
Hide the clunkiness in the typedef to keep your code tidy and maintainable.
#include <stdio.h>
alexbowe /
Created Aug 17, 2013
A shorthand way to get a unique integer mapper in Python
# here is a tidy way to get a hashable object (such as a word) to map to a unique int in python
from collections import defaultdict
mapper = defaultdict(lambda: len(mapper))
mapper["hello"] # 0
mapper["world"] # 1
mapper["and"] # 2
mapper["hello"] # 0
mapper["alex"] # 3
alexbowe / 750kotoba.html
Created Jan 11, 2014
Example of using TinySegmenter.js to tokenize Japanese and provide the word count of the input from a textbox.
View 750kotoba.html
<!DOCTYPE html>
<!-- -->
<script type="text/javascript" src="tiny_segmenter.js" charset="UTF-8"></script>
var segmenter = new TinySegmenter();
function countWords() {
s = document.getElementById("inputText").value;
alexbowe /
Last active May 17, 2017
Find the Nth Tweet from your Twitter archive .csv file
# To run, from shell type: python
# Must be run in the same directory as the downloaded csv file.
import csv
# Modify this number if you want a different nth Tweet
# Should be 1-based (i.e. first tweet is the 1th, not 0th)
num = 40000
# Change the path if you want to run it from a different directory
path = "tweets.csv"
alexbowe /
Created Apr 23, 2011
Lazy functional style streams for Python
null_stream = (None, None)
def map(f, stream):
if stream is null_stream: return null_stream
return (f(head(stream)), lambda: map(f, tail(stream)))
def reduce(f, result, stream):
if stream is null_stream: return result
return reduce(f, f(result, head(stream)), tail(stream))
alexbowe /
Created Mar 21, 2011
Demonstration of extracting key phrases with NLTK in Python
import nltk
text = """The Buddha, the Godhead, resides quite as comfortably in the circuits of a digital
computer or the gears of a cycle transmission as he does at the top of a mountain
or in the petals of a flower. To think otherwise is to demean the Buddha...which is
to demean oneself."""
# Used when tokenizing words
sentence_re = r'''(?x) # set flag to allow verbose regexps
([A-Z])(\.[A-Z])+\.? # abbreviations, e.g. U.S.A.
alexbowe /
Last active Aug 6, 2020
Method to simplify many programming interview tree questions.
Interview hack: Memorize preorder/inorder/postorder tree ITERATORS (no recursion) and their reverses.
It simplifies a disproportionate number of questions to simple for loops (see below).
I consider the implementations below the simplest way to memorize the iterative tree traversal algorithms,
because they are so similar to each other, and to their respective recursive versions.
- We only visit a node after we have expanded its children (i.e. added them to the stack) in the desired order.
- `x is curr` does the expanded flagging for us, because we always expand the current node.
You can’t perform that action at this time.