This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2024-03-20
Channels
- # announcements (5)
- # aws (15)
- # babashka (12)
- # beginners (87)
- # calva (13)
- # cider (16)
- # clj-kondo (4)
- # clojure (22)
- # clojure-argentina (1)
- # clojure-europe (9)
- # clojure-houston (1)
- # clojure-nl (2)
- # clojure-norway (25)
- # clojure-uk (5)
- # clojurescript (12)
- # core-typed (37)
- # cursive (15)
- # datomic (40)
- # editors (8)
- # emacs (4)
- # events (1)
- # hyperfiddle (29)
- # keechma (8)
- # leiningen (6)
- # lsp (7)
- # malli (25)
- # off-topic (26)
- # pathom (10)
- # portal (3)
- # re-frame (22)
- # reitit (1)
- # releases (1)
- # ring (2)
- # shadow-cljs (18)
- # yamlscript (1)
Deterministic simulation testing (DST) as a means of determining software correctness seems promising (as opposed to type systems and conventional test suites). https://www.youtube.com/watch?v=sC1B3d9C_sI was linked here recently and is my first introduction to the idea of DST. Another example: the founder of a company focused on testing others' applications via deterministic simulation https://www.youtube.com/watch?v=4fFDFbi3toc while he was still with FoundationDB. Is there anything of this nature being done in Clojure? I know of https://jepsen.io/ that does distributed systems testing, which is certainly related. It seems that there might be fundamental challenges in implementing DST in Clojure, per @arohner (https://www.juxt.pro/blog/clojure-in-griffin/#testing-for-correctness): > The problem right now is that there’s no way to control the behavior of the underlying Java threading libraries, nio, and writing to disk. I don't know enough to meaningfully contribute beyond asking the question, but it sure seems interesting!
Not sure if it is the same approach (deterministic), but about 10 years ago there were numerous presentations about https://www.cognitect.com/blog/2014/8/20/get-to-market-faster-with-simulation-testing using Clojure with the https://github.com/Datomic/simulant. There are several talks about it you can find by searching. There is a #sim-testing channel you might ask in. I'm curious how DST is different than this.

If you use the Result
type signature extensively in your codebase, one should be be able to simulate how the system behaves when any given part (e.g. a neighbor microservice, some 3rd party API, etc) fails, times out, etc, by building up on Spec or Malli generative testing. Which surely can be tweaked to be deterministic, if not instantaneous.
Surely it wouldn't be so easy since those generative testing facilities are oriented towards exercising one defn (vs. the whole system), but it would seem promising to explore how much is possible.
...an implicit tradeoff is that one should no longer generally use or assume exceptions. That makes some people nervous, for me it's a massive win since exceptions escape most type/specification systems.

> The problem right now is that there’s no way to control the behavior of the underlying Java threading libraries, nio, and writing to disk. The standard solution ("functional core imperative shell") to those is segregating such forms of IO at the edges of the application. e.g. put them under a protocol, spec them, then you can swap them for generative-based implementations.
Please, could someone explain me in simple words what's the main difference between EPL-1 vs EPL-2 licenses? Clojure, as many other libraries, stayed with EPL-1, any reason for this? And, can I switch license between the two for a given project? Thanks in advance.
There's not much difference. The main one is allowing dual-licensing, so you can license under EPL-2 and another license. There is also a Patent Retaliation Clause which I don't know much about. I expect Clojure and other libs stayed with EPL-1 because the changes weren't deemed useful enough to outweigh the problem of users having to re-evaluate the new license when upgrading, which can be costly, bringing in legal/compliance to approve etc. As usual with switching, you'd probably need re-agreement from contributors and to make sure any dependencies are compatible. If this is an XY question and actually you're more broadly considering how to license your software, https://www.juxt.pro/blog/prefer-mit/ (by a former colleague of mine) may be worth a read.
Hi everybody! I'm trying to figure out a logo for http://www.flow-storm.org/ (a tool for recording and exploring Clojure programs executions at dev time), willing to pay for it. Since I have seen other projects succeeding by asking here to Clojurians with these kinds of skills, I'm giving it a shot before going to some crowd source site. I'm open to anything around Clojure, immutability, recording, time travel, debugging or the name itself. Just in case you wonder, the name comes from the tool making the execution flow of programs generating a storm of traces. If anybody is interested in this kind of thing please let me know!
Not an artist/designer, just wanted to try something out given the associations with the words "flow", "storm", "Clojure". Maybe a tiny lambda in the center would make it better. :) The colors are just the default ones.
oh I like that concept! thanks @U2FRKM4TW
maybe the lambda could look like clock handles to include the concept of time travel?
I'll let someone more skilled than I experiment further. :D Sounds quite suitable and I'm curious to see how it looks, but given that I barely know my way around GIMP, doing that myself would take way too much time, only for it to most likely end up looking subpar at best.
same for me 😅
Also, somewhat interesting - to me, the outer parens look skewed a bit. But they're vertical, so at least for me there's a slight optical illusion going on.
yeah, I kind of see that too
I'm so rusty at graphics design tools that last time I played with FlowStorm logos I was doing it with clojure, hiccup and svg 😅
nice, at least it is easy to iterate and play with rotations/scaling/translations and looping
Yeah, but lots of other things are much less nice. E.g. visually aligning parens so that they're on a circle.
I was also using gpt4 svg generation to help me generate some svg paths, and then pasting them into hiccup
hi @U8WFYMFRU! > I'm willing to give it a shot too that would be wonderful! thanks! > but my process tends to be slower there is no hurry > Happy to discuss here or in DMs if you'd like I'm ok with both, so whatever you feel > Is there any particular vibe, theme, emotion, or idea you'd like people to take away from the logo that you feel is core to the tool? TBH I'm not sure about this, now that you ask I would have to think think a little bit about it > I was thinking how the same idea could be communicated with fewer elements I like your concept also, of changing the perspective while still showing a tornado made of parens twisting a lambda. Looking at your sketch maybe a lambda of the "same material" of the parens, being twisted by the parens vortex ?