babashka

tony.kay 2026-05-27T09:25:23.199599Z

Can I ask why bb packaged com.taoensso/encore where I can’t seem to use it? It shadows it when I try to include it in deps (and most of the bits in that are missing). I use it in most of my libraries and this is causing me to have to reimplement the bits I use.

borkdude 2026-05-27T09:26:25.129619Z

the reason that com.taensso.encore is partially included is that it is (unfortunately) used by taensso.timbre. I included just enough to make that work without adding more which adds to the binary and isn't generally useful for scripting. you can you try to load the namespace from source by using (require '[taoensso,encore] :reload)

tony.kay 2026-05-27T09:27:50.440259Z

I assume the , isn’t some fancy special incantation, and is instead a typo

borkdude 2026-05-27T09:27:56.942179Z

typo

tony.kay 2026-05-27T09:28:08.176469Z

Yeah, given that the reader would elide it 😄

tony.kay 2026-05-27T09:28:59.418089Z

Tried it in my current sessions:

The :reload trick does successfully force bb to load from the source jar on the classpath (the encore jar is found and read), but it still fails — just
  for a different reason: bb's SCI runtime doesn't support java.util.function.UnaryOperator (a Java class that encore's full source imports). So the
  namespace can't be compiled under SCI regardless.

tony.kay 2026-05-27T09:29:10.265479Z

so that’s out 😄

borkdude 2026-05-27T09:29:36.162759Z

yeah we can add that to bb I guess, java.util.function.UnaryOperator, if you're patient enough to go through these issues with me ;)

tony.kay 2026-05-27T09:30:13.913809Z

it really isn’t that important right now. THe number of functions I use is minimal…just inconvenient. I’m sure there are more pressing/important things

borkdude 2026-05-27T09:30:26.399379Z

I see encore even includes custom Java files https://github.com/taoensso/encore/blob/master/src/java/com/taoensso/encore/Ids.java that's a no go for bb right now

borkdude 2026-05-27T09:31:32.869939Z

I wish the author of timbre etc wouldn't include these sub-libaries, there's so much churn in those

tony.kay 2026-05-27T09:32:56.004429Z

I would agree. I’ve complained about that myself. Things disappear, move to other libs, etc. I am honestly glad for a reason to move away from using it, but I assumed since I was getting it as a transitive on timbre that I was stuck with it and might as well use it….now with bb’s problems I have a reason just to not.

seancorfield 2026-05-27T13:10:56.185659Z

We used Timbre for a while at work but switched off it because of the dependencies and the churn. We still use Nippy in one place, which still drags in Encore, which means you still get tools.reader and Truss. I wish there was a zero-dependency replacement for Nippy 😞

borkdude 2026-05-27T13:11:44.068559Z

I think there is one lib who tries to be a better and faster nippy, but forgot the name

borkdude 2026-05-27T13:12:15.703599Z

oh yes, this one: https://github.com/igrishaev/deed

💯 1
borkdude 2026-05-27T13:12:35.554049Z

haven't used it, so can't make any recommendations

seancorfield 2026-05-27T13:13:59.902959Z

The readme sounds promising. I'll create a Jira at work to investigate switching... I can't remember exactly how deeply we depend on Nippy's actual format... Thank you!

seancorfield 2026-05-27T13:20:50.683699Z

OMG! I just searched our codebase for nippy and taoensso -- no results -- so I searched our commit history and discovered that we got rid of Nippy back in 2019! 🙂 Still, good to know about Deed for the future.

😂 1
borkdude 2026-05-27T13:21:24.500999Z

lol :)

borkdude 2026-05-27T13:21:34.725769Z

time flies

seancorfield 2026-05-27T13:22:37.637569Z

For the values we needed, EDN was a perfectly acceptable substitute with pr-str to "encode", and edn/read-string to decode, and it was all fast enough for what we needed.

borkdude 2026-05-27T13:23:51.491019Z

I've personally never reached for nippy. I used transit in clj-kondo. I bet there's good uses cases for it. in clerk it is used to serialize state, I think because it needed to serialize more types that are normally available in EDN etc

seancorfield 2026-05-27T13:26:33.270179Z

Yeah, I think at some point in the past we were storing more complex data in Redis, which was why we went with Nippy, but over time we migrated to simpler types.

tony.kay 2026-05-27T13:39:03.951489Z

There’s always https://github.com/clojure/data.fressian

neumann 2026-05-27T17:01:01.719399Z

I started using Nippy when I ran into values I could encode into EDN that would not decode. It's been a while, so I can't recall the exact values that broke it. Maybe @nate remembers.

neumann 2026-05-27T17:01:59.445089Z

Deed looks really useful. Nice find!

nate 2026-05-27T17:14:42.631849Z

I can't remember what those values were, but Nippy did the round tripping we need.