• Using Cognitect's aws-api with AWS Transcribe

    Using Cognitect’s aws-api library to work with AWS is nice and easy (and simple). This post shows how to use it with AWS Transcribe for speech-to-text.

  • GraalVM Polyglot with Clojure and JavaScript

    GraalVM enables interesting new interop scenarios between its hosted languages. This post demonstrates some polyglot interop between Clojure as a host language and JavaScript as the hosted language.

  • Clojure.spec Beginner's FAQ

    Clojure.spec has been available (in alpha) for some time, and there are great talks and resources like the rationale and official guide. This post supplements those with some common questions and issues I’ve seen.

  • Syntax Synonyms

    I had an itch to implement some basic CSS selectors for Hickory, a Clojure HTML representation. Having done something similar in F# for XPath and HTML I thought the same approach would be a good starting point.

  • GraalVM Native Image HTTPS Support

    GraalVM 1.0.0-RC7 adds HTTPS as a supported protocol, and this is a brief walkthrough for using it in a Clojure project with GraalVM Community Edition for macOS. See this example project for a demo.

  • 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

    This post covers some toy problems I’ve solved with Clojure’s core.logic.

  • Building native Clojure images with GraalVM

    GraalVM makes it possible to compile JVM-based programs ahead-of-time into a native executable, with significant improvements to startup time, resource usage, etc. This post will demonstrate a CLI tool written in Clojure and compiled to a native binary, and compare its performance to the JVM-based version.

  • clojure.spec for functions by example

    Clojure.spec for functions by example: their inputs, outputs, and the relationships between them. Updated 9/6/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 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