Fork me on GitHub
#clojure-uk
<
2017-02-21
>
agile_geek08:02:57

@glenjamin please don't say that in earshot of any politicians! I wouldn't want to give them ideas.

Rachel Westmacott09:02:23

@glenjamin - isn’t that a plot line from the Hitchhiker’s Guide?

rickmoynihan09:02:47

glenjamin: Dunno, with Trump, Brexit and the disintegration of Europe a first class ticket off this rock is something I recon 1/3rd of the worlds population might volunteer for 🚀 👾 🌠

rickmoynihan10:02:35

Wondering what the latest choices for a HTTP server are in the clojure/ring world: - Jetty - http-kit - Undertow - Immutant (Undertow) - Aleph - Jet - Netty - Vert.x - Grizzly Am I missing any?

acron10:02:13

http-kit is fairly unmaintained now, afaict

rickmoynihan10:02:05

yeah - I’m basically wanting to review the options because http-kit has been included in one of our services and it’s a terrible choice for our needs because of https://github.com/http-kit/http-kit/issues/90

rickmoynihan10:02:25

also if you’re using http-kit for client side beware of https://github.com/http-kit/http-kit/issues/202

mccraigmccraig11:02:28

i don't know the other options in any detail @rickmoynihan , but i've been using aleph with yada for a while - aleph makes large-file download resource consumption easy to manage, and yada adds stream-based multipart handling which makes large-file upload relatively straightforward too

rickmoynihan11:02:36

mccraigmccraig: That’s good to know… I’m a little scared of adopting an async server though

mccraigmccraig11:02:55

any particular reason ?

mccraigmccraig11:02:51

i've been doing all-async on my current project for a couple of years - there are some things which take a bit of getting used to, but it's no worse than getting used to, say, lazy sequences

rickmoynihan11:02:55

Yes, Basically I have a large suite of parsers/generators for reading and writing data that are built on blocking I/O. I know I could in principle wire these up but it’d be extra work and I’m cautious about introducing hard to identify/test problems

rickmoynihan11:02:43

we currently use blocking I/O with a piped-input-stream and it works fine

mccraigmccraig11:02:44

it's generally pretty easy to wrap sync code in async - e.g. have a a stream of ops with a buffer-size delimiting your desired concurrency, and a consumer which processes ops synchronously

dominicm11:02:56

@rickmoynihan also, aleph works with sync stuff

mccraigmccraig11:02:00

so you wouldn't have to go full-async

dominicm11:02:26

@(http/get …)

dominicm11:02:35

or in responses just return a map

rickmoynihan11:02:26

mccraigmccraig: yeah I know you can just use the threaded versions of the go macros (or the manifold equivalent) and martial responses over to a channel which you return to the server - and it should work… Problem is it would require deeper changes than I’m willing to make just now - and I don’t see any immediate benefit for our usecase.

rickmoynihan11:02:33

also statements like this make me nervous: > This feature may not play nicely with Ring middleware which modifies the response, but this can be easily fixed by reimplementing the middleware using Manifold's let-flow operator.

mccraigmccraig11:02:40

ha, yeah, the response side of the ring flow is async - it only matters if you have some middleware which modifies the response, in which case it may be a problem

rickmoynihan11:02:12

I'll definitely take a deeper look at aleph; might be an option for a greenfield project - but I’m not convinced it’s a low risk option for a legacy code base to move to

mccraigmccraig11:02:25

yeah perhaps not - are you currently managing a threadpool for your processing - presuming that you are returning the PipedInputStream to the webserver and writing to a PipedOutputStream from a pooled thread ?

thomas11:02:53

Standing on the ferry in Dover.... ttfn.

agile_geek11:02:30

Anyone got a good clojure library for Kafka?

mccraigmccraig11:02:07

@agile_geek consumer or producer ?

mccraigmccraig11:02:21

i'm using franzy directly for producer... and onyx for all consumer, but it seems onyx uses franzy too

mccraigmccraig11:02:46

i seem to rember @otfrom mentioning something about a franzy branch MC did

otfrom11:02:53

if you are using 0.10.x

otfrom11:02:03

we're going to keep that up to date

otfrom11:02:09

as we use it for our stuff

agile_geek11:02:47

@otfrom so you forked franzy?

otfrom11:02:09

agile_geek we did as it was languishing

otfrom11:02:27

more adopted it rather than forked it. Though the github debris aren't really cleaned up yet

yogidevbear11:02:49

I really wish GitHub would allow you to follow organisations (not just individual people)

agile_geek11:02:29

We are looking at Kafka here and wanted opinions on what to use. We looked at https://github.com/pyr/kinsky as well

agile_geek11:02:36

Anyone used it?

agile_geek11:02:04

Bruno is looking for adivce around using Kafka folks so he may be asking questions

otfrom11:02:09

agile_geek not heard of that one before now. pyr does good stuff tho

mccraigmccraig12:02:55

kinsky looks very simple - if i had seen it last time i switched kafka clients i probably would have chosen it

dominicm14:02:25

@dotemacs Are you glued to twitter? Or do you auto-follow followers?

mattford16:02:13

Emacs and Clojure and Music.

mattford16:02:21

Oh my oh my.

otfrom17:02:26

mattford glad to see you are finding the fun bits too

otfrom17:02:34

there is harmonikit to look at too

korny17:02:48

Sam Aaron is a rock star.

korny17:02:03

I'm playing with adding buttons to the touch bar on my new mac. I want a clojure logo, but I'm trying to work out what it would actually do when you press it. Any thoughts? It could load emacs, but that's not really awfully exciting.

korny17:02:09

I guess it could load a single full-screen repl, maybe using a retro terminal like http://www.secretgeometry.com/apps/cathode/

mccraigmccraig17:02:09

have it boot you into single-user mode running lumo as your shell @korny , that should be quite exciting