Consul is a powerful tool for building effective distributed systems, and lately Clojure has been my language of choice for applications. Getting them to play well together is easy thanks to two libraries by Anatoly Polinsky, aka @tolitius. This post will cover the bare minimum to get Clojure, Consul, Mount, and Envoy to work well together.[Read More]
Building Games with Squib: Part 2, Design
In the last post, we covered how to set up a Squib project from Scratch. In this post, we’ll be enhancing our triangle deck with images and design.[Read More]
Building Games with Squib: Part 1, Setup
As board games rise in popularity, many new groups focused on creating board games are popping up. Luckily, instead of expensive tools like InDesign, or Windows-centric tools like nanDeck, there are a number of alternatives. One actively developed alternative is Squib, a Ruby DSL, and we’re going to be building a game with that.[Read More]
Useful Leiningen Plugins
Clojure has a great development flow, but a few tools aren’t included by default. By adding a few dependencies and plugins to
~/.lein/profiles.clj, you can make your development workflow smoother, quicker, and more effective.
Readable Clojure Through Threading
Clojure, like many Lisps, sometimes struggles to attract newcomers who claim it’s “hard to read”. Any paradigm shift requires time, but I myself struggled to read Clojure I had written early on. Nested parentheses and REPL-driven development made the result come quickly, but it often looked ugly. However, the thread operator
-> and all of its cousins fix that.
A Simple Redis Slack Bot
Though I’m many years late to the game, I just started playing with Ruby, and I’ve been enjoying it quite a bit. After creating an API with Sinatra for an internal testing tool at Spantree, I was ready to try it out on a side project.[Read More]
Clojure Websockets with http-kit
As I continue to evaluate Clojure, new opportunities present themselves. In the past, I’ve done highly concurrent processing with Node.js or a JVM solution on top of Jetty. While these work, I never found them particularly enjoyable to use.
Enter Clojure.[Read More]
Games, Expectations, and Anticipating Users
I love games, and I love game theory. Recently Spantree started doing lightning talks, which gave me the chance to share some of my favorite group “games”, and hopefully provide some insight on clients.[Read More]
Partition By in Clojure
On every professional software engineering job I’ve had, data transformation always played a role. Most recently, at Spantree we needed to get a massive corpus of synonyms into the file format readable by Elasticsearch.[Read More]
Monit: The Quick Fix
Ideally, in a production system, everything works perfectly. Services never mysteriously crash, free memory is constantly available, and CPU load rarely spikes above 50%. Unfortunately, this is not always the case.[Read More]