braid-chat

https://github.com/braidchat/meta/wiki
grounded_sage 2016-03-02T05:54:43.000047Z

Their demo is a chat app. The main thing you build in the Pheonix book is a chat app. They may not have fully established themselves in the chat realm but the majority what they talk about is chat related. Eg having 2-3 million concurrent users in a chat on one server. Working on built in Presence in the Pheonix framework.

grounded_sage 2016-03-02T05:55:36.000048Z

I mean there is work in Embedded with Nerves. But everytime I hear anything about Elixir it's related to communications in one way or another.

shanekilkelly 2016-03-02T10:05:15.000049Z

pretty cool, I’ve only dabbled with Elixir. I wonder if a pervasively async Clojure server could compete for the chat use-case? I’m thinking aleph/manifold/core.async with a data-store that supports fully-async operations.

mccraigmccraig 2016-03-02T10:56:21.000051Z

@shanekilkelly: i'm working on an all-clojure/script fully-async solution like that - not oss tho, and i've no idea about capacity yet

shanekilkelly 2016-03-02T10:57:10.000052Z

cool, best of luck with that :simple_smile: would be interesting to see a blog-post or something once it’s done.

shanekilkelly 2016-03-02T10:57:20.000053Z

how are you managing data persistence?

shanekilkelly 2016-03-02T10:57:39.000054Z

that seems to be the main blocker, (literally).

mccraigmccraig 2016-03-02T13:00:43.000055Z

@shanekilkelly: we have two sorts of persistence - long term persistence for query-based retrieval, for which we are using cassandra, and short-term persistence of events awaiting processing, for which we are using kafka

mccraigmccraig 2016-03-02T13:02:06.000056Z

cassandra has an async java client, a low-level async clojure client https://github.com/mpenet/alia, and our own higher-level async clojure client - https://github.com/employeerepublic/er-cassandra/

mccraigmccraig 2016-03-02T13:04:13.000058Z

and kafka production is async with https://github.com/pingles/clj-kafka

shanekilkelly 2016-03-02T13:17:14.000060Z

@mccraigmccraig: nice. I haven’t looked at cassandra yet, will check it out. I’ve mostly been using jdbc/postgres with clojure, but it’s a blocking api.

mccraigmccraig 2016-03-02T13:24:00.000061Z

@shanekilkelly: postgresql has much more advanced query facilities than cassandra - but cassandra's scale and reliability stories are way in advance of postgresql's - i figured to start out with components that are known to scale would make scaling much less painful when it comes, and that is reasonable as long as working with those components isn't an order of magnitude harder than postgresql (which it isn't)

shanekilkelly 2016-03-02T13:24:45.000062Z

@mccraigmccraig: I like your reasoning re: scaling.

shanekilkelly 2016-03-02T13:24:53.000063Z

pretty much the same way I’m thinking.

shanekilkelly 2016-03-02T13:25:36.000064Z

what’s the problem domain? (if you don’t mind sharing)

mccraigmccraig 2016-03-02T13:26:13.000065Z

basically using chat services as a foundation for other business services which have an easy-to-quantify value

mccraigmccraig 2016-03-02T13:27:53.000066Z

the first such service we are looking at is arranging shift-swaps or emergency-cover for businesses where an unplanned staff absence has a distinct financial impact - either lost earnings for the business, or a guaranteed service provision requirement meaning expensive emergency cover arrangements

shanekilkelly 2016-03-02T14:42:53.000067Z

sounds fun :simple_smile: