Skip to content

Instantly share code, notes, and snippets.

View jbowles's full-sized avatar
💭
working on it...

josh bowles jbowles

💭
working on it...
View GitHub Profile
@jbowles
jbowles / lev_part_three.go
Created June 29, 2013 12:53
Part three of Levenshtein distance
package main
import "fmt"
// PART THREE: if characters are not the same, we step through a comparison against each character to
//// determine DELETION, INSERTION, SUBSTITUTION and get the minimum of the three values.
func MinInt(a ...int) int {
min := int(^uint(0) >> 1)
for _, i := range a {
if i < min {
@jbowles
jbowles / lev_part_two.go
Last active December 19, 2015 01:28
Part two of Levenshtein Distance
package main
import "fmt"
// PART TWO: step through each string character and vector/cell of dynamic programming table to determine difference.
//// This handles the case where both characters are an exact match, and only the "no-change" condition is used.
func LevenshteinTwo(s1, s2 string) {
m := len(s1)
n := len(s2)
width := n - 1
@jbowles
jbowles / lev_part_one.go
Last active December 19, 2015 01:28
Part one of Levenshtein distance
package main
import "fmt"
// http://en.wikipedia.org/wiki/Levenshtein_distance
// FIRST PART: define vector/cell for the dynamic programming table based on string lengths
func PartOneLevenshtein(s1, s2 string) {
m := len(s1)
n := len(s2)
@jbowles
jbowles / state_jacket.go
Created March 23, 2013 15:13
First pass at porting Sate Jacket to Go
//package state_gacket // soft 'g', like state_dʒacket
package main
import (
"fmt"
"reflect"
)
/*
type Metadata struct {
EntryLength int
@jbowles
jbowles / random_normal.js
Last active December 15, 2015 05:19
Random numbers from a normal distribution
/*jslint node:true*/
"use strict";
function normal_random(mean, variance) {
if (mean === undefined) {
mean = 0.0;
}
if (variance === undefined) {
variance = 1.0;
}
@jbowles
jbowles / stream_classifier.js
Last active December 14, 2015 03:28
Playing around with node
/*jshint node:true*/
"use strict";
// SEND REQUEST TO CLASSIFY TEXT
var http = require('http'),
fs = require('fs'),
natural = require('natural'),
classifier = new natural.BayesClassifier();
// flatten an array
@jbowles
jbowles / example_nlp_with_treat.rb
Created February 22, 2013 04:15
A quick look at what can be done with treat
require 'treat'
include Treat::Core::DSL
doc1 = document('http://en.wikipedia.org/wiki/List_of_best-selling_fiction_authors')
doc2 = document('http://en.wikipedia.org/wiki/List_of_best-selling_books')
[d1,d2].apply(:chunk, :segment, :tokenize)
#Check it!
doc1.sentences
doc1.sentences.count
@jbowles
jbowles / horizon_tfsg_step_formula_hub_first_draft.md
Created November 23, 2012 15:49
Horizon TFSG Step, Formula, Hub First Draft
```clojure
;; Clojure Step
(declare step check-valid base-complete check-user)
(defn one-of [coll]
(if (seq coll)
[(rand-nth coll)]))
(defn step[] (concat (check-valid) (base-complete) (check-user)))
(defn check-valid[] (one-of [0 1]))
@jbowles
jbowles / horizon_transactional_grammar_first_draft.md
Created November 23, 2012 15:40
Horizon Transactional Grammar First Draft
(def simple-grammar
  {:hub [:node-unique-accept :node-unique-check :node-unique-persist]
   :node-unique-accept [:ParseUrl :ParseParams :AcceptBool]
   :node-unique-check [:FormatRead :FormatCheckBool]
   :node-unique-persist [:SaveOrUpdate :PersistBool]
   :ParseUrl #{"http, www, mattcutts.com, /blog/seo-glossary-url-definitions/" "http, jbowles, github.com/" "http, www, cs.dartmouth.edu, /~mckeeman/cs48/mxcom/doc, FiniteAutomata.pdf" "https, www, ruby-toolbox.com, categories/state_machines.html"}
   :ParseParams #{"program address city state zip" "fname lname school program address city state zip" "fname lname school state zip" "fname lname city state zip"}
   :AcceptBool #{"0" "1"} ;;[] (one-of [0 1])
   :FormatRead #{"UTF8" "other stuff"}
@jbowles
jbowles / horizon_transaction_first_draft.md
Created November 23, 2012 15:26
Horizon Transaction First Draft

The :hub is the transaction and/or application (more on this later). Each :node is wrapper around a Hero Formula responsible for passing the non-boolean values to the :hub, but it also returns a boolean. Each camel-cased line inside the :node parentheses is a Hero :formula and the values in quotes are the return values of a Formula's :step. Formula.step is the only thing responsible for changing state.

The following is in Clojure but it should be interpretable from a Ruby perspective; it's the relations that matter here not the syntax.

[:hub ;; begin transaction
 ( ;; begin set of Nodes
  
  :node-unique-accept