This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2023-10-27
Channels
- # announcements (14)
- # aws (2)
- # babashka (12)
- # beginners (23)
- # calva (71)
- # cider (37)
- # clj-kondo (47)
- # cljs-dev (3)
- # clojure (55)
- # clojure-brasil (1)
- # clojure-europe (51)
- # clojure-nl (1)
- # clojure-norway (63)
- # clojure-poland (1)
- # clojure-seattle (1)
- # clojure-uk (3)
- # clojurescript (10)
- # conjure (3)
- # cursive (23)
- # data-science (5)
- # emacs (16)
- # events (1)
- # hoplon (16)
- # hyperfiddle (19)
- # introduce-yourself (1)
- # kaocha (5)
- # nyc (1)
- # portal (31)
- # practicalli (2)
- # reitit (3)
- # releases (4)
- # sci (28)
- # slack-help (13)
- # sql (4)
- # squint (40)
- # tools-build (25)
- # tools-deps (10)
A library to easily roll out your own implementations of built-in Clojure data structures: https://github.com/tonsky/extend-clj/. Only supports Atoms for now, might add more down the line
Releasing https://github.com/howonlee/mertonon postprealpha - Mertonon is at https://github.com/howonlee/mertonon/releases/tag/v0.9.65-postprealpha now. Mertonon is a new way to plan and budget for orgs. With Mertonon, you make a picture of your org as a neural network. You do this by going on Mertonon and linking together local, political, human judgements of impact with respect to KPI's. Then, Mertonon itself will suggest changes to your budget based upon those judgements. If you know about Project Cybersyn / Synco (https://en.wikipedia.org/wiki/Project_Cybersyn), this is an attempted modern version for capitalist or noncapitalist use by ordinary folks. Notable changes this release compared to 0.0.1-prealpha include β’ Accounts don't not exist anymore β’ Editing things β’ Another material rewrite of the frontend that actually stuck, this time with re-frame β’ Nonlinear weight editing (weight treatment was always nonlinear, neural nets are nonlinear)
if peeps are feeling it, i'd like any feedback you have on that one-paragraph spiel, btw
Just released a new https://github.com/gethop-dev/object-storage.core implementation for Azure Blob Storage (which also supports AWS and FTP storage). The library allows managing objects (create, replace, copy, delete and generate presigned-urls) in Azure Blob Storage. It relies on the HTTP API, so the Azure SDK is not used/required. https://github.com/gethop-dev/object-storage.azure-blob-storage
The sci.configs project has ready-to-go configurations for #sci for several projects. This week I added a configuration for #hoplon Try it out here: https://babashka.org/sci.configs/?gist=e83da19df3d2739861334171779f79d5 Repo: https://github.com/babashka/sci.configs The hoplon config might be a tad incomplete, so feel free to poke me if you need something added.
I decided to open source an object pool library that I wrote. It's called clj-pool-party
and you can find it https://github.com/enragedginger/clj-pool-party. Feedback is most welcome.
Have you actually found object pooling to be a win perf wise? I feel like every time I try it the caching and/or concurrency aspects end up making it slower than not pooling
My main use cases are pooling connections / clients to external resources (APIs / databases). So it's been useful in those situations (especially if I need to limit the total number of concurrent connections). I'm curious though. In what situations have you tried object pooling and found that it made performance worse?
Been a while, donβt remember. Always seems like the complexity of it is not worth the trouble
No worries. If you remember, let me know.
FWIW, simplicity was a goal of mine with this library. You just need a 0-arg generator function and a maximum size for the pool, and then you can pass functions to with-object
to have them execute in the context of an object from the pool. Everything else is handled for you. There's extra parameters you can pass in for things like timeouts and health checks if that's required for your situation.
;;construct a pool that always generates 5 as the object and has a max size of 10
(def pool-ref (pool-party/build-pool (constantly 5) 10))
;;Run a function in the context of an object from the pool
(pool-party/with-object pool-ref
(fn [obj]
(println "borrowing obj:" obj)))
Hi Stephen! I was actually looking for an object pool library a few days ago, will give it a try.
I just pushed a number of updates / improvements to the docs.
> Have you actually found object pooling to be a win perf wise? I feel like every time I try it the caching and/or concurrency aspects end up making it slower than not pooling
Per your question, I added a section to the README about the performance boost I'm seeing in one use case of clj-pool-party
I haven't tried, and maybe my reasoning is wrong, but let's say you are processing real time frames coming from opencv, if you grab the frame objects from a pool and just replace the pixel array content instead of creating new frame objects every time, shouldn't this improve processors cache usage, since the frames memory are always the same and stay in L1 or something?
this is neat @U0M7A18V6 I'm going to start trying it for my use case: a remote service which only allows sessions for auth, has a very low limit on total sessions, doesn't have a way to check if a session is still alive (apart from: make request, does it succeed/fail?) so object pooling seems like a pretty good fit
I just pushed a number of updates / improvements to the docs.
> Have you actually found object pooling to be a win perf wise? I feel like every time I try it the caching and/or concurrency aspects end up making it slower than not pooling
Per your question, I added a section to the README about the performance boost I'm seeing in one use case of clj-pool-party