Brandon Adams
emidln
Technologist | Curiosity.com
Recent Tech Decisions
44 points

Following

  • Fedora

    emidln Clojure Rapid Dev


    In so far as I deploy on a Linux host (without a container abstraction), I prefer working in Fedora and RHEL environments to Debian-based environments.

    I like the adherence to upstream, strong free software stance, and good documentation from Fedora. Clients enjoy cutting edge software availability and a safe fallback to Red Hat Enterprise Linux or CentOS.

  • Amazon EC2 Container Service

    emidln Clojure Rapid Dev


    With a little forethought, ECS can handle a good portion of my development stack as though it were production. 12 Factor configuration makes this a breeze.

  • Amazon SQS

    emidln Clojure Rapid Dev


    This isn't exactly low-latency (10s to 100s of milliseconds), but it has good throughput and a simple API. There is good reliability, and there is no configuration necessary to get up and running. A hosted queue is important when trying to move fast.

  • Amazon S3

    emidln Clojure Rapid Dev


    S3 is great for backups, data blobs, as well as log and event streams using Factual's s3-journal. s3-journal really is a secret weapon.

  • Redis

    emidln Clojure Rapid Dev


    Redis makes certain operations very easy. When I need a high-availability store, I typically look elsewhere, but for rapid development with the ability to land on your feet in prod, Redis is great. The available data types make it easy to build non-trivial indexes that would require complex queries in postgres.

  • Docker

    emidln Clojure Rapid Dev


    Rapid stand up of related services for testing while enabling artifact creation of services for promotion to prod.

  • PostgreSQL

    emidln Clojure Rapid Dev


    Relational data stores solve a lot of problems reasonably well. Postgres has some data types that are really handy such as spatial, json, and a plethora of useful dates and integers. It has good availability of indexing solutions, and is well-supported for both custom modifications as well as hosting options (I like Amazon's Postgres for RDS). I use HoneySQL for Clojure as a composable AST that translates reliably to SQL. I typically use JDBC on Clojure, usually via org.clojure/java.jdbc.

  • Elasticsearch

    emidln Clojure Rapid Dev


    Elasticsearch has good tooling and supports a large api that makes it ideal for denormalizing data. It has a simple to use aggregations api that tends to encompass most of what I need a BI tool to do, especially in the early going (when paired with Kibana). It's also handy when you just want to search some text.

  • React

    emidln Clojure Rapid Dev


    I mostly use React via a Clojure wrapper called Reagent. Reagent is dead simple and faster than bare React is out of the box. If I have to write a UI myself, I would strongly move to use React via Reagent.

  • Clojure

    emidln Clojure Rapid Dev


    Cloure is a high level language that provides access to both the JVM (for server-side development) and javascript (for client-side development) with largely the same language. This is important to limit context switching and enable code-reuse during fast product cycles. Clojure is ideal for rapid prototyping and has a strong focus on stability, correctness, and concurrency. Tools like Schema and Spec enable well-structured development and high code confidence.