I wrote a cronned script that queries/analyzes some reports, loads them into datalevin, and uses some heuristics to detect fraudulent traffic coming from our publishers, and sends an alert to a slack channel
its a bit of a hackjob (the filename is still poc.clj ('proof-of-concept')), but its been running without issue for over 2 years now
Just say that “poc” stands for “point of criticality”.
I've been re-building the internal tool for Nubank described in the above thread; I've also created https://github.com/hlship/dialog-tool which is a tool that exposes an HTML interface written in SvelteJS, running the server inside Babashka, and the whole thing is bundled and deployed as a brew formula.
https://github.com/ilmoraunio/conjtest I made a tool to allow writing of (security) policies using Babashka/Clojure. Under the hood it uses standard parsers from both Clojure and Go. Why Go? Because I’m making a tool that mirrors a similar tool in the Go ecosystem, so I get the same parsed output, except I’m using Babashka/Clojure as the rules engine (instead of the logic-programming based Rego lang). At first, I wanted to see if it could be done, but lately I've been thinking about how to increase Clojure adoption and this is my partial answer on that. Parsing is implemented using babashka pods. The main app (bb) calls the first pod (clj/bb) which either parses the thing using Clojure parsers or delegates to the Go parser pod (which is using the original project's parsing logic). This is returned to the main app and run against the user-written, Sci-sandboxed Clojure code which are just functions or malli schemas. The app returns a report of the failing policies/functions/schemas and provides a different exit code, which offers a handy way to program that into your CD pipeline or git hook setup to prevent infra accidents or maintain security policies automatically.