• Parsing with Clojure and Instaparse

    Parsing is fun, and I’ve covered some simple Parsec-style parsers in previous posts, but this one’s about Clojure and Instaparse. Instead of building up parsers with combinators, Instaparse takes a grammar as a string and generates a parser. I think this makes for more concise parser definitions that are both easier to write and understand after the fact.

  • Logic programming in Clojure

    Logic and constraint-based programming have always interested me, which might explain why I like writing SQL queries so much. This post will cover some problems I’ve solved with Clojure’s core.logic.

  • Building native Clojure images with GraalVM

    With the recent release of GraalVM it’s now possible to compile programs ahead-of-time into a native executable for JVM-based languages. Along with this comes pretty radical implications with regard to startup time, artifact size, runtime performance, etc. Read Jan Stępień’s article first for more information. This post demonstrates the same idea, but directly on macOS rather than within a Linux container.

  • clojure.spec for functions by example

    Clojure.spec for functions by example: their inputs, outputs, and the relationships between them. Updated 3/26/2018.

  • Infix DSL Validation with clojure.spec

    Say you’re going to write some code to parse and validate logical boolean clauses as data. Maybe you’re writing a DSL to allow users to express some rules for a rules engine, e.g. “date is today and junk is true”. Wouldn’t it be nice to be able to validate these logical declarations, perhaps by defining a specification declaratively?!

  • A Year in Clojure

    A lot has changed since my last post nearly a year ago. I want to write about my experience coming from a ML-family language to a Lisp. It’s not going to be very informative as a tutorial; it’s mostly scattershot notes and things I’ve found interesting along the way.

  • Working CryptoPals Set 2 challenges in F#

    My previous post covered approaches to challenges in Set 1 of CryptoPals challenges. This post will be more of the same for Set 2.

  • Working CryptoPals Set 1 challenges in F#

    The CryptoPals challenges are a great hands-on introduction to cryptography and cryptanalysis. This post will outline some of my approaches to the challenges, written in F#.

  • Working with ALGLIB's Random Decision Forests in F#

    My team just finished a Kaggle competition to help Home Depot improve their search results. We tried a few machine learning algorithms along the way: starting with linear & logistic regression, moving on to random forests, and experimenting with XGBoost. In this post I’ll focus on random forests because they’re very easy to use and perform well on a variety of problems. We were able to place in the top 5% using a random forest model, but top finishers used a combination of models.

  • Generating Markov text from YouTube comments

    Let’s build on my post from a few months ago about generating weird text with Markov chains. This post will focus on a purely GIGO workflow — instead of feeding our Markov text generator with literary classics, we’re going to feed it YouTube comments.

  • Markov chain text generation in F#

    A Markov chain models a series of random transitions from one state to another, with the next state depending only on the current state. This idea has plenty of applications, one of them happens to be generating weird text, and we’ll do just that in this post.

  • Simple text classification with a little F# (Part 3)

    My previous post described the TF-IDF technique. Now we’re going to put it all together to build a working text classifier.

  • Coding interview minutiae grows on trees

    The author of Homebrew was recently asked to “invert a binary tree” during a Google interview. Well, he didn’t get the job, and many a blogger cried foul at the pitiful state of technical interviews. I agree that coding interviews can be arbitrary and asinine—but I couldn’t help myself. I had to take the binary tree challenge to validate my existence as a programmer.

  • Simple text classification with a little F# (Part 2)

    My previous post laid out the basics for calculating term frequencies from text documents. This post will describe a method for supplementing term frequency that will make it more useful.

  • Simple text classification with a little F# (Part 1)

    In this series I’ll describe a simple recipe for text classification. We’ll start with some text classification basics.

  • First Post

    Welcome to my first post. I plan on putting some articles up here about software development.

subscribe via RSS