Posted on

A Vagrant+Docker based workflow for clojure web development

This post outlines a container based development workflow using Vagrant and Docker.

Many common docker tutorials (eg. the official node tutorial) suggest a workflow where projects source is copied onto the image, which is then built and run through docker. This approach is not really practical for clojure development as normal clojure programming leans heavily on rapid prototyping and REPL driven development.

The setup below utilizes Vagrant and docker volumes to setup a development environment which ensures reproducibility and container isolation while retaining the short feedback cycle which clojure developers take pride in.

Continue reading A Vagrant+Docker based workflow for clojure web development

Posted on

Redux-loop: A better solution for managing asynchronous operations in redux

The lack of support for asynchronous operations in redux core has spawned a whole ecosystems for managing side-effects [1] in Redux.

This post argues that the redux-loop library (1.5 k ★ as of this writing) is a much better solution for this job than other more popular alternatives like redux-sagas (11.8 k ★) and redux-thunk (7.8 k ★).

As has always been prevalent in frontend ecosystem, popularity  does not necessarily translate to better suitability.

Continue reading Redux-loop: A better solution for managing asynchronous operations in redux

Posted on

Using helm to select tide completion candidates

Tide (TypeScript Interactive Development Environment for Emacs) uses a custom hydra-derived popup menu for prompting the user to select candidates when there are many completion options available.

However, this is jarring when the rest of your emacs environment is configured to use helm as the completion engine.

Fortunately, this is easy to fix by overriding the tide-popup-select-item implementation to use a custom helm source derived from the completion list.

Continue reading Using helm to select tide completion candidates

Posted on

How is Kotlin an improvement over Scala, Clojure, or Groovy? | Hashnode

Strictly speaking, Kotlin is not intended to be an evolution over any of these languages. It’s true intent is to be an evolution over Java (and javascript) while being seamlessly compatible, and given the massive adoption of these languages it is a very pragmatic objective.

It is however, comparable to all of these because it directly competes with them across realms ie. JVM, Javascript (except Groovy) and even native (only scala).

Continue reading How is Kotlin an improvement over Scala, Clojure, or Groovy? | Hashnode