Why (and how) I'm refusing to pay war taxes
Why (and how) I'm refusing to pay war taxes posted on 2013-04-15Growing up, I wanted nothing more than to be a naval officer. But then Jesus changed my heart. He’s been teaching me that instead of...
View ArticleMarkov Networks, Monoids, and Futurama
Markov Networks, Monoids, and Futurama posted on 2013-05-09In this post, we’re going to look at how to manipulate multivariate distributions in Haskell’s HLearn library. There are many ways to...
View ArticleTurning an AK-47 into a serving ladle
Turning an AK-47 into a serving ladle posted on 2013-05-13I really like the classic passage from Isaiah 2:4, Nations will beat their swords into plowshares and their spears into pruning hooks. Nation...
View ArticleHLearn cross-validates >400x faster than Weka
HLearn cross-validates >400x faster than Weka posted on 2013-06-03Weka is one of the most popular tools for data analysis. But Weka takes 70 minutes to perform leave-one-out cross-validate using a...
View ArticleHLearn's code is shorter and clearer than Weka's
HLearn's code is shorter and clearer than Weka's posted on 2013-06-11Haskell code is expressive. The HLearn library uses 6 lines of Haskell to define a function for training a Bayesian classifier; the...
View ArticleWhy I did not apply for noncombatant status
Why I did not apply for noncombatant status posted on 2013-06-28Below is the text of a document I prepared when filing for conscientious objector status to leave the navy. I’ve published it at the...
View ArticleThe external wort chiller
The external wort chiller posted on 2013-07-24For $5 at Lowes, I built an “external wort chiller.” I’ve never seen any other homebrewers with this setup, so I figured I’d post my results on the...
View ArticleFunctors and monads for analyzing data
Functors and monads for analyzing data posted on 2013-07-29Functors and monads are powerful design patterns used in Haskell. They give us two cool tricks for analyzing data. First, we can “preprocess”...
View ArticleThe pacifism parallelogram
The pacifism parallelogram posted on 2013-08-20I am a Christian pacifist, but I still have a lot of respect for certain people in the military. This post is about how I resolve this apparent conflict...
View Articlefaith of a mustard seed
faith of a mustard seed posted on 2014-04-02In Matthew 17:20, Jesus says:I tell you the truth, if you have faith as small as a mustard seed, you can say to this mountain, “Move from here to there” and...
View ArticleI got lenses in my Functors
I got lenses in my Functors posted on 2014-06-06The typeparams package provides type lenses. Let’s combine them with Functors. Because why not?! You’ll need to have at least skimmed the linked README...
View Articlelens you an applicative for great haskell?
lens you an applicative for great haskell? posted on 2014-06-09Welcome back for round 2 of adventures in typeparams. In our last episode, we lensified the Functor type class. In this episode, we’re...
View ArticleA neat trick for partially closed type families
A neat trick for partially closed type families posted on 2014-06-10This post covers a pretty neat trick with closed type families. Normal type families are “open” because any file can add new...
View ArticleThe type lens laws
The type lens laws posted on 2014-06-10(or how to promote quickcheck and rewrite rules to the type level)We’ve seen how to use the typeparams library to soup up our Functor and Applicative type...
View Articledo your lenses even do notation?
do your lenses even do notation? posted on 2014-06-11It’s round 5 of typeparams versus GHC. We’ll be extending our Functor and Applicative classes to define a new Monad class. It’s all pretty simple if...
View ArticleTying the type knot gives us theorems for cheap
Tying the type knot gives us theorems for cheap posted on 2014-06-12In today’s adventure, our hero ghc faces its final challenge: granting parametricity to our lensified Functor, Applicative, and Monad...
View ArticleScribal traditions of "ancient" Hebrew scrolls
Scribal traditions of "ancient" Hebrew scrolls posted on 2014-08-10In 2006, I saw the dead sea scrolls in San Diego. The experience changed my life. I realized I knew nothing about ancient Judea, and...
View ArticleGetting started with GitHub, vim, and bash
Getting started with GitHub, vim, and bash posted on 2014-09-07 by Rashid Goshtasbi and Kyler RynearLearning to use git, vim, and bash was hard for us. These tools are so different than the tools we...
View ArticlePolymorphism in Haskell vs C++
Polymorphism in Haskell vs C++ posted on 2014-09-10 by Jonathan DuganParametric polymorphism is when you write one function that works on many data types. In C++, this is pretty confusing, but it’s...
View ArticleComparing AVL Trees in C++ and Haskell
Comparing AVL Trees in C++ and Haskell posted on 2014-09-15 by Dat DoThis post compares the runtimes of AVL tree operations in C++ vs Haskell. In particular, we insert 713,000 strings from a file into...
View Article