announcements

Project/library announcements ONLY - use threaded replies for discussions. Do not cross post here from other channels. Consider #events or #news-and-articles for other announcements.
mihaelkonjevic 2021-03-01T06:49:07.151100Z

I’ve just released new version of Penkala (0.0.3) - a composable query builder for PostgreSQL. Now with the support for insert, update and delete queries https://github.com/retro/penkala

🤘 6
2021-03-01T07:21:29.151700Z

hi @mihaelkonjevic , thanks for bringing fresh perspective on sql to clojure community. I am grateful that Walkable is mentioned in penkala's readme. However, I think the statement "eschewing SQL and instead use EQL to write the queries" does not describe Walkable. I guess that's your experience with exoscale's esql, but esql and walkable are not the same

2021-03-01T07:24:48.153200Z

Walkable exposes EQL for clients, but also have an adaption layer (that are hidden from clients) where you can use s-expressions (something like honeysql) to build SQL constructs https://walkable.gitlab.io/walkable/1.3.0/s-expressions.html

2021-03-01T07:26:58.154600Z

I hope that clears the confusion. Anyway, congrats on the release

mihaelkonjevic 2021-03-01T07:28:54.157Z

@myguidingstar thank you for letting me know. I’ve played around with walkable during the last year (and read the docs multiple times), and I completely missed the s-expressions part. Is that a new thing? I’ll update the readme and link to the s-expressions docs 👍

2021-03-01T07:30:56.157200Z

no, the feature is part of walkable's core design and has been around for two years https://github.com/walkable-server/docs/blob/master/s-expressions.md

👍 1
2021-03-01T07:31:32.157500Z

thanks for your collaboration

raspasov 2021-03-01T09:50:15.160400Z

I made a simple library that allow you to stop core.async go loops: (only deps.edn :sha at the moment): https://github.com/saberstack/loop

4
2021-03-01T10:31:14.162900Z

I've made a jackson-jq wrapper for Clojure. The intended use case is to embed jq scripting into GraalVM native-images. https://github.com/dainiusjocas/clj-jq

🎉 6
jtkdvlp 2021-03-01T14:33:00.164900Z

Helper pack for core.async with focus on error propagation https://github.com/jtkDvlp/core.async-helpers

🎉 6
Ben Sless 2021-03-01T14:53:48.169500Z

Well if we're sharing core.async libraries, I'll share one I've been developing for a while: more.async: Small composable independent machines. Oriented towards building processing pipelines What is it trying to solve? I've seen too many times people reinvent the wheel at several points when building core.async processes: • producing into processing pipelines and consuming from them • batching • routing to channels • circuit breaking more.async is an attempt to solve those issues once and generically, instead of many times and ad-hoc. https://github.com/bsless/more.async

👏 12
2021-03-02T10:47:43.183900Z

Do you recommend not using periodically! and reductions!?

Ben Sless 2021-03-02T11:23:51.184200Z

No reason not to use either, as both have their uses @phill

orestis 2021-03-01T15:42:25.171800Z

Perhaps make a request to include this in https://github.com/clojure/core.async/wiki/Libraries

Ben Sless 2021-03-01T15:43:19.172Z

> last edited 2015 I had no idea that page even existed =/

steffan 2021-03-01T15:45:51.172200Z

I (very) recently had a change accepted to add more.async to https://www.clojure-toolbox.com/

❤️ 3
Ben Sless 2021-03-01T15:47:41.172600Z

😮 thank you!

1
2021-03-01T19:08:28.175800Z

I'm working on a new stream processing engine in Clojure, inspired by Riemann, which can be used for monitoring for example. It's still a work in progress project but I opened the repo and did an article explaining the project: https://mcorbin.fr/posts/2021-03-01-mirabelle-stream-processing/

❤️ 11
👌 2
Jakub Holý 2021-03-03T09:27:21.199500Z

Very interesting, merci! Your mention of logging got me thinking. Currently we send errors to Sentry for incident management/alerting but it is easy to exceed our quota when there is some temporary problem and the same error keeps repeating thousands of times. So I would like to put something in the middle, between our app and Sentry, that would limit the number of "repeated events" that get through. That would require writing an adapter that would expose Sentry-like API (so the clients can be used unchanged) and turned the events into the format Mirabelle understands. Next, I would need to define an event "fingerprint" so that I could detect what events actually stem from the same error condition (I guess some combination of the message and stack trace) and thus make a "throttling window" for each unique error. Finally, a sink that would pass the events that were not filtered out to Sentry. My question is: Would that be a reasonable use of Mirabelle (or some future version thereof)? Thank you!

2021-03-04T22:48:27.236800Z

@holyjak It should be possible indeed. Adding sentry support should not be that difficult (it's just an http client). Mirabelle already supports the Riemann "throttle" stream, which only send one to downstream actions evey N seconds

2021-03-04T22:49:16.237Z

So imagine you compute a fingerprint and store it in a :fingerprint key in your event, you could do: (by [:fingerprint] (throttle 1800 ;; 30 min (push-io! :sentry)))

2021-03-04T22:49:28.237200Z

like that, each "fingerprint" has its own throttle

Jakub Holý 2021-03-05T09:16:05.243400Z

nice! thanks!

Helins 2021-03-01T20:33:58.177600Z

Pas mal du tout! I remember discussing Riemann with you years ago on IRC and how restarting and loosing state was indeed a pity. Glad to see the groove is still going!

2021-03-01T22:36:29.178700Z

thank you ;)