Elixir Stack

I’ve been reading “Hello Startup: A programmer’s guide to building products, technologies, and teams”, by Yevgeniy Brikman. I don’t agree with everything but it is a fun and interesting read.

In particular there is a nice chapter on picking your stack, where he proposes that there are certain technologies so complicated/error-prone/already solved/time-consuming to build, that you should not build them yourselves, but instead go with leading solution in its category (unless you want to develop yourself for learning purposes, or for critical customization). Here is his proposed list:

  1. Security: cryptography, password storage, credit card storage
  2. Web technologies: HTTP servers, server-side and client-side frameworks
  3. Data systems: databases, NoSQL stores, caches, message queues
  4. Software delivery: version control, build systems, deployment automation
  5. CS 101: basic data structures (map, list, set), sorting algorithms
  6. Libraries for common data formats: XML, HTML, CSV, JSON, URLs
  7. Utility libraries: date/time manipulation, string manipulation, logging
  8. Operating systems
  9. Programming languages

Just curious to see how others view this in terms of the Elixir/Erlang-OTP ecosystem. Here is my quick take:

  1. Security: cryptography, password storage, credit card storage.
    ssl_verify_fun
    comeonin

  2. Web technologies: HTTP servers, server-side and client-side frameworks.
    Phoenix - web server

  3. Data systems: databases, NoSQL stores, caches, message queues.
    Ecto
    Postgresql
    Graphql

  4. Software delivery: version control, build systems, deployment automation.
    Mix

  5. CS 101: basic data structures (map, list, set), sorting algorithms.
    (standard Elixir library?)

  6. Libraries for common data formats: XML, HTML, CSV, JSON, URLs.
    poison - JSON
    floki - XML
    CSV - plataformatec/nimble_csv

  7. Utility libraries: date/time manipulation, string manipulation, logging.
    (standard Elixir library?)

  8. Operating systems
    (some Unix variant?)

  9. Programming languages.
    Elixir / JS (front-end)

  10. I would add “Deployment Solution” here also:
    (Heroku, Digitalocean, Bluemix, Amazon Web Services?)

2 Likes

You have to comply with PCI DSS to handle/store cc data it’s easier to use external solution like stripe. Elixir doesn’t make it easier or harder to comply with PCI DSS.

4 Likes

I think it’s interesting that you’re trying to see if Elixir/Erlang could fit into all the needs of a startup. I’ve got a couple of things:

  1. CS 101: Erlang standard library has certain data structures that Elixir doesn’t (like :array).
  2. Web technologies: Phoenix isn’t a Web server it’s a Web framework. The Web server used by Phoenix is Cowboy, an Erlang Web server.
  3. Programming languages: Elixir is being often paired with Elm, although it’s stability and readyness for production can be debated, I guess.
3 Likes

I’m not sure Elixir is paired with Elm IRL outside the internet and a couple of conference talks. It’s just one of many choices until we get a finished ElixirScript :smiley:

1 Like

Another thing: Erlang’s standard library provides a ton of data structures. Just now I used sets and queues (:gb_set and :queue)!

1 Like