I've released Ring 1.14.0 with support for Jetty 12 and WebSocket tuning options for idle timeout and max message size. #clojure https://github.com/ring-clojure/ring

I've released Ring 1.14.0 with support for Jetty 12 and WebSocket tuning options for idle timeout and max message size. #clojure https://github.com/ring-clojure/ring
I released Vrac v0.1.0, a frontend rendering library in Clojure, for Clojurists.
@Regenaxer @borkdude @vindarel Thanks! Right, so my comparable in-REPL times for iterative factorial 1000 are
#PicoLisp: (bench (apply * (range 1 1000)))
0.000 sec
#Clojure: user=> (time (apply *' (range 1 1000)))
"Elapsed time: 2.428199 msecs"
#SBCL: CL-USER[1]: (time (apply #'* (alexandria:iota 1000 :step 1)))
Evaluation took:
0.000 seconds of real time
0.000015 seconds of total run time (0.000000 user, 0.000015 system)
100.00% CPU
45,990 processor cycles
0 bytes consed
@vindarel That's true. The startup time issue is particularly harsh on #clojure, and @borkdude's #Babashka would probably do a lot better.
But (a) this is very rough timing, and (b) startup time is some sort of proxy for the compactness of the runtime system; and
(c) the thing that's still astounding me is that #PicoLisp is (sort-of) an interpreter, while all the others execute compiled code, so bloody should be faster!
[razzlom@void clojure]$ lein new luminus guestbook --template-version 3.91 -- +h2 +http-kit
bash: lein: command not found
It's not working.[razzlom@void clojure]$ lein version
Leiningen 2.11.2 on Java 11.0.25 OpenJDK 64-Bit Server VM
It's working![razzlom@void clojure]$ whereis lein
lein: /usr/bin/lein /usr/share/man/man1/lein.1
It's exist.[razzlom@void clojure]$ /usr/bin/lein new luminus guestbook --template-version 3.91 -- +h2 +http-kit
bash: /usr/bin/lein: No such file or directory
It's not exist.@screwtape Other. Write on #Cryogen, @yogthos' excellent #Clojure static site generator/blogging engine.
It is a bit geeky -- you have to be comfortable with a command line. I keep thinking about writing a little GUI launcher for it to make it easier for my less geeky friends, but I haven't got round to that yet.
Have knowledge of functional languages like #Clojure? My team is looking to fill a new role in Seattle.
https://jobs.apple.com/en-us/details/200590491/software-engineer-core-services-apple-services-engineering?team=SFTWR
I killed today the Discord servers for CIDER and Emacs Redux. They never got much traction, and I'm not into chats in general, so... less is more...
#Clojure is cool: https://grishaev.me/ring-jdk-adapter/
So with a JVM, Clojure, Ring, and this adapter, one can already write high-level web services. Add java.JDBC and data.JSON and a compact functional web stack emerges.
Death By Specificity (from Rich Hickey's talk Clojure Made Simple)
; GENUARY 2025
; DAY 19
; PROMPT: Op-Art
(ns lv.demo)
(use 'lv.core)
(layout "grid" [ras0])
(hsv :ras0 []
(v (smoothstep -0.2 0.2
(sin (* 31 (+ (* 0.001 x f) a (* 0.07 (sin (* 7 r))))))))
)
(render 0)
@nsrahmad @mapcar @praetor I very much dislike special cases. A language should be clean. It's also not English and shouldn't pretend to be. But #Clojure has a similar noise keyword, `:else`, for `cond`, and while `true` still works, of course, Clojure's static analyser, whines if you use it.
Furthermore the JVM stack is horrible, and Clojure's 'simplified' syntax for arg lists, cond statements, let bindings and case is... sub-optimal, in my opinion.
So you takes your pick.
@nsrahmad @ksaj @praetor why use `t`?
Because my training is in logic, and `t` is an expression which is always true;
Because I've been using it for the past 42 years and see no reason to change;
Because it works in more or less any dialect of #Lisp, not just "Common" Lisp (but note that #Scheme uses `else` rather than `otherwise`, and Portable Standard Lisp, just to keep you on your toes, uses `NIL`, while #Clojure uses nothing at all)!
In short, because.
@Ardubal @mdhughes @amoroso I'm going to say this here: Common #Lisp bracketing syntax for let bindings, cond clauses and arg lists is **so much** clearer and more readable than #Clojure's 'simplified' syntax.
Rare indeed it is that I admit that Common Lisp got *anything* right, but this is right (and on this Clojure is just plain wrong).
@Ardubal @mdhughes @amoroso anything you're referring to inside a function should either be a parameter or a local binding, so namespaced variable names aren't particularly relevant. Namespaced keywords in #Clojure make sense because they are in effect functors onto maps, but namespaced variables are *almost* a code smell.
Why is modeling so powerful?
https://ericnormand.substack.com/p/why-is-modeling-so-powerful
Upcoming talk next week: Virtual and open to the public, I will speak about Domain Modeling. Be there!People continue to like Grokking Simplicity continues to spread. If you want to help someone learn functional programming, please consider buying...
I just merged the last PR for v0.2 of my rando-planner project. A new feature I particularly like is the possibility of displaying a map that focuses on a specific day in the plan. See the release highlights here: https://github.com/larsen/rando-planner/releases/tag/v0.2