Software Engineering

  • Functional Programming for the Functionally Challenged (Like Me) – Part 3

    In the previous installment of our introduction to functional programming we looked at reading values from nested data structures.nIn this final post we look at the flip side of working with nested data structures, updating them. If you have not read the previous post yet and are not familiar Elixir, you might want to read…

  • Testing with VCR and Token Authentication

    If you are using VCR to record/playback HTTP requests for your Rails tests, you may run into problems if your cassettes use tokens to authenticate with those services. VCR uses a RequestMatcher to determine if an outgoing request (and response) already exist in a cassette. Upon finding a match, the test will use the response…

  • Functional Programming for the Functionally Challenged (Like Me) – Part 2

    In the last post we looked at functional approaches to solving problems typically solved using loops in imperative languages. These problems centered around list-like data structures such as arrays or vectors. In this post we will look at more complicated nested data structures.

  • Proto REPL: A new Clojure REPL for the Atom Editor

    Iโ€™d like to introduce a new Clojure REPL, Proto REPL, that I created as a plugin to the Atom editor. Proto REPL lets you develop Clojure applications in Atom using an interactive REPL driven development experience. nn nn Proto REPL Features nn n Send blocks of code or selections from an editor tab to the…

  • Functional Programming for the Functionally Challenged (Like Me) – Part 1

    This is the first post in a series dedicated to presenting solutions to common challenges that developers encounter when moving from an imperative programming approach to functional programming (FP). I will present a series of problems and provide solutions in both Java and Elixir, a functional language running on the Erlang VM.

  • Functional Programming for the Functionally Challenged (Like Me) – Intro

    By now you have probably heard all the hype about functional programming (FP) and may have even dipped your toe in the water by trying out one of the other Lisp dialects. Maybe you have experimented with some of the functional elements of Scala, Ruby, Python, or one of the newer languages.

  • Converting Mapbox Studio Vector Tiles to Rasters

    In this blog post, we detail our experience converting Mapbox Studio Vector Tiles to Rasters.

  • Improving Java Math Performance with Jafama

    Jafama is a Java library that provides fast numeric operations that are replacements for the methods on java.lang.Math. Jafama (Java Fast Math) consists of fast – but not sloppy – counterparts of java.lang.Math treatments, plus additional ones. They are usually about 2-4 (up to 15) times faster, with about 1e-15 accuracy, and handle special cases…

  • What is Spark?

    We describe a group research project in which we worked to evaluate and port existing machine learning and modeling functionality in HunchLab from R to Spark.

  • Determining the Winding of a Polygon Given as a Set of Ordered Points

    When working with spatial data one often needs to work with polygons to demarcate bounding areas. One important concept related to this is winding, which defines the relative order in which the vertex points of a polygon are listed. Winding can be either clockwise (CW) or counter-clockwise (anti-clockwise) (CCW), referring to the direction in which…