diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ecb5871f..81527f0a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -11,4 +11,4 @@ jobs: steps: - name: Trigger publish - run: curl -X POST -H "Authorization:token ${{ secrets.TRIGGER_TOKEN }}" -H "Accept:application/vnd.github.v3+json" --data '{"event_type":"publish"}' https://api.github.com/repos/clojure/clojure-org-style/dispatches + run: curl -X POST -H "Authorization:token ${{ secrets.GH_TOKEN }}" -H "Accept:application/vnd.github.v3+json" --data '{"event_type":"publish"}' https://api.github.com/repos/clojure/clojure-org-style/dispatches diff --git a/.github/workflows/publish-events.yml b/.github/workflows/publish-events.yml index 5aa89c36..2003bb3e 100644 --- a/.github/workflows/publish-events.yml +++ b/.github/workflows/publish-events.yml @@ -3,6 +3,7 @@ name: Daily Event Publishing on: schedule: - cron: '0 0 * * *' + workflow_dispatch: jobs: published-daily-events: @@ -33,14 +34,17 @@ jobs: run: | cd script/eventgen clojure -X parse/parse-feed :dir '"../../content/events"' + cd ../.. - name: Commit and push event page run: | git config --global user.name clojure-build git config --global user.email "clojure-build@users.noreply.github.com" git add content/events - if git status | grep -q modified + if ! git diff --quiet --cached then git commit -m 'update events' git push + + curl -X POST -H "Authorization:token ${{ secrets.GH_TOKEN }}" -H "Accept:application/vnd.github.v3+json" --data '{"event_type":"publish"}' https://api.github.com/repos/clojure/clojure-org-style/dispatches fi diff --git a/README.adoc b/README.adoc index ad8b7f15..a5946d35 100644 --- a/README.adoc +++ b/README.adoc @@ -41,6 +41,6 @@ Generate the pages: ## Terms of Use -Copyright © 2016-2022 Rich Hickey and contributors +Copyright © Rich Hickey and contributors -All documentation contained in this repository is licensed by Rich Hickey under the http://www.eclipse.org/legal/epl-v10.html[Eclipse Public License v1.0] unless otherwise noted. To submit a pull request or other contribution, you must sign the http://clojure.org/community/contributing[Clojure Contributor Agreement]. +All documentation contained in this repository is licensed by Rich Hickey under the https://www.eclipse.org/legal/epl/epl-v10.html[Eclipse Public License v1.0] unless otherwise noted. To submit a pull request or other contribution, you must sign the http://clojure.org/community/contributing[Clojure Contributor Agreement]. diff --git a/assets/images/content/news/2024-12-02/2024-clojure.png b/assets/images/content/news/2024-12-02/2024-clojure.png new file mode 100644 index 00000000..773f6f2d Binary files /dev/null and b/assets/images/content/news/2024-12-02/2024-clojure.png differ diff --git a/assets/images/content/news/2024-12-02/2024-deploy.png b/assets/images/content/news/2024-12-02/2024-deploy.png new file mode 100644 index 00000000..28d6c214 Binary files /dev/null and b/assets/images/content/news/2024-12-02/2024-deploy.png differ diff --git a/assets/images/content/news/2024-12-02/2024-dev-env.png b/assets/images/content/news/2024-12-02/2024-dev-env.png new file mode 100644 index 00000000..4bd31054 Binary files /dev/null and b/assets/images/content/news/2024-12-02/2024-dev-env.png differ diff --git a/assets/images/content/news/2024-12-02/2024-dialects.png b/assets/images/content/news/2024-12-02/2024-dialects.png new file mode 100644 index 00000000..1a148194 Binary files /dev/null and b/assets/images/content/news/2024-12-02/2024-dialects.png differ diff --git a/assets/images/content/news/2024-12-02/2024-domains.png b/assets/images/content/news/2024-12-02/2024-domains.png new file mode 100644 index 00000000..36c13bb0 Binary files /dev/null and b/assets/images/content/news/2024-12-02/2024-domains.png differ diff --git a/assets/images/content/news/2024-12-02/2024-industry.png b/assets/images/content/news/2024-12-02/2024-industry.png new file mode 100644 index 00000000..dc4a64bf Binary files /dev/null and b/assets/images/content/news/2024-12-02/2024-industry.png differ diff --git a/assets/images/content/news/2024-12-02/2024-java.png b/assets/images/content/news/2024-12-02/2024-java.png new file mode 100644 index 00000000..177dc0ee Binary files /dev/null and b/assets/images/content/news/2024-12-02/2024-java.png differ diff --git a/assets/images/content/news/2024-12-02/2024-org-size.png b/assets/images/content/news/2024-12-02/2024-org-size.png new file mode 100644 index 00000000..ea0c9e6d Binary files /dev/null and b/assets/images/content/news/2024-12-02/2024-org-size.png differ diff --git a/assets/images/content/news/2024-12-02/2024-org-users.png b/assets/images/content/news/2024-12-02/2024-org-users.png new file mode 100644 index 00000000..74d92052 Binary files /dev/null and b/assets/images/content/news/2024-12-02/2024-org-users.png differ diff --git a/assets/images/content/news/2024-12-02/2024-os.png b/assets/images/content/news/2024-12-02/2024-os.png new file mode 100644 index 00000000..41b7c22a Binary files /dev/null and b/assets/images/content/news/2024-12-02/2024-os.png differ diff --git a/assets/images/content/news/2024-12-02/2024-use.png b/assets/images/content/news/2024-12-02/2024-use.png new file mode 100644 index 00000000..e0c2f7c1 Binary files /dev/null and b/assets/images/content/news/2024-12-02/2024-use.png differ diff --git a/assets/images/content/news/2024-12-02/2024-users.png b/assets/images/content/news/2024-12-02/2024-users.png new file mode 100644 index 00000000..37e621a3 Binary files /dev/null and b/assets/images/content/news/2024-12-02/2024-users.png differ diff --git a/assets/images/content/news/2024-12-02/new-challenges.png b/assets/images/content/news/2024-12-02/new-challenges.png new file mode 100644 index 00000000..a26b6492 Binary files /dev/null and b/assets/images/content/news/2024-12-02/new-challenges.png differ diff --git a/assets/images/content/news/2024-12-02/new-community.png b/assets/images/content/news/2024-12-02/new-community.png new file mode 100644 index 00000000..3df2e116 Binary files /dev/null and b/assets/images/content/news/2024-12-02/new-community.png differ diff --git a/assets/images/content/news/2024-12-02/new-deps.png b/assets/images/content/news/2024-12-02/new-deps.png new file mode 100644 index 00000000..0440031e Binary files /dev/null and b/assets/images/content/news/2024-12-02/new-deps.png differ diff --git a/assets/images/content/news/2024-12-02/new-learning.png b/assets/images/content/news/2024-12-02/new-learning.png new file mode 100644 index 00000000..56ff0ec3 Binary files /dev/null and b/assets/images/content/news/2024-12-02/new-learning.png differ diff --git a/assets/images/content/news/2024-12-02/new-os.png b/assets/images/content/news/2024-12-02/new-os.png new file mode 100644 index 00000000..55d08a6e Binary files /dev/null and b/assets/images/content/news/2024-12-02/new-os.png differ diff --git a/assets/images/content/news/2024-12-02/new-prior-lang.png b/assets/images/content/news/2024-12-02/new-prior-lang.png new file mode 100644 index 00000000..8b8cb539 Binary files /dev/null and b/assets/images/content/news/2024-12-02/new-prior-lang.png differ diff --git a/assets/images/content/news/2024-12-02/new-priorities.png b/assets/images/content/news/2024-12-02/new-priorities.png new file mode 100644 index 00000000..7f609d1c Binary files /dev/null and b/assets/images/content/news/2024-12-02/new-priorities.png differ diff --git a/assets/images/content/news/2024-12-02/trend-clojure.png b/assets/images/content/news/2024-12-02/trend-clojure.png new file mode 100644 index 00000000..b4326033 Binary files /dev/null and b/assets/images/content/news/2024-12-02/trend-clojure.png differ diff --git a/assets/images/content/news/2024-12-02/trend-deps.png b/assets/images/content/news/2024-12-02/trend-deps.png new file mode 100644 index 00000000..227878e2 Binary files /dev/null and b/assets/images/content/news/2024-12-02/trend-deps.png differ diff --git a/assets/images/content/news/2024-12-02/trend-dev-env.png b/assets/images/content/news/2024-12-02/trend-dev-env.png new file mode 100644 index 00000000..87eabf7f Binary files /dev/null and b/assets/images/content/news/2024-12-02/trend-dev-env.png differ diff --git a/assets/images/content/news/2024-12-02/trend-java.png b/assets/images/content/news/2024-12-02/trend-java.png new file mode 100644 index 00000000..424b45c6 Binary files /dev/null and b/assets/images/content/news/2024-12-02/trend-java.png differ diff --git a/assets/images/content/news/2024-12-02/trend-lang.png b/assets/images/content/news/2024-12-02/trend-lang.png new file mode 100644 index 00000000..ce020582 Binary files /dev/null and b/assets/images/content/news/2024-12-02/trend-lang.png differ diff --git a/assets/images/content/news/2024-12-02/trend-os.png b/assets/images/content/news/2024-12-02/trend-os.png new file mode 100644 index 00000000..97a44f6d Binary files /dev/null and b/assets/images/content/news/2024-12-02/trend-os.png differ diff --git a/assets/images/content/news/2024-12-02/trend-use.png b/assets/images/content/news/2024-12-02/trend-use.png new file mode 100644 index 00000000..91c87f00 Binary files /dev/null and b/assets/images/content/news/2024-12-02/trend-use.png differ diff --git a/content/api/api.adoc b/content/api/api.adoc index 2443cd4d..5c72b2e1 100644 --- a/content/api/api.adoc +++ b/content/api/api.adoc @@ -26,7 +26,7 @@ Documentation for Clojure <>: == Other resources * https://clojuredocs.org[ClojureDocs] - community provided example repository -* https://cljdoc.org/[cljdoc] - library documentation +* https://cljdoc.org[cljdoc] - library documentation == Deprecated (pre Clojure 1.3) diff --git a/content/community/books.adoc b/content/community/books.adoc index ae205756..10c3adf3 100644 --- a/content/community/books.adoc +++ b/content/community/books.adoc @@ -12,6 +12,21 @@ _Listed in order of descending release date of newest edition._ [width="80", cols="<.^30a,.^70", role="table"] |=== +| image::https://aiprobook.com/img/lafp-cover.png[Numerical Linear Algebra for Programmers: An Interactive Tutorial with GPU, CUDA, OpenCL, MKL, Java and Clojure,link="https://aiprobook.com/numerical-linear-algebra-for-programmers/",width="130"] +| https://aiprobook.com/numerical-linear-algebra-for-programmers/[Numerical Linear Algebra for Programmers: An Interactive Tutorial with GPU, CUDA, OpenCL, MKL, Java and Clojure] + +by Dragan Djuric + +Dec 20, 2024 + +| image::https://aiprobook.com/img/dlfp-cover.png[Deep Learning for Programmers,link="https://aiprobook.com/deep-learning-for-programmers/",width="130"] +| https://aiprobook.com/deep-learning-for-programmers/[Deep Learning for Programmers] + +by Dragan Djuric + +Dec 20, 2024 + +| image::https://pragprog.com/titles/mmclobrain/clojure-brain-teasers/mmclobrain-beta-500.jpg[Clojure Brain Teasers,link="https://pragprog.com/titles/mmclobrain/clojure-brain-teasers/",width="130"] +| https://pragprog.com/titles/mmclobrain/clojure-brain-teasers/[Clojure Brain Teasers] + +by Alex Miller, Lorilyn Jordan Miller + +Sep 18, 2024 + | image::https://images-na.ssl-images-amazon.com/images/I/617Sl1uORgL._SL160.jpg[Functional Design: Principles, Patterns, and Practices,link="https://a.co/d/b1NrzDU",width="130"] | https://a.co/d/b1NrzDU[Functional Design: Principles, Patterns, and Practices] + by Robert C. Martin + @@ -27,16 +42,6 @@ Mar 23, 2023 by Dmitri Sotnikov, Scot Brown + July 29, 2021 -| image::https://aiprobook.com/img/lafp-cover.png[Numerical Linear Algebra for Programmers: An Interactive Tutorial with GPU, CUDA, OpenCL, MKL, Java and Clojure,link="https://aiprobook.com/numerical-linear-algebra-for-programmers/",width="130"] -| https://aiprobook.com/numerical-linear-algebra-for-programmers/[Numerical Linear Algebra for Programmers] + -by Dragan Djuric + -Jan 15, 2021 - -| image::https://aiprobook.com/img/dlfp-cover.png[Deep Learning for Programmers,link="https://aiprobook.com/deep-learning-for-programmers/",width="130"] -| https://aiprobook.com/deep-learning-for-programmers/[Deep Learning for Programmers] + -by Dragan Djuric + -Dec 21, 2020 - | image::https://images-na.ssl-images-amazon.com/images/I/51AWkNYd4NL._SL160.jpg[The Clojure Workshop,link="https://www.amazon.com/dp/B082FJ9ZLY",width="130"] | https://www.amazon.com/dp/B082FJ9ZLY[The Clojure Workshop] + by Joseph Fahey, Thomas Haratyk, Scott McCaughie, Yehonathan Sharvit, Konrad Szydlo + @@ -62,7 +67,7 @@ Nov 15, 2019 by Ivan Grishaev + Aug 31, 2018 -| image::https://images-na.ssl-images-amazon.com/images/I/51dqOLcPL7L._SL160.jpg[Getting Clojure,link="https://pragprog.com/book/roclojure/getting-clojure",width="130"] +| image::https://images-na.ssl-images-amazon.com/images/I/51dqOLcPL7L._SL160.jpg[Getting Clojure,link="https://pragprog.com/titles/roclojure/getting-clojure/",width="130"] | https://pragprog.com/book/roclojure/getting-clojure[Getting Clojure] + by Russ Olsen + May 19, 2018 diff --git a/content/community/companies.adoc b/content/community/companies.adoc index 0b475ee9..57c88d15 100644 --- a/content/community/companies.adoc +++ b/content/community/companies.adoc @@ -50,6 +50,7 @@ Also, check out the <> and <> and <> for more information on Clojure development. +Clojure was created by Rich Hickey and is developed by a core team of developers at https://international.nubank.com.br/[Nubank], which supports this work. The Clojure development team values a measured and thoughtful approach to language evolution with a strong emphasis on maintaining backward compatibility. See <> for more information on Clojure development. If you would like to provide a patch on a specific ticket in the jira tracker, please follow the <> to become a contributor. diff --git a/content/community/contributing_site.adoc b/content/community/contributing_site.adoc index fa4577d8..f6ea92e1 100644 --- a/content/community/contributing_site.adoc +++ b/content/community/contributing_site.adoc @@ -125,6 +125,6 @@ Thanks for your contributions! == Terms of Use -Copyright © 2019 Rich Hickey and contributors +Copyright © Rich Hickey and contributors -All documentation contained in this repository is licensed by Rich Hickey under the http://www.eclipse.org/legal/epl-v10.html[Eclipse Public License v1.0] unless otherwise noted. +All documentation contained in this repository is licensed by Rich Hickey under the https://www.eclipse.org/legal/epl/epl-v10.html[Eclipse Public License v1.0] unless otherwise noted. diff --git a/content/community/resources.adoc b/content/community/resources.adoc index fadcdb7a..680743ee 100644 --- a/content/community/resources.adoc +++ b/content/community/resources.adoc @@ -42,7 +42,7 @@ Community: * https://practicalli.github.io/[Practicalli] - books and video tutorials on developing with Clojure, it's tooling and workflow * https://github.com/ClojureBridge/curriculum[ClojureBridge Curriculum] * https://clojuredocs.org[ClojureDocs] - community provided example repository -* http://clojure-doc.org/[Clojure Documentation] - community-driven documentation site +* http://clojure-doc.org/[Clojure Guides] - community-driven tutorials, guides, and cookbooks * https://cljdoc.org/[cljdoc] - a website building & hosting documentation for Clojure/Script libraries * http://clojurekoans.com/[Clojure Koans] (http://clojurescriptkoans.com/[online]) * http://exercism.io/[exercism.io] - crowd-source code reviews (supports Clojure) diff --git a/content/community/user_groups.adoc b/content/community/user_groups.adoc index 60c33564..83a0a652 100644 --- a/content/community/user_groups.adoc +++ b/content/community/user_groups.adoc @@ -21,7 +21,7 @@ https://github.com/clojure/clojure-site[clojure-site] github repo. [[argentina]] * Argentina https://www.meetup.com/ClojureBA/[Clojure User Group Buenos Aires] (Twitter: https://twitter.com/ClojureBA[@ClojureBA]) [[brazil]] -* Brazil https://www.meetup.com/clj-sp/[Grupo de Usuários Clojure de São Paulo e Rio de Janeiro] +* Brazil https://www.meetup.com/clojure-br/[Clojure BR Meetup] [[canada]] * Canada ** https://groups.google.com/forum/#!forum/montreal-clojure-user-group[Montreal Clojure User @@ -43,7 +43,7 @@ Group] (Inactive since 2022) *** https://www.meetup.com/Chicago-Clojure/[Chicago] *** https://cincyfp.wordpress.com/[Cincy Functional Programmers Group] (Inactive since 2018) *** Detroit Clojure Group -*** https://www.meetup.com/Madison-Clojure-Meetup/[Madison Clojure Meetup] - Madison, WI +*** https://madclj.com/[Madison Clojure] - Madison, WI ** South *** https://www.meetup.com/Cap-Clug/[National Capital Area Clojure Users (Inactive since 2021) Group] - Reston, VA diff --git a/content/dev/contributor_agreement.adoc b/content/dev/contributor_agreement.adoc index c7019996..9a4b69f1 100644 --- a/content/dev/contributor_agreement.adoc +++ b/content/dev/contributor_agreement.adoc @@ -92,6 +92,7 @@ See the full <> that have signed the Clojure * Erik Assum * Eugene Kostenko * Federico Brubacher +* Frank Yin * Frantisek Sodomka * Gabriel Horner * Gary Fredericks @@ -108,6 +109,7 @@ See the full <> that have signed the Clojure * Immo Heikkinen * James Reeves * Jarkko Oranen +* Jarrod Taylor * Jason Wolfe * Jason Whitlark * Jean Niklas L'orange @@ -163,6 +165,7 @@ See the full <> that have signed the Clojure * Ragnar Dahlén * Ralf Schmitt * Rasmus Svensson +* Ray McDermott * Rich Hickey * Richard Newman * Robert Lachlan diff --git a/content/dev/contributors.csv b/content/dev/contributors.csv index 73006b56..b5cdfe0a 100644 --- a/content/dev/contributors.csv +++ b/content/dev/contributors.csv @@ -219,6 +219,7 @@ Fergal Byrne,fergalbyrne Myles Byrne,quackingduck David Cabana,drcabana Stephan Cagle, +Robert B. Calco,GrumpyOldGandalf Bobby Calderwood, Oliver Caldwell,Olical Ricardo Martinez Calvo,rack don @@ -290,6 +291,7 @@ Kyle Cordes, Roger Corman, Sean Corfield, Jereme Corrado,jcorrado +Brandon Correa,brandoncorrea Giacomo Cosenza,magomimmo Mark Countryman, Jason Courcoux,jasoncourcoux @@ -492,6 +494,7 @@ Michael Frericks,frericksm David Frese,dfrese Adam Frey,adamfrey Chris Frisz,cjfrisz +Arthur Fücher,afucher Hiroyuki Fudaba,delihiros Denis Fuenzalida,dfuenzalida Keisuke Fukuda,keisukefukuda @@ -519,6 +522,7 @@ Justin Gehtland,jgehtland Arnaud Geiser,arnaudgeiser Maria Geller,mneise Marc Sabates Gelpi,marc-sabates-gelpi +Hadil Sabbagh,hadils Christopher Genovese, Fred George, Daniel Gerigk,danielgerigk @@ -539,6 +543,7 @@ Mark Giovanetti,philip-doctor Davide Giovannini,davideGiovannini Logan Girard,LoganGirard Pedro Girardi,pedrogirardi +Harald Glab-Plhak,hglabplh-tech Petr Gladkikh,PetrGlad Michael Glaesemann,grzm Daniel Glauser,danielglauser @@ -606,7 +611,6 @@ Gordon Gustafson,GordonGustafson Andrew Gwozdziewycz, Akos Gyimesi,gyim Austin Haas,austinhaas -Dany Haddad,dmh43 Phil Hagelberg,technomancy Brent Hagany,bhagany Faiz Halde,fhalde @@ -696,6 +700,7 @@ Matt Hoyt,mrb0057 Takahiro Hozumi, ZhiFeng Hu,netroby Ziyang Hu,zh217 +Ken Huang,whatacold Raymond Huang,rymndhng Peter Hudec,peterhudec Matthew Huebert,mhuebert @@ -969,6 +974,7 @@ David Liepmann,daveliepmann Andreas Liljeqvist,bonega August Lilleaas, Michelle Lim,eemshi +Marek Lipert,mll Mathieu Lirzin,mthl Joe Littlejohn,joelittlejohn Marc Limotte,mlimotte @@ -1014,6 +1020,7 @@ Christopher Maier, Glen Mailer,glenjamin Roman Makhlin,yokalona Cristian Malinescu,Cristian-Malinescu +Andrii Maliuta,ahndmal Alan Malloy, Henrish Maluleka,henroid Itay Maman, @@ -1217,6 +1224,7 @@ Jan Oberhagemann, Robert O'Connor,robbyoconnor Stefan Oestreicher, Trent Ogren,misfo +John O'Hanley,johanley Kent Ohashi,lagenorhynque Lauri Oherd,laurio Shogo Ohta,athos @@ -1254,6 +1262,7 @@ Thonghee Park, Shaun Parker,shaunparker Paavo Parkkinen,pparkkin Andy S. Parsons,andyparsons +Wallysson Oliveira Pasqualini,Sholum1 Achim Passen, Dora Patel,bombaywalla Bolaram Paul,bolaram @@ -1541,7 +1550,7 @@ Paul L. Snyder,pataprogramming Renata Soares dos Santos,renatasoares Frantisek Sodomka,fsodomka Erik Soehnel,hoeck -Daniel Solano Gómez,sattvik +Quetzaly Solano Gómez,sattvik Ludge Solbach,lsolbach Henrik Solgaard,hsolg Artem Solomatin,solar05 @@ -1642,6 +1651,7 @@ Chad Taylor,tessellator Colin Taylor,coltnz Miki Tebeka, Ian Tegebo,itegebo +Lucas Teles Agostinho,lucasteles Zachary Tellman, Sven Tennie,supersven Zachary Teo,zackteo @@ -1693,6 +1703,7 @@ Emrehan Tuzun,emrehan Arthur Ulfeldt, Moritz Ulrich,the-kenny Sam Umbach, +unlisted,dmh43 Leonardo Urbina,leourbina Anthony Urena,anthgur Travis Vachon, diff --git a/content/dev/dev.adoc b/content/dev/dev.adoc index 581a7c3c..cfd697f1 100644 --- a/content/dev/dev.adoc +++ b/content/dev/dev.adoc @@ -7,7 +7,7 @@ Alex Miller ifdef::env-github,env-browser[:outfilesuffix: .adoc] -Clojure was created by Rich Hickey and is developed by a core team of developers at https://cognitect.com[Cognitect], which supports this work. The Clojure development team values a measured and thoughtful approach to language evolution with a strong emphasis on maintaining backward compatibility. +Clojure was created by Rich Hickey and is developed by a core team of developers at https://international.nubank.com.br/[Nubank], which supports this work. The Clojure development team values a measured and thoughtful approach to language evolution with a strong emphasis on maintaining backward compatibility. == Becoming a Contributor diff --git a/content/events/2025/-ai-assisted-coding-clojure-meetup--1075407742.adoc b/content/events/2025/-ai-assisted-coding-clojure-meetup--1075407742.adoc new file mode 100644 index 00000000..5af06a1b --- /dev/null +++ b/content/events/2025/-ai-assisted-coding-clojure-meetup--1075407742.adoc @@ -0,0 +1,23 @@ += #ai-assisted-coding Clojure Meetup +2025-06-21 +:jbake-type: event +:jbake-edition: +:jbake-link: https://clojureverse.org/t/ai-assisted-coding-clojure-meetup/11465 +:jbake-location: online +:jbake-start: 2025-06-21 +:jbake-end: 2025-06-21 + +== #ai-assisted-coding Clojure Meetup + +Recently, the #ai-assisted-coding channel at the Clojurians Slack has been very active with ideas, updates, and advice. + +To support that, @John_Newman and @bhauman are organising a meetup this Saturday to share ideas between everybody. + +More details + +For the full connection details, see the Slack thread. + +Original announcement + +@John_Newman said (at Slack): + + + +Hey everybody - Bruce and I were chatting and we want to have an imprompt u (lol) meetup to share ideas between everyone. No specific agenda - just helping each other fuse up on the best ai assisted coding methods lately, and look for more opportunities for us all to collaborate on common solutions for getting this stuff done in Clojure. I’ll show my stuff off. Folks can show what they’ve been hacking on. + + + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/525066794 + + diff --git a/content/events/2025/building-a-3d-multiplayer-shooter-in--1278671099.adoc b/content/events/2025/building-a-3d-multiplayer-shooter-in--1278671099.adoc new file mode 100644 index 00000000..839b6312 --- /dev/null +++ b/content/events/2025/building-a-3d-multiplayer-shooter-in--1278671099.adoc @@ -0,0 +1,44 @@ += Building a 3D Multiplayer Shooter in +2025-04-29 +:jbake-type: event +:jbake-edition: +:jbake-link: https://www.meetup.com/london-clojurians/events/307082137/ +:jbake-location: online +:jbake-start: 2025-04-29 +:jbake-end: 2025-04-29 + +== Building a 3D Multiplayer Shooter in Clojure (... + +Building a 3D Multiplayer Shooter in Clojure (by Ertugrul Cetin) + + + +THIS IS AN ONLINE EVENT + +[Connection details will be shared 1h before the start time] + +The London Clojurians are happy to present: + +Title: Building a 3D Multiplayer Shooter in Clojure: The Making of Wizard Masters + +Speaker: Ertugrul Cetin + +Time: 2025-04-29 @ 18:30 (London time) + +Local time: click here for local time + +Ertugrul Cetin (https://github.com/ertugrulcetin) will be presenting: + +"Building a 3D Multiplayer Shooter in Clojure: The Making of Wizard Masters" + +In this talk, the speaker will walk through how Wizard Masters, a 3D multiplayer browser game, was built using Clojure and Babylon.js. Attendees will get a peek into the architecture, tooling, and lessons learned from blending fullstack Clojure with real-time 3D game development. + +The speaker has been working with Clojure for nearly a decade, mostly in fullstack SaaS development. For the past 4 years, he’s been exploring game development as a hobby, building Wizard Masters, a browser-based 3D multiplayer shooter. + +If you missed this event, you can watch the recording on our YouTube channel: + +https://www.youtube.com/@LondonClojurians + +(The recording will be uploaded a couple of days after the event.) + +Please, consider supporting the London Clojurians with a small donation: + +https://opencollective.com/london-clojurians/ + +Your contributions will enable the sustainability of the London Clojurians community and support our varied set of online and in-person events: + + + +ClojureBridge London: supports under-represented groups discover Clojure + +re:Clojure: our annual community conference + +monthly meetup events with speakers from all over the world + +subscription and admin costs such as domain name & StreamYard subscription + + + +Thank you to our sponsors: + + + +https://juxt.pro/ + +https://flexiana.com/ + +And many individual sponsors + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/509921572 + + diff --git a/content/events/2025/clein-bringing-a-bit-of-leiningen-to-1046714963.adoc b/content/events/2025/clein-bringing-a-bit-of-leiningen-to-1046714963.adoc new file mode 100644 index 00000000..11ea4a31 --- /dev/null +++ b/content/events/2025/clein-bringing-a-bit-of-leiningen-to-1046714963.adoc @@ -0,0 +1,44 @@ += Clein: Bringing a bit of leiningen to +2025-01-21 +:jbake-type: event +:jbake-edition: +:jbake-link: https://www.meetup.com/london-clojurians/events/305279887/ +:jbake-location: online +:jbake-start: 2025-01-21 +:jbake-end: 2025-01-21 + +== Clein: Bringing a bit of leiningen to deps.edn... + +Clein: Bringing a bit of leiningen to deps.edn (by Noah Bogart) + + + +THIS IS AN ONLINE EVENT + +[Connection details will be shared 1h before the start time] + +The London Clojurians are happy to present: + +Title: Clein: Bringing a bit of leiningen to deps.edn + +Speaker: Noah Bogart + +Time: 2025-01-21 @ 18:30 (London time) + +Local time: click here for local time + +Noah Bogart (https://github.com/NoahTheDuke) will be presenting: + +"Clein: Bringing a bit of leiningen to deps.edn" + +Clein attempts to handle the basic use cases of build.clj, covering the boilerplate with minimal configuration and sensible defaults. This talk will go over why and how Clein was built, and future plans. + +Noah has been a hobby programmer since 2002, a professional programmer since 2016, and a Clojure fanatic since 2018. He loves to take data in, change it, and push it out. + +If you missed this event, you can watch the recording on our YouTube channel: + +https://www.youtube.com/@LondonClojurians + +(The recording will be uploaded a couple of days after the event.) + +Please, consider supporting the London Clojurians with a small donation: + +https://opencollective.com/london-clojurians/ + +Your contributions will enable the sustainability of the London Clojurians community and support our varied set of online and in-person events: + + + +ClojureBridge London: supports under-represented groups discover Clojure + +re:Clojure: our free to attend annual community conference + +monthly meetup events with speakers from all over the world + +subscription and admin costs such as domain name & StreamYard subscription + + + +Thank you to our sponsors: + + + +https://juxt.pro/ + +https://flexiana.com/ + +And many individual sponsors + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/491802512 + + diff --git a/content/events/2025/clojure-conj.adoc b/content/events/2025/clojure-conj.adoc new file mode 100644 index 00000000..1652b810 --- /dev/null +++ b/content/events/2025/clojure-conj.adoc @@ -0,0 +1,23 @@ += Clojure/Conj 2025 +2025-11-12 +:jbake-type: event +:jbake-edition: +:jbake-link: https://2025.clojure-conj.org/ +:jbake-location: online +:jbake-start: 2025-11-12 +:jbake-end: 2025-11-14 + +== Clojure/Conj 2025 + +Clojure/conj is the oldest gathering of the Clojure community, and the next edition will be November 12-14, 2025, in Charlotte, NC at the Charlotte Convention Center. The Conj is a great place to learn about the most exciting developments in the Clojure ecosystem and talk to a wide range of Clojure users. + +Registration is open now at https://2025.clojure-conj.org + +The main conference will be Nov 13-14 and Nov 12 will feature a day of optional hands-on workshops to kick things off: + +* Intro to Clojure - Jarrod Taylor +* Empowering Data Analysis through Scicloj - Ethan Zane Miller +* Learning Rama from zero to production - Nathan Marz +* Amazing Day of Datomic - Datomic team +* FlowStorm - Juan Monetta +* Practical Domain Modeling in Clojure - Eric Normand diff --git a/content/events/2025/clojure-real-world-data-28--146760520.adoc b/content/events/2025/clojure-real-world-data-28--146760520.adoc new file mode 100644 index 00000000..cb5f3f1d --- /dev/null +++ b/content/events/2025/clojure-real-world-data-28--146760520.adoc @@ -0,0 +1,21 @@ += Clojure real-world-data 28 +2025-03-21 +:jbake-type: event +:jbake-edition: +:jbake-link: https://clojureverse.org/t/clojure-real-world-data-28/11260 +:jbake-location: online +:jbake-start: 2025-03-21 +:jbake-end: 2025-03-21 + +== Clojure real-world-data 28 + +Hi! + +It is not too late to join the real-world-data group. + +This study group is a bit different from the other ones. Participants are assumed to be actively working on a problem and willing to share it. + +See the meeting 1 post for background. + +Updates about the agenda will be shared in the group chat. + +If you wish to join the group, please reach out beforehand. + +parens1920×1440 98.2 KB + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/505889661 + + diff --git a/content/events/2025/clojure-real-world-data-29--1410517799.adoc b/content/events/2025/clojure-real-world-data-29--1410517799.adoc new file mode 100644 index 00000000..70524c5e --- /dev/null +++ b/content/events/2025/clojure-real-world-data-29--1410517799.adoc @@ -0,0 +1,21 @@ += Clojure real-world-data 29 +2025-04-04 +:jbake-type: event +:jbake-edition: +:jbake-link: https://clojureverse.org/t/clojure-real-world-data-29/11295 +:jbake-location: online +:jbake-start: 2025-04-04 +:jbake-end: 2025-04-04 + +== Clojure real-world-data 29 + +Hi! + +It is not too late to join the real-world-data group. + +This study group is a bit different from the other ones. Participants are assumed to be actively working on a problem and willing to share it. + +See the meeting 1 post for background. + +Updates about the agenda will be shared in the group chat. + +If you wish to join the group, please reach out beforehand. + +parens1920×1440 98.2 KB + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/508937243 + + diff --git a/content/events/2025/clojure-real-world-data-29-1484523181.adoc b/content/events/2025/clojure-real-world-data-29-1484523181.adoc new file mode 100644 index 00000000..6c361181 --- /dev/null +++ b/content/events/2025/clojure-real-world-data-29-1484523181.adoc @@ -0,0 +1,22 @@ += Clojure real-world-data 29 +2025-04-18 +:jbake-type: event +:jbake-edition: +:jbake-link: https://clojureverse.org/t/clojure-real-world-data-29/11295 +:jbake-location: online +:jbake-start: 2025-04-18 +:jbake-end: 2025-04-18 + +== Clojure real-world-data 29 + +(note the date change) + +Hi! + +It is not too late to join the real-world-data group. + +This study group is a bit different from the other ones. Participants are assumed to be actively working on a problem and willing to share it. + +See the meeting 1 post for background. + +Updates about the agenda will be shared in the group chat. + +If you wish to join the group, please reach out beforehand. + +parens1920×1440 98.2 KB + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/509906169 + + diff --git a/content/events/2025/clojure-real-world-data-30--945720782.adoc b/content/events/2025/clojure-real-world-data-30--945720782.adoc new file mode 100644 index 00000000..8c57c61e --- /dev/null +++ b/content/events/2025/clojure-real-world-data-30--945720782.adoc @@ -0,0 +1,23 @@ += Clojure real-world-data 30 +2025-05-03 +:jbake-type: event +:jbake-edition: +:jbake-link: https://clojureverse.org/t/clojure-real-world-data-30-special-day-time-conference-prep-meeting/11373 +:jbake-location: online +:jbake-start: 2025-05-03 +:jbake-end: 2025-05-03 + +== Clojure real-world-data 30 -- special day & ti... + +Clojure real-world-data 30 -- special day & time -- conference prep meeting + + + +Hi! + +In this special meeting of the real-world-data group, we will have a prep session for the SciNoj Light #1 conference. + +The session will be hosted by @Melody. + +Updates about the agenda will be shared in the zulip chat. + +#real-world-data>meeting 30 (requires login) + +If you wish to participate, please reach out beforehand. + +parens1920×1440 98.2 KB + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/515695660 + + diff --git a/content/events/2025/clojure-real-world-data-30-1982283090.adoc b/content/events/2025/clojure-real-world-data-30-1982283090.adoc new file mode 100644 index 00000000..ceab1ab6 --- /dev/null +++ b/content/events/2025/clojure-real-world-data-30-1982283090.adoc @@ -0,0 +1,22 @@ += Clojure real-world-data 30 +2025-05-02 +:jbake-type: event +:jbake-edition: +:jbake-link: https://clojureverse.org/t/clojure-real-world-data-30/11332 +:jbake-location: online +:jbake-start: 2025-05-02 +:jbake-end: 2025-05-02 + +== Clojure real-world-data 30 + +(note the date change) + +Hi! + +It is not too late to join the real-world-data group. + +This study group is a bit different from the other ones. Participants are assumed to be actively working on a problem and willing to share it. + +See the meeting 1 post for background. + +Updates about the agenda will be shared in the group chat. + +If you wish to join the group, please reach out beforehand. + +parens1920×1440 98.2 KB + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/513100375 + + diff --git a/content/events/2025/clojure-real-world-data-31-1408209361.adoc b/content/events/2025/clojure-real-world-data-31-1408209361.adoc new file mode 100644 index 00000000..1c29c086 --- /dev/null +++ b/content/events/2025/clojure-real-world-data-31-1408209361.adoc @@ -0,0 +1,21 @@ += Clojure real-world-data 31 +2025-05-30 +:jbake-type: event +:jbake-edition: +:jbake-link: https://clojureverse.org/t/clojure-real-world-data-31/11434 +:jbake-location: online +:jbake-start: 2025-05-30 +:jbake-end: 2025-05-30 + +== Clojure real-world-data 31 + +Hi! + +It is not too late to join the real-world-data group. + +This study group is a bit different from the other ones. Participants are assumed to be actively working on a problem and willing to share it. + +See the meeting 1 post for background. + +Updates about the agenda will be shared in the group chat. + +If you wish to join the group, please reach out beforehand. + +parens1920×1440 98.2 KB + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/520605280 + + diff --git a/content/events/2025/clojure-real-world-data-32--2020996558.adoc b/content/events/2025/clojure-real-world-data-32--2020996558.adoc new file mode 100644 index 00000000..6193eedd --- /dev/null +++ b/content/events/2025/clojure-real-world-data-32--2020996558.adoc @@ -0,0 +1,22 @@ += Clojure real-world-data 32 +2025-06-13 +:jbake-type: event +:jbake-edition: +:jbake-link: https://clojureverse.org/t/clojure-real-world-data-32/11455 +:jbake-location: online +:jbake-start: 2025-06-13 +:jbake-end: 2025-06-13 + +== Clojure real-world-data 32 + +Note: following recent discussions, we shifted the regular meeting time three hours earlier. + +Hi! + +It is not too late to join the real-world-data group. + +This study group is a bit different from the other ones. Participants are assumed to be actively working on a problem and willing to share it. + +See the meeting 1 post for background. + +Updates about the agenda will be shared in the group chat. + +If you wish to join the group, please reach out beforehand. + +parens1920×1440 98.2 KB + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/523269830 + + diff --git a/content/events/2025/clojure-real-world-data-meeting-22--1287988694.adoc b/content/events/2025/clojure-real-world-data-meeting-22--1287988694.adoc new file mode 100644 index 00000000..e503e556 --- /dev/null +++ b/content/events/2025/clojure-real-world-data-meeting-22--1287988694.adoc @@ -0,0 +1,21 @@ += Clojure real-world-data meeting 22 +2025-01-10 +:jbake-type: event +:jbake-edition: +:jbake-link: https://clojureverse.org/t/clojure-real-world-data-meeting-22/11104 +:jbake-location: online +:jbake-start: 2025-01-10 +:jbake-end: 2025-01-10 + +== Clojure real-world-data meeting 22 + +Hi! + +It is not too late to join the real-world-data group. + +This study group is a bit different from the other ones. Participants are assumed to be actively working on a problem and willing to share it. + +See the meeting 1 post for background. + +Updates about the agenda will be shared in the group chat. + +If you wish to join the group, please reach out beforehand. + +parens1920×1440 98.2 KB + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/491111086 + + diff --git a/content/events/2025/clojure-real-world-data-meeting-23-1547658379.adoc b/content/events/2025/clojure-real-world-data-meeting-23-1547658379.adoc new file mode 100644 index 00000000..f817e472 --- /dev/null +++ b/content/events/2025/clojure-real-world-data-meeting-23-1547658379.adoc @@ -0,0 +1,21 @@ += Clojure real-world-data meeting 23 +2025-01-24 +:jbake-type: event +:jbake-edition: +:jbake-link: https://clojureverse.org/t/clojure-real-world-data-meeting-23/11147 +:jbake-location: online +:jbake-start: 2025-01-24 +:jbake-end: 2025-01-24 + +== Clojure real-world-data meeting 23 + +Hi! + +It is not too late to join the real-world-data group. + +This study group is a bit different from the other ones. Participants are assumed to be actively working on a problem and willing to share it. + +See the meeting 1 post for background. + +Updates about the agenda will be shared in the group chat. + +If you wish to join the group, please reach out beforehand. + +parens1920×1440 98.2 KB + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/494295823 + + diff --git a/content/events/2025/clojure-real-world-data-meeting-24--1310943607.adoc b/content/events/2025/clojure-real-world-data-meeting-24--1310943607.adoc new file mode 100644 index 00000000..fecaef56 --- /dev/null +++ b/content/events/2025/clojure-real-world-data-meeting-24--1310943607.adoc @@ -0,0 +1,21 @@ += Clojure real-world-data meeting 24 +2025-02-07 +:jbake-type: event +:jbake-edition: +:jbake-link: https://clojureverse.org/t/clojure-real-world-data-meeting-24/11190 +:jbake-location: online +:jbake-start: 2025-02-07 +:jbake-end: 2025-02-07 + +== Clojure real-world-data meeting 24 + +Hi! + +It is not too late to join the real-world-data group. + +This study group is a bit different from the other ones. Participants are assumed to be actively working on a problem and willing to share it. + +See the meeting 1 post for background. + +Updates about the agenda will be shared in the group chat. + +If you wish to join the group, please reach out beforehand. + +parens1920×1440 98.2 KB + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/497495464 + + diff --git a/content/events/2025/clojure-real-world-data-meeting-25-1977680034.adoc b/content/events/2025/clojure-real-world-data-meeting-25-1977680034.adoc new file mode 100644 index 00000000..4e0958f1 --- /dev/null +++ b/content/events/2025/clojure-real-world-data-meeting-25-1977680034.adoc @@ -0,0 +1,24 @@ += Clojure real-world-data meeting 25 +2025-02-21 +:jbake-type: event +:jbake-edition: +:jbake-link: https://clojureverse.org/t/clojure-real-world-data-meeting-25-prep-meeting-for-conference-cfp/11201 +:jbake-location: online +:jbake-start: 2025-02-21 +:jbake-end: 2025-02-21 + +== Clojure real-world-data meeting 25 - prep meet... + +Clojure real-world-data meeting 25 - prep meeting for conference cfp + + + +Hi! + +As @melody just announced in the Clojure Google group, on Feb. 21st, we will have the 25th meeting of the real-world-data group, which will serve as a first prep session for the upcoming SciNoj Light conference! + +Updates about the agenda will be shared in the Zulip chat. + +If you wish to join the group, please reach out beforehand. + +If you wish to present anything, please reach out soon. + +About SciNoj Light: + +In recent months, the Clojure toolkit for data and science has been maturing. Thus, in 2025, Scicloj can finally shift more resources into making it accessible and well-known. SciNoj Light is one of the first steps in that direction. It is an online conference where Clojurians will share their short-term data analysis. The conference will be on May 16-17, and proposals should be submitted by March 15th. + +parens1920×1440 98.2 KB + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/498442945 + + diff --git a/content/events/2025/clojure-real-world-data-meeting-26-1991491400.adoc b/content/events/2025/clojure-real-world-data-meeting-26-1991491400.adoc new file mode 100644 index 00000000..a1ae2394 --- /dev/null +++ b/content/events/2025/clojure-real-world-data-meeting-26-1991491400.adoc @@ -0,0 +1,53 @@ += Clojure real-world-data meeting 26 +2025-03-09 +:jbake-type: event +:jbake-edition: +:jbake-link: https://clojureverse.org/t/clojure-real-world-data-meeting-26-prep-meeting-for-conference-cfp/11228 +:jbake-location: online +:jbake-start: 2025-03-09 +:jbake-end: 2025-03-09 + +== Clojure real-world-data meeting 26 - prep meet... + +Clojure real-world-data meeting 26 - prep meeting for conference cfp + + + +This will be the 26th meeting of the real-world-data group – one of a few conference prep sessions facilitated by @Melody. + +The meeting will be dedicated to discussing talk proposals for upcoming SciNoj Light conference. + +Updates about the agenda will be shared in the Zulip chat. + + + +If you wish to join the group, please reach out beforehand. + +If you wish to present anything, please reach out soon. + + + +(Scicloj contact details) + +Zoom link + + + + + + + + + + Zoom Video + + + + + + + + + + + +Join our Cloud HD Video Meeting + + + + Zoom is the leader in modern enterprise video communications, with an easy, reliable cloud platform for video and audio conferencing, chat, and webinars across mobile, desktop, and room systems. Zoom Rooms is the original software-based conference... + + + + + + + + + + + + + + + + + + + + + + + + + +About SciNoj Light + +In recent months, the Clojure toolkit for data and science has been maturing. Thus, in 2025, Scicloj can finally shift more resources into making it accessible and well-known. SciNoj Light is one of the first steps in that direction. It is an online conference where Clojurians will share their short-term data analysis. The conference will be on May 16-17, and proposals should be submitted by March 15th. + +parens1920×1440 98.2 KB + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/502397705 + + diff --git a/content/events/2025/clojure-real-world-data-meeting-27-1227544001.adoc b/content/events/2025/clojure-real-world-data-meeting-27-1227544001.adoc new file mode 100644 index 00000000..3d14f84f --- /dev/null +++ b/content/events/2025/clojure-real-world-data-meeting-27-1227544001.adoc @@ -0,0 +1,53 @@ += Clojure real-world-data meeting 27 +2025-03-10 +:jbake-type: event +:jbake-edition: +:jbake-link: https://clojureverse.org/t/clojure-real-world-data-meeting-27-prep-meeting-for-conference-cfp/11229 +:jbake-location: online +:jbake-start: 2025-03-10 +:jbake-end: 2025-03-10 + +== Clojure real-world-data meeting 27 - prep meet... + +Clojure real-world-data meeting 27 - prep meeting for conference cfp + + + +This will be the 27th meeting of the real-world-data group – one of a few conference prep sessions facilitated by @Melody. + +The meeting will be dedicated to discussing talk proposals for upcoming SciNoj Light conference. + +Updates about the agenda will be shared in the Zulip chat. + + + +If you wish to join the group, please reach out beforehand. + +If you wish to present anything, please reach out soon. + + + +(Scicloj contact details) + +Zoom link + + + + + + + + + + Zoom Video + + + + + + + + + + + +Join our Cloud HD Video Meeting + + + + Zoom is the leader in modern enterprise video communications, with an easy, reliable cloud platform for video and audio conferencing, chat, and webinars across mobile, desktop, and room systems. Zoom Rooms is the original software-based conference... + + + + + + + + + + + + + + + + + + + + + + + + + +About SciNoj Light + +In recent months, the Clojure toolkit for data and science has been maturing. Thus, in 2025, Scicloj can finally shift more resources into making it accessible and well-known. SciNoj Light is one of the first steps in that direction. It is an online conference where Clojurians will share their short-term data analysis. The conference will be on May 16-17, and proposals should be submitted by March 15th. + +parens1920×1440 98.2 KB + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/502398506 + + diff --git a/content/events/2025/data-recur-meeting-7-r4clj-1-202662222.adoc b/content/events/2025/data-recur-meeting-7-r4clj-1-202662222.adoc new file mode 100644 index 00000000..156eeedc --- /dev/null +++ b/content/events/2025/data-recur-meeting-7-r4clj-1-202662222.adoc @@ -0,0 +1,45 @@ += Data-recur meeting 7 - R4Clj 1 +2025-01-31 +:jbake-type: event +:jbake-edition: +:jbake-link: https://clojureverse.org/t/data-recur-meeting-7-r4clj-1-introducing-r-and-the-tidyverse/11148 +:jbake-location: online +:jbake-start: 2025-01-31 +:jbake-end: 2025-01-31 + +== Data-recur meeting 7 - R4Clj 1: Introducing R ... + +Data-recur meeting 7 - R4Clj 1: Introducing R and the Tidyverse + + + +The data-recur group will have its next meeting on Jan 31st. + +This will be a beginning of a series of meetups, where we introduce the R languages and its ecosystem to the Clojure crowd. + +While Clojure already has an established collection of libraries for data science, it can be enlightening for Clojurians to learn about a different-but-similar language. A few of the Clojure data science libraries, such as Tablecloth and Tableplot, are explicitly inspired by R and its packages. To encourage additional inspiration of this kind, we will host a few meetings for the Clojure audience to discuss R and its relationship with Clojure. + +Agenda for this meeting + + + +The R language + +The Tidyverse packages + +A small example + +Discussion + + + +Joining + + + +Please mark your participation using the Your rsvp button at the top of this page (requires Clojureverse login). + +Please join the Clojurians Zulip chat beforehand. + +You can also use the Add to Calendar button to add the event to your calendar. + + + +Preparing for this meeting + +Before the meeting, it is recommended to install R and the Tidyverse package in your system and play with the R REPL a little bit. + +Length + +The official part will be 90 minutes long. + +Sometimes some of us like to stay longer and chat. + +Platform + + + +Video meeting: Launch Meeting - Zoom + +Text chat: We will use the #data-recur Zulip stream (requires Zulip login). + + + +Recording + +Some parts of the meeting will be recorded and probably shared publicly. + +Some parts will be unrecorded. + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/494306905 + + diff --git a/content/events/2025/don-t-fear-the-storm-by-juan-monetta-1654339560.adoc b/content/events/2025/don-t-fear-the-storm-by-juan-monetta-1654339560.adoc new file mode 100644 index 00000000..228618e4 --- /dev/null +++ b/content/events/2025/don-t-fear-the-storm-by-juan-monetta-1654339560.adoc @@ -0,0 +1,42 @@ += Don't fear the Storm (by Juan Monetta) +2025-01-28 +:jbake-type: event +:jbake-edition: +:jbake-link: https://www.meetup.com/london-clojurians/events/305198588/ +:jbake-location: online +:jbake-start: 2025-01-28 +:jbake-end: 2025-01-28 + +== Don't fear the Storm (by Juan Monetta) + +THIS IS AN ONLINE EVENT + +[Connection details will be shared 1h before the start time] + +The London Clojurians are happy to present: + +Title: Don't fear the Storm + +Speaker: Juan Monetta + +Time: 2025-01-28 @ 18:30 (London time) + +Local time: click here for local time + +Juan Monetta (https://github.com/jpmonettas/) will be presenting: + +"Don't fear the Storm" + +We will dig into FlowStorm internals, from its approach to instrumentation (ClojureStorm and ClojureScriptStorm), how FlowStorm uses it for tracing, indexing to providing tools for exploring and visualizing full systems execution. We will also explore a little bit of the new FlowStorm data visualization capabilities. + +Juan has been working as a programmer since late 90s, and working professionally as a Clojure developer since 2011 over many domains. He has a passion for dev tooling and anything that makes writing software more fun. + +If you missed this event, you can watch the recording on our YouTube channel: + +https://www.youtube.com/@LondonClojurians + +(The recording will be uploaded a couple of days after the event.) + +Please, consider supporting the London Clojurians with a small donation: + +https://opencollective.com/london-clojurians/ + +Your contributions will enable the sustainability of the London Clojurians community and support our varied set of online and in-person events: + + + +ClojureBridge London: supports under-represented groups discover Clojure + +re:Clojure: our free to attend annual community conference + +monthly meetup events with speakers from all over the world + +subscription and admin costs such as domain name & StreamYard subscription + + + +Thank you to our sponsors: + + + +https://juxt.pro/ + +https://flexiana.com/ + +And many individual sponsors + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/491802584 + + diff --git a/content/events/2025/inaugural-ohio-clojurians-meetup--473122340.adoc b/content/events/2025/inaugural-ohio-clojurians-meetup--473122340.adoc new file mode 100644 index 00000000..3c1e0fec --- /dev/null +++ b/content/events/2025/inaugural-ohio-clojurians-meetup--473122340.adoc @@ -0,0 +1,15 @@ += Inaugural Ohio Clojurians meetup +2025-07-09 +:jbake-type: event +:jbake-edition: +:jbake-link: https://clojureverse.org/t/inaugural-ohio-clojurians-meetup/11451 +:jbake-location: online +:jbake-start: 2025-07-09 +:jbake-end: 2025-07-09 + +== Inaugural Ohio Clojurians meetup + +If you are in Ohio – or sufficiently Ohio-adjacent – I’m hoping to have an informal first meetup online on Tuesday, July 8th, so can get to know each other and maybe have one or more show’n’tell slots. 8 pm Eastern. We’re organizing this in the #clojure-ohio channel on Clojurians Slack, including a show of hands to decide what time to kick-off. Hopefully, this will become a regular monthly event. + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/523015570 + + diff --git a/content/events/2025/intro-to-collet-a-low-code-etl-863588981.adoc b/content/events/2025/intro-to-collet-a-low-code-etl-863588981.adoc new file mode 100644 index 00000000..878c969d --- /dev/null +++ b/content/events/2025/intro-to-collet-a-low-code-etl-863588981.adoc @@ -0,0 +1,44 @@ += Intro to Collet. A low-code ETL +2025-02-18 +:jbake-type: event +:jbake-edition: +:jbake-link: https://www.meetup.com/london-clojurians/events/305238843/ +:jbake-location: online +:jbake-start: 2025-02-18 +:jbake-end: 2025-02-18 + +== Intro to Collet. A low-code ETL management too... + +Intro to Collet. A low-code ETL management tool (by Sergei Tkachenko) + + + +THIS IS AN ONLINE EVENT + +[Connection details will be shared 1h before the start time] + +The London Clojurians are happy to present: + +Title: Intro to Collet. A low-code ETL management tool + +Speaker: Sergei Tkachenko + +Time: 2025-02-18 @ 18:30 (London time) + +Local time: click here for local time + +Sergei Tkachenko (https://github.com/margintop15px) will be presenting: + +"Intro to Collet. A low-code ETL management tool" + +In this talk, we'll explore the Collet project, its features, and core concepts. We'll begin with basic building blocks like tasks and actions, and discuss best practices for combining them effectively. You'll learn about built-in and custom actions, error handling, and job monitoring. Finally, we'll cover data exploration during development and deployment options using Docker containers. + +Sergei has been actively developing with Clojure since 2018, building a diverse portfolio of projects across different scales and domains. His experience spans from working with early-stage startups building solutions to architecting and maintaining high-load, data-intensive applications that process substantial volumes of information. + +If you missed this event, you can watch the recording on our YouTube channel: + +https://www.youtube.com/@LondonClojurians + +(The recording will be uploaded a couple of days after the event.) + +Please, consider supporting the London Clojurians with a small donation: + +https://opencollective.com/london-clojurians/ + +Your contributions will enable the sustainability of the London Clojurians community and support our varied set of online and in-person events: + + + +ClojureBridge London: supports under-represented groups discover Clojure + +re:Clojure: our free to attend annual community conference + +monthly meetup events with speakers from all over the world + +subscription and admin costs such as domain name & StreamYard subscription + + + +Thank you to our sponsors: + + + +https://juxt.pro/ + +https://flexiana.com/ + +And many individual sponsors + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/491802625 + + diff --git a/content/events/2025/intro-to-fugato-by-david-nolen-900299105.adoc b/content/events/2025/intro-to-fugato-by-david-nolen-900299105.adoc new file mode 100644 index 00000000..92dea312 --- /dev/null +++ b/content/events/2025/intro-to-fugato-by-david-nolen-900299105.adoc @@ -0,0 +1,42 @@ += Intro to Fugato (by David Nolen) +2025-02-04 +:jbake-type: event +:jbake-edition: +:jbake-link: https://www.meetup.com/london-clojurians/events/305401951/ +:jbake-location: online +:jbake-start: 2025-02-04 +:jbake-end: 2025-02-04 + +== Intro to Fugato (by David Nolen) + +THIS IS AN ONLINE EVENT + +[Connection details will be shared 1h before the start time] + +The London Clojurians are happy to present: + +Title: Intro to Fugato + +Speaker: David Nolen + +Time: 2025-02-04 @ 18:30 (London time) + +Local time: click here for local time + +David Nolen (https://github.com/swannodette) will be presenting: + +"Intro to Fugato" + +A quick tour of Fugato, a tiny stateful property-based testing library for Clojure(Script). Fugato focuses on modeling the problem, but it's also easy to run the results against your programs. + +Lead developer of ClojureScript since 2012. + +If you missed this event, you can watch the recording on our YouTube channel: + +https://www.youtube.com/@LondonClojurians + +(The recording will be uploaded a couple of days after the event.) + +Please, consider supporting the London Clojurians with a small donation: + +https://opencollective.com/london-clojurians/ + +Your contributions will enable the sustainability of the London Clojurians community and support our varied set of online and in-person events: + + + +ClojureBridge London: supports under-represented groups discover Clojure + +re:Clojure: our free to attend annual community conference + +monthly meetup events with speakers from all over the world + +subscription and admin costs such as domain name & StreamYard subscription + + + +Thank you to our sponsors: + + + +https://juxt.pro/ + +https://flexiana.com/ + +And many individual sponsors + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/491802606 + + diff --git a/content/events/2025/los-angeles-clojure-meetup--1073257153.adoc b/content/events/2025/los-angeles-clojure-meetup--1073257153.adoc new file mode 100644 index 00000000..8d6dde22 --- /dev/null +++ b/content/events/2025/los-angeles-clojure-meetup--1073257153.adoc @@ -0,0 +1,18 @@ += Los Angeles Clojure Meetup +2025-04-10 +:jbake-type: event +:jbake-edition: +:jbake-link: https://www.meetup.com/los-angeles-clojure-users-group/events/307136020/ +:jbake-location: online +:jbake-start: 2025-04-10 +:jbake-end: 2025-04-10 + +== Los Angeles Clojure Meetup: Caveman part 4 + +This month, we will continue to collaboratively explore Caveman - a simple web framework for Clojure. + +As usual, we will start off the meetup discussing recent releases and developments of note in the Clojure ecosystem. + +The meeting will be recorded. + +We will continue with an online virtual meeting until further notice. + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/510444738 + + diff --git a/content/events/2025/los-angeles-clojure-meetup--1258595913.adoc b/content/events/2025/los-angeles-clojure-meetup--1258595913.adoc new file mode 100644 index 00000000..3712a32f --- /dev/null +++ b/content/events/2025/los-angeles-clojure-meetup--1258595913.adoc @@ -0,0 +1,18 @@ += Los Angeles Clojure Meetup +2025-03-13 +:jbake-type: event +:jbake-edition: +:jbake-link: https://www.meetup.com/los-angeles-clojure-users-group/events/306586998/ +:jbake-location: online +:jbake-start: 2025-03-13 +:jbake-end: 2025-03-13 + +== Los Angeles Clojure Meetup: Caveman part 3 + +This month, we will continue to collaboratively explore Caveman - a simple web framework for Clojure. + +As usual, we will start off the meetup discussing recent releases and developments of note in the Clojure ecosystem. + +The meeting will be recorded. + +We will continue with an online virtual meeting until further notice. + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/503953218 + + diff --git a/content/events/2025/los-angeles-clojure-meetup-2136104211.adoc b/content/events/2025/los-angeles-clojure-meetup-2136104211.adoc new file mode 100644 index 00000000..cb613358 --- /dev/null +++ b/content/events/2025/los-angeles-clojure-meetup-2136104211.adoc @@ -0,0 +1,18 @@ += Los Angeles Clojure Meetup +2025-02-13 +:jbake-type: event +:jbake-edition: +:jbake-link: https://www.meetup.com/los-angeles-clojure-users-group/events/306013749/ +:jbake-location: online +:jbake-start: 2025-02-13 +:jbake-end: 2025-02-13 + +== Los Angeles Clojure Meetup: Caveman part 2 + +This month, we will continue to collaboratively explore Caveman - a simple web framework for Clojure. + +As usual, we will start off the meetup discussing recent releases and developments of note in the Clojure ecosystem. + +The meeting will be recorded. + +We will continue with an online virtual meeting until further notice. + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/498032439 + + diff --git a/content/events/2025/los-angeles-clojure-meetup-caveman-1990010319.adoc b/content/events/2025/los-angeles-clojure-meetup-caveman-1990010319.adoc new file mode 100644 index 00000000..031fe7af --- /dev/null +++ b/content/events/2025/los-angeles-clojure-meetup-caveman-1990010319.adoc @@ -0,0 +1,18 @@ += Los Angeles Clojure Meetup: Caveman +2025-01-09 +:jbake-type: event +:jbake-edition: +:jbake-link: https://www.meetup.com/los-angeles-clojure-users-group/events/305450027/ +:jbake-location: online +:jbake-start: 2025-01-09 +:jbake-end: 2025-01-09 + +== Los Angeles Clojure Meetup: Caveman + +This month, we will collaboratively explore Caveman - a simple web framework for Clojure. + +As usual, we will start off the meetup discussing recent releases and developments of note in the Clojure ecosystem. + +The meeting will be recorded. + +We will continue with an online virtual meeting until further notice. + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/492027114 + + diff --git a/content/events/2025/los-angeles-clojure-meetup-powerblog-1803751996.adoc b/content/events/2025/los-angeles-clojure-meetup-powerblog-1803751996.adoc new file mode 100644 index 00000000..6fe1eed0 --- /dev/null +++ b/content/events/2025/los-angeles-clojure-meetup-powerblog-1803751996.adoc @@ -0,0 +1,18 @@ += Los Angeles Clojure Meetup: Powerblog +2025-06-12 +:jbake-type: event +:jbake-edition: +:jbake-link: https://www.meetup.com/los-angeles-clojure-users-group/events/308394515/ +:jbake-location: online +:jbake-start: 2025-06-12 +:jbake-end: 2025-06-12 + +== Los Angeles Clojure Meetup: Powerblog + +This month, we will collaboratively go through Powerblog - a step-by-step tutorial for building a static site with Stasis Powerpack. + +As usual, we will start off the meetup discussing recent releases and developments of note in the Clojure ecosystem. + +The meeting will be recorded. + +We will continue with an online virtual meeting until further notice. + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/523125342 + + diff --git a/content/events/2025/los-angeles-clojure-meetup-replicant--2036965366.adoc b/content/events/2025/los-angeles-clojure-meetup-replicant--2036965366.adoc new file mode 100644 index 00000000..7fb63b37 --- /dev/null +++ b/content/events/2025/los-angeles-clojure-meetup-replicant--2036965366.adoc @@ -0,0 +1,18 @@ += Los Angeles Clojure Meetup: Replicant +2025-05-15 +:jbake-type: event +:jbake-edition: +:jbake-link: https://www.meetup.com/los-angeles-clojure-users-group/events/307757963/ +:jbake-location: online +:jbake-start: 2025-05-15 +:jbake-end: 2025-05-15 + +== Los Angeles Clojure Meetup: Replicant + +This month, we will collaboratively explore Replicant - a data-driven rendering library for Clojure(Script). + +As usual, we will start off the meetup discussing recent releases and developments of note in the Clojure ecosystem. + +The meeting will be recorded. + +We will continue with an online virtual meeting until further notice. + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/517298958 + + diff --git a/content/events/2025/reclojure-2025--1374164278.adoc b/content/events/2025/reclojure-2025--1374164278.adoc new file mode 100644 index 00000000..2c324d41 --- /dev/null +++ b/content/events/2025/reclojure-2025--1374164278.adoc @@ -0,0 +1,15 @@ += reClojure 2025 +2025-05-26 +:jbake-type: event +:jbake-edition: +:jbake-link: https://www.reclojure.org/ +:jbake-location: online +:jbake-start: 2025-05-26 +:jbake-end: 2025-05-26 + +== reClojure 2025 + +reClojure is a community-driven conference for the Clojure programming language in the United Kingdom. It will take place at Bounce Farringdon in central London, on May 26th 2025. + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/497282952 + + diff --git a/content/events/2025/scicloj-ai-meetup-1-voice-fn-2048009922.adoc b/content/events/2025/scicloj-ai-meetup-1-voice-fn-2048009922.adoc new file mode 100644 index 00000000..5e1000ba --- /dev/null +++ b/content/events/2025/scicloj-ai-meetup-1-voice-fn-2048009922.adoc @@ -0,0 +1,45 @@ += Scicloj AI Meetup 1: voice-fn +2025-02-22 +:jbake-type: event +:jbake-edition: +:jbake-link: https://clojureverse.org/t/scicloj-ai-meetup-1-voice-fn-real-time-voice-enabled-ai-pipelines/11171 +:jbake-location: online +:jbake-start: 2025-02-22 +:jbake-end: 2025-02-22 + +== Scicloj AI Meetup 1: voice-fn - real-time voic... + +Scicloj AI Meetup 1: voice-fn - real-time voice-enabled AI pipelines + + + +The scicloj-ai-meetups group is a new developer community focused on AI models, their underlying principles, and practical applications. + +The group is organized by @stoica94 and @daslu, emerging from community discussions about the need for more open collaboration and experimentation in AI. It builds upon our previous initiatives like the scicloj-llm-meetups, but with an expanded scope that explores diverse types of AI models beyond just LLMs. + +While some content will be specific to the Clojure ecosystem, much of the material will be valuable and relevant to the broader AI and programming communities. + +The first meeting of this new series is scheduled for February 22, 2025. + +Agenda + + + +@stoica94 will present voice-fn, a Clojure library for building real-time voice-enabled AI pipelines. + +We will discuss our hopes and goals for this new group. + + + +Joining + + + +Please mark your participation using the Your rsvp button at the top of this page (requires Clojureverse login). + +Please join the Clojurians Zulip chat beforehand. + +You can also use the Add to Calendar button to add the event to your calendar. + + + +Chat + +We will use the #scicloj-ai-meetups channel of the Clojurians Zulip Chat (requires login). Please join the Zulip chat before attending our meetings. + +Length + +The official session will run for 90 minutes. + +Informal discussions may continue afterwards for those interested. + +Platform + + + +Video meeting: Launch Meeting - Zoom + +Text chat: We will use the #ai-meetups Zulip stream (requires Zulip login) + + + +Recording + +Portions of the meeting will be recorded and may be shared publicly. + +Some segments will remain unrecorded. + +joy21212×568 98.3 KB + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/496490152 + + diff --git a/content/events/2025/scicloj-ai-meetup-2-practice-session--247094625.adoc b/content/events/2025/scicloj-ai-meetup-2-practice-session--247094625.adoc new file mode 100644 index 00000000..4df531d9 --- /dev/null +++ b/content/events/2025/scicloj-ai-meetup-2-practice-session--247094625.adoc @@ -0,0 +1,40 @@ += Scicloj AI Meetup 2: practice session +2025-03-22 +:jbake-type: event +:jbake-edition: +:jbake-link: https://clojureverse.org/t/scicloj-ai-meetup-2-practice-session-build-a-rag/11252 +:jbake-location: online +:jbake-start: 2025-03-22 +:jbake-end: 2025-03-22 + +== Scicloj AI Meetup 2: practice session - build ... + +Scicloj AI Meetup 2: practice session - build a RAG + + + +In this meeting, the second meeting of the new scicloj-ai-meetups group, will be our first practice session. + +In practice sessions, we will dive into ideas and practices and implement them together. + +This time, we will practice building a RAG in Clojure + +We’d love to hear your comments if you have some ideas or advice for this meeting. + +Joining + + + +Please mark your participation using the Your rsvp button at the top of this page (requires Clojureverse login). + +Please join the Clojurians Zulip chat beforehand. + +You can also use the Add to Calendar button to add the event to your calendar. + + + +Chat + +We will use the #scicloj-ai-meetups channel of the Clojurians Zulip Chat (requires login). Please join the Zulip chat before attending our meetings. + +Length + +The official session will run for 90 minutes. + +Informal discussions may continue afterwards for those interested. + +Platform + + + +Video meeting: Launch Meeting - Zoom + +Text chat: We will use the #ai-meetups Zulip stream (requires Zulip login) + + + +Recording + +Portions of the meeting will be recorded and may be shared publicly. + +Some segments will remain unrecorded. + +joy21212×568 98.3 KB + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/505709126 + + diff --git a/content/events/2025/scicloj-ai-meetup-3--332451201.adoc b/content/events/2025/scicloj-ai-meetup-3--332451201.adoc new file mode 100644 index 00000000..335dc09d --- /dev/null +++ b/content/events/2025/scicloj-ai-meetup-3--332451201.adoc @@ -0,0 +1,59 @@ += Scicloj AI Meetup 3 +2025-04-05 +:jbake-type: event +:jbake-edition: +:jbake-link: https://clojureverse.org/t/scicloj-ai-meetup-3-llms-clojure-who-needs-frameworks/11270 +:jbake-location: online +:jbake-start: 2025-04-05 +:jbake-end: 2025-04-05 + +== Scicloj AI Meetup 3: LLMs + Clojure = Who need... + +Scicloj AI Meetup 3: LLMs + Clojure = Who needs frameworks? + + + +This will be third meeting of the new scicloj-ai-meetups group. + +It will be a mix of a talk and a practice session. + +Agenda + + + +@kapil’s talk: LLMs + Clojure = Who needs frameworks? + + + +see the abstract below + + + + + +a practice session following the talk + +discussion + + + +Joining + + + +Please mark your participation using the Your rsvp button at the top of this page (requires Clojureverse login). + +Please join the Clojurians Zulip chat beforehand. + +You can also use the Add to Calendar button to add the event to your calendar. + + + +Chat + +We will use the #scicloj-ai-meetups channel of the Clojurians Zulip Chat (requires login). Please join the Zulip chat before attending our meetings. + +Length + +The official session will run for 90 minutes. + +Informal discussions may continue afterwards for those interested. + +Platform + + + +Video meeting: Launch Meeting - Zoom + +Text chat: We will use the #ai-meetups Zulip stream (requires Zulip login) + + + +Abstract + +(by @kapil) + +Large Language Models have transformed coding workflows, excelling particularly at project scaffolding and boilerplate generation. + +While Clojure’s philosophy of composable libraries over frameworks grants exceptional power and flexibility. It also a steeper learning curve for new developers starting a project from scratch. Many of whom lament the absence of a Rails-like framework to ease their journey. + +This talk introduces a novel approach that preserves Clojure’s library-centric philosophy while improving developer experience with LLMs. + +Key points: + +llms.edn: A structured, Clojure-native approach to describing libraries and their common usage patterns, building on concepts from llms.txt but tailored specifically for Clojure’s ecosystem. + +LLM-powered composition workflow: A practical demonstration of how LLMs can intelligently combine libraries based on these declarations, generating cohesive starter projects that reflect Clojure’s best practices. + +Beyond frameworks: An exploration of whether LLMs fundamentally change the library-vs-framework debate by offering “framework-like” convenience without sacrificing composability. + +Let’s discuss the future of the llms.edn project and help shape a tool that could significantly enhance Clojure’s accessibility while honouring its core design philosophy. + +Recording + +Parts of the meeting will be recorded and may be shared publicly. + +Some parts will remain unrecorded. + + + +joy21212×568 98.3 KB + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/506763990 + + diff --git a/content/events/2025/scicloj-ai-meetup-4-weaving-llm-tools--844951043.adoc b/content/events/2025/scicloj-ai-meetup-4-weaving-llm-tools--844951043.adoc new file mode 100644 index 00000000..34b2864e --- /dev/null +++ b/content/events/2025/scicloj-ai-meetup-4-weaving-llm-tools--844951043.adoc @@ -0,0 +1,51 @@ += Scicloj AI Meetup 4 # Weaving LLM tools +2025-04-19 +:jbake-type: event +:jbake-edition: +:jbake-link: https://clojureverse.org/t/scicloj-ai-meetup-4-weaving-llm-tools-into-the-feedback-loop-why-mcp-sucks-how-to-use-it-anyway-modex/11279 +:jbake-location: online +:jbake-start: 2025-04-19 +:jbake-end: 2025-04-19 + +== Scicloj AI Meetup 4 # Weaving LLM tools into t... + +Scicloj AI Meetup 4 # Weaving LLM tools into the feedback loop # Why MCP Sucks & How To Use It Anyway (Modex) + + + +This will be the fourth meeting of the new scicloj-ai-meetups group co-organized by @stoica94 and @daslu. + +Agenda + + + +Baruch Berger - Weaving LLM tools into the feedback loop + +@theronic - Why MCP Sucks & How To Use It Anyway (Modex) + +discussion + + + +Joining + + + +Please mark your participation using the Your rsvp button at the top of this page (requires Clojureverse login). + +Please join the Clojurians Zulip chat beforehand. + +You can also use the Add to Calendar button to add the event to your calendar. + + + +Chat + +We will use the #scicloj-ai-meetups channel of the Clojurians Zulip Chat (requires login). Please join the Zulip chat before attending our meetings. + +Length + +The official session will run for 90 minutes. + +Informal discussions may continue afterwards for those interested. + +Platform + + + +Video meeting: Launch Meeting - Zoom + +Text chat: We will use the #ai-meetups Zulip stream (requires Zulip login) + + + +Abstracts + +Weaving LLM tools into the feedback loop + +(by Baruch Berger) + +After being too quick to dismiss the first GPT-3 demo as “just funny autocomplete” Baruch Berger is 2 years into a deep dive into finding out how to increase developer<->LLM interfacing throughput with these massively powerful tools. He will be showing how he expanded his toolkit with an interactive, tool-filled Clojure(Script) LLM canvas. Learning how to recognize the fast moving target of what kind of tasks are (still) too ambitious, Baruch takes the side of “underrated” in the debate on impact that these models will, and already have, on our world. Fellow hype-men are invited to marvel at the amount of agency these models already have. Skeptics are invited to challenge their views and have interesting discussion on how to best use or not use LLMs in their workflows. + +Why MCP Sucks & How To Use It Anyway (Modex) + +(by @theronic) + +We will discuss how to augment your AI with new MCP Tools, Resources & Prompts using Modex, a Model Context Protocol Library in Clojure. + +Recording + +Parts of the meeting will be recorded and may be shared publicly. + +Some parts will remain unrecorded. + + + +joy21212×568 98.3 KB + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/507441345 + + diff --git a/content/events/2025/scicloj-ai-meetup-5-agentic-1256345697.adoc b/content/events/2025/scicloj-ai-meetup-5-agentic-1256345697.adoc new file mode 100644 index 00000000..0a8db7b8 --- /dev/null +++ b/content/events/2025/scicloj-ai-meetup-5-agentic-1256345697.adoc @@ -0,0 +1,70 @@ += Scicloj AI Meetup 5 # Agentic +2025-05-03 +:jbake-type: event +:jbake-edition: +:jbake-link: https://clojureverse.org/t/scicloj-ai-meetup-5-agentic-data-science-structured-data-from-llms-mcp-sdk/11334 +:jbake-location: online +:jbake-start: 2025-05-03 +:jbake-end: 2025-05-03 + +== Scicloj AI Meetup 5 # Agentic Data-science # S... + +Scicloj AI Meetup 5 # Agentic Data-science # Structured Data from LLMs # MCP SDK + + + +This will be the fifth meeting of the new scicloj-ai-meetups group co-organized by @stoica94 and @daslu. + +Note, this is a slight rescheduling of an event post that was previously announced. + +Agenda + + + + + +@pragyansden - Reliable Extraction of Structured Data from LLM Responses + +JSON formatting in LLM APIs increases response time and prevents streaming. + +I’ll demonstrate how Instaparse helped us extract structured data elements from LLM responses as they arrive. It enabled us to stream UI operations that empowers agentic workflow for our No-Code platform. + +We will walk through some practical techniques to parse streaming LLM outputs efficiently while maintaining structured data integrity. + +(See also Pragyan’s recent blog post, Taming LLM Responses with Instaparse.) + + + + + +@siavash_mohammady - Agentic-Driven Data-science + +Data-science tasks like data preparation takes time, In this lecture we are reviewing how could we increase productivity of Clojure data-scientist through using of LLM Agent. + + + + + +@vedang - Writing MCP servers in Clojure, for fun and profit + + + +What is MCP, if you’ve been living under a rock + +Tools + +Prompts + +Resources + +Roots + +Sampling + +Interesting future directions in the Protocol, what I like / don’t like + +Future direction, ideas, contributing, Q&A + +(see GitHub - unravel-team/mcp-clojure-sdk: A Clojure SDK to create MCP servers (and eventually clients)) + + + + + + + +Discussion + + + + + +Joining + + + +Please mark your participation using the Your rsvp button at the top of this page (requires Clojureverse login). + +Please join the Clojurians Zulip chat beforehand. + +You can also use the Add to Calendar button to add the event to your calendar. + + + +Chat + +We will use the #scicloj-ai-meetups channel of the Clojurians Zulip Chat (requires login). Please join the Zulip chat before attending our meetings. + +Length + +The official session will run for 120 minutes. + +Informal discussions may continue afterwards for those interested. + +Platform + + + +Video meeting: Launch Meeting - Zoom + +Text chat: We will use the #ai-meetups Zulip stream (requires Zulip login) + + + +Recording + +Parts of the meeting will be recorded and may be shared publicly. + +Some parts will remain unrecorded. + + + +an LLM pretending to find Clojure joyful1212×568 98.3 KB + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/513108718 + + diff --git a/content/events/2025/scicloj-ai-meetup-5-agentic-driven-893210042.adoc b/content/events/2025/scicloj-ai-meetup-5-agentic-driven-893210042.adoc new file mode 100644 index 00000000..7c4c46d0 --- /dev/null +++ b/content/events/2025/scicloj-ai-meetup-5-agentic-driven-893210042.adoc @@ -0,0 +1,56 @@ += Scicloj AI Meetup 5 # Agentic-Driven +2025-05-03 +:jbake-type: event +:jbake-edition: +:jbake-link: https://clojureverse.org/t/scicloj-ai-meetup-5-agentic-driven-data-science-reliable-extraction-of-structured-data-from-llm-responses/11311 +:jbake-location: online +:jbake-start: 2025-05-03 +:jbake-end: 2025-05-03 + +== Scicloj AI Meetup 5 # Agentic-Driven Data-scie... + +Scicloj AI Meetup 5 # Agentic-Driven Data-science # Reliable Extraction of Structured Data from LLM Responses + + + +Please rsvp + +This will be the fifth meeting of the new scicloj-ai-meetups group co-organized by @stoica94 and @daslu. + +Agenda + + + + + +@pragyansden - Reliable Extraction of Structured Data from LLM Responses + +JSON formatting in LLM APIs increases response time and prevents streaming. + +I’ll demonstrate how Instaparse helped us extract structured data elements from LLM responses as they arrive. It enabled us to stream UI operations that empowers agentic workflow for our No-Code platform. + +We will walk through some practical techniques to parse streaming LLM outputs efficiently while maintaining structured data integrity. + +(See also Pragyan’s recent blog post, Taming LLM Responses with Instaparse.) + + + + + +@siavash_mohammady - Agentic-Driven Data-science + +Data-science tasks like data preparation takes time, In this lecture we are reviewing how could we increase productivity of Clojure data-scientist through using of LLM Agent. + + + + + +Discussion + + + + + +Joining + + + +Please mark your participation using the Your rsvp button at the top of this page (requires Clojureverse login). + +Please join the Clojurians Zulip chat beforehand. + +You can also use the Add to Calendar button to add the event to your calendar. + + + +Chat + +We will use the #scicloj-ai-meetups channel of the Clojurians Zulip Chat (requires login). Please join the Zulip chat before attending our meetings. + +Length + +The official session will run for 90 minutes. + +Informal discussions may continue afterwards for those interested. + +Platform + + + +Video meeting: Launch Meeting - Zoom + +Text chat: We will use the #ai-meetups Zulip stream (requires Zulip login) + + + +Recording + +Parts of the meeting will be recorded and may be shared publicly. + +Some parts will remain unrecorded. + + + +an LLM pretending to find Clojure joyful1212×568 98.3 KB + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/510455179 + + diff --git a/content/events/2025/scicloj-ai-meetup-6--368136646.adoc b/content/events/2025/scicloj-ai-meetup-6--368136646.adoc new file mode 100644 index 00000000..c390553f --- /dev/null +++ b/content/events/2025/scicloj-ai-meetup-6--368136646.adoc @@ -0,0 +1,62 @@ += Scicloj AI Meetup 6 +2025-05-11 +:jbake-type: event +:jbake-edition: +:jbake-link: https://clojureverse.org/t/scicloj-ai-meetup-6-llms-clojure-who-needs-frameworks-part-2/11366 +:jbake-location: online +:jbake-start: 2025-05-11 +:jbake-end: 2025-05-11 + +== Scicloj AI Meetup 6: LLMs + Clojure = Who need... + +Scicloj AI Meetup 6: LLMs + Clojure = Who needs frameworks? - Part 2 + + + +Please rsvp + +This will be the sixth meeting of the new scicloj-ai-meetups group. + +It will be a mix of a talk and a discussion. + +We’ll continue the discussion of Meeting #3. Please check the recording video, that was shared internally in the Zulip chat: #scicloj-ai-meetups > meeting 3 @ + +Agenda + + + +@kapil’s talk: LLMs + Clojure = Who needs frameworks? - Part 2 + + + +see the abstract below + + + + + +TBD + +discussion + + + +Joining + + + +Please mark your participation using the Your rsvp button at the top of this page (requires Clojureverse login). + +Please join the Clojurians Zulip chat beforehand. + +You can also use the Add to Calendar button to add the event to your calendar. + + + +Chat + +We will use the #scicloj-ai-meetups channel of the Clojurians Zulip Chat (requires login). Please join the Zulip chat before attending our meetings. + +Length + +The official session will run for 90 minutes. + +Informal discussions may continue afterwards for those interested. + +Platform + + + +Video meeting: Launch Meeting - Zoom - please do not share this link anywhere + +Text chat: We will use the #ai-meetups Zulip stream (requires Zulip login) + + + +Abstract + +(by @kapil) + +We’ll continue the discussion of Meeting #3. Please check the recording video, that was shared internally in the Zulip chat: #scicloj-ai-meetups > meeting 3 @ + +tl;dw of the video, I had proposed an idea of a common format for Clojure libraries. This will help LLMs understand Clojure ecosystem. It will solve a common friction of newcomers newcomers not able to start a new project. We also discussed the implications and challenges of this approach. + +In this session I am going to present some demos. Which will help us understand the possibilities of this approach and get more ideas. + +Key points: + + + +We will look at current draft of LLMs.edn format. + +A demo of how LLMs.edn with LLMs will be used to create new Clojure projects for specific use cases. ex. A web app + +Architecture and approach discussion on how to create a database of metadata from LLMs.edn and other sources. This will help make tool used in #2 more reliable and useful. + + + +Recording + +Parts of the meeting will be recorded and may or may not be shared publicly. + +Some parts will remain unrecorded. + + + +joy21212×568 98.3 KB + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/515508555 + + diff --git a/content/events/2025/scicloj-ai-meetup-7--899928192.adoc b/content/events/2025/scicloj-ai-meetup-7--899928192.adoc new file mode 100644 index 00000000..7fcf0b63 --- /dev/null +++ b/content/events/2025/scicloj-ai-meetup-7--899928192.adoc @@ -0,0 +1,51 @@ += Scicloj AI Meetup 7 +2025-05-24 +:jbake-type: event +:jbake-edition: +:jbake-link: https://clojureverse.org/t/scicloj-ai-meetup-7-can-we-turn-copilot-into-an-interactive-programmer/11384 +:jbake-location: online +:jbake-start: 2025-05-24 +:jbake-end: 2025-05-24 + +== Scicloj AI Meetup 7: Can we turn CoPilot into ... + +Scicloj AI Meetup 7: Can we turn CoPilot into an Interactive Programmer? + + + +Please rsvp + +This will be the seventh meeting of the scicloj-ai-meetups group. + +It will be a mix of a talk and a practice session. + +Agenda + + + + + +@pez: Can we turn CoPilot into an Interactive Programmer? + +Introducing Calva Backseat Driver, REPL Tools for AI Agents + + + + + +A practice session: + +We will explore the integration of an LLM in a data analysis workflow. + + + + + +Joining + + + +Please mark your participation using the Your rsvp button at the top of this page (requires Clojureverse login). + +Please join the Clojurians Zulip chat beforehand. + +You can also use the Add to Calendar button to add the event to your calendar. + + + +Chat + +We will use the #scicloj-ai-meetups channel of the Clojurians Zulip Chat (requires login). Please join the Zulip chat before attending our meetings. + +Length + +The official session will run for 90 minutes. + +Informal discussions may continue afterwards for those interested. + +Platform + + + +Video meeting: Launch Meeting - Zoom - please do not share this link anywhere + +Text chat: We will use the #ai-meetups Zulip stream (requires Zulip login) + + + +Recording + +Parts of the meeting will be recorded and may or may not be shared publicly. + +Some parts will remain unrecorded. + + + +joy21212×568 98.3 KB + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/516532528 + + diff --git a/content/events/2025/scicloj-ai-meetup-8-clojure-mcp--402257373.adoc b/content/events/2025/scicloj-ai-meetup-8-clojure-mcp--402257373.adoc new file mode 100644 index 00000000..62e16d4b --- /dev/null +++ b/content/events/2025/scicloj-ai-meetup-8-clojure-mcp--402257373.adoc @@ -0,0 +1,43 @@ += Scicloj AI Meetup 8: Clojure-MCP +2025-06-07 +:jbake-type: event +:jbake-edition: +:jbake-link: https://clojureverse.org/t/scicloj-ai-meetup-8-clojure-mcp/11438 +:jbake-location: online +:jbake-start: 2025-06-07 +:jbake-end: 2025-06-07 + +== Scicloj AI Meetup 8: Clojure-MCP + +Please rsvp + +This will be the eighth meeting of the scicloj-ai-meetups group. + +It will be a mix of a talk and a practice session. + +Agenda + + + +@bhauman: Clojure MCP - REPL-Driven Development with AI Assistance + +A practice session (topic TBD) + + + +Joining + + + +Please mark your participation using the Your rsvp button at the top of this page (requires Clojureverse login). + +Please join the Clojurians Zulip chat beforehand. + +You can also use the Add to Calendar button to add the event to your calendar. + + + +Chat + +We will use the #scicloj-ai-meetups channel of the Clojurians Zulip Chat (requires login). Please join the Zulip chat before attending our meetings. + +Length + +The official session will run for 90 minutes. + +Informal discussions may continue afterwards for those interested. + +Platform + + + +Video meeting: Launch Meeting - Zoom - please do not share this link anywhere + +Text chat: We will use the #ai-meetups Zulip stream (requires Zulip login) + + + +Recording + +Parts of the meeting will be recorded and may or may not be shared publicly. + +Some parts will remain unrecorded. + + + +joy21212×568 98.3 KB + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/520936248 + + diff --git a/content/events/2025/scinoj-light-1-prep-workshop-2039488280.adoc b/content/events/2025/scinoj-light-1-prep-workshop-2039488280.adoc new file mode 100644 index 00000000..d83b3ff8 --- /dev/null +++ b/content/events/2025/scinoj-light-1-prep-workshop-2039488280.adoc @@ -0,0 +1,19 @@ += SciNoj Light #1 prep workshop +2025-05-10 +:jbake-type: event +:jbake-edition: +:jbake-link: https://clojureverse.org/t/scinoj-light-1-prep-workshop-data-analysis-in-clojure-group-a/11369 +:jbake-location: online +:jbake-start: 2025-05-10 +:jbake-end: 2025-05-10 + +== SciNoj Light #1 prep workshop: Data analysis i... + +SciNoj Light #1 prep workshop: Data analysis in Clojure - group A + + + +See the initial post for background. + +More details are coming soon – in the comments. + +image128×128 3.91 KB + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/515529279 + + diff --git a/content/events/2025/scinoj-light-1-prep-workshop-437077814.adoc b/content/events/2025/scinoj-light-1-prep-workshop-437077814.adoc new file mode 100644 index 00000000..73cb1f47 --- /dev/null +++ b/content/events/2025/scinoj-light-1-prep-workshop-437077814.adoc @@ -0,0 +1,19 @@ += SciNoj Light #1 prep workshop +2025-05-10 +:jbake-type: event +:jbake-edition: +:jbake-link: https://clojureverse.org/t/scinoj-light-1-prep-workshop-data-analysis-in-clojure-group-b/11370 +:jbake-location: online +:jbake-start: 2025-05-10 +:jbake-end: 2025-05-10 + +== SciNoj Light #1 prep workshop: Data analysis i... + +SciNoj Light #1 prep workshop: Data analysis in Clojure - group B + + + +See the initial post for background. + +More details are coming soon – in the comments. + +image128×128 3.91 KB + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/515529349 + + diff --git a/content/events/2025/scinoj-light-1st-conference-356982397.adoc b/content/events/2025/scinoj-light-1st-conference-356982397.adoc new file mode 100644 index 00000000..55252fab --- /dev/null +++ b/content/events/2025/scinoj-light-1st-conference-356982397.adoc @@ -0,0 +1,17 @@ += SciNoj Light 1st conference +2025-05-16 +:jbake-type: event +:jbake-edition: +:jbake-link: https://clojureverse.org/t/scinoj-light-1st-conference/11155 +:jbake-location: online +:jbake-start: 2025-05-16 +:jbake-end: 2025-05-17 + +== SciNoj Light 1st conference + +In recent months, the Clojure toolkit for data and science has been maturing. Thus, in 2025, Scicloj can finally shift more resources into making it accessible and well-known. + +SciNoj Light is one of the first steps in that direction. + +SciNoj Light is an online conference where Clojurians will share their short-term data analysis. + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/494697398 + + diff --git a/content/events/2025/third-func-prog-sweden-2025-online-2001750563.adoc b/content/events/2025/third-func-prog-sweden-2025-online-2001750563.adoc new file mode 100644 index 00000000..4c095def --- /dev/null +++ b/content/events/2025/third-func-prog-sweden-2025-online-2001750563.adoc @@ -0,0 +1,54 @@ += Third Func Prog Sweden 2025 Online +2025-04-16 +:jbake-type: event +:jbake-edition: +:jbake-link: https://www.meetup.com/func-prog-sweden/events/305841716/?eventOrigin=group_upcoming_events +:jbake-location: online +:jbake-start: 2025-04-16 +:jbake-end: 2025-04-16 + +== Third Func Prog Sweden 2025 Online + +Third Func Prog Sweden 2025 – Online + + + +Welcome to the third Func Prog Sweden MeetUp 2025 – Online + +This MeetUp will be streamed live online on the Func Prog Sweden YouTube channel: https://www.youtube.com/c/FuncProgSweden + +The program starts at 18:00 / 6 PM: + + + +Intro by Magnus Sedlacek + +Boost your command-line applications with potions! by Eric Torreborre + +Creating questionnaires with dependent types by Elisabeth Stenholm + +Post-show chat + + + +Boost your command-line applications with potions! + +How hard can it be to parse command-line arguments for an application? + +My initial, and foolish, answer was “not too hard”. Thanks to this misplaced over-confidence this talk presents potions, + +a command-line arguments parsing library written in Unison (https://unison-lang.org). + +We will start with a tour of the library features: various type of options, support for environment variables, styled help, and more. + +We will then dive into the implementation of the library, where the main workhorse is (drum roll) Unison's effect system called "abilities". + +We’ll see what can be checked at compile-time, what can’t, how abilities are layered to provide different DSLs (domain-specific languages), + +how they can be used to enclose state for mutually recursive functions, etc… + +Finally, I will talk about some of the issues that slowed me down during the development, and why I feel that a full-fledge + +Unison IDE will be indispensable for any medium to large scale project. + +Eric Torreborre + +I am a Rust/Elixir developer working at Ockam where we enable private systems to communicate without exposing their network to the Internet (ask me more if you're interested!). I am also a functional programmer at heart, having professional experience with both Scala and Haskell which I enjoyed very much! + +Blog: https://etorreborre.blog + +X.com: https://x.com/etorreborre + +Bluesky: https://bsky.app/profile/etorreborre.blog + +Creating questionnaires with dependent types - Let the compiler do the work for you + +Questionnaires appear in many different contexts. But for those who have tried to implement them, they can be surprisingly tricky to write. In this talk I will explain how questionnaires are intrinsically dependently typed, which is why it can be challenging to express them correctly in programming languages without dependent types. I will also show an example implementation in the dependently typed functional programming language Lean, and explain how using dependent types gives us more validation compile time, minimizing the need for runtime validation. + +Elisabeth Stenholm + +Elisabeth is 32 years old, born in Uppsala and raised in Stockholm. She has a PhD in dependent type theory from the University of Bergen, and is currently working as a fullstack developer at Frende Forsikring — a Norwegian insurance company based in Bergen. In her workday, Elisabeth writes primarily in the functional languages F# and Elm. She is passionate about type theory and functional programming, and enjoys sharing her knowledge on these topics with others. + +LinkedIn: https://www.linkedin.com/in/elisabethstenholm/ + +Post-show chat + +Once the live stream is over we will do a post show chat on the FPS Discord Server, where you can join and ask questions and meet more community members (this will no be recorded). + +Invite for the FPS Discord Server: https://discord.gg/rMT6xRPwgZ + +Video sponsor – Ada Beat + +https://adabeat.com + +Merch + +If you want to spread functional programming and support the channel, buy something from the shop: + +https://funcprogsweden.myspreadshop.net/ + +#funcprogsweden + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/507078629 + + diff --git a/content/events/2025/visual-tools-meeting-27--1302946647.adoc b/content/events/2025/visual-tools-meeting-27--1302946647.adoc new file mode 100644 index 00000000..eaa56acc --- /dev/null +++ b/content/events/2025/visual-tools-meeting-27--1302946647.adoc @@ -0,0 +1,31 @@ += Visual-tools meeting 27 +2025-01-03 +:jbake-type: event +:jbake-edition: +:jbake-link: https://clojureverse.org/t/visual-tools-meeting-27-workflow-demos-1/11091 +:jbake-location: online +:jbake-start: 2025-01-03 +:jbake-end: 2025-01-03 + +== Visual-tools meeting 27: Workflow Demos 1 + +The visual tools group will have its 27th meeting on Jan 3rd 2025. + +This meeting is part of a short Workflow Demos series. A few of our friends will demonstrate their workflows for others to learn from. + +Agenda + + + +@adham - Emacs with CIDER and other useful packages + +Jarret Atkinson - VSCode with Calva and a few additional ideas + +@mauricioszabo - Pulsar + + + +Joining + +Please write to @daslu or comment below if you wish to participate. You can also use the Add to Calendar to add the event to your calendar. + +Length + +The official part will be 90 minutes long. + +Sometimes, some of us like to stay longer and chat. + +Video Call + +Zoom link: Launch Meeting - Zoom + +Recording + +Possibly, we will share a recording of parts of the meeting. This has not been decided yet. + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/490223137 + + diff --git a/content/events/2025/visual-tools-meeting-28--666737481.adoc b/content/events/2025/visual-tools-meeting-28--666737481.adoc new file mode 100644 index 00000000..a81eb224 --- /dev/null +++ b/content/events/2025/visual-tools-meeting-28--666737481.adoc @@ -0,0 +1,31 @@ += Visual-tools meeting 28 +2025-01-07 +:jbake-type: event +:jbake-edition: +:jbake-link: https://clojureverse.org/t/visual-tools-meeting-28-workflow-demos-2/11092 +:jbake-location: online +:jbake-start: 2025-01-07 +:jbake-end: 2025-01-07 + +== Visual-tools meeting 28: Workflow Demos 2 + +The visual tools group will have its 28th meeting on Jan 7th 2025. + +This meeting is part of a short Workflow Demos series. A few of our friends will demonstrate their workflows for others to learn from. + +Agenda + + + +Mykhaylo Beliansky - a Portal / Snitch / clj-reload combo + +@onetom - a few Cursive tricks + +@practicalli - Neovim with Conjure, Portal for data inspection, and Parinfer for structural editing + + + +Joining + +Please write to @daslu or comment below if you wish to participate. You can also use the Add to Calendar to add the event to your calendar. + +Length + +The official part will be 90 minutes long. + +Sometimes, some of us like to stay longer and chat. + +Video Call + +Zoom link: Launch Meeting - Zoom + +Recording + +Possibly, we will share a recording of parts of the meeting. This has not been decided yet. + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/490223208 + + diff --git a/content/events/2025/visual-tools-meeting-29--91718087.adoc b/content/events/2025/visual-tools-meeting-29--91718087.adoc new file mode 100644 index 00000000..46f88e84 --- /dev/null +++ b/content/events/2025/visual-tools-meeting-29--91718087.adoc @@ -0,0 +1,31 @@ += Visual-tools meeting 29 +2025-01-15 +:jbake-type: event +:jbake-edition: +:jbake-link: https://clojureverse.org/t/visual-tools-meeting-29-workflow-demos-3/11099 +:jbake-location: online +:jbake-start: 2025-01-15 +:jbake-end: 2025-01-15 + +== Visual-tools meeting 29: Workflow Demos 3 + +The visual tools group will have its 29th meeting on Jan 15th 2025. + +This meeting is part of a short Workflow Demos series. A few of our friends will demonstrate their workflows for others to learn from. + +Agenda + + + +@jpmonettas - FlowStorm + +@daslu - Clay and Kindly + +_______ - TBD + + + +Joining + +Please write to @daslu or comment below if you wish to participate. You can also use the Add to Calendar to add the event to your calendar. + +Length + +The official part will be 90 minutes long. + +Sometimes, some of us like to stay longer and chat. + +Video Call + +Zoom link: Launch Meeting - Zoom + +Recording + +Possibly, we will share a recording of parts of the meeting. This has not been decided yet. + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/490715541 + + diff --git a/content/events/2025/visual-tools-meeting-30--1778717537.adoc b/content/events/2025/visual-tools-meeting-30--1778717537.adoc new file mode 100644 index 00000000..86df783d --- /dev/null +++ b/content/events/2025/visual-tools-meeting-30--1778717537.adoc @@ -0,0 +1,32 @@ += Visual-tools meeting 30 +2025-01-23 +:jbake-type: event +:jbake-edition: +:jbake-link: https://clojureverse.org/t/visual-tools-meeting-30-workflow-demos-4/11134 +:jbake-location: online +:jbake-start: 2025-01-23 +:jbake-end: 2025-01-23 + +== Visual-tools meeting 30: Workflow Demos 4 + +The visual tools group will have its 30th meeting on Jan 23th 2025. + +This meeting is part of a short Workflow Demos series. A few of our friends will demonstrate their workflows for others to learn from. + +Agenda + +(updating gradually) + + + +@stoica94 - using LLMs in Emacs for Clojure #1 + +@adham - using LLMs in Emacs for Clojure #2 + +TBD + + + +Joining + +Please write to @daslu or comment below if you wish to participate. You can also use the Add to Calendar to add the event to your calendar. + +Length + +The official part will be 90 minutes long. + +Sometimes, some of us like to stay longer and chat. + +Video Call + +Zoom link: Launch Meeting - Zoom + +Recording + +Possibly, we will share a recording of parts of the meeting. This has not been decided yet.f + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/492836393 + + diff --git a/content/events/2025/visual-tools-meeting-31--709032919.adoc b/content/events/2025/visual-tools-meeting-31--709032919.adoc new file mode 100644 index 00000000..b31b5c67 --- /dev/null +++ b/content/events/2025/visual-tools-meeting-31--709032919.adoc @@ -0,0 +1,38 @@ += Visual-tools meeting 31 +2025-03-24 +:jbake-type: event +:jbake-edition: +:jbake-link: https://clojureverse.org/t/visual-tools-meeting-31-workflow-demos-5/11248 +:jbake-location: online +:jbake-start: 2025-03-24 +:jbake-end: 2025-03-24 + +== Visual-tools meeting 31: Workflow Demos 5 + +The visual tools group will have its 31st meeting on Mar 24th 2025. + +This meeting is part of a short Workflow Demos series. It will focus on Clay, a tool for REPL-friendly data visualization and notebooking + +Agenda + +(updating gradually) + + + +@daslu - Clay overview: + + + +setup + +beginner UX + +interactive data exploration + +documentation and publishing + +generated testing + + + + + + + +Joining + +Please RVSP at the top of this page (requires Clojureverse login). You can also use the Add to Calendar to add the event to your calendar. + +Length + +The official part will be 90 minutes long. + +Sometimes, some of us like to stay longer and chat. + +Video Call + +Zoom link: Launch Meeting - Zoom + +Recording + +Possibly, we will share a recording of parts of the meeting. This has not been decided yet.f + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/505133668 + + diff --git a/content/events/2025/visual-tools-meeting-32--112508592.adoc b/content/events/2025/visual-tools-meeting-32--112508592.adoc new file mode 100644 index 00000000..7bd5e3ca --- /dev/null +++ b/content/events/2025/visual-tools-meeting-32--112508592.adoc @@ -0,0 +1,68 @@ += Visual-tools meeting 32 +2025-03-26 +:jbake-type: event +:jbake-edition: +:jbake-link: https://clojureverse.org/t/visual-tools-meeting-32-workflow-demos-6/11251 +:jbake-location: online +:jbake-start: 2025-03-26 +:jbake-end: 2025-03-26 + +== Visual-tools meeting 32: Workflow Demos 6 + +The visual tools group will have its 32nd meeting on Mar 26th, 2025. This meeting is part of the Workflow Demos series. + +Agenda + +(gradually updating) + +(see detailed abstracts below) + + + +@adi - Keeping it Old-Tool: REPL habits of a grug-brained Clojurist + +@kapil - Vibe coding with Clojurescript and Clojure + +TBD + + + +Joining + +Please RVSP at the top of this page (requires Clojureverse login). You can also use the Add to Calendar to add the event to your calendar. + +Length + +The official part will be 90 minutes long. + +Sometimes, some of us like to stay longer and chat. + +Video Call + +Zoom link: Launch Meeting - Zoom + +Recording + +Possibly, we will share a recording of parts of the meeting + +Abstracts + +Keeping it Old-Tool: REPL habits of a grug-brained Clojurist + +by @adi + +Let me just be up-front and say, I don’t like dependencies. I like to do as much as possible with out-of-the-box (OOTB) features, of the runtime, standard library, and my code editor. Somehow LLM use has not grown on me. In fact, I often don’t even fire up a REPL for run-of-the-mill edits, because LSP and clj-kondo are so great, and my brain has been exposed to Clojure long enough that it has a sense about what “looks funny”. Then, I fire up the REPL. + +So I’d like to show a few tricks I use that are not rocket science, but collectively help me stay In The Zone, by using OOTB language machinery, by not needing to switch visual context, and by keeping muscle memory consistent across IDEs and terminals. + +I do appreciate and enjoy external visual tools, but having just enough visual cueing right inside my IDE is a net-win, even if the external tool is remarkably better. And I use all the usual built-in suspects, sync-deps, pretty-print-in-other-buffer, tap>, clojure.reflect, and other tricks available in the standard library and Java runtime itself. Most of these are not tied to Emacs, which is my daily-driver IDE. + +Another method that I like, is to find some abstraction and/or some organising principle that helps me avoid writing code in the first place. I’m tinkering with an idea here, governed by the same principle of using Clojure(Script)'s OOTB features only… + + + + + + github.com + + + + + + + + + + + + + + GitHub - adityaathalye/usermanager-first-principles: A "from first principles" variant of... + + + + A "from first principles" variant of "usermanager-example", the tutorial Clojure web application by Sean Corfield. + + + + + + + + + + + + + + + + + + + + + + + + + +Vibe coding with Clojurescript and Clojure + +by @kapil + +I’ll be sharing my AI coding workflows that I have used to build two games. The workflows have evolved over the last 2 years. + +These patterns are pretty useful in a REPL driven frontend development with complex state management. + +The talk may include some experimental stuff at the end. It involves giving REPL access to an AI. + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/505525304 + + diff --git a/content/events/2025/visual-tools-meeting-33--1211517793.adoc b/content/events/2025/visual-tools-meeting-33--1211517793.adoc new file mode 100644 index 00000000..a6a4979e --- /dev/null +++ b/content/events/2025/visual-tools-meeting-33--1211517793.adoc @@ -0,0 +1,31 @@ += Visual-tools meeting 33 +2025-03-27 +:jbake-type: event +:jbake-edition: +:jbake-link: https://clojureverse.org/t/visual-tools-meeting-33-workflow-demos-7-clojure-in-sublime-text/11255 +:jbake-location: online +:jbake-start: 2025-03-27 +:jbake-end: 2025-03-27 + +== Visual-tools meeting 33: Workflow Demos 7 - Cl... + +Visual-tools meeting 33: Workflow Demos 7 - Clojure in Sublime Text + + + +The visual tools group will have its 33rd meeting on Mar 27th, 2025. This meeting is part of the Workflow Demos series. + +Agenda + + + +@tonsky: a Sublime Text workflow for Clojure: Clojure Sublimed, Socket REPL, custom IDE theme, and more + +@daslu (brief): using Clay from Sublime + + + +Joining + +Please RVSP at the top of this page (requires Clojureverse login). You can also use the Add to Calendar to add the event to your calendar. + +Length + +The official part will be 90 minutes long. + +Sometimes, some of us like to stay longer and chat. + +Video Call + +Zoom link: Launch Meeting - Zoom + +Recording + +Possibly, we will share a recording of parts of the meeting + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/505849770 + + diff --git a/content/events/2025/visual-tools-meeting-34-183945112.adoc b/content/events/2025/visual-tools-meeting-34-183945112.adoc new file mode 100644 index 00000000..739e3832 --- /dev/null +++ b/content/events/2025/visual-tools-meeting-34-183945112.adoc @@ -0,0 +1,36 @@ += Visual-tools meeting 34 +2025-05-18 +:jbake-type: event +:jbake-edition: +:jbake-link: https://clojureverse.org/t/visual-tools-meeting-34-clojure-in-wasm-docker-nrepl-el/11385 +:jbake-location: online +:jbake-start: 2025-05-18 +:jbake-end: 2025-05-18 + +== Visual-tools meeting 34: Clojure in WASM, dock... + +Visual-tools meeting 34: Clojure in WASM, docker-nrepl.el + + + +(edit: updated agenda, 2024-05-13) + +(note the meeting is slightly longer than usual) + +Pleae rsvp + +The visual tools group will have its 34th meeting on May 18th, 2025. + +Agenda + + + +Clojure in WebAssembly - a practice session and a discussion with @roman01la and @Shagun_Agrawal following their blog posts (Running Clojure in WASM, Compiling Clojure to WebAssembly) + +CheerpJ - a brief demo by @jasalt + +docker-nrepl.el - a short talk by Andrey Subbotin about Docker, nREPL, and the new package to connect them in Emacs + +Alex Coyle - nrepl-ws-server, nrepl-ws-client, and a a browser UI for Clay for beginner-friendly visual exploration + + + +Joining + +Please RVSP at the top of this page (requires Clojureverse login). You can also use the Add to Calendar to add the event to your calendar. + +Length + +The official part will be 120 minutes long. + +Sometimes, some of us like to stay longer and chat. + +Video Call + +Zoom link: Launch Meeting - Zoom + +Recording + +Possibly, we will share a recording of parts of the meeting + + + +Zulip: https://clojurians.zulipchat.com/#narrow/stream/262224-events/near/517832707 + + diff --git a/content/guides/async_walkthrough.adoc b/content/guides/async_walkthrough.adoc deleted file mode 100644 index 3b0cdf7f..00000000 --- a/content/guides/async_walkthrough.adoc +++ /dev/null @@ -1,192 +0,0 @@ -= core.async Walkthrough -Alex Miller -2022-11-04 -:type: guides -:toc: macro -:icons: font - -ifdef::env-github,env-browser[:outfilesuffix: .adoc] - -toc::[] - -== Getting started - -The https://github.com/clojure/core.async[core.async] library supports asynchronous programming through the use of channels. - -To use core.async, declare a dependency on Clojure 1.10.0 or higher and the latest core.async library: - -[source, clojure] ----- -{:deps - {org.clojure/clojure {:mvn/version "1.11.3"} - org.clojure/core.async {:mvn/version "1.6.673"}}} ----- - -To start working with core.async, require the `clojure.core.async` namespace at the REPL: - -[source,clojure] ----- -(require '[clojure.core.async :as a :refer [!! !]]) ----- - -Or include it in your namespace: - -[source,clojure] ----- -(ns my.ns - (:require [clojure.core.async :as a :refer [!! !]])) ----- - -== Channels - -Values are conveyed on queue-like channels. By default channels are unbuffered (0-length) - they require producer and consumer to rendezvous for the transfer of a value through the channel. - -Use `chan` to make an unbuffered channel: - -[source,clojure] ----- -(a/chan) ----- - -Pass a number to create a channel with a fixed buffer size: - -[source,clojure] ----- -(a/chan 10) ----- - -`close!` a channel to stop accepting puts. Remaining values are still available to take. Drained channels return nil on take. Nils may not be sent over a channel explicitly! - -[source,clojure] ----- -(let [c (a/chan)] - (a/close! c)) ----- - -Channels can also use custom buffers that have different policies for the "full" case. Two useful examples are provided in the API. - -[source,clojure] ----- -;; Use `dropping-buffer` to drop newest values when the buffer is full: -(a/chan (a/dropping-buffer 10)) - -;; Use `sliding-buffer` to drop oldest values when the buffer is full: -(a/chan (a/sliding-buffer 10)) ----- - -== Threads - -In ordinary threads, we use `>!!` (blocking put) and `!! c "hello") - (assert (= "hello" (!! c "hello")) - (assert (= "hello" (!` (put) and `! c "hello")) - (assert (= "hello" (!! c1 "hi") - (>!! c2 "there")) ----- - -Prints (on stdout, possibly not visible at your repl): - -[source] ----- -Read hi from #object[clojure.core.async.impl.channels.ManyToManyChannel ...] -Read there from #object[clojure.core.async.impl.channels.ManyToManyChannel ...] ----- - -We can use alts! to do the same thing with go blocks: - -[source,clojure] ----- -(let [c1 (a/chan) - c2 (a/chan)] - (a/go (while true - (let [[v ch] (a/alts! [c1 c2])] - (println "Read" v "from" ch)))) - (a/go (>! c1 "hi")) - (a/go (>! c2 "there"))) ----- - -Since go blocks are lightweight processes not bound to threads, we can have LOTS of them! Here we create 1000 go blocks that say hi on 1000 channels. We use alts!! to read them as they're ready. - -[source,clojure] ----- -(let [n 1000 - cs (repeatedly n a/chan) - begin (System/currentTimeMillis)] - (doseq [c cs] (a/go (>! c "hi"))) - (dotimes [i n] - (let [[v c] (a/alts!! cs)] - (assert (= "hi" v)))) - (println "Read" n "msgs in" (- (System/currentTimeMillis) begin) "ms")) ----- - -`timeout` creates a channel that waits for a specified ms, then closes: - -[source,clojure] ----- -(let [t (a/timeout 100) - begin (System/currentTimeMillis)] - ( ---- @@ -75,7 +75,7 @@ Restart the REPL with the `clj` tool: $ clj Downloading: clojure/java-time/clojure.java-time/1.1.0/clojure.java-time-1.1.0.pom from clojars Downloading: clojure/java-time/clojure.java-time/1.1.0/clojure.java-time-1.1.0.jar from clojars -Clojure 1.11.3 +Clojure 1.12.0 user=> (require '[java-time.api :as t]) nil user=> (str (t/instant)) @@ -271,7 +271,7 @@ Apply that classpath modification and examine the modified classpath by invoking $ clj -A:test -Spath test: src: -/Users/me/.m2/repository/org/clojure/clojure/1.11.3/clojure-1.11.3.jar: +/Users/me/.m2/repository/org/clojure/clojure/1.12.0/clojure-1.12.0.jar: ... same as before (split here for readability) ---- @@ -326,7 +326,7 @@ It can be helpful to experiment with a library without adding it to an existing [source,bash] ---- $ clojure -Sdeps '{:deps {org.clojure/core.async {:mvn/version "1.5.648"}}}' -Clojure 1.11.3 +Clojure 1.12.0 user=> (require '[clojure.core.async :as a]) nil ---- @@ -370,7 +370,7 @@ You can then tell the CLI to prep using this command (this is a 1-time action fo $ clj -X:deps prep Prepping io.github.puredanger/cool-lib in /Users/me/demo/needs-prep $ clj -Clojure 1.11.3 +Clojure 1.12.0 user=> ---- @@ -520,7 +520,7 @@ To https://clojure.github.io/tools.deps.cli/clojure.tools.deps.cli.api-api.html# ---- % clj -X:deps list clojure.java-time/clojure.java-time 1.1.0 (MIT) -org.clojure/clojure 1.11.3 (EPL-1.0) +org.clojure/clojure 1.12.0 (EPL-1.0) org.clojure/core.specs.alpha 0.2.62 (EPL-1.0) org.clojure/spec.alpha 0.3.218 (EPL-1.0) time-lib/time-lib ../cli-getting-started/time-lib @@ -533,7 +533,7 @@ If you want to understand the https://clojure.github.io/tools.deps.cli/clojure.t [source,shell] ---- % clj -X:deps tree -org.clojure/clojure 1.11.3 +org.clojure/clojure 1.12.0 . org.clojure/spec.alpha 0.3.218 . org.clojure/core.specs.alpha 0.2.62 time-lib/time-lib /Users/alex.miller/tmp/cli-getting-started/time-lib diff --git a/content/guides/faq.adoc b/content/guides/faq.adoc index 4b28fd64..1d5cc9b3 100644 --- a/content/guides/faq.adoc +++ b/content/guides/faq.adoc @@ -294,6 +294,21 @@ Use a $ to separate outer from inner class name. For example: `java.util.Map$Ent Primitive types can be found as the static TYPE field on the boxed class, for example: `Integer/TYPE`. +[[return_type_hint]] +**<>** + +Return <> can sometimes be useful to flow Java type information out of functions. To provide a return type hint, place it on the function parameter vector: + +[source,clojure] +---- +(defn new-file ^java.io.File [path] (java.io.File. path)) +---- + +Note that type hints can also be placed on the var itself, but placing it on the parameter vector is preferred for two reasons: + +1. Var type hints are evaluated and for special primitive or array type hints like `^long` or `^longs`, these happen to also name functions. When the var type hints are evaluated they become function objects, which are invalid type hints and ignored. +2. A multi-arity function may specify different return type hints for different arities (although this is not common). + [[varargs]] **<>** @@ -390,7 +405,7 @@ tools.deps aims to provide programmatic building blocks for dependency resolutio [[clj_dynamic]] **<>** -No. Other tools exist to do this now or could be added on top of the existing functionality but this was not part of the initial goal. +Yes (since Clojure 1.12) - see <>. [[clj_standalone]] **<>** diff --git a/content/guides/getting_started.adoc b/content/guides/getting_started.adoc index f00b4b6a..fab5f982 100644 --- a/content/guides/getting_started.adoc +++ b/content/guides/getting_started.adoc @@ -43,12 +43,12 @@ There are many ways to learn the Clojure language. This tutorial covers the basi If you'd like to work from a <>, these are some excellent starting points: -image:https://images-na.ssl-images-amazon.com/images/I/51Bvd25CstL._SL160.jpg[Programming Clojure 3rd edition,link="https://a.co/bSxW6A6",width="130"] image:https://images-na.ssl-images-amazon.com/images/I/51dqOLcPL7L._SL160.jpg[Getting Clojure,link="https://pragprog.com/book/roclojure/getting-clojure",width="130"] image:https://images-na.ssl-images-amazon.com/images/I/6112vbQYDLL._SL160.jpg[Clojure for the Brave and True,link="https://a.co/bsviqV7",width="130"] image:https://images-na.ssl-images-amazon.com/images/I/5122uV93jfL._SL160.jpg[Living Clojure,link="https://a.co/1m2Zt4p",width="130"] +image:https://images-na.ssl-images-amazon.com/images/I/51Bvd25CstL._SL160.jpg[Programming Clojure 3rd edition,link="https://a.co/bSxW6A6",width="130"] image:https://images-na.ssl-images-amazon.com/images/I/51dqOLcPL7L._SL160.jpg[Getting Clojure,link="https://pragprog.com/titles/roclojure/getting-clojure/",width="130"] image:https://images-na.ssl-images-amazon.com/images/I/6112vbQYDLL._SL160.jpg[Clojure for the Brave and True,link="https://a.co/bsviqV7",width="130"] image:https://images-na.ssl-images-amazon.com/images/I/5122uV93jfL._SL160.jpg[Living Clojure,link="https://a.co/1m2Zt4p",width="130"] If you'd like to try some practice problems: * https://4clojure.oxal.org/[4Clojure] - a large set of Clojure practice problems -* https://exercism.io/tracks/clojure[exercism Clojure track] - larger problems with mentor support +* https://exercism.org/tracks/clojure[exercism Clojure track] - larger problems with mentor support Also check out: @@ -60,5 +60,5 @@ Also check out: There are many places to interact with other Clojure developers: * https://ask.clojure.org[Ask Clojure] [official] - Clojure Q&A and knowledge base -* https://clojurians.net[Clojurians Slack channel] - Clojure live chat, check out #beginners, #jobs, etc +* http://clojurians.net[Clojurians Slack channel] - Clojure live chat, check out #beginners, #jobs, etc * https://clojureverse.org[Clojureverse] - Clojure forum diff --git a/content/guides/install_clojure.adoc b/content/guides/install_clojure.adoc index 78c28b97..cafc870f 100644 --- a/content/guides/install_clojure.adoc +++ b/content/guides/install_clojure.adoc @@ -15,7 +15,7 @@ Clojure (the language) is provided as a Java ARchive (JAR) file, available in th This page concerns the command-line tool (the Clojure CLI). This tool (used by the commands `clojure` and `clj`) can download Clojure itself and other Clojure or JVM-based libraries. **Any version of the Clojure CLI can download or use any version of the Clojure language itself (they are independent).** -The version numbers of the language and the CLI are separate but related. The Clojure language has a 3 part-version (like `1.11.3`) and the Clojure CLI has a 4-part version (like `1.11.3.1456`). The leading 3 parts of the CLI version indicate which version of the Clojure language will be used by default in a REPL, unless you specify otherwise in the <> configuration file. +The version numbers of the language and the CLI are separate but related. The Clojure language has a 3 part-version (like `1.12.0`) and the Clojure CLI has a 4-part version (like `1.12.0.1456`). The leading 3 parts of the CLI version indicate which version of the Clojure language will be used by default in a REPL, unless you specify otherwise in the <> configuration file. == Mac OS instructions @@ -105,15 +105,13 @@ Prerequisites: <> === Windows Subsystem for Linux (WSL) -The recommended approach is to install https://learn.microsoft.com/en-us/windows/wsl/install[wsl] and then follow the <>. +If you are not yet using https://learn.microsoft.com/en-us/windows/wsl/install[WSL] (Windows Subsystem for Linux), this is recommended as it will provide the closest match for most existing Clojure tutorials and documentation. -=== Native Windows Installer +Once you have installed WSL, follow the <> and proceed from there. -Natively https://github.com/casselc/clj-msi[clj-msi] is an MSI package for installing Clojure. +=== Windows Installer -=== Help and Feedback - -Please provide feedback on https://ask.clojure.org[Ask Clojure] or Clojurians slack in #clj-on-windows. +Alternately, you can use https://github.com/casselc/clj-msi[clj-msi] to install clojure.exe on your system, which can be used in similar ways to the `clojure` script installed in the other approaches above. == Prerequisite installation details diff --git a/content/guides/learn/namespaces.adoc b/content/guides/learn/namespaces.adoc index 3736df4d..2aa079b6 100644 --- a/content/guides/learn/namespaces.adoc +++ b/content/guides/learn/namespaces.adoc @@ -97,7 +97,7 @@ Similar to `:refer`, the `ns` macro has an `:import` clause (that is supported b (ns com.some-example.my-app2 (:import [java.util Date UUID] - [java.io File])) + [java.io File])) ---- This example imports the `Date` and `UUID` class from the `java.util` package and the `File` class from the `java.io` package. diff --git a/content/guides/spec.adoc b/content/guides/spec.adoc index 7a7cc651..80a59d48 100644 --- a/content/guides/spec.adoc +++ b/content/guides/spec.adoc @@ -17,7 +17,7 @@ To use spec, declare a dependency on Clojure 1.9.0 or higher: [source, clojure] ---- -[org.clojure/clojure "1.11.3"] +[org.clojure/clojure "1.12.0"] ---- To start working with spec, require the `clojure.spec.alpha` namespace at the REPL: diff --git a/content/guides/tools_build.adoc b/content/guides/tools_build.adoc index e7db3b5f..7e7f2a98 100644 --- a/content/guides/tools_build.adoc +++ b/content/guides/tools_build.adoc @@ -47,7 +47,7 @@ So executing `clj -T:build jar` will use an effective classpath here of: * org.clojure/clojure (from the root deps.edn `:deps`) and transitive deps * org.clojure/tools.build (from the `:build` alias `:deps`) and transitive deps -The `:ns-default` specifies the default Clojure namespace to find the function specified on the classpath. Because the only local path is the default `"."`, we should expect to find the build program at `build.clj` in the root of our project. Note that the path roots (via the `:build` alias `:paths`) and the namespace of the build program itself relative to those paths roots are fully under your control. You may wish to put them in a subdirectory of your project too. +The `:ns-default` specifies the default Clojure namespace to find the function specified on the classpath. Because the only local path is the default `"."`, we should expect to find the build program at `build.clj` in the root of our project. Note that the path roots (via the `:build` alias `:paths`) and the namespace of the build program itself relative to those path roots are fully under your control. You may wish to put them in a subdirectory of your project too. And then finally, on the command line we specify the function to run in the build, here `jar`. That function will be executed in the `build` namespace, and passed a map built using the same arg passing style as `-X` - args are provided as alternating keys and values. @@ -57,7 +57,7 @@ The remainder of this guide demonstrates individual common use cases and how to The most common Clojure build creates a jar file containing Clojure source code. To do this with tools.build we'll use the following tasks: -* `create-basis` - to create a project basis (note: this will download deps as a side effect) +* `create-basis` - to create a <> (note: this will download deps as a side effect) * `copy-dir` - to copy Clojure source and resources into a working dir * `write-pom` - to write a pom file in the working dir * `jar` - to jar up the working dir into a jar file @@ -227,7 +227,7 @@ For example, consider a parameterization that includes an extra set of dev resou params)) ---- -The other aspects of deps.edn and invocation remain the same. +The other aspects of deps.edn and invocation remain the same. Invocation that activates :dev environment will look like this: @@ -284,3 +284,11 @@ The `compile` task here can also be used as the <> page. + +At this point we consider Clojure 1.12.0 to be complete. Please test this release and provide any feedback prior to release. + +The changes in this release since 1.12.0-beta2 are the same fixes also released in <>, see there for details. + +For a complete list of 1.12.0 features and fixes, see the https://github.com/clojure/clojure/blob/master/changes.md#changes-to-clojure-in-version-1120[official changelog]. diff --git a/content/news/2024/08/03/deref.adoc b/content/news/2024/08/03/deref.adoc new file mode 100644 index 00000000..489d1bc7 --- /dev/null +++ b/content/news/2024/08/03/deref.adoc @@ -0,0 +1,59 @@ += Clojure Deref (Aug 3, 2024) +Alex Miller +2024-08-03 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== From the core + +This week we've released three things: + +* https://2024.clojure-conj.org/#/speakers[Clojure/conj 2024 Program] +* https://clojure.org/news/2024/08/03/clojure-1-11-4[Clojure 1.11.4] +* https://clojure.org/news/2024/08/03/clojure-1-12-0-rc1[Clojure 1.12.0-rc1] + +The final program for the Conj is still a work in progress and we hope to have a full schedule available in the next week or two. https://ti.to/nubank/clojureconj-2024[Register now] to be there in Alexandria, Virginia Oct 23-25th to talk about all things Clojure! + +This week we've been focused on some issues with locals clearing of closed-over fields and that work has been released in 1.12.0-rc1 and backported to 1.11.4. See the 1.11.4 release notes for the details. + +At this point we consider 1.12.0 to be complete pending feedback from the community. This is your last chance to try the new version before the official release - we welcome your feedback! + +== Podcasts and videos + +* https://podcasters.spotify.com/pod/show/lostinlambduhhs/episodes/first-conj-clojure-camp-raf-dittwald-recia-roopnarine-e2mjtmd/a-abf646a[pass:[((first (conj [:clojure-camp] :raf-dittwald :recia-roopnarine))]] - Jordan Miller +* https://www.youtube.com/watch?v=N0pxjHgNUxs[Packaging Clojure app for Mac] - Clojure Diary +* https://www.youtube.com/watch?v=N_E-P2Giq1k[Meetup: Collaborative Learning - XTDB 2.0] - Los Angeles Clojure Users Group +* https://www.youtube.com/watch?v=bJCDJnt4lEA[Meetup: Collaborative Learning - XTDB 2.0 (part 2)] - Los Angeles Clojure Users Group + +== Blogs, articles, and projects + +* https://aiprobook.com/deep-learning-for-programmers/[Deep Learning for Programmers] - Dragan Djuric +* https://gaiwan.co/blog/when-a-plan-comes-together/[When a Plan Comes Together] - Arne Brasseur (Gaiwan) +* https://2024.clojure-conj.org/#/speakers[Speakers] - CLOJURE/CONJ +* https://blog.hughpowell.net/6-months-1-line-of-code.html[6 months, 1 line of code] - Hugh Powell +* https://play.teod.eu/clojure-easy-parallellism-with-pipeline-blocking/[Easy, explicit parallellism with pipeline-blocking] - Ruben S. Sevaldson, Teodor Heggelund +* link:++https://danielsz.github.io/20240718T060528--lisps-grandfather-paradox__clojure_lisp_scheme.html++[LISP'S GRANDFATHER PARADOX] - Daniel Szmulewicz +* https://hyperfiddle-docs.notion.site/Electric-progress-update-July-2024-9429836036e4489fb9ce3dc9ddf7faee[Electric Clojure progress update - July 2024] - Dustin Getz +* https://tonitalksdev.com/typed-configuration-files-with-malli-aero[Typed Configuration Files with Malli & Aero] - Toni Väisänen + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/clojure/clojure[clojure] https://clojure.org/releases/devchangelog#v1.12.0-rc1[1.12.0-rc1] and https://clojure.org/releases/devchangelog#v1.11.4[1.11.4] - The Clojure programming language +* https://github.com/scicloj/kind-pyplot[kind-pyplot] https://github.com/scicloj/kind-pyplot/blob/main/CHANGELOG.md[1-beta1] - Visualizing python plots with the Clojure Kindly convention +* https://github.com/cljfx/cljfx[cljfx] https://github.com/cljfx/cljfx/blob/master/CHANGELOG.md[1.9.1] - Declarative, functional and extensible wrapper of JavaFX inspired by better parts of react and re-frame +* https://github.com/cljfx/dev[dev] 1.0.39 - Dev tools for cljfx +* https://github.com/dundalek/stratify[stratify] 0.1.0 - Visualize structure and dependencies of Clojure codebases +* https://codeberg.org/mitch-kyle/integrant.monkey[integrant.monkey] https://codeberg.org/mitch-kyle/integrant.monkey/src/branch/main/CHANGELOG.md[0.2.0] - Monkey around with your integrant system +* https://github.com/jf/pipeline-notifier[pipeline-notifier] - ready-made notifiers with excellent DX (Developer Experience) for your devops pipelines +* https://github.com/clj-kondo/clj-kondo[clj-kondo] https://github.com/clj-kondo/clj-kondo/blob/master/CHANGELOG.md[2024.08.01] - Static analyzer and linter for Clojure code that sparks joy +* https://github.com/ikappaki/basilisp-kernel[basilisp-kernel] https://github.com/ikappaki/basilisp-kernel/blob/main/CHANGELOG.md[1.1.0] - A Jupyter kernel for Basilisp, a Clojure compatible dialect implemented in Python +* https://github.com/flow-storm/clofidence[clofidence] https://github.com/flow-storm/clofidence/blob/master/CHANGELOG.md[0.3.1] - Bolster your Clojure test suite confidence +* https://github.com/scicloj/clay[clay] https://github.com/scicloj/clay/blob/main/CHANGELOG.md[2-beta15] - A tiny Clojure tool for dynamic workflow of data visualization and literate programming +* https://github.com/scicloj/cmdstan-clj[cmdstan-clj] https://github.com/scicloj/cmdstan-clj/blob/main/CHANGELOG.md[1-alpha2] - Using the Stan statistical modelling language from Clojure using the CmdStan CLI +* https://github.com/clojure-goes-fast/clj-java-decompiler[clj-java-decompiler] https://github.com/clojure-goes-fast/clj-java-decompiler/blob/master/CHANGELOG.md[0.3.6] - REPL-integrated Clojure-to-Java decompiler +* https://github.com/soulspace-org/overarch[overarch] https://github.com/soulspace-org/overarch/blob/main/Changelog.md[0.29.1] - A data driven description of software architecture based on UML and the C4 model diff --git a/content/news/2024/08/09/deref.adoc b/content/news/2024/08/09/deref.adoc new file mode 100644 index 00000000..771bbfdf --- /dev/null +++ b/content/news/2024/08/09/deref.adoc @@ -0,0 +1,45 @@ += Clojure Deref (Aug 9, 2024) +Alex Miller +2024-08-09 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts and videos + +* https://www.youtube.com/live/IMcrtIUM0vk[Eric Normand Office Hours 2024-08-08] - Eric Normand +* https://www.youtube.com/watch?v=AdFrT3mlDSc[Learn Clojure – Records] - Clojure Diary +* https://www.youtube.com/watch?v=4o4reASjtOQ[Learn Clojure – Using Records with functions] - Clojure Diary +* https://www.youtube.com/watch?v=iRGHsVHNlx0[Learn Clojure – Protocol] - Clojure Diary + +== Blogs, articles, and projects + +* https://medium.com/@SpacePirate9/connecting-to-mongodb-with-tls-using-monger-in-clojure-80d71329c5c8[Connecting to MongoDB with TLS using Monger in Clojure] - Kappagantula Ram Narayan +* https://hyperfiddle-docs.notion.site/Electric-Clojure-v3-teaser-improved-transfer-semantics-2024-735b10c3a0dc424e93e060a0a3e80226[Electric Clojure v3 teaser: improved transfer semantics (2024)] - Dustin Getz +* https://www.patreon.com/posts/transparency-109711855[Transparency report: July 2024] - Nikita Prokopov + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/ikappaki/basilisp-blender[basilisp-blender] https://github.com/ikappaki/basilisp-blender/blob/main/CHANGELOG.md[0.1.0] - A library designed to facilitate the execution of Basilisp Clojure code within Blender +* https://github.com/metosin/oksa[oksa] https://github.com/metosin/oksa/blob/main/CHANGELOG.md[1.1.0] - Generate GraphQL queries using Clojure data structures +* https://github.com/metosin/malli[malli] https://github.com/metosin/malli/blob/master/CHANGELOG.md[0.16.3] - High-performance data-driven data specification library for Clojure/Script +* https://github.com/vouch-opensource/fugato[fugato] - Data-first stateful generator for Clojure +* https://github.com/clojure/brew-install[brew-install] https://github.com/clojure/brew-install/blob/1.11.4/CHANGELOG.md[1.11.4.1474] - Clojure CLI installer +* https://github.com/cursive-ide/cursive[cursive] https://github.com/cursive-ide/cursive/blob/master/CHANGELOG.md[1.13.4] - Cursive: The IDE for beautiful Clojure code +* https://github.com/scicloj/hanamicloth[hanamicloth] https://github.com/scicloj/hanamicloth/blob/main/CHANGELOG.md[1-alpha5-SNAPSHOT] - Easy layered graphics with Hanami & Tablecloth +* https://github.com/monkey-projects/aero-ext[aero-ext] https://github.com/monkey-projects/aero-ext/releases/tag/0.2.0[0.2.0] - Extensions to use with the Aero config lib +* https://github.com/noahtheduke/splint[splint] https://github.com/NoahTheDuke/splint/releases/tag/v1.16.0[1.16.0] - A Clojure linter focused on style and code shape +* https://github.com/NoahTheDuke/lazytest[lazytest] https://github.com/NoahTheDuke/lazytest/blob/master/CHANGELOG.md[0.3.0] - BDD test framework for Clojure +* https://github.com/flow-storm/clojure[ClojureStorm] https://github.com/flow-storm/clojure/blob/clojure-storm-master/CHANGELOG.md[1.12.0-rc1] - A fork of the official Clojure compiler that adds automatic instrumentation +* https://github.com/practicalli/clojure-cli-config[clojure-cli-config] https://github.com/practicalli/clojure-cli-config/releases/tag/2024-08-04[2024-08-04] - User aliases and Clojure CLI configuration for deps.edn based projects +* https://github.com/babashka/fs[fs] https://github.com/babashka/fs/blob/master/CHANGELOG.md[0.5.22] - File system utility library for Clojure +* https://github.com/clojure-lsp/clojure-lsp[clojure-lsp] https://github.com/clojure-lsp/clojure-lsp/releases/tag/2024.08.05-18.16.00[2024.08.05-18.16.00] - Clojure & ClojureScript Language Server (LSP) implementation +* https://github.com/babashka/sci[sci] https://github.com/babashka/sci/blob/master/CHANGELOG.md[0.8.43] - Configurable Clojure/Script interpreter suitable for scripting and Clojure DSLs +* https://github.com/flow-storm/flow-storm-debugger[flow-storm-debugger] https://github.com/flow-storm/flow-storm-debugger/blob/master/CHANGELOG.md[3.17.2] - A debugger for Clojure and ClojureScript with some unique features +* https://github.com/BetterThanTomorrow/joyride[joyride] https://github.com/BetterThanTomorrow/joyride/releases/tag/v0.0.44[0.0.44] - Making VS Code Hackable like Emacs since 2022 +* https://github.com/borkdude/edamame[edamame] https://github.com/borkdude/edamame/blob/master/CHANGELOG.md[1.4.26] - Configurable EDN/Clojure parser with location metadata +* https://github.com/taoensso/telemere[telemere] https://github.com/taoensso/telemere/blob/master/CHANGELOG.md[v1.0.0-beta16] - Structured telemetry library for Clojure/Script \ No newline at end of file diff --git a/content/news/2024/08/16/deref.adoc b/content/news/2024/08/16/deref.adoc new file mode 100644 index 00000000..965cc5a2 --- /dev/null +++ b/content/news/2024/08/16/deref.adoc @@ -0,0 +1,37 @@ += Clojure Deref (Aug 16, 2024) +Alex Miller +2024-08-16 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts and videos + +* https://www.youtube.com/watch?v=cUfd8-AB9pk[Journeys in code on ‘The Hammock’ podcast: a conversation with Alex Miller] - Building Nubank +* https://www.youtube.com/watch?v=UMFpLWjpC-I[Learn Clojure – Extend Protocol] - Clojure Diary + +== Blogs, articles, and projects + +* https://blog.hughpowell.net/guardrails.html[Guardrails] - Hugh Powell +* https://scicloj.github.io/docs/community/groups/open-source-mentoring/[Scicloj open-source mentoring] - scicloj +* https://jmglov.net/blog/2024-08-13-soundcljoud-rangey.html[Soundcljoud gets more rangey] - Josh Glover + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/metosin/jsonista[jsonista] https://github.com/metosin/jsonista/blob/master/CHANGELOG.md[0.3.10] - Clojure library for fast JSON encoding and decoding +* https://github.com/scicloj/tcutils[tcutils] 0.1.0-alpha2 - Utility functions for working with tablecloth datasets +* https://github.com/juji-io/datalevin[datalevin] https://github.com/juji-io/datalevin/blob/master/CHANGELOG.md[0.9.10] - A simple, fast and versatile Datalog database +* https://github.com/seancorfield/ring-data-json[ring-data-json] https://github.com/seancorfield/ring-data-json/blob/master/CHANGELOG.md[0.5.2] - Ring middleware for handling JSON, using clojure.data.json +* https://github.com/nnichols/clojure-dependency-update-action[clojure-dependency-update-action] https://github.com/nnichols/clojure-dependency-update-action/releases/tag/v6[6] - A simple GitHub Actions job to create Pull Requests for outdated dependencies in clojure projects +* https://github.com/nrepl/nrepl[nrepl] 1.3.0 - A Clojure network REPL that provides a server and client, along with some common APIs of use to IDEs and other tools that may need to evaluate Clojure code in remote environments +* https://github.com/mentat-collective/emmy[emmy] https://github.com/mentat-collective/emmy/blob/main/CHANGELOG.md[0.32.0] - The Emmy Computer Algebra System +* https://github.com/clj-commons/etaoin[etaoin] https://github.com/clj-commons/etaoin/blob/master/CHANGELOG.adoc#v1.1.41[1.1.41] - Pure Clojure Webdriver protocol implementation +* https://github.com/scicloj/hanamicloth[hanamicloth] https://github.com/scicloj/hanamicloth/blob/main/CHANGELOG.md[1-alpha6-SNAPSHOT] - Easy layered graphics with Hanami & Tablecloth +* https://github.com/lilactown/pyramid[pyramid] https://github.com/lilactown/pyramid/blob/main/CHANGELOG.md[4.0.0] - A library for storing and querying graph data in Clojure +* https://github.com/polyfy/polylith[polylith] https://github.com/polyfy/polylith/releases/tag/v0.2.21[0.2.21] - A tool used to develop Polylith based architectures in Clojure +* https://github.com/babashka/http-client[http-client] https://github.com/babashka/http-client/blob/main/CHANGELOG.md[0.4.20] - HTTP client for Clojure and Babashka built on java.net.http +* https://github.com/alexander-yakushev/compliment[compliment] https://github.com/alexander-yakushev/compliment/blob/master/CHANGELOG.md[0.6.0] - Clojure completion library that you deserve \ No newline at end of file diff --git a/content/news/2024/08/23/deref.adoc b/content/news/2024/08/23/deref.adoc new file mode 100644 index 00000000..967280d1 --- /dev/null +++ b/content/news/2024/08/23/deref.adoc @@ -0,0 +1,47 @@ += Clojure Deref (Aug 23, 2024) +Alex Miller +2024-08-23 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts and videos + +* https://www.youtube.com/watch?v=Y2Stj6oYc5Q[Clojure data-recur meeting 6: Clojure Meets Metal: Working with native libraries and the GPU] - Sci Cloj +* https://www.youtube.com/watch?v=mP9e_FDjHLU[Electric Clojure v3: Differential Dataflow for UI (by Dustin Getz)] - London Clojurians +* https://www.youtube.com/watch?v=hxmAe7-z60Q[Career Change From Tattooing to Software and Back With Cat Rivers] - Toni Talks Dev +* https://www.youtube.com/watch?v=xgmqwbeDT44[Greatest of three numbers in Clojure] - Clojure Diary +* https://www.youtube.com/watch?v=8nxagnx0RVg[Shipping Jar with Shell] - Clojure Diary + +== Blogs, articles, and projects + +* https://www.jarrodctaylor.com/posts/Clojure-1.12-Field-Guide/[Clojure 1.12 Field Guide] - Jarrod C Taylor +* https://blog.fogus.me/2024/08/19/on-method-values-part-1/[On method values, part 1] - Michael Fogus +* https://2024.clojure-conj.org/#/schedule[Schedule] - Clojure/conj +* https://www.loicblanchard.me/blog/testing-in-clojure[Testing in Clojure] - Loïc Blanchard +* https://nextjournal.com/Javierweiss/tipos-de-datos-y-estructuras-de-datos-clj?token=WeNHtrfwRQYmNaSXv1RNvz[Tipos de datos y estructuras de datos (Clojure)] - José Javier Blanco Rivero +* https://buttondown.com/tensegritics-curiosities/archive/clojuredart-and-firebase-auth/[ClojureDart and Firebase Auth] - Arnaud Bos + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/clj-commons/rewrite-clj[rewrite-clj] https://github.com/clj-commons/rewrite-clj/blob/main/CHANGELOG.adoc#v1.1.48[1.1.48] - Rewrite Clojure code and edn +* https://github.com/fulcrologic/statecharts[statecharts] 1.2.5 - A Statechart library for CLJ(S) +* https://github.com/fulcrologic/fulcro[fulcro] 3.7.8 - A library for development of single-page full-stack web applications in clj/cljs +* https://github.com/potetm/fusebox[fusebox] 1.0.5 - An extremely lightweight fault tolerance library for Clojure +* https://github.com/clj-holmes/clj-watson[clj-watson] https://github.com/clj-holmes/clj-watson/releases/tag/v6.0.0[6.0.0] - clojure deps SCA +* https://github.com/jjttjj/tinywl-clj[tinywl-clj] - A proof of concept Clojure port of the Tinywl wayland compositor +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-alpha3-SNAPSHOT] - A clojure framework for data science +* https://github.com/lispyclouds/navi[navi] https://github.com/lispyclouds/navi/releases/tag/0.0.6[0.0.6] - A tiny, data-driven library converting OpenAPI spec to Reitit routes +* https://github.com/lambdaisland/xml-select[xml-select] https://github.com/lambdaisland/xml-select/blob/main/CHANGELOG.md[0.1.1] - XPath-style selectors for Clojure +* https://github.com/anteoas/replicant-mini-app[replicant-mini-app] - A tiny example of a Replicant app +* https://github.com/clojure/tools.reader[tools.reader] https://github.com/clojure/tools.reader/blob/master/CHANGELOG.md[1.5.0] - Clojure reader in Clojure +* https://github.com/taoensso/telemere[telemere] https://github.com/taoensso/telemere/releases/tag/v1.0.0-beta20[v1.0.0-beta20] - Structured telemetry library for Clojure/Script +* https://github.com/noahtheduke/lazytest[lazytest] https://github.com/NoahTheDuke/lazytest/blob/master/CHANGELOG.md[0.4.0] - BDD test framework for Clojure +* https://github.com/soulspace-org/overarch[overarch] https://github.com/soulspace-org/overarch/blob/main/Changelog.md[0.30.0] - A data driven description of software architecture based on UML and the C4 model +* https://github.com/borkdude/edamame[edamame] https://github.com/borkdude/edamame/releases/tag/v1.4.27[1.4.27] - Configurable EDN/Clojure parser with location metadata +* https://github.com/clj-commons/pretty[pretty] https://github.com/clj-commons/pretty/blob/main/CHANGES.md[3.1.1] - Library for helping print things prettily, in Clojure - ANSI fonts, formatted exceptions +* https://github.com/fulcrologic/fulcro-rad[fulcro-rad] 1.6.5 - Fulcro Rapid Application Development \ No newline at end of file diff --git a/content/news/2024/08/28/clojure-1-12-0-rc2.adoc b/content/news/2024/08/28/clojure-1-12-0-rc2.adoc new file mode 100644 index 00000000..62ca501a --- /dev/null +++ b/content/news/2024/08/28/clojure-1-12-0-rc2.adoc @@ -0,0 +1,16 @@ += Clojure 1.12.0-rc2 +Alex Miller +2024-08-28 +:jbake-type: post + +Clojure 1.12.0-rc2 is now available! Find download and usage information on the <> page. + +At this point we consider Clojure 1.12.0 to be complete. Please test this release and provide any feedback prior to release. + +Changes since 1.12.0-rc1: + +* https://clojure.atlassian.net/browse/CLJ-2873[CLJ-2873] `add-libs` - reloads data readers after extending runtime classpath +* https://clojure.atlassian.net/browse/CLJ-2881[CLJ-2881] `definterface` - add support for array class type hints + +For a complete list of 1.12.0 features and fixes, see the https://github.com/clojure/clojure/blob/master/changes.md#changes-to-clojure-in-version-1120[official changelog]. + diff --git a/content/news/2024/08/30/deref.adoc b/content/news/2024/08/30/deref.adoc new file mode 100644 index 00000000..15e19ef6 --- /dev/null +++ b/content/news/2024/08/30/deref.adoc @@ -0,0 +1,45 @@ += Clojure Deref (Aug 30, 2024) +Alex Miller +2024-08-30 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts and videos + +* https://www.youtube.com/live/28S96Ms8WOc[Constraining Malli Schemas, by Ambrose Bonnaire-Sergeant (Madison Clojure)] - Ambrose Bonnaire-Sergeant +* https://www.youtube.com/watch?v=SuM03K0w9_I[Generating ClojureScript + Reagent apps with Claude AI + Scittle] - mccormix +* https://www.youtube.com/watch?v=kkgD2KGLVUI[Daniel Slutsky on math, community, and SciCloj] - Timothy Pratley +* https://www.youtube.com/watch?v=CCo7T3m6LLM[[Dev Dive: Backend Day] Monorepo Hopeful Edition (Feat. Polylith)] - 그린랩스 +* https://www.youtube.com/watch?v=b7DlbC1CwRM[Clojure real-world-data meeting 12 snippet 1: Blender & Basilisp, Wordpress & Phel - Jarkko Saltiola] - Sci Cloj +* https://www.youtube.com/watch?v=PLkcwF4y7VM[Clojure real-world-data meeting 12 snippet 2: Noj, open-source-mentoring - Daniel Slutsky] - Sci Cloj +* https://www.youtube.com/watch?v=R9SPJJFT_4U[Learn Clojure - namespaces] - Clojure Diary +* https://www.youtube.com/watch?v=VPcKkb9c31M[Learn Clojure – Testing] - Clojure Diary + +== Blogs, articles, and projects + +* https://mccormick.cx/news/entries/generating-clojurescript-reagent-apps-with-claude-ai-scittle[Generating ClojureScript Reagent Apps With Claude AI & Scittle] - Chris McCormick +* https://www.evalapply.org/posts/clojure-web-app-from-scratch/[Clojuring the web application stack: Meditation One] - Aditya Athalye +* https://dvliman.com/post/my-handy-clojure-debugging-tools/[My handy Clojure debugging tools] - David Liman +* https://www.taoensso.com/news/2024-08-open-source[Open source update] - Peter Taoussanis + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/clojure/clojure[clojure] https://clojure.org/news/2024/08/28/clojure-1-12-0-rc2[1.12.0-rc2] - The Clojure programming language +* https://github.com/fulcrologic/fulcro[fulcro] 3.7.9 - A library for development of single-page full-stack web applications in clj/cljs +* https://github.com/tonsky/Clojure-Sublimed[Clojure-Sublimed] https://github.com/tonsky/Clojure-Sublimed/releases/tag/4.0.0[4.0.0] - Clojure support for Sublime Text 4 +* https://github.com/spacegangster/page-renderer[page-renderer] 0.4.8 - Write HTML-pages as Clojure maps, with all that meta +* https://github.com/potetm/fusebox[fusebox] 1.0.7 - An extremely lightweight fault tolerance library for Clojure(Script) +* https://github.com/JanSuran03/task-scheduler[task-scheduler] 1.0.1 - A Clojure library designed for asynchronous scheduling of tasks +* https://github.com/clj-kondo/clj-kondo[clj-kondo] https://github.com/clj-kondo/clj-kondo/blob/master/CHANGELOG.md[2024.08.29] - Static analyzer and linter for Clojure code that sparks joy +* https://github.com/ryrobes/rvbbit[rvbbit] 0.1.0 alpha 1 - Reactive Data Board & Visual Flow Platform +* https://github.com/taoensso/timbre[timbre] https://github.com/taoensso/timbre/blob/master/CHANGELOG.md[v6.6.0-RC1] - Pure Clojure/Script logging library +* https://github.com/practicalli/astro[astro] https://github.com/practicalli/astro/releases/tag/2024-08-24[2024-08-24] - Rich development workflow with Clojure support, using AstroNvim 4 and selected plugins +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-alpha5-SNAPSHOT] - A clojure framework for data science +* https://github.com/taoensso/telemere[telemere] https://github.com/taoensso/telemere/blob/master/CHANGELOG.md[1.0.0-beta22] - Structured telemetry library for Clojure/Script +* https://github.com/seancorfield/honeysql[honeysql] https://github.com/seancorfield/honeysql/releases/tag/v2.6.1161[2.6.1161] - Turn Clojure data structures into SQL +* https://github.com/julienvincent/clojure-test.nvim[clojure-test.nvim] - Run clojure tests directly from neovim \ No newline at end of file diff --git a/content/news/2024/09/05/clojure-1-12-0.adoc b/content/news/2024/09/05/clojure-1-12-0.adoc new file mode 100644 index 00000000..1ae700fa --- /dev/null +++ b/content/news/2024/09/05/clojure-1-12-0.adoc @@ -0,0 +1,165 @@ += Clojure 1.12.0 +Alex Miller +2024-09-05 +:jbake-type: post + +Clojure 1.12.0 is now available! Find download and usage information on the <> page. + +## 1 Compatibility + +### 1.1 Java 8 - Compatiblity EOL notice + +Clojure 1.12 produces Java 8 bytecode (same as Clojure 1.10 and 1.11), but this is expected to be the last release using a Java 8 baseline. Future releases will move the bytecode and minimum Java compatibility to a newer Java LTS release. + +### 1.2 Java 21 - Virtual thread pinning from user code under `synchronized` + +Clojure users want to use virtual threads on JDK 21. Prior to 1.12, Clojure lazy-seqs and delays, in order to enforce run-once behavior, ran user code under synchronized blocks, which as of JDK 21 don't yet participate in cooperative blocking. Thus if that code did e.g. blocking I/O it would pin a real thread. JDK 21 may emit warnings for this when using `-Djdk.tracePinnedThreads=full`. + +To avoid this pinning, in 1.12 `lazy-seq` and `delay` use locks instead of synchronized blocks. + +### 1.3 Security + +Fix https://nvd.nist.gov/vuln/detail/CVE-2024-22871[CVE-2024-22871] detailed in https://github.com/advisories/GHSA-vr64-r9qj-h27f[GHSA-vr64-r9qj-h27f]: + +### 1.4 Serialization + +https://clojure.atlassian.net/browse/CLJ-1327[CLJ-1327] explicitly sets the Java serialization identifier for the classes in Clojure that implement Java serialization. In Clojure 1.11.0 this changed for two classes unnecessarily and we reverted those changes in Clojure 1.11.1 - this completes that work for the rest of the classes. + +Clojure data types have implemented the Java serialization interfaces since Clojure 1.0. Java serialization is designed to save graphs of Java instances into a byte stream. Every class has an identifier (the serialVersionUID) that is automatically generated based on the class name, it's type hierarchy, and the serialized fields. At deserialization time, deserialization can only occur when the available class has an identifier that matches the class id recorded in the serialized bytes. + +Clojure has never provided a guarantee of serialization consistency across Clojure versions, but we do not wish to break compatibility any more than necessary and these changes will give us more control over that in the future. + +### 1.5 Dependencies + +Updated dependencies: + +* spec.alpha dependency to 0.5.238 - https://github.com/clojure/spec.alpha/blob/master/CHANGES.md[changes] +* core.specs.alpha dependency to 0.4.74 - https://github.com/clojure/core.specs.alpha/blob/master/CHANGES.md[changes] + +## 2 Features + +[[add_libs]] +### 2.1 Add libraries for interactive use + +There are many development-time cases where it would be useful to add a library interactively without restarting the JVM - speculative evaluation, adding a known dependency to your project, or adding a library to accomplish a specific task. + +Clojure now provides <>, without restarting the JVM or losing the state of your work: + +* https://clojure.github.io/clojure/branch-master/clojure.repl-api.html#clojure.repl.deps/add-lib[add-lib] takes a lib that is not available on the classpath, and makes it available by downloading (if necessary) and adding to the classloader. Libs already on the classpath are not updated. If the coordinate is not provided, the newest Maven or git (if the library has an inferred git repo name) version or tag are used. +* https://clojure.github.io/clojure/branch-master/clojure.repl-api.html#clojure.repl.deps/add-libs[add-libs] is like `add-lib`, but resolves a set of new libraries and versions together. +* https://clojure.github.io/clojure/branch-master/clojure.repl-api.html#clojure.repl.deps/sync-deps[sync-deps] calls `add-libs` with any libs present in deps.edn, but not yet present on the classpath. + +These new functions are intended only for development-time interactive use at the repl - using a deps.edn is still the proper way to build and maintain production code. To this end, these functions all check that https://clojure.github.io/clojure/branch-master/clojure.core-api.html#clojure.core/%2Arepl%2A[\*repl*] is bound to true (that flag is bound automatically by `clojure.main/repl`). In a clojure.main REPL, these new functions are automatically referred in the `user` namespace. In other repls, you may need to `(require '[clojure.repl.deps :refer :all])` before use. + +Library resolution and download are provided by https://github.com/clojure/tools.deps[tools.deps]. However, you do not want to add tools.deps and its many dependencies to your project classpath during development, and thus we have also added a new api for invoking functions out of process via the Clojure CLI. + +[[tool_functions]] +### 2.2 Invoke tool functions out of process + +There are many useful tools you can use at development time, but which are not part of your project's actual dependencies. The Clojure CLI provides explicit support for https://clojure.org/reference/clojure_cli#tools[tools] with their own classpath, but there was not previously a way to invoke these interactively. + +Clojure now includes https://clojure.github.io/clojure/branch-master/clojure.tools.deps.interop-api.html#clojure.tools.deps.interop/invoke-tool[clojure.tools.deps.interop/invoke-tool] to invoke a tool function out of process. The classpath for the tool is defined in deps.edn and you do not need to add the tool's dependencies to your project classpath. + +`add-lib` functionality is built using `invoke-tool` but you can also use it to build or invoke your own tools for interactive use. Find more about the function execution protocol on the https://clojure.org/reference/clojure_cli#function_protocol[CLI reference]. + +### 2.3 Start and control external processes + +For a long time, we've had the `clojure.java.shell` namespace, but over time Java has provided new APIs for process info, process control, and I/O redirection. This release adds a new namespace https://clojure.github.io/clojure/branch-master/index.html#clojure.java.process[clojure.java.process] that takes advantage of these APIs and is easier to use. See: + +* https://clojure.github.io/clojure/branch-master/clojure.java.process-api.html#clojure.java.process/start[start] - full control over streams with access to the underlying Java objects for advanced usage +* https://clojure.github.io/clojure/branch-master/clojure.java.process-api.html#clojure.java.process/exec[exec] - covers the common case of executing an external process and returning its stdout on completion + +[[method_values]] +### 2.4 Method values + +Clojure programmers often want to use Java methods in higher-order functions (e.g. passing a Java method to `map`). Until now, programmers have had to manually wrap methods in functions. This is verbose, and might require manual hinting for overload disambiguation, or incur incidental reflection or boxing. + +Programmers can now use <> as ordinary functions in value contexts - the compiler will <>. The compiler will generate a reflective call when a qualified method does not resolve due to overloading. Developers can supply <> metadata on qualified methods to specify the signature of a single desired method, 'resolving' it. + +[[qualified_methods]] +### 2.5 Qualified methods - `Class/method`, `Class/.method`, and `Class/new` + +Java members inherently exist in a class. For method values we need a way to explicitly specify the class of an instance method because there is no possibility for inference. + +Qualified methods have value semantics when used in non-invocation positions: + +* `Classname/method` - value is a Clojure function that invokes a static method +* `Classname/.method` - value is a Clojure function that invokes an instance method +* `Classname/new` - value is a Clojure function that invokes a constructor + +Note: developers must use `Classname/method` and `Classname/.method` syntax to differentiate between static and instance methods. + +Qualified method invocations with <> use only the tags to resolve the method. Without param-tags they behave like the equivalent https://clojure.org/reference/java_interop#_the_dot_special_form[dot syntax], except the qualifying class takes precedence over hints of the target object, and over its runtime type when invoked via reflection. + +Note: Static fields are values and should be referenced without parens unless they are intended as function calls, e.g `(System/out)` should be `System/out`. Future Clojure releases will treat the field's value as something invokable and invoke it. + +[[param_tags]] +### 2.6 :param-tags metadata + +When used as values, qualified methods supply only the class and method name, and thus cannot resolve overloaded methods. + +Developers can supply <> metadata on qualified methods to specify the signature of a single desired method, 'resolving' it. The `:param-tags` metadata is a vector of zero or more tags: `[tag ...]`. A tag is any existing valid `:tag` metadata value. Each tag corresponds to a parameter in the desired signature (arity should match the number of tags). Parameters with non-overloaded types can use the placeholder `_` in lieu of the tag. When you supply :param-tags metadata on a qualified method, the metadata must allow the compiler to resolve it to a single method at compile time. + +A new metadata reader syntax `^[tag ...]` attaches `:param-tags` metadata to member symbols, just as `^tag` attaches `:tag` metadata to a symbol. + +### 2.7 Array class syntax + +Clojure supports symbols naming classes both as a value (for class object) and as a type hint, but has not provided syntax for array classes other than strings. + +Developers can now refer to an <> using a symbol of the form `ComponentClass/#dimensions`, eg `String/2` refers to the class of a 2 dimensional array of Strings. Component classes can be fully-qualified classes, imported classes, or primitives. Array class syntax can be used as both type hints and values. + +Examples: `String/1`, `java.lang.String/1`, `long/2`. + +### 2.8 Functional interfaces + +Java programs emulate functions with Java functional interfaces (marked with the https://docs.oracle.com/javase/8/docs/api/java/lang/FunctionalInterface.html[@FunctionalInterface] annotation), which have a single method. + +Clojure developers can now invoke Java methods taking <> by passing functions with matching arity. The Clojure compiler implicitly converts Clojure functions to the required functional interface by constructing a lambda adapter. You can explicitly coerce a Clojure function to a functional interface by hinting the binding name in a `let` binding, e.g. to avoid repeated adapter construction in a loop, e.g. `(let [^java.util.function.Predicate p even?] ...)`. + +### 2.9 Java Supplier interop + +Calling methods that take a https://docs.oracle.com/javase/8/docs/api/java/util/function/Supplier.html[Supplier] (a method that supplies a value) had required writing an adapter with reify. Clojure has a "value supplier" interface with semantic support already - `IDeref`. All `IDeref` impls (`delay`, `future`, `atom`, etc) now implement the `Supplier` interface directly. + +### 2.10 Streams with seq, into, reduce, and transduce support + +Java APIs increasingly return https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html[Stream]s and are hard to consume because they do not implement interfaces that Clojure already supports, and hard to interop with because Clojure doesn't directly implement Java functional interfaces. + +In addition to functional interface support, Clojure <> to interoperate with streams in an idiomatic manner, all functions behave analogously to their Clojure counterparts: + +* `(stream-seq! stream) => seq` +* `(stream-reduce! f [init-val] stream) => val` +* `(stream-transduce! xf f [init-val] stream) => val` +* `(stream-into! to-coll [xf] stream) => to-coll` + +All of these operations are terminal stream operations (they consume the stream). + +### 2.11 PersistentVector implements Spliterable + +Java collections implement streams via https://docs.oracle.com/javase/8/docs/api/java/util/Spliterator.html["spliterators"], iterators that can be split for faster parallel traversal. `PersistentVector` now provides a custom spliterator that supports parallelism, with greatly improved performance. + +### 2.12 Efficient drop and partition for persistent or algorithmic collections + +Partitioning of a collection uses a series of takes (to build a partition) and drops (to skip past that partition). https://clojure.atlassian.net/browse/CLJ-2713[CLJ-2713] adds a new internal interface (IDrop) indicating that a collection can drop more efficiently than sequential traversal, and implements that for persistent collections and algorithmic collections like `range` and `repeat`. These optimizations are used in `drop`, `nthrest`, and `nthnext`. + +Additionally, there are new functions `partitionv`, `partitionv-all`, and `splitv-at` that are more efficient than their existing counterparts and produce vector partitions instead of realized seq partitions. + +### 2.13 Var interning policy + +https://clojure.org/reference/vars#interning[Interning] a var in a namespace (vs aliasing) must create a stable reference that is never displaced, so that all references to an interned var get the same object. There were some cases where interned vars could get displaced and those have been tightened up in 1.12.0-alpha1. If you encounter this situation, you'll see a warning like "REJECTED: attempt to replace interned var #'some-ns/foo with #'other-ns/foo in some-ns, you must ns-unmap first". + +This addresses the root cause of an issue encountered with Clojure 1.11.0, which added new functions to clojure.core (particularly `abs`). Compiled code from an earlier version of Clojure with var names that matched the newly added functions in clojure.core would be unbound when loaded in a 1.11.0 runtime. In addition to https://clojure.atlassian.net/browse/CLJ-2711[CLJ-2711], we rolled back a previous fix in this area (https://clojure.atlassian.net/browse/CLJ-1604[CLJ-1604]). + +## Detailed changelog + +See the https://github.com/clojure/clojure/blob/master/changes.md#changes-to-clojure-in-version-1120[official changelog] for a complete list of all changes in 1.12.0. + +## Contributors + +Thanks to all the community members who contributed patches to Clojure 1.12: + +* Ambrose Bonnaire-Sergeant +* Christophe Grand +* Frank Yin +* Nicola Mometto +* Ray McDermott +* Steve Miner diff --git a/content/news/2024/09/06/deref.adoc b/content/news/2024/09/06/deref.adoc new file mode 100644 index 00000000..7046eafd --- /dev/null +++ b/content/news/2024/09/06/deref.adoc @@ -0,0 +1,38 @@ += Clojure Deref (Sept 6, 2024) +Alex Miller +2024-09-06 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== From the core + +BIG NEWS: https://clojure.org/news/2024/09/05/clojure-1-12-0[Clojure 1.12] is now available! Please do take a look at the release notes - we are excited to bring you all of these improvements and looking forward to what's next! Two things we have already started on are integrating Java virtual threads into core.async and updating the baseline JVM version for the next version of Clojure. More to come in the future I'm sure. + +If you want to get the latest updates on Clojure and Datomic, you should definitely check out two upcoming events - https://2024.heartofclojure.eu/[Heart of Clojure] Sept 18-19 in Leuven, Belgium and https://2024.clojure-conj.org[Clojure/conj] Oct 23-25 in Alexandria, Virginia. These will both be great events and a special opportunity to connect and learn from other Clojurists in Europe and the US. + +== Blogs, articles, and projects + +* https://www.clojuriststogether.org/news/q3-2024-funding-announcement/[Q3 2024 Funding Announcement] - Kathy Davis (Clojurists Together) +* https://myke.blog/posts/clojure-interactive-development-101[Clojure interactive development 101] - Mykhaylo Beliansky +* https://codewithkira.com/2024-08-31-clojurists-together-update-jul-aug-2024.html[OSS Updates July and August 2024] - Kira McLean +* https://blog.michielborkent.nl/oss-updates-jul-aug-2024.html[OSS updates July and August 2024] - Michiel Borkent +* https://www.patreon.com/posts/111272364[OSS status update: August 2024] - Nikita Prokopov +* https://scicloj.github.io/clojure-data-tutorials/projects/ml/onnx/index.html[Using ONNX models from clojure] - Carsten Behring + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/jf/bb-ops[bb-ops] - A collection of babashka recipes for your TechOps needs +* https://github.com/clojure/tools.macro[tools.macro] 0.2.1 - Utilities for macro writers +* https://github.com/metosin/malli[malli] https://github.com/metosin/malli/releases/tag/0.16.3[0.16.3] - High-performance data-driven data specification library for Clojure/Script +* https://github.com/k13labs/hierarchy[hierarchy] https://github.com/k13labs/hierarchy/blob/main/CHANGELOG.md[0.0.2] - An opinionated Clojure library primarily designed to enhance the built-in hierarchy functions +* https://github.com/cursive-ide/cursive[cursive] https://cursive-ide.com/blog/inline-repl-results.html[1.14.0-dev13] - The IDE for beautiful Clojure code +* https://github.com/flow-storm/clofidence[clofidence] https://github.com/flow-storm/clofidence/blob/master/CHANGELOG.md[0.4.0] - Bolster your Clojure test suite confidence +* https://github.com/babashka/nbb[nbb] https://github.com/babashka/nbb/blob/main/CHANGELOG.md[1.2.192] - Scripting in Clojure on Node.js using SCI +* https://github.com/flow-storm/clojure[ClojureStorm] https://github.com/flow-storm/clojure/blob/clojure-storm-master/CHANGELOG.md[1.12.0-rc2] - A fork of the official Clojure compiler, with some extra code added to make it a dev compiler +* https://github.com/BetterThanTomorrow/calva[calva] https://github.com/BetterThanTomorrow/calva/releases/tag/v2.0.468[2.0.468] - Clojure & ClojureScript Interactive Programming for VS Code +* https://github.com/adityaathalye/usermanager-first-principles[usermanager-first-principles] - A "from first principles" variant of "usermanager-example", the tutorial Clojure web application by Sean Corfield \ No newline at end of file diff --git a/content/news/2024/09/13/deref.adoc b/content/news/2024/09/13/deref.adoc new file mode 100644 index 00000000..33c3c143 --- /dev/null +++ b/content/news/2024/09/13/deref.adoc @@ -0,0 +1,50 @@ += Clojure Deref (Sept 13, 2024) +Alex Miller +2024-09-13 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=WO6mVURUky4[Clojurists Together Q3 2024 project: Scicloj - initial work plan] - Sci Cloj + +== Blogs, articles, and projects + +* https://www.clojuriststogether.org/news/2024-board-nominations-and-our-annual-meeting/[2024 Board Nominations and Our Annual Meeting] - Kathy Davis (Clojurists Together) +* https://clojure-goes-fast.com/blog/clj-async-profiler-130/[clj-async-profiler 1.3.0: new sidebar and snappier rendering] - Oleksandr Yakushev +* https://scicloj.github.io/clojure-data-tutorials/projects/ml/sklearn-clj/index.html[A tutorial on using models from Python sklearn from Clojure] - Carsten Behring +* https://medium.com/@deshpande.mihir7/deepwalking-in-clojure-0b2c4eacd4e0[Deepwalking in Clojure] - Mihir Deshpande +* https://yyhh.org/blog/2024/09/competing-for-the-job-with-a-triplestore/[Competing for the JOB with a Triplestore] - Huahai Yang +* https://increasinglyfunctional.com/2024/09/04/passkeys-react-native-clojure-part-iv.html[Passkeys for React Native with Clojure, Part IV] - Joshua Miller + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/clojure/brew-install[brew-install] https://github.com/clojure/brew-install/blob/1.12.0/CHANGELOG.md[1.12.0.1479] - Clojure CLI installer +* https://github.com/seancorfield/deps-new[deps-new] https://github.com/seancorfield/deps-new/blob/develop/CHANGELOG.md[0.8.0] - Create new projects for the Clojure CLI / deps.edn +* https://github.com/raystubbs/zero[zero] 0.1.21 - Build Web UIs in ClojureScript +* https://github.com/damn/core[core] - Endless Vampire Roguelike +* https://github.com/noahtheduke/splint[splint] https://github.com/NoahTheDuke/splint/blob/main/CHANGELOG.md[1.17.0] - A Clojure linter focused on style and code shape +* https://github.com/clojure-goes-fast/clj-async-profiler[clj-async-profiler] 1.3.0 - Embedded high-precision Clojure profiler +* https://github.com/clj-commons/clj-yaml[clj-yaml] https://github.com/clj-commons/clj-yaml/blob/master/CHANGELOG.adoc#v1.0.28[1.0.28] - YAML encoding and decoding for Clojure +* https://github.com/exoscale/lingo[lingo] 1.0.5 - spec explain improved +* https://github.com/withjak/inspector[inspector] 1.1.3 - See what your functions are doing +* https://github.com/babashka/babashka[babashka] https://github.com/babashka/babashka/blob/master/CHANGELOG.md[1.4.192] - Native, fast starting Clojure interpreter for scripting +* https://github.com/xtdb/xtdb[xtdb] https://github.com/xtdb/xtdb/releases/tag/v2.0.0-b1[2.0.0-beta1] - An immutable SQL database for application development, time-travel reporting and data compliance +* https://github.com/cursive-ide/cursive[cursive] https://cursive-ide.com/blog/cursive-1.14.0-eap1.html[1.14.0-eap1] - The IDE for beautiful Clojure code +* https://github.com/scicloj/kindly[kindly] https://github.com/scicloj/kindly/blob/main/CHANGELOG.md[4-beta12] - A small library for defining how different kinds of things should be rendered +* https://github.com/flow-storm/clojure[ClojureStorm] https://github.com/flow-storm/clojure/blob/clojure-storm-master/CHANGELOG.md[1.12.0-rc2] - A fork of the official Clojure compiler, with some extra code added to make it a dev compiler +* https://github.com/babashka/bbin[bbin] https://github.com/babashka/bbin/blob/main/CHANGELOG.md[0.2.4] - Install any Babashka script or project with one command +* https://github.com/scicloj/kindly-advice[kindly-advice] https://github.com/scicloj/kindly-advice/blob/main/CHANGELOG.md[1-beta8] - A small library to advise Clojure data visualization and notebook tools how to display forms and values, following the kindly convention +* https://github.com/practicalli/project-templates[project-templates] https://github.com/practicalli/project-templates/releases/tag/2024-09-09[2024-09-09] - Clojure CLI Production level templates for seancorfield/deps-new +* https://github.com/practicalli/clojure-cli-config[clojure-cli-config] https://github.com/practicalli/clojure-cli-config/releases/tag/2024-09-09[2024-09-09] - User aliases and Clojure CLI configuration for deps.edn based projects +* https://github.com/eerohele/pp[pp] https://github.com/eerohele/pp/blob/main/CHANGELOG.md#2024-09-0969[2024-09-09.69] - Pretty-print Clojure data structures, fast +* https://github.com/babashka/http-client[http-client] https://github.com/babashka/http-client/blob/main/CHANGELOG.md[0.4.21] - HTTP client for Clojure and Babashka built on java.net.http +* https://github.com/BetterThanTomorrow/calva[calva] https://github.com/BetterThanTomorrow/calva/releases/tag/v2.0.471[2.0.471] - Clojure & ClojureScript Interactive Programming for VS Code +* https://github.com/borkdude/deps.clj[deps.clj] https://github.com/borkdude/deps.clj/blob/master/CHANGELOG.md[1.12.0.1479] - A faithful port of the clojure CLI bash script to Clojure +* https://github.com/scicloj/cmdstan-clj[cmdstan-clj] https://github.com/scicloj/cmdstan-clj/blob/main/CHANGELOG.md[1-alpha3] - Using the Stan statistical modelling language from Clojure using the CmdStan CLI +* https://github.com/squint-cljs/cherry[cherry] https://github.com/squint-cljs/cherry/blob/main/CHANGELOG.md[0.3.22] - Experimental ClojureScript to ES6 module compiler \ No newline at end of file diff --git a/content/news/2024/09/17/clojure-survey-2024.adoc b/content/news/2024/09/17/clojure-survey-2024.adoc new file mode 100644 index 00000000..ee314697 --- /dev/null +++ b/content/news/2024/09/17/clojure-survey-2024.adoc @@ -0,0 +1,24 @@ += State of Clojure 2024 Survey +Alex Miller +2024-09-17 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +It's time for the annual State of Clojure Community Survey! + +If you are a user of Clojure or ClojureScript, we are greatly interested in your responses to the following survey: + +* https://www.surveymonkey.com/r/clojure2024[State of Clojure 2024] + +The survey contains five pages: + +1. Your background and use of Clojure +2. Your tools +2. Clojure JVM Questions +3. ClojureScript Questions +4. Final thoughts + +Most questions are not required, so please skip any questions that are not applicable. + +The survey will close Oct 4th, after which all of the data will be released with some analysis. We greatly appreciate your input! diff --git a/content/news/2024/09/19/deref.adoc b/content/news/2024/09/19/deref.adoc new file mode 100644 index 00000000..1493308d --- /dev/null +++ b/content/news/2024/09/19/deref.adoc @@ -0,0 +1,44 @@ += Clojure Deref (Sept 19, 2024) +Alex Miller +2024-09-19 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== From the core + +Hey, it's that time again - PLEASE fill out the https://www.surveymonkey.com/r/clojure2024[2024 State of Clojure survey]. Most questions are optional, feel free to skip the ones that don't apply. + +Watching from afar, it looks like https://2024.heartofclojure.eu/[Heart of Clojure] was a rousing success as expected! I was sorry to miss it. If you missed it, the https://2024.clojure-conj.org[Clojure/conj] is coming up soon though Oct 23-25. Get your tickets now and let's have a great time! + +== Podcasts, videos, and media + +* https://soundcloud.com/clojurestream/e98-clojure-1-12-with-alex-miller[E98 Clojure 1.12 with Alex Miller] - ClojureStream Podcast +* https://www.youtube.com/watch?v=PDWkEnZ_X-0[Grinding parenthesis to form Rubies (by Maurício Szabo)] - London Clojurians +* https://www.youtube.com/watch?v=9vkYDyZcGFI[Meetup: Collaborative Learning - HoneySQL] - Los Angeles Clojure Users Group +* https://www.youtube.com/watch?v=mWe39dHt80w[Building a simple concurrent task queue on PostgreSQL only with Clojure code sample] - Andrey Fadeev +* https://www.youtube.com/watch?v=BNv3n6GGCoc[Learn Clojure – Macros] - Clojure Diary + +== Blogs, articles, and projects + +* https://www.surveymonkey.com/r/clojure2024[2024 State of Clojure Survey] - Clojure Team +* https://pragprog.com/titles/mmclobrain/clojure-brain-teasers/[Clojure Brain Teasers] - Alex Miller and Lorilyn Jordan Miller +* https://gaiwan.co/blog/heart-of-clojure-2024-is-around-the-corner/[Heart of Clojure 2024 is Around the Corner] - Gaiwan +* https://www.latacora.com/blog/2024/09/13/datomic-and-content-addressable-techniques/[Datomic and Content Addressable Techniques: An Ultimate Data Wonderland] - Latacora +* https://buttondown.com/tensegritics-curiosities/archive/always-animating/[Always Animating] - Buttondown +* https://jmglov.net/blog/2024-09-18-podcast-soundcljoud.html[Building a podcast with Clojure] - Josh Glover + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/dundalek/stratify[stratify] https://github.com/dundalek/stratify/blob/master/CHANGELOG.md[0.2.0] - Explore and improve architecture of software, visualize structure and dependencies of codebases, calculate code metrics +* https://github.com/metosin/jsonista[jsonista] https://github.com/metosin/jsonista/blob/master/CHANGELOG.md[0.3.11] - Clojure library for fast JSON encoding and decoding +* https://github.com/scicloj/hanamicloth[hanamicloth] https://github.com/scicloj/hanamicloth/blob/main/CHANGELOG.md[1-alpha7-SNAPSHOT] - Easy layered graphics with Hanami & Tablecloth +* https://github.com/scicloj/clay[clay] https://github.com/scicloj/clay/blob/main/CHANGELOG.md[2-beta16] - A tiny Clojure tool for dynamic workflow of data visualization and literate programming +* https://github.com/fulcrologic/fulcro-rad-semantic-ui[fulcro-rad-semantic-ui] 1.4.3 - Semantic UI Rendering Plugin for RAD +* https://github.com/BetterThanTomorrow/calva[calva] https://github.com/BetterThanTomorrow/calva/blob/published/CHANGELOG.md[2.0.472] - Clojure & ClojureScript Interactive Programming for VS Code +* https://github.com/chr15m/sitefox[sitefox] 0.0.24 - Node + cljs backend web framework +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-alpha6] - A clojure framework for data science \ No newline at end of file diff --git a/content/news/2024/09/26/deref.adoc b/content/news/2024/09/26/deref.adoc new file mode 100644 index 00000000..44700dfa --- /dev/null +++ b/content/news/2024/09/26/deref.adoc @@ -0,0 +1,49 @@ += Clojure Deref (Sept 26, 2024) +Alex Miller +2024-09-26 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://vimeo.com/1012840548[Apropos 2024-09-24] - Apropos Clojure +* https://www.youtube.com/watch?v=GA-M9uguA78[Did you know CoPilot and Calva could do this?] - CalvaTV +* https://www.youtube.com/watch?v=nvNRFefnIcM[Making CoPilot evaluations consider the namespace] - CalvaTV +* https://www.youtube.com/watch?v=VQZJGpUA1wY&t=158s[Clojure Corner: Interview with Kira Mclean] - Flexiana +* https://www.youtube.com/watch?v=YSgTQzHYeLU[11 insights after 11 years with the functional database Datomic - Magnar Sveen - NDC Oslo 2024] - NDC Conferences +* https://www.youtube.com/watch?v=GEqzw6V31tk[People of Heart of Clojure - The Unofficial Hallway Track 2024] - Toni Talks Dev +* https://www.youtube.com/watch?v=-kz5tlJ3kUE[Example ClojureScript Reagent apps generated with Claude.ai and Scittle] - mccormix +* https://www.youtube.com/watch?v=qAbPi-jU8dw[Setting up Claude.ai to Generate ClojureScript Reagent apps] - mccormix + +== Blogs, articles, and projects + +* https://thomascothran.tech/2024/09/in-clojure/[Behavioral Programming in Clojure] - Thomas Cothran + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/noahtheduke/lazytest[lazytest] https://github.com/NoahTheDuke/lazytest/blob/main/CHANGELOG.md[0.5.0] - A standalone BDD test framework for Clojure +* https://github.com/taoensso/telemere[telemere] https://github.com/taoensso/telemere/releases/tag/v1.0.0-beta25[1.0.0-beta25] - Structured telemetry library for Clojure/Script +* https://github.com/BirkeyCo/simple-img-editor[simple-img-editor] - A simple image editor POC prototype in pure ClojureScript and JavaScript using HTML Canvas API +* https://github.com/raystubbs/nvim-cljfmt-indents[nvim-cljfmt-indents] - Cljfmt based indentation function for NeoVim +* https://github.com/juji-io/editscript[editscript] https://github.com/juji-io/editscript/blob/master/CHANGELOG.md[0.6.4] - A library to diff and patch Clojure/ClojureScript data structures +* https://github.com/damn/clojure.world[clojure.world] - DSL for writing games in clojure +* https://github.com/m3tti/clj-mnl-web[clj-mnl-web] - Minimal Web Template for clojure +* https://github.com/ikappaki/basilisp-pprint[basilisp-pprint] https://github.com/ikappaki/basilisp-pprint/blob/main/CHANGELOG.md[0.1.0] - A Port of the Clojure Pretty Printer Library to Basilisp +* https://github.com/noahtheduke/splint[splint] https://github.com/NoahTheDuke/splint/blob/main/CHANGELOG.md[1.17.1] - A Clojure linter focused on style and code shape +* https://github.com/fulcrologic/fulcro-rad-semantic-ui[fulcro-rad-semantic-ui] 1.4.4 - Semantic UI Rendering Plugin for RAD +* https://github.com/clj-commons/pretty[pretty] https://github.com/clj-commons/pretty/blob/main/CHANGES.md[3.2.0] - Library for helping print things prettily, in Clojure - ANSI fonts, formatted exceptions +* https://github.com/hlship/trace[trace] https://github.com/hlship/trace/blob/main/CHANGES.md[1.4] - Better REPL based debugging output +* https://github.com/soulspace-org/overarch[overarch] https://github.com/soulspace-org/overarch/blob/main/Changelog.md[0.31.0] - A data driven description of software architecture based on UML and the C4 model +* https://github.com/scicloj/hanamicloth[hanamicloth] https://github.com/scicloj/hanamicloth/blob/main/CHANGELOG.md[1-alpha8] - Easy layered graphics with Hanami & Tablecloth +* https://github.com/scicloj/sklearn-clj[sklearn-clj] https://github.com/scicloj/sklearn-clj/blob/main/CHANGELOG.md[0.4.1] - Plugin to use sklearn models in metamorph.ml +* https://github.com/BetterThanTomorrow/calva[calva] https://github.com/BetterThanTomorrow/calva/blob/published/CHANGELOG.md[2.0.475] - Clojure & ClojureScript Interactive Programming for VS Code +* https://github.com/hlship/cli-tools[cli-tools] https://github.com/hlship/cli-tools/blob/main/CHANGES.md[0.13] - CLIs and subcommands for Clojure or Babashka +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-alpha7.1] - A clojure framework for data science +* https://github.com/squint-cljs/squint[squint] https://github.com/squint-cljs/squint/blob/main/CHANGELOG.md[0.8.114] - Light-weight ClojureScript dialect +* https://github.com/clojure-goes-fast/clj-async-profiler[clj-async-profiler] https://github.com/clojure-goes-fast/clj-async-profiler/blob/master/CHANGELOG.md[1.3.1] - Embedded high-precision Clojure profiler +* https://github.com/flow-storm/flow-storm-debugger[flow-storm-debugger] https://github.com/flow-storm/flow-storm-debugger/blob/master/CHANGELOG.md[3.17.4] - A debugger for Clojure and ClojureScript with some unique features \ No newline at end of file diff --git a/content/news/2024/10/03/deref.adoc b/content/news/2024/10/03/deref.adoc new file mode 100644 index 00000000..047e62de --- /dev/null +++ b/content/news/2024/10/03/deref.adoc @@ -0,0 +1,49 @@ += Clojure Deref (Oct 3, 2024) +Alex Miller +2024-10-03 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=olTNZeKpc2M[Maintainable Clojure code: Visualizing structure and quality metrics (by Jakub Dundalek)] - London Clojurians +* https://www.youtube.com/watch?v=KUVxFGz1jCE[Generating multiplication tables with Clojure] - Clojure Diary + +== Blogs, articles, and projects + +* https://andersmurphy.com/2024/09/26/how-to-max-throughput-when-pulling-data-from-a-third-party-service.html[How to max throughput when pulling data from a third party service] - Anders Murphy +* link:++https://blog.agical.se/en/posts/the-programming-language-doesn-x-t-matter--until-it-does/++[The programming language doesn't matter, until it does] - Peter Strömberg +* https://www.ooloi.org/home/from-clos-to-closure-in-clojure[From CLOS to closure in Clojure] - Peter Bengtson +* https://github.com/m3tti/m3tti.github.io/blob/master/borkweb-babashkas-first-webframework.md[Babashka's First Web Framework] - Mathäus Sander +* https://github.com/m3tti/m3tti.github.io/blob/master/on-building-a-blog-in-borkweb.md[Building a Blog in Borkweb] - Mathäus Sander +* https://neuroning.com/boardgames-exercise/[Coding Exercise: Modeling Chess] - Fernando Dobladez +* https://blog.redplanetlabs.com/2024/09/30/migrating-terabytes-of-data-instantly-can-your-alter-table-do-this/[Migrating terabytes of data instantly (can your ALTER TABLE do this?)] - rplsam (Red Planet Labs) +* https://buttondown.com/tensegritics-curiosities/archive/game-tutorial-in-clojuredart/[Breakout Game in ClojureDart] - Tensegritics Curiosities + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/danlentz/clj-uuid[clj-uuid] https://github.com/danlentz/clj-uuid/releases/tag/0.2.0[0.2.0] - RFC9562 Unique Identifiers (v1,v3,v4,v5,v6,v7,v8,squuid) for Clojure +* https://github.com/clj-kondo/clj-kondo[clj-kondo] https://github.com/clj-kondo/clj-kondo/blob/master/CHANGELOG.md[2024.09.27] - Static analyzer and linter for Clojure code that sparks joy +* https://github.com/tonsky/Clojure-Sublimed[Clojure-Sublimed] https://github.com/tonsky/Clojure-Sublimed/blob/master/CHANGELOG.md[4.2.2] - Clojure support for Sublime Text 4 +* https://github.com/eerohele/tab[tab] https://github.com/eerohele/tab/blob/main/CHANGELOG.md[2024-09-27] - A tool for tabulating Clojure collections +* https://github.com/nextjournal/markdown[markdown] https://github.com/nextjournal/markdown/blob/main/CHANGELOG.md[0.6.157] - A cross-platform clojure/script parser for Markdown +* https://github.com/clj-commons/etaoin[etaoin] https://github.com/clj-commons/etaoin/blob/master/CHANGELOG.adoc#v1.1.42[1.1.42] - Pure Clojure Webdriver protocol implementation +* https://github.com/m3tti/borkweb[borkweb] - 🥇 babashka`s first fullstack clojure framework. That works with jvm clojure. ❗Batteries included❗ +* https://github.com/lispyclouds/navi[navi] https://github.com/lispyclouds/navi/releases/tag/0.0.9[0.0.9] - A tiny, data-driven library converting OpenAPI spec to Reitit routes +* https://github.com/nubank/lein-add-libs[lein-add-libs] - Enable using add-lib from within a lein project +* https://github.com/weavejester/cljfmt[cljfmt] https://github.com/weavejester/cljfmt/blob/master/CHANGELOG.md[0.13.0] - A tool for formatting Clojure code +* https://github.com/cjohansen/lookup[lookup] 2024.10.01 - Find content of interest in hiccup data +* https://github.com/IGJoshua/coffi[coffi] https://github.com/IGJoshua/coffi/blob/master/CHANGELOG.md[1.0.450] - A Foreign Function Interface in Clojure for JDK 22+ +* https://github.com/scicloj/metamorph.ml[metamorph.ml] 0.9.0 - Machine learning functions for metamorph based on machine learning pipelines +* https://github.com/scicloj/scicloj.ml.tribuo[scicloj.ml.tribuo] https://github.com/scicloj/scicloj.ml.tribuo/blob/master/CHANGELOG.md[0.1.3] - Use Tribuo ML model in metamorph.ml +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-alpha9.1] - A clojure framework for data science +* https://github.com/pedestal/pedestal[pedestal] https://github.com/pedestal/pedestal/blob/master/CHANGELOG.md[0.7.1] - The Pedestal Server-side Libraries +* https://github.com/BetterThanTomorrow/calva[calva] https://github.com/BetterThanTomorrow/calva/blob/published/CHANGELOG.md[2.0.479] - Clojure & ClojureScript Interactive Programming for VS Code +* https://github.com/scicloj/clay[clay] https://github.com/scicloj/clay/blob/main/CHANGELOG.md[2-beta17] - A tiny Clojure tool for dynamic workflow of data visualization and literate programming +* https://github.com/chr15m/sitefox[sitefox] 0.0.25 - Node + cljs backend web framework +* https://github.com/clojure-goes-fast/clj-async-profiler[clj-async-profiler] https://github.com/clojure-goes-fast/clj-async-profiler/blob/master/CHANGELOG.md[1.3.2] - Embedded high-precision Clojure profiler diff --git a/content/news/2024/10/11/deref.adoc b/content/news/2024/10/11/deref.adoc new file mode 100644 index 00000000..95afa968 --- /dev/null +++ b/content/news/2024/10/11/deref.adoc @@ -0,0 +1,43 @@ += Clojure Deref (Oct 11, 2024) +Alex Miller +2024-10-11 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://vimeo.com/1012840548[Apropos 2024-09-24] - Apropos Clojure +* https://www.youtube.com/watch?v=1NkrY9FWsKc[Building Reddit's r/place in Clojure and Clojurescript - Part 1] - Unravel Tech +* https://www.youtube.com/watch?v=ehR-KIgw7T8[Run, Build and Grow Small Systems Without Leaving Your Text Editor | LIVE 2024] - Albert Zak + +== Blogs, articles, and projects + +* https://www.kpassa.me/posts/happyapi-temporal/[What color is your auth? OAuth2 with Clojure and Temporal] - Kyle S Passarelli +* https://www.patreon.com/posts/transparency-113308530[Transparency report, September 2024] - Nikita Prokopov +* https://scicloj.github.io/blog/clojurists-together-project-scicloj-community-building-september-2024-update/[Clojurists Together project - Scicloj community building - September 2024 update] - Daniel Slutsky +* https://biffweb.com/p/rocksdb-indexes-yakread/[RocksDB indexes are done, open-sourcing Yakread next] - Jacob O'Bryant +* https://andersmurphy.com/2024/10/07/clojure-synchronous-server-sent-events-with-virtual-threads-and-channels.html[Clojure: Synchronous server sent events with virtual threads and channels] - Anders Murphy +* https://www.ovistoica.com/blog/20241009T084633--the-best-way-to-handle-svg-icons-in-fullstack-clojure-project__blog_clojure_clojurescript_web[The Best Way To Handle SVG Icons in FullStack Clojure Project] - Ovi Stoica + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/noahtheduke/lazytest[lazytest] https://github.com/NoahTheDuke/lazytest/blob/main/CHANGELOG.md[1.1.1] - A standalone BDD test framework for Clojure +* https://github.com/noahtheduke/splint[splint] https://github.com/NoahTheDuke/splint/blob/main/CHANGELOG.md[1.18.0] - A Clojure linter focused on style and code shape +* https://github.com/yaml/yamlscript[yamlscript] https://github.com/yaml/yamlscript/blob/main/Changes[0.1.79] - Programming in YAML +* https://github.com/dundalek/theodora[theodora] 0.1.0 - Parse Graphviz graphs as data +* https://github.com/juji-io/datalevin[datalevin] https://github.com/juji-io/datalevin/blob/master/CHANGELOG.md[0.9.12] - A simple, fast and versatile Datalog database +* https://github.com/igrishaev/deed[deed] https://github.com/igrishaev/deed/blob/master/CHANGELOG.md[0.1.0] - Fast, flexible, 0-deps (de)serialization library for Clojure +* https://github.com/scicloj/scicloj.ml.xgboost[scicloj.ml.xgboost] https://github.com/scicloj/scicloj.ml.xgboost/blob/main/CHANGELOG.md[6.1.0] - A xgboost plugin for scicloj.ml +* https://github.com/IGJoshua/coffi[coffi] https://github.com/IGJoshua/coffi/blob/master/CHANGELOG.md[1.0.486] - A Foreign Function Interface in Clojure for JDK 22+ +* https://github.com/clojure-goes-fast/clj-async-profiler[clj-async-profiler] https://github.com/clojure-goes-fast/clj-async-profiler/blob/master/CHANGELOG.md[1.3.3] - Embedded high-precision Clojure profiler +* https://github.com/scicloj/hanamicloth[hanamicloth] https://github.com/scicloj/hanamicloth/blob/main/CHANGELOG.md[1-alpha9] - Easy layered graphics with Hanami & Tablecloth +* https://github.com/quoll/tiara[tiara] 0.3.7 - A small data structure library +* https://github.com/squint-cljs/squint[squint] https://github.com/squint-cljs/squint/blob/main/CHANGELOG.md[0.8.116] - Light-weight ClojureScript dialect +* https://github.com/seancorfield/honeysql[honeysql] https://github.com/seancorfield/honeysql/releases/tag/v2.6.1196[2.6.1196] - Turn Clojure data structures into SQL +* https://github.com/babashka/scittle[scittle] https://github.com/babashka/scittle/blob/main/CHANGELOG.md[0.6.19] - Execute Clojure(Script) directly from browser script tags via SCI +* https://github.com/uncomplicate/neanderthal[neanderthal] 0.49.2 - Fast Clojure Matrix Library \ No newline at end of file diff --git a/content/news/2024/10/18/deref.adoc b/content/news/2024/10/18/deref.adoc new file mode 100644 index 00000000..66c9dcf4 --- /dev/null +++ b/content/news/2024/10/18/deref.adoc @@ -0,0 +1,55 @@ += Clojure Deref (Oct 18, 2024) +Alex Miller +2024-10-18 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=mmOh5fYkX7Q[Clojure real-world-data #15 - Snippet 1 - Kyle Passarelli: OAuth2 with Clojure and Temporal] - Sci Cloj +* https://www.youtube.com/watch?v=G1vpz_43YpI[Clojure real-world-data #15 - Snippet 2 - Adham Omram: Experience Conducting a Clojure Training] - Sci Cloj +* https://www.youtube.com/@LambdaIsland/videos[Heart of Clojure 2024 Videos] - Lambda Island +* https://zencastr.com/z/35HpiUF7[Heart of Clojure] - @defn podcast +* https://www.youtube.com/watch?v=z8zEaxAdaDM[Clojure Corner: Interview with James Trunk] - Flexiana +* https://www.youtube.com/watch?v=Jdj5FGpRnyo[How Could Clojure Web Development Suck Less With Ben Sless] - ToniTalksDev +* https://www.youtube.com/watch?v=aI5rvKzGz3w[Meetup: Collaborative Learning - HoneyEQL] - Los Angeles Clojure Users Group +* https://www.youtube.com/watch?v=uu-emKMzGfE[The Highlights of a Thousands Number, a Joyride tale] - CalvaTV +* https://www.youtube.com/watch?v=Fz_kpVxVO3k[Pagination in Clojure is so easy] - Clojure Diary +* https://www.youtube.com/watch?v=FLqJNdAMVY8[Learn Clojure - Projects with Leiningen] - Clojure Diary +* https://www.youtube.com/watch?v=vK6KudZCzHg[Learn Clojure - Using External Library in Leiningen Project] - Clojure Diary +* https://www.youtube.com/watch?v=GfBVeckkMR8[3 coin flip Monte Carlo simulation in Clojure] - Clojure Diary + +== Blogs, articles, and projects + +* https://borkweb.org/blog/2024-10-10-creating-installable-web-apps.md[Creating Installable Web Apps] - Mathäus Sander +* https://blog.redplanetlabs.com/2024/10/10/rama-on-clojures-terms-and-the-magic-of-continuation-passing-style/[Rama on Clojure’s terms, and the magic of continuation-passing style] - Nathan Marz (Red Planet Labs) +* https://www.metosin.fi/blog/2024-10-10-announcing-open-source-commercial-support[Announcing Open Source Commercial Support] - Metosin +* https://buttondown.com/tensegritics-curiosities/archive/writing-the-worst-datalog-ever-in-26loc/[Writing the Worst Datalog Ever in 26loc] - Tensegritics Curiosities +* https://buttondown.com/tensegritics-curiosities/archive/half-dumb-datalog-in-30-loc/[Half Dumb Datalog in 30 loc] - Tensegritics Curiosities +* https://jank-lang.org/blog/2024-10-14-llvm-ir/[jank development update - Moving to LLVM IR] - Jeaye Wilkerson + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/jpmonettas/fs-data-window-demo[fs-data-window-demo] - Demo FlowStorm data-windows features +* https://github.com/babashka/babashka[babashka] https://github.com/babashka/babashka/blob/master/CHANGELOG.md[1.12.194] - Native, fast starting Clojure interpreter for scripting +* https://github.com/darkleaf/di[di] https://github.com/darkleaf/di/blob/master/CHANGELOG.md#310[3.1.0] - DI is a dependency injection framework that allows you to define dependencies as cheaply as defining function arguments +* https://github.com/repath-project/repath-studio[repath-studio] https://github.com/repath-project/repath-studio/blob/main/CHANGELOG.md[0.4.4] - A cross-platform vector graphics editor +* https://github.com/borkdude/qualify-methods[qualify-methods] - Rewrite your instance calls to use fully qualified methods +* https://github.com/favila/qslice[qslice] 1.0.10 - Represent partial Datomic datalog queries with their bindings and combine them safely +* https://github.com/potetm/fusebox[fusebox] https://github.com/potetm/fusebox/blob/master/CHANGELOG.md[1.0.8] - An extremely lightweight fault tolerance library for Clojure(Script) +* https://github.com/cognitect-labs/aws-api[aws-api] https://github.com/cognitect-labs/aws-api/blob/main/CHANGES.md[0.8.710-beta01] - AWS, data driven +* https://github.com/babashka/sci[sci] https://github.com/babashka/sci/blob/master/CHANGELOG.md[0.9.44] - Configurable Clojure/Script interpreter suitable for scripting and Clojure DSLs +* https://github.com/babashka/neil[neil] https://github.com/babashka/neil/blob/main/CHANGELOG.md[0.3.68] - A CLI to add common aliases and features to deps.edn-based projects +* https://github.com/nextjournal/clerk[clerk] https://github.com/nextjournal/clerk/blob/8a5aadf9cc332741bf26a5201c4519e00146e389/CHANGELOG.md#0171102-2024-10-17[0.17.1102] - ⚡️ Moldable Live Programming for Clojure +* https://github.com/yaml/yamlscript[yamlscript] https://github.com/yaml/yamlscript/releases/tag/0.1.80[0.1.80] - Programming in YAML +* https://github.com/squint-cljs/squint[squint] https://github.com/squint-cljs/squint/blob/main/CHANGELOG.md[0.8.118] - Light-weight ClojureScript dialect +* https://github.com/phronmophobic/clong[clong] 1.4.3 - A wrapper for libclang and a generator that can turn c header files into clojure apis +* https://github.com/scicloj/kindly-advice[kindly-advice] 1-beta9 - a small library to advise Clojure data visualization and notebook tools how to display forms and values, following the kindly convention +* https://github.com/noahtheduke/lazytest[lazytest] https://github.com/NoahTheDuke/lazytest/blob/main/CHANGELOG.md[1.2.0] - A standalone BDD test framework for Clojure +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-alpha9.2] - A clojure framework for data science +* https://github.com/walmartlabs/lacinia-pedestal[lacinia-pedestal] https://github.com/walmartlabs/lacinia-pedestal/blob/master/CHANGELOG.md[1.3] - Expose Lacinia GraphQL as Pedestal endpoints \ No newline at end of file diff --git a/content/news/2024/10/25/deref.adoc b/content/news/2024/10/25/deref.adoc new file mode 100644 index 00000000..a7e3533e --- /dev/null +++ b/content/news/2024/10/25/deref.adoc @@ -0,0 +1,47 @@ += Clojure Deref (Oct 25, 2024) +Alex Miller +2024-10-25 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=4GOeYylCMJI&t=23182s[Live Programming a Live Programming Environment (with Clerk)] - Martin Kavalar +* https://www.youtube.com/watch?v=Fio6Dp-6CTk[Learn Clojure - Creating jar files in Leiningen project] - Clojure Diary +* https://www.youtube.com/watch?v=j9VVw65d96U[Refactoring handler in ring] - Clojure Diary +* https://www.youtube.com/watch?v=DLjAyxOHu40[Learn Clojure - REPL in Leiningen] - Clojure Diary + +== Blogs, articles, and projects + +* https://caveman.mccue.dev[Caveman. A Clojure Web Framework] - Ethan McCue +* https://code.thheller.com/blog/shadow-cljs/2024/10/18/fullstack-cljs-workflow-with-shadow-cljs.html[Fullstack Workflow with shadow-cljs] - Thomas Heller +* https://blog.fogus.me/2024/08/19/on-method-values-part-1/[On method values, part 1] - Fogus +* https://ryanmartin.me/articles/clojure-fly/[Fast Clojure Deployments with Fly.io] - Ryan Martin +* link:++ https://www.ovistoica.com/blog/20241022T064828--uix-shadowcljs-revolutionizing-clojure-ssr-for-interactive-landing-pages__clojure_clojurescript_react_shadowcljs_uix++[UIx + ShadowCLJS: Revolutionizing Clojure SSR for Interactive Landing Pages] - Ovi Stoica +* https://blog.phronemophobic.com/dewey-sql.html[Dewey SQL] - Adrian Smith + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/ring-clojure/ring[ring] https://github.com/ring-clojure/ring/blob/master/CHANGELOG.md[1.13.0] - Clojure HTTP server abstraction +* https://github.com/scicloj/clay[clay] https://github.com/scicloj/clay/blob/main/CHANGELOG.md[2-beta20] - A tiny Clojure tool for dynamic workflow of data visualization and literate programming +* https://github.com/noahtheduke/lazytest[lazytest] https://github.com/NoahTheDuke/lazytest/blob/main/CHANGELOG.md[1.3.0] - A standalone BDD test framework for Clojure +* https://github.com/yetanalytics/re-route[re-route] 0.1.0 - Routing wrapper library for SPAs based on re-frame +* https://github.com/clojure-goes-fast/clj-async-profiler[clj-async-profiler] https://github.com/clojure-goes-fast/clj-async-profiler/blob/master/CHANGELOG.md[1.4.0] - Embedded high-precision Clojure profiler +* https://github.com/dundalek/daba[daba] https://github.com/dundalek/daba/blob/master/CHANGELOG.md[0.2.0] - Daba is a graphical database client for REPL-enabled queries and visualization +* https://github.com/msolli/proletarian[proletarian] https://github.com/msolli/proletarian/blob/main/CHANGELOG.md#1086-alpha---2024-10-23[1.0.86-alpha] - A durable job queuing and worker system for Clojure backed by PostgreSQL +* https://github.com/babashka/nbb[nbb] https://github.com/babashka/nbb/blob/main/CHANGELOG.md[1.3.194] - Scripting in Clojure on Node.js using SCI +* https://github.com/kongeor/chickn[chickn] - Evolutionary algorithms library for Clojure(script) +* https://github.com/overtone/overtone[overtone] https://github.com/overtone/overtone/releases/tag/v0.15.3295[0.15.3295] - Collaborative Programmable Music +* https://github.com/fulcrologic/fulcro-rad-semantic-ui[fulcro-rad-semantic-ui] 1.4.5 - Semantic UI Rendering Plugin for RAD +* https://github.com/lispyclouds/navi[navi] https://github.com/lispyclouds/navi/releases/tag/0.0.10[0.0.10] - A tiny, data-driven library converting OpenAPI spec to Reitit routes +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-alpha9.3] - A clojure framework for data science +* https://github.com/BetterThanTomorrow/calva[calva] https://github.com/BetterThanTomorrow/calva/releases/tag/v2.0.480[2.0.480] - Clojure & ClojureScript Interactive Programming for VS Code +* https://github.com/flow-storm/flow-storm-debugger[flow-storm-debugger] 4.0.0-alpha2 - A debugger for Clojure and ClojureScript with some unique features +* https://github.com/seancorfield/honeysql[honeysql] https://github.com/seancorfield/honeysql/releases/tag/v2.6.1203[2.6.1203] - Turn Clojure data structures into SQL +* https://github.com/scicloj/kindly[kindly] https://github.com/scicloj/kindly/blob/main/CHANGELOG.md[4-beta13] - A small library for defining how different kinds of things should be rendered +* https://github.com/scicloj/kindly-advice[kindly-advice] https://github.com/scicloj/kindly-advice/blob/main/CHANGELOG.md[1-beta10] - A small library to advise Clojure data visualization and notebook tools how to display forms and values, following the kindly convention \ No newline at end of file diff --git a/content/news/2024/10/31/deref.adoc b/content/news/2024/10/31/deref.adoc new file mode 100644 index 00000000..78eb777e --- /dev/null +++ b/content/news/2024/10/31/deref.adoc @@ -0,0 +1,43 @@ += Clojure Deref (Oct 31, 2024) +Alex Miller +2024-10-31 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=lOaZ0SgPVu4[Telemere lightning intro] - Peter Taoussanis +* https://www.youtube.com/watch?v=ruGRHYpq448[Basilisp: Clojure on the Python VM (by Chris Rink)] - London Clojurians +* https://www.youtube.com/watch?v=STnFMpIZlkk[Scicloj status report: nurturing the Clojure open-source community, 2024-10-25] - Sci Cloj +* https://www.youtube.com/watch?v=HnybBpp4soM[Building Reddit's r/place in Clojure and Clojurescript - Part 2] - Unravel Tech +* https://www.youtube.com/watch?v=YtEEU9sjjks[Learn Clojure - Tests in Leiningen Project] - Clojure Diary + +== Blogs, articles, and projects + +* https://clyfe.infinityfreeapp.com/book.html?i=1[Hammock Web Development] - clyfe +* https://jake-windle.gitlab.io/post/llm-social-bot/[Dystopia Today: Let AI Manage Your Dev Twitter Account] - Jacob Windle +* https://timothypratley.blogspot.com/2024/10/the-hallway-track-clojureconj-2024-in.html[The Hallway Track: Clojure/Conj 2024 in Alexandria] - Timothy Pratley +* https://www.tamizhvendan.in/blog/announcing-a-book-series-how-i-solve-it-using-clojure/[Announcing a book series - How I Solve It Using Clojure] - Tamizhvendan +* https://code.thheller.com/blog/shadow-cljs/2024/10/30/supercharging-the-repl-workflow.html[Supercharging the REPL Workflow] - Thomas Heller +* https://www.patreon.com/posts/115100973[Transparency report, October 2024] - Nikita Prokopov + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/pitch-io/uix[uix] https://github.com/pitch-io/uix/blob/master/CHANGELOG.md[1.2.0-rc3] - Idiomatic ClojureScript interface to modern React.js +* https://github.com/oliyh/martian[martian] https://github.com/oliyh/martian/releases/tag/0.1.28[0.1.28] - The HTTP abstraction library for Clojure/script, supporting OpenAPI, Swagger, Schema, re-frame and more +* https://github.com/darkleaf/di[di] https://github.com/darkleaf/di/blob/master/CHANGELOG.md#320[3.2.0] - DI is a dependency injection framework that allows you to define dependencies as cheaply as defining function arguments +* https://github.com/brettatoms/zodiac[zodiac] https://github.com/brettatoms/zodiac/blob/master/CHANGELOG.md[0.2.31] - A simple web framework for Clojure +* https://github.com/BetterThanTomorrow/calva[calva] https://github.com/BetterThanTomorrow/calva/releases/tag/v2.0.481[2.0.481] - Clojure & ClojureScript Interactive Programming for VS Code +* https://git.sr.ht/~srasu/bootstring-clj[bootstring-clj] https://cljdoc.org/d/org.suskalo/bootstring-clj/1.0.13/doc/changelog[1.0.13] - Use the bootstring algorithm for encoding and decoding unicode strings to a smaller subset of the unicode space +* https://github.com/taoensso/telemere[telemere] https://github.com/taoensso/telemere/releases/tag/v1.0.0-RC1[1.0.0-RC1] - Structured telemetry library for Clojure/Script +* https://github.com/taoensso/nippy[nippy] https://github.com/taoensso/nippy/releases/tag/v3.5.0-RC1[3.5.0-RC1] - The fastest serialization library for Clojure +* https://github.com/taoensso/sente[sente] https://github.com/taoensso/sente/releases/tag/v1.20.0-RC1[1.20.0-RC1] - Realtime web comms library for Clojure/Script +* https://github.com/taoensso/timbre[timbre] https://github.com/taoensso/timbre/releases/tag/v6.6.1[6.6.1] - Pure Clojure/Script logging library +* https://github.com/scicloj/kindly-advice[kindly-advice] https://github.com/scicloj/kindly-advice/blob/main/CHANGELOG.md[1-beta11] - A small library to advise Clojure data visualization and notebook tools how to display forms and values, following the kindly convention +* https://github.com/scicloj/clay[clay] https://github.com/scicloj/clay/blob/main/CHANGELOG.md[2-beta21] - A tiny Clojure tool for dynamic workflow of data visualization and literate programming +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-alpha10] - A clojure framework for data science \ No newline at end of file diff --git a/content/news/2024/11/07/deref.adoc b/content/news/2024/11/07/deref.adoc new file mode 100644 index 00000000..51ed15c0 --- /dev/null +++ b/content/news/2024/11/07/deref.adoc @@ -0,0 +1,76 @@ += Clojure Deref (Nov 7, 2024) +Alex Miller +2024-11-07 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=Earx_BjvgO0[Welcome to Conj 2024] - Rich Hickey +* https://www.youtube.com/watch?v=eq1g6nBzKGU[Immutable Values in the Big Wide World] - Tim Ewald and Paul deGrandis +* https://www.youtube.com/watch?v=oXlb1mITJHA[Real World AI Integration: An Experience Report on Enhancing Engineering Workflows] - Carin Meier and Marlon Silva +* https://www.youtube.com/watch?v=_D5d6Ls6pBw[Scientific Clojure, a bird's eye view] - Thomas Clark +* https://www.youtube.com/watch?v=SIzIR-cHty4[Architecting Threat Intelligence with Clojure in Cybersecurity Detection & Response] - Michael Simons +* https://www.youtube.com/watch?v=vUe3slLHk20[Getting 50,000 Companies on Board with Clojure] - Cam Saul +* https://www.youtube.com/watch?v=xOPoYHxZjdc[Teaching Clojure Together] - Jordan Miller and Rafal Dittwald +* https://www.youtube.com/watch?v=oNhqqiKuUmw[Enhancing LLM Powered Development with Clojure's REPL] - Colin Fleming +* https://www.youtube.com/watch?v=VBnGhQOyTM4[Design in Practice in Practice] - Alex Miller +* https://www.youtube.com/watch?v=k7i4AEiWLW0[Transactor Performance Theory & Practice] - Joe Lane +* https://www.youtube.com/watch?v=Ia9Tixzlc_M[Deploying ML models in a Clojure environment] - Caique Lima +* https://www.youtube.com/watch?v=dvHASrrQSzg[Breaking the bank with test contract] - Allen Rohner +* https://www.youtube.com/watch?v=VhjxvEabOX0[Introducing Standard Clojure Style: no fuss code formatting] - Chris Oakman +* https://www.youtube.com/watch?v=FSTIFgn0QVU[The Next Ten Years of Overtone] - Arne Brasseur +* https://www.youtube.com/watch?v=OOtgJm-RL_I[Exploratory Design Tools for Makers] - Adam Vermeer +* https://www.youtube.com/watch?v=KeTBvSnnnaE[Game Development in Clojure] - Diana Belle +* https://www.youtube.com/watch?v=MuLbsvzZKRM[Portal - Exploring new Workflows with Visual Tools] - Chris Badahdah +* https://www.youtube.com/watch?v=wllhUfFmI2A[Transducing Healthcare: Transducers as Clinical Features] - Derek Schatzlein and Jack Mocherman +* https://www.youtube.com/watch?v=kIhY4VDa820[Clojure in live sports television] - Christoph Neumann +* https://www.youtube.com/watch?v=rZaouaZq7t8[Tools that Enable Data Driven and Containerized Testing of Multi Service Networked Systems] - Joel Martin +* https://www.youtube.com/watch?v=AVvPfnKLaSY[Introducing a lightweight, data first Clojure interpreter for tracing code] - Steven Lombardi +* https://www.youtube.com/watch?v=6FikTQf8qho[Building a Sync Engine in Clojure] - Stepan Parunashvili +* https://www.youtube.com/watch?v=nc6fTSh_1-c[Clojure for Criminal Defense] - Andrew Foltz-Morrison +* https://www.youtube.com/watch?v=cFF9E3pASyI[ClojureScript Has It All! Except Maybe for Types] - Kamil Waheed +* https://www.youtube.com/watch?v=rLJattwAceU[When Your Disney Playlist Saves Your Tech Career] - Wendy Randolph +* https://www.youtube.com/watch?v=nC86hEglyLQ[Clojure real-world-data #16 - Snippet 1 - Jarkko Saltiola: tools for pipelines, bb-glitchtip] - Sci Cloj +* https://www.youtube.com/watch?v=8TwLHQrqG4w[shadow-css for personal use - Emacs, Browser, Clojure, REPL Screencast] - faster-than-light-memes +* https://www.youtube.com/watch?v=r9YeMIqzkQ4[Clojure Corner: Interview with Daniel Slutsky] - Flexiana + +== Blogs, articles, and projects + +* https://www.clojuriststogether.org/news/applications-open-for-2025-long-term-funding/[Applications Open for 2025 Long-Term Funding] - Kathy Davis (Clojurists Together) +* https://blog.michielborkent.nl/oss-updates-sep-oct-2024.html[OSS updates September and October 2024] - Michiel Borkent +* https://codewithkira.com/2024-10-31-clojurists-together-update-sept-oct-2024.html[OSS Updates September and October 2024] - Kira Howe (McLean) +* https://www.taoensso.com/news/2024-10-open-source[Open source update] - Peter Taoussanis +* https://www.ovistoica.com/blog/2024-11-2-shipclojure-the-clojure-boilerplate-to-ship-startups-fast-complete-stack-presentation[ShipClojure: The Clojure Boilerplate to ship startups FAST - complete stack presentation] - Ovi Stoica +* https://scicloj.github.io/blog/clojurists-together-project-scicloj-community-building-october-2024-update/[Clojurists Together project - Scicloj community building - October 2024 update] - Daniel Slutsky +* https://www.daveliepmann.com/articles/idiomatic-clojure-errors.html[Idiomatic errors in Clojure] - Dave Liepmann +* https://thomascothran.tech/2024/10/a-new-paradigm/[Bthreads: A Simple and Easy Paradigm for Clojure] - Thomas Cothran +* https://buttondown.com/tensegritics-curiosities/archive/maps-implementation-secrets/[Maps Implementation Secrets] - Christophe Grand +* https://scicloj.github.io/clojure-data-tutorials/projects/ml/text-classification/index.html[Text classification with metamorph.ml and xgboost] - Carsten Behring + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/ikappaki/basilisp-blender[basilisp-blender] https://github.com/ikappaki/basilisp-blender/blob/main/CHANGELOG.md#020[0.2.0] - A library designed to facilitate the execution of Basilisp Clojure code within Blender +* https://github.com/uncomplicate/neanderthal[neanderthal] https://github.com/uncomplicate/neanderthal/blob/master/CHANGELOG.md#0500[0.50.0] - Fast Clojure Matrix Library +* https://github.com/igrishaev/pg2[pg2] https://github.com/igrishaev/pg2/blob/master/CHANGELOG.md#0120[0.1.20] - A fast PostgreSQL driver for Clojure +* https://github.com/basilisp-lang/basilisp[basilisp] https://github.com/basilisp-lang/basilisp/releases/tag/v0.3.0[0.3.0] - A Clojure-compatible(-ish) Lisp dialect targeting Python 3.9+ +* https://github.com/liquidz/elin[elin] - A Clojure development environment for Vim/Neovim and more!, primarily written in Babashka +* https://github.com/BrunoBonacci/safely[safely] https://github.com/BrunoBonacci/safely/blob/master/CHANGELOG.md#version-100-2024-11-05[1.0.0] - Safely is a Clojure's circuit-breaker library for handling retries in an elegant declarative way +* https://github.com/metosin/jsonista[jsonista] https://github.com/metosin/jsonista/blob/master/CHANGELOG.md#0312-2024-11-01[0.3.12] - Clojure library for fast JSON encoding and decoding +* https://github.com/scicloj/kindly-advice[kindly-advice] https://github.com/scicloj/kindly-advice/blob/main/CHANGELOG.md[1-beta12] - A small library to advise Clojure data visualization and notebook tools how to display forms and values, following the kindly convention +* https://github.com/pedestal/pedestal[pedestal] https://github.com/pedestal/pedestal/blob/master/CHANGELOG.md#072---1-nov-2024[0.7.2] - The Pedestal Server-side Libraries +* https://github.com/scicloj/kind-pyplot[kind-pyplot] https://github.com/scicloj/kind-pyplot/blob/main/CHANGELOG.md#1-beta21---2024-07-27[1-beta2.1] - Visualizing python plots with the Clojure Kindly convention +* https://github.com/soulspace-org/overarch[overarch] https://github.com/soulspace-org/overarch/blob/main/Changelog.md#version-0320[0.32.0] - A data driven model of software systems based on UML and the C4 model +* https://github.com/scicloj/tableplot[tableplot] https://github.com/scicloj/tableplot/blob/main/CHANGELOG.md#1-alpha12---2024-01-03[1-alpha12] - Easy layered graphics with Hanami & Tablecloth +* https://github.com/practicalli/clojure-cli-config[clojure-cli-config] https://github.com/practicalli/clojure-cli-config/releases/tag/2024-11-03[2024-11-03] - User aliases and Clojure CLI configuration for deps.edn based projects +* https://github.com/msolli/proletarian[proletarian] https://github.com/msolli/proletarian/blob/main/CHANGELOG.md#1089-alpha---2024-11-04[1.0.89-alpha] - A durable job queuing and worker system for Clojure backed by PostgreSQL or MySQL +* https://github.com/replikativ/mercurius[mercurius] - Payment provider for open source licenses with payment requirements +* https://github.com/squint-cljs/squint[squint] https://github.com/squint-cljs/squint/blob/main/CHANGELOG.md#v08123-2024-11-05[0.8.123] - Light-weight ClojureScript dialect +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-alpha11] - A clojure framework for data science +* https://github.com/clojure/core.unify[core.unify] 0.7.0 - Unification library +* https://github.com/scicloj/metamorph.ml[metamorph.ml] https://github.com/scicloj/metamorph.ml/blob/main/CHANGELOG.md[0.10.1] - Machine learning functions for metamorph based on machine learning pipelines diff --git a/content/news/2024/11/15/deref.adoc b/content/news/2024/11/15/deref.adoc new file mode 100644 index 00000000..b797d441 --- /dev/null +++ b/content/news/2024/11/15/deref.adoc @@ -0,0 +1,62 @@ += Clojure Deref (Nov 15, 2024) +Alex Miller +2024-11-15 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=i8BDOGg7SZ8[Developers aren't paid to code] - Wesley Matson +* https://www.youtube.com/watch?v=OxzUjpihIH4[RDF and the future of LLMs] - Luke VanderHart +* https://www.youtube.com/watch?v=3t9FSfM1fIQ[Crafting Artisanal Vector Graphics] - Timothy Pratley and Chris Houser +* https://www.youtube.com/watch?v=CVmno8nLM6Y[From JVM to JS: Implementing Math Functions in ClojureScript] - Paula Gearon +* https://www.youtube.com/watch?v=W2Y6G9tSg5E[Unsession: Clojure 1.12 Overview] - Clojure team +* https://www.youtube.com/watch?v=1piLCCu1OwE[Unsession: AI coding tools] - Wesley Matson +* https://www.youtube.com/watch?v=0_JYCAOKKcM[Encoding internet-scale decentralised data structures on Convex (by Mike Anderson)] - London Clojurians +* https://www.youtube.com/watch?v=oyl_etajtGk[Clojure Corner: Interview with Peter Strömberg] - Flexiana +* https://www.youtube.com/watch?v=HFQWNhtPbOo[Mind-bending technologies, lightning talk] - Jakub Holý +* https://zencastr.com/z/mLHDH_Gi[15e670d6e60c Kathryn Lawrence] - defn +* https://vimeo.com/1029016402[Apropos November 12, 2024] - Apropos Clojure +* https://www.youtube.com/watch?v=Ll8_4MbErLc[Solving Project Euler problem 8 with Clojure] - Clojure Diary +* https://www.youtube.com/watch?v=dGvNIchcaSo[Solving Project Euler problem 9 with Clojure] - Clojure Diary + +== Blogs, articles, and projects + +* https://ericnormand.substack.com/p/a-love-letter-to-heart-of-clojure[A love letter to Heart of Clojure] - Eric Normand +* https://corfield.org/blog/2024/11/09/conj-2024/[Clojure/conj 2024] - Sean Corfield +* https://scicloj.github.io/blog/scicloj-scientific-papers-initial-planning-meeting/[Scicloj scientific papers - initial planning meeting] - Thomas Clark and Daniel Slutsky +* https://blog.saketpatel.me/clj-automation-1[Clojure Automation #1] - Saket Patel +* https://github.com/pitch-io/uix/blob/master/DEVLOG.md#october-2024[UIx Devlog] - Roman Liutikov + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/overtone/overtone[overtone] https://github.com/overtone/overtone/releases/tag/v0.16.3331[0.16.3331] - Collaborative Programmable Music +* https://github.com/weavejester/ragtime[ragtime] https://github.com/weavejester/ragtime/blob/master/CHANGELOG.md[0.10.1] - Database-independent migration library +* https://github.com/cursive-ide/cursive[cursive] https://cursive-ide.com/blog/cursive-1.14.0.html[1.14.0] - Cursive: The IDE for beautiful Clojure code +* https://github.com/juji-io/datalevin[datalevin] https://github.com/juji-io/datalevin/blob/master/CHANGELOG.md[0.9.13] - A simple, fast and versatile Datalog database +* https://github.com/clojure-lsp/clojure-lsp[clojure-lsp] https://github.com/clojure-lsp/clojure-lsp/releases/tag/2024.11.08-17.49.29[2024.11.08-17.49.29] - Clojure & ClojureScript Language Server (LSP) implementation +* https://github.com/flow-storm/flow-storm-debugger[flow-storm-debugger] https://github.com/flow-storm/flow-storm-debugger/blob/master/CHANGELOG.md[4.0.0] - A debugger for Clojure and ClojureScript with some unique features +* https://github.com/babashka/babashka[babashka] https://github.com/babashka/babashka/blob/master/CHANGELOG.md[1.12.195] - Native, fast starting Clojure interpreter for scripting +* https://github.com/phronmophobic/usearch.clj[usearch.clj] - A clojure wrapper for usearch, a fast open-source search & clustering engine for vectors +* https://github.com/phronmophobic/whisper.clj[whisper.clj] - Audio Transcription using whisper.cpp +* https://github.com/pitch-io/uix[uix] https://github.com/pitch-io/uix/blob/master/CHANGELOG.md[1.2.0] - Idiomatic ClojureScript interface to modern React.js +* https://github.com/clj-kondo/clj-kondo[clj-kondo] https://github.com/clj-kondo/clj-kondo/blob/master/CHANGELOG.md[2024.11.14] - Static analyzer and linter for Clojure code that sparks joy +* https://github.com/paintparty/fireworks[fireworks] https://github.com/paintparty/fireworks/blob/main/CHANGELOG.md[0.10.3] - Fireworks is a themeable tapping library for Clojure, ClojureScript, and Babashka +* https://github.com/babashka/nbb[nbb] https://github.com/babashka/nbb/blob/main/CHANGELOG.md[1.3.195] - Scripting in Clojure on Node.js using SCI +* https://github.com/scicloj/clay[clay] https://github.com/scicloj/clay/blob/main/CHANGELOG.md[2-beta23] - A tiny Clojure tool for dynamic workflow of data visualization and literate programming +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-alpha12] - A clojure framework for data science +* https://github.com/phronmophobic/clj-libffi[clj-libffi] - A wrapper for libffi +* https://github.com/phronmophobic/objcjure[objcjure] - A clojure DSL for calling objective c code +* https://github.com/replikativ/konserve-dynamodb[konserve-dynamodb] - DynamoDB backend for konserve +* https://github.com/replikativ/datahike-dynamodb[datahike-dynamodb] - DynamoDB backend for datahike +* https://github.com/ikappaki/basilisp-blender[basilisp-blender] https://github.com/ikappaki/basilisp-blender/blob/main/CHANGELOG.md[0.3.0] - A library designed to facilitate the execution of Basilisp Clojure code within Blender +* https://github.com/xtdb/xtdb[xtdb] - An immutable SQL database for application development, time-travel reporting and data compliance. Developed by @juxt +* https://github.com/clj-commons/virgil[virgil] https://github.com/clj-commons/virgil/blob/master/CHANGELOG.md[0.3.1] - Recompile Java code without restarting the REPL +* https://github.com/clj-commons/humanize[humanize] https://github.com/clj-commons/humanize/blob/master/CHANGES.md[1.1] - Produce human readable strings in clojure +* https://github.com/eerohele/pp[pp] https://github.com/eerohele/pp/blob/main/CHANGELOG.md#2024-11-1377[2024-11-13.77] - Peppy pretty-printer for Clojure data +* https://github.com/scicloj/kindly[kindly] https://github.com/scicloj/kindly/blob/main/CHANGELOG.md[4-beta14] - A small library for defining how different kinds of things should be rendered diff --git a/content/news/2024/11/22/deref.adoc b/content/news/2024/11/22/deref.adoc new file mode 100644 index 00000000..285dacc1 --- /dev/null +++ b/content/news/2024/11/22/deref.adoc @@ -0,0 +1,43 @@ += Clojure Deref (Nov 22, 2024) +Alex Miller +2024-11-22 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=CtzP1EKqgIY[r/place in Clojure and Clojurescript - Part 3] - Unravel Tech +* https://www.youtube.com/watch?v=4164fzsIPWQ[Clojure service template for a web application (HTML and Rest) with database backend] - Andrey Fadeev + +== Blogs, articles, and projects + +* https://dragan.rocks/articles/24/Apple-Silicon-Support-for-Clojure-Neanderthal-Fast-Matrix-Library[Apple silicon support in Clojure's Neanderthal Fast Matrix Library] - Dragan Djuric + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/clojure/brew-install[Clojure CLI] https://clojure.org/releases/tools[1.12.0.1488] - Clojure CLI +* https://github.com/igrishaev/ring-jdk-adapter[ring-jdk-adapter] https://github.com/igrishaev/ring-jdk-adapter/blob/master/CHANGELOG.md[0.1.1] - Zero-deps Ring server on top of jdk.httpserver +* https://github.com/filipesilva/datomic-pro-sqlite[datomic-pro-sqlite] - Get started with Datomic Pro quickly on a single machine setup that will take you pretty far +* https://github.com/ikappaki/basilisp-nrepl-async[basilisp-nrepl-async] https://github.com/ikappaki/basilisp-nrepl-async/blob/main/CHANGELOG.md[0.1.0] - A Basilisp Clojure async nREPL server for cooperative multitasking +* https://github.com/clj-commons/rewrite-clj[rewrite-clj] https://github.com/clj-commons/rewrite-clj/blob/main/CHANGELOG.adoc#v1.1.49[1.1.49] - Rewrite Clojure code and edn +* https://github.com/chr15m/cljs-josh[cljs-josh] - Scittle cljs live-reloading server +* https://git.sr.ht/~jomco/openapi-v3-validator[openapi-v3-validator] 1.5.0 - A pure-clojure library for validating ring requests & responses against OpenAPI v3 specifications +* https://github.com/clojure-goes-fast/clj-async-profiler[clj-async-profiler] https://github.com/clojure-goes-fast/clj-async-profiler/blob/master/CHANGELOG.md[1.5.0] - Embedded high-precision Clojure profiler +* https://github.com/paintparty/bling[bling] https://github.com/paintparty/bling/blob/main/CHANGELOG.md[0.4.2] - Rich text console printing for Clojure, ClojureScript, and Babashka +* https://github.com/HendrikLevering/cljs-eval[cljs-eval] https://github.com/HendrikLevering/cljs-eval/blob/main/CHANGELOG.md[0.1.1] - Eval CLJS code directly from CLJ +* https://github.com/roman01la/cljs-react-devtools[cljs-react-devtools] 0.1.0 - React DevTools for ClojureScript wrappers +* https://github.com/scicloj/tableplot[tableplot] https://github.com/scicloj/tableplot/blob/main/CHANGELOG.md[1-alpha14.1] - Easy layered graphics with Hanami & Tablecloth +* https://github.com/babashka/cli[cli] https://github.com/babashka/cli/blob/main/CHANGELOG.md[0.8.61] - Turn Clojure functions into CLIs! +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-alpha12.1] - A clojure framework for data science +* https://github.com/scicloj/kind-portal[kind-portal] https://github.com/scicloj/kind-portal/blob/main/CHANGELOG.md[1-beta2] - An adapter for the Portal tool to support the Kindly conventions +* https://github.com/walmartlabs/lacinia-pedestal[lacinia-pedestal] https://github.com/walmartlabs/lacinia-pedestal/blob/master/CHANGELOG.md[1.3.1] - Expose Lacinia GraphQL as Pedestal endpoints +* https://github.com/noahtheduke/lazytest[lazytest] https://github.com/NoahTheDuke/lazytest/blob/main/CHANGELOG.md[1.4.1] - A standalone BDD test framework for Clojure +* https://github.com/seancorfield/polylith-external-test-runner[polylith-external-test-runner] https://github.com/seancorfield/polylith-external-test-runner/blob/main/CHANGELOG.md[0.6.0] - An external (subprocess) test runner for Polylith +* https://github.com/seancorfield/test-runner[test-runner] https://github.com/seancorfield/test-runner/blob/master/changes.md[0.6.0] - A test runner for the Clojure CLI, that supports clojure.test, Expectations, and LazyTest +* https://github.com/squint-cljs/squint[squint] https://github.com/squint-cljs/squint/blob/main/CHANGELOG.md[0.8.124] - Light-weight ClojureScript dialect +* https://github.com/borkdude/deps.clj[deps.clj] https://github.com/borkdude/deps.clj/blob/master/CHANGELOG.md[1.12.0.1488] - A faithful port of the clojure CLI bash script to Clojure \ No newline at end of file diff --git a/content/news/2024/11/28/deref.adoc b/content/news/2024/11/28/deref.adoc new file mode 100644 index 00000000..243b6cc4 --- /dev/null +++ b/content/news/2024/11/28/deref.adoc @@ -0,0 +1,47 @@ += Clojure Deref (Nov 28, 2024) +Alex Miller +2024-11-28 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=2iESpEnju1o[Scripting Minecraft With ClojureScript] - Chris McCormick +* https://www.youtube.com/watch?v=vdbE6MucIYA[Learn Clojure - atoms] - Clojure Diary + +== Blogs, articles, and projects + +* https://gist.github.com/daveliepmann/8289f0ee5b00a5f05b50379e07fceb76[When to use assert?] - Dave Liepmann +* https://dingels.io/review-of-clojure.html[Review of Clojure] - Zach Dingels +* https://curiousprogrammer.dev/blog/my-wonderland-from-net-to-clojure/[My wonderland from .NET to Clojure] - Clarice Bouwer +* https://buttondown.com/tensegritics-curiosities/archive/restrained-datalog-in-39loc/[Restrained Datalog in 39loc] - Christophe Grand + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/clojure/tools.build[tools.build] https://github.com/clojure/tools.build/blob/master/CHANGELOG.md[0.10.6] - Clojure builds as Clojure programs +* https://github.com/clojure/data.json[data.json] 2.5.1 - JSON in Clojure +* https://github.com/anteoas/replicant-todomvc[replicant-todomvc] - TodoMVC implemented with Replicant +* https://github.com/bowbahdoe/mjml[mjml] https://github.com/bowbahdoe/mjml/releases/tag/v2024.11.23.1[2024.11.23.1] - JVM library for MJML (Mailjet Markup Language) +* https://github.com/clj-commons/clj-yaml[clj-yaml] https://github.com/clj-commons/clj-yaml/blob/master/CHANGELOG.adoc#v1.0.29[1.0.29] - YAML encoding and decoding for Clojure +* https://github.com/wilkerlucio/pathom3[pathom3] https://github.com/wilkerlucio/pathom3/blob/main/CHANGELOG.md[2024.11.23-alpha] - Interface with complex data via graph mapping +* https://github.com/jlesquembre/clj-nix[clj-nix] https://github.com/jlesquembre/clj-nix/releases/tag/0.4.0[0.4.0] - Nix helpers for Clojure projects +* https://github.com/PEZ/baldr[baldr] - Positive reporting for clojure.test, works for Clojure, ClojureScript, Babashka, and nbb +* https://github.com/potetm/fusebox[fusebox] https://github.com/potetm/fusebox/blob/master/CHANGELOG.md[1.0.9] - An extremely lightweight fault tolerance library for Clojure(Script) +* https://github.com/seancorfield/honeysql[honeysql] https://github.com/seancorfield/honeysql/releases/tag/v2.6.1230[2.6.1230] - Turn Clojure data structures into SQL +* https://github.com/babashka/scittle[scittle] https://github.com/babashka/scittle/blob/main/CHANGELOG.md[0.6.20] - Execute Clojure(Script) directly from browser script tags via SCI +* https://github.com/soulspace-org/overarch[overarch] https://github.com/soulspace-org/overarch/blob/main/Changelog.md[0.33.0] - Overarch provides an ontology and a data driven model of software systems and organizations based on e.g. UML and the C4 model +* https://github.com/babashka/nbb[nbb] https://github.com/babashka/nbb/blob/main/CHANGELOG.md[1.3.196] - Scripting in Clojure on Node.js using SCI +* https://github.com/juji-io/datalevin[datalevin] https://github.com/juji-io/datalevin/blob/master/CHANGELOG.md[0.9.14] - A simple, fast and versatile Datalog database +* https://github.com/scicloj/metamorph.ml[metamorph.ml] https://github.com/scicloj/metamorph.ml/blob/main/CHANGELOG.md[0.10.4] - Machine learning functions for metamorph based on machine learning pipelines +* https://github.com/scicloj/scicloj.ml.smile[scicloj.ml.smile] https://github.com/scicloj/scicloj.ml.smile/blob/main/CHANGELOG.md[7.4.3] - A Smile models plugin for metamorh.ml +* https://github.com/scicloj/scicloj.ml.tribuo[scicloj.ml.tribuo] https://github.com/scicloj/scicloj.ml.tribuo/blob/master/CHANGELOG.md[0.1.4] - Use Tribuo ML model in metamorph.ml +* https://github.com/basilisp-lang/basilisp[basilisp] https://github.com/basilisp-lang/basilisp/releases/tag/v0.3.3[0.3.3] - A Clojure-compatible(-ish) Lisp dialect targeting Python 3.9+ +* https://github.com/NoahTheDuke/splint[splint] https://github.com/NoahTheDuke/splint/blob/main/CHANGELOG.md[1.19.0] - A Clojure linter focused on style and code shape +* https://github.com/NoahTheDuke/lazytest[lazytest] https://github.com/NoahTheDuke/lazytest/blob/main/CHANGELOG.md[1.5.0] - A standalone BDD test framework for Clojure +* https://github.com/clojure-goes-fast/clj-async-profiler[clj-async-profiler] https://github.com/clojure-goes-fast/clj-async-profiler/blob/master/CHANGELOG.md[1.5.1] - Embedded high-precision Clojure profiler +* https://github.com/hlship/cli-tools[cli-tools] https://github.com/hlship/cli-tools/blob/main/CHANGES.md[0.14] - CLIs and subcommands for Clojure or Babashka \ No newline at end of file diff --git a/content/news/2024/12/02/state-of-clojure-2024.adoc b/content/news/2024/12/02/state-of-clojure-2024.adoc new file mode 100644 index 00000000..feb52625 --- /dev/null +++ b/content/news/2024/12/02/state-of-clojure-2024.adoc @@ -0,0 +1,140 @@ += State of Clojure 2024 Results +Alex Miller +2024-12-02 +:jbake-type: post + +Recently we completed the 2024 State of Clojure survey. You can find the full survey results in https://www.surveymonkey.com/results/SM-hht04mGydwZ6Nqr7N8vjCA_3D_3D/[this report]. + +See these sections for more detail: + +* <> +* <> +* <> +* <> + +[[highlights]] +== 2024 Highlights + +image::/images/content/news/2024-12-02/2024-domains.png[Clojure domains,align="center"] + +In 2024, we continued to see strong use of Clojure in a wide variety of organizations, with 73% of users using Clojure for work, especially in web development, open source, commercial services, and enterprise apps. Most were deploying those apps in either public (58%) or private (26%) cloud. + +image::/images/content/news/2024-12-02/2024-org-size.png[Clojure organization size,align="center"] + +Most developers (54%) were developing for users outside their organization, in organizations of every size. + +image::/images/content/news/2024-12-02/2024-org-users.png[Clojure users in organization,align="center"] + +In the majority of cases, the Clojure teams were small, but teams of 100+ were also represented, likely led by Nubank, which has well over 1000 Clojure developers. + +image::/images/content/news/2024-12-02/2024-industry.png[Clojure industries,align="center"] + +Industry-wise, the top sectors were, as usual, finance, enterprise software, consumer software, healthcare, and retail/ecommerce, with a broad range of additional responses reported - Clojure reaches everywhere there is a host platform (JVM, JavaScript, CLR). + +image::/images/content/news/2024-12-02/2024-os.png[Clojure developer OS,align="center"] + +image::/images/content/news/2024-12-02/2024-dev-env.png[Clojure developer environments,align="center"] + +Clojure developers mostly use either MacOS or Linux, with one of four popular development environments: Emacs, IntelliJ, VS Code, or Vim. + +image::/images/content/news/2024-12-02/2024-clojure.png[Clojure versions,align="center"] + +Clojure https://clojure.org/news/2024/09/05/clojure-1-12-0[1.12.0 was released in September 2024] and the survey showed rapid uptake, with 58% already using it, and 65% developing or deploying with the prior versions 1.11, and a steep drop-off after that. Clojure's focus on stability and avoiding breaking changes makes upgrades safe and easy. + +image::/images/content/news/2024-12-02/2024-java.png[Java versions,align="center"] + +With JVM usage, we saw a significant shift from last year with the Java 21 LTS release, which 54% are now using, or even newer versions like Java 22 or 23 (26%). Usage of Java 8 LTS, the oldest supported release has dropped to just 9%. We expect to move the Clojure JVM baseline version in the next release, version TBD. + +image::/images/content/news/2024-12-02/2024-dialects.png[Clojure alternative dialects,align="center"] + +One new question this year focused on alternative Clojure dialects - these are created by enterprising community members spreading the ideas of Clojure into new hosts and niches. https://babashka.org/[Babashka], a fast native-compiled scripting runtime with batteries included is being used by an eye-popping 93% of survey respondents that answered this question (about 2/3). We also saw usage of ClojureDart, Squint, Jank, and Cherry. Some additional options mentioned in the comments were Electric, Rama, nbb, sci, scittle, clojerl, and Basilisp - we'll review those as options for next year. + +Two additional questions were open response questions about web development and non-web UI frameworks. We'll be using those responses to form concrete options for next year. Feel free to peruse the answers in the full data. + +As always, we closed the survey asking who you appreciate in the Clojure community. There are way too many people and companies to mention without leaving someone out - I encourage you to read the responses! It's been a great year with Clojure and we look forward to an amazing 2025. + +[[trends]] +== Trends Over Time + +Because this survey has been running since 2010 (thanks to Chas Emerick originally!), we have lots of great longitudinal data and it's interesting to compare some of the answers over time. + +Looking at the question of how Clojure developers use Clojure, we can see this has generally trended more towards using it at work. However, this year we saw an uptick of people using it for hobbies or in their studies: + +image::/images/content/news/2024-12-02/trend-use.png[Clojure use trend,align="center"] + +One question that's always interesting to examine is what primary language developers were using prior to Clojure. These answers have been relatively static over time - most Clojure developers come from Java, JavaScript, or Python. We can see that Ruby and C++ have fallen the last few years but C# has gotten a bit stronger. See the later section too which focuses just on new users. + +image::/images/content/news/2024-12-02/trend-lang.png[Prior language trend,align="center"] + +We can also see how developer environments have changed over time, from OS: + +image::/images/content/news/2024-12-02/trend-os.png[OS trend,align="center"] + +To dev environment: + +image::/images/content/news/2024-12-02/trend-dev-env.png[Dev environment trend,align="center"] + +This is a graph of the primary JVM use over time (intermediate versions between LTS releases omitted for clarity): + +image::/images/content/news/2024-12-02/trend-java.png[Java trend,align="center"] + +Java 8 has finally relented and we are seeing strong uptake to newer versions like Java 21. For many Clojure releases we have been using Java 8 as our baseline, but we expect to move that in the next Clojure release. + +Speaking of Clojure versions, Clojure's strong record of stability and additive development makes it easy for users to upgrade when a new version is available, as with Clojure 1.12 this year: + +image::/images/content/news/2024-12-02/trend-clojure.png[Clojure trend,align="center"] + +Another interesting thing we can track is the primary way people manage their dependencies: + +image::/images/content/news/2024-12-02/trend-deps.png[Deps trend,align="center"] + +[[newusers]] +== 2024 New Users + +It's always interesting to narrow the focus just to new users (those who reported using the language for less than or up to 1 year). Applying this filter can give us a view of why and how new users are finding Clojure. For many of the questions, we see data similar to the overall user base, but in some areas new insight can be gleaned. + +For example, we can look at the prior language just for new users which gives a clearer picture of where people are coming from when they start to learn Clojure: + +image::/images/content/news/2024-12-02/new-prior-lang.png[New user prior lang,align="center"] + +While Java is the dominant prior language for Clojure users as a whole, new users now are primarily coming from JavaScript, Python, or Java and those trends have changed somewhat over time. One especially interesting signal is the rise of C#, which was not easy to see in the data for all users. + +New users found the following challenges in learning: + +image::/images/content/news/2024-12-02/new-challenges.png[New user challenges,align="center"] + +It is intriguing to imagine whether the changes over time come more from what's happening in the community or in the background of new users. For example, the difficulties of understanding functional programming vs object-oriented programming has decreased significantly over the last 3 years - is this due to a greater influx from non-OO communities, or better learning materials? + +Similarly, we can look just at priorities for new users: + +image::/images/content/news/2024-12-02/new-priorities.png[New user priorities for improvement,align="center"] + +These don't vary too much from the community as a whole, but spec is ranked quite a bit lower level. + +It can also be useful to see which forums new users are finding useful: + +image::/images/content/news/2024-12-02/new-community.png[New user communities,align="center"] + +In general, these are similar to the community at a whole but they are over-represented in YouTube, StackOverflow (not surprising), and Discord (probably due to Clojure Camp). + +[[previous]] +== Full Results + +You can find the full results for this and prior years at the links below if you would like to explore more. It is well worth looking through the 2024 data and the open responses, especially the responses in the final question expressing gratitude for the community and its members, which are heartwarming and certainly in the spirit of this Thanksgiving week in the US. + +* https://www.surveymonkey.com/results/SM-hht04mGydwZ6Nqr7N8vjCA_3D_3D/[2024] +* https://www.surveymonkey.com/results/SM-5QgPUw4aBbMUY3FJVRra2w_3D_3D/[2023] +* https://www.surveymonkey.com/results/SM-QRiy0fSu3bmDK_2FSNMplVJw_3D_3D/[2022] +* https://www.surveymonkey.com/results/SM-S2L8NR6K9[2021] +* https://www.surveymonkey.com/results/SM-CDBF7CYT7/[2020] +* https://www.surveymonkey.com/results/SM-S9JVNXNQV/[2019] +* https://www.surveymonkey.com/results/SM-9BC5FNJ68/[2018] +* https://www.surveymonkey.com/results/SM-7K6NXJY3/[2016] +* http://blog.cognitect.com/blog/2016/1/28/state-of-clojure-2015-survey-results[2015] +* http://blog.cognitect.com/blog/2014/10/20/results-of-2014-state-of-clojure-and-clojurescript-survey[2014] +* https://cemerick.com/blog/2013/11/18/results-of-the-2013-state-of-clojure-clojurescript-survey.html[2013] +* https://cemerick.com/blog/2012/08/06/results-of-the-2012-state-of-clojure-survey.html[2012] +* https://cemerick.com/blog/2011/07/11/results-of-the-2011-state-of-clojure-survey.html[2011] +* https://cemerick.com/blog/2010/06/07/results-from-the-state-of-clojure-summer-2010-survey.html[2010] + +Thanks again for using Clojure and ClojureScript and participating in the survey! diff --git a/content/news/2024/12/06/deref.adoc b/content/news/2024/12/06/deref.adoc new file mode 100644 index 00000000..daa60c84 --- /dev/null +++ b/content/news/2024/12/06/deref.adoc @@ -0,0 +1,43 @@ += Clojure Deref (Dec 6, 2024) +Alex Miller +2024-12-06 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.freshcodeit.com/podcast/we-are-writing-in-clojure[Episode 1: Now We are Writing in Clojure] - Clojure in Product +* https://www.youtube.com/watch?v=CsfRxg5EOuY[Clojure Corner: Interview with Chris Nuernberger] - Flexiana +* https://vimeo.com/1035819201[Apropos 2024-12-03] - Apropos Clojure +* https://www.youtube.com/watch?v=O2qgApg-Fxo[Livecode ASMR | Clojure | Emacs | Advent of Code | day 3 (first time)] - faster-than-light-memes +* https://www.youtube.com/watch?v=fLUZJfIiWHE[Learn Clojure - dotimes] - Clojure Diary +* https://www.youtube.com/watch?v=Ya62VpbZIso[Testing ring handlers while using non default port] - Clojure Diary + +== Blogs, articles, and projects + +* https://clojure.org/news/2024/12/02/state-of-clojure-2024[State of Clojure 2024 Results] - Alex Miller +* https://narimiran.github.io/aoc2024/[AoC 2024 in Clojure (Clerk notebooks)] - narimiran +* https://emil0r.com/posts/2024-11-29-replicant/[Testing out replicant] - Emil Bengtsson +* https://jank-lang.org/blog/2024-11-29-llvm-ir/[jank is now running on LLVM IR] - Jeaye Wilkerson +* https://clojure-diary.gitlab.io/2024/12/01/clojure-is-really-nice-to-write.html[Clojure is really nice to write] - Karthikeyan A K + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/noahtheduke/clein[clein] https://github.com/NoahTheDuke/clein/blob/main/CHANGELOG.md[0.3.1] - Build and deploy your deps.edn projects with ease! +* https://git.sr.ht/~hiredman/machinate[machinate] 0.0.79 - a new new concurrent ml in clojure +* https://github.com/nnichols/clojure-lint-action[clojure-lint-action] https://github.com/nnichols/clojure-lint-action/releases/tag/v3[3] - A GitHub Action that lints clojure files with clj-kondo and generates comments with reviewdog on pull requests +* https://github.com/cognitect-labs/aws-api[aws-api] https://github.com/cognitect-labs/aws-api/blob/main/CHANGES.md[0.8.711] - AWS, data driven +* https://github.com/ikappaki/basilisp-kernel[basilisp-kernel] https://github.com/ikappaki/basilisp-kernel/blob/main/CHANGELOG.md[1.2.0] - A Jupyter kernel for Basilisp, a Clojure compatible dialect implemented in Python +* https://github.com/squint-cljs/squint[squint] https://github.com/squint-cljs/squint/blob/main/CHANGELOG.md[0.8.129] - Light-weight ClojureScript dialect +* https://github.com/soulspace-org/overarch[overarch] https://github.com/soulspace-org/overarch/blob/main/Changelog.md[0.34.0] - Overarch provides an ontology and a data driven model of software systems and organizations based on e.g. UML and the C4 model +* https://flamebin.dev[Flamebin] - Pastebin for your flamegraphs 🔥📈 +* https://github.com/scicloj/clay[clay] https://github.com/scicloj/clay/blob/main/CHANGELOG.md[2-beta25] - A tiny Clojure tool for dynamic workflow of data visualization and literate programming +* https://github.com/scicloj/tableplot[tableplot] https://github.com/scicloj/tableplot/blob/main/CHANGELOG.md[1-beta1.1] - Easy layered graphics with Hanami & Tablecloth +* https://github.com/seancorfield/next-jdbc[next-jdbc] https://github.com/seancorfield/next-jdbc/blob/develop/CHANGELOG.md[1.3.967] - A modern low-level Clojure wrapper for JDBC-based access to databases +* https://github.com/clojure-emacs/cider[cider] https://github.com/clojure-emacs/cider/releases/tag/v1.16.1[1.16.1] - The Clojure Interactive Development Environment that Rocks for Emacs +* https://github.com/babashka/fs[fs] https://github.com/babashka/fs/blob/master/CHANGELOG.md[0.5.23] - File system utility library for Clojure \ No newline at end of file diff --git a/content/news/2024/12/12/deref.adoc b/content/news/2024/12/12/deref.adoc new file mode 100644 index 00000000..8a820831 --- /dev/null +++ b/content/news/2024/12/12/deref.adoc @@ -0,0 +1,39 @@ += Clojure Deref (Dec 12, 2024) +Alex Miller +2024-12-12 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://open.spotify.com/episode/7L0UnySfPmf3kao3K1IFtF[Episode 2: We choose the best tool for the job, with Adam Tornhill, CodeScene] - Clojure in Product +* https://www.youtube.com/watch?v=WUU46HcrP3Q[State Management 101 with ClojureDart and Flutter 🚀] - ClojureDart + +== Blogs, articles, and projects + +* https://www.clojuriststogether.org/news/clojurists-together-2025-long-term-funding-announcement/[Clojurists Together 2025 Long-Term Funding Announcement] - Kathy Davis (Clojurists Together) +* https://state-of-clojurescript.com[State of ClojureScript 2024 Survey] - Roman Liutikov +* https://www.patreon.com/posts/117438975[Transparency report: November 2024] - Nikita Prokopov +* https://buttondown.com/tensegritics-curiosities/archive/beyond-swap-encapsulation-sans-abstraction-the/[Beyond `swap!`: Encapsulation sans Abstraction, the Transactor Pattern] - Christophe Grand +* https://github.com/pitch-io/uix/blob/master/DEVLOG.md#november-2024[UIx Devlog: November, 2024] - Roman Liutikov +* https://www.daveliepmann.com/articles/cljd-talk.html[ClojureDart: an experience report] - Dave Liepmann +* https://xtdb.com/blog/the-missing-sql-subqueries[The missing SQL sub-queries] - James Henderson (JUXT) + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-beta2] - A clojure framework for data science +* https://github.com/chr15m/sitefox[sitefox] 0.0.26 - Node + cljs backend web framework +* https://github.com/monkey-projects/oci-vault[oci-vault] 0.2.0 - Access the OCI vault api using Clojure +* https://github.com/pitch-io/uix[uix] https://github.com/pitch-io/uix/blob/master/CHANGELOG.md[1.3.0] - Idiomatic ClojureScript interface to modern React.js +* https://github.com/greglook/cljstyle[cljstyle] https://github.com/greglook/cljstyle/releases/tag/0.17.642[0.17.642] - A tool for formatting Clojure code +* https://github.com/igrishaev/pg2[pg2] https://github.com/igrishaev/pg2/blob/master/CHANGELOG.md[0.1.23] - A fast PostgreSQL driver for Clojure +* https://github.com/willcohen/clj-proj[clj-proj] https://github.com/willcohen/clj-proj/blob/main/CHANGELOG.md[0.1.1] - A native (or transpiled) version of PROJ for both the JVM and JS ecosystems +* https://github.com/damn/clojure.gdx.backends.lwjgl3[clojure.gdx.backends.lwjgl3] 1.13.0-0.1 - Clojure API for the libgdx lwjgl3 (desktop) backend +* https://github.com/scicloj/tableplot[tableplot] https://github.com/scicloj/tableplot/blob/main/CHANGELOG.md[1-beta1.2] - Easy layered graphics with Hanami & Tablecloth +* https://github.com/clj-commons/pretty[pretty] https://github.com/clj-commons/pretty/blob/main/CHANGES.md[3.3.0] - Library for helping print things prettily, in Clojure - ANSI fonts, formatted exceptions +* https://github.com/basilisp-lang/basilisp[basilisp] https://github.com/basilisp-lang/basilisp/releases/tag/v0.3.4[0.3.4] - A Clojure-compatible(-ish) Lisp dialect targeting Python 3.9+ \ No newline at end of file diff --git a/content/news/2024/12/20/deref.adoc b/content/news/2024/12/20/deref.adoc new file mode 100644 index 00000000..19968e5a --- /dev/null +++ b/content/news/2024/12/20/deref.adoc @@ -0,0 +1,50 @@ += Clojure Deref (Dec 20, 2024) +Alex Miller +2024-12-20 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=ma1Ie5vgCHQ[Clojure Corner: Interview with Christian Johansen] - Flexiana +* https://www.freshcodeit.com/podcast/once-you-try-clojure-there-is-no-way-back[Episode 3: Once you try Clojure, there is no way back] - Clojure in Product +* https://zencastr.com/z/t7QDS4kE[8f5d5379091d Eric Normand] - defn podcast +* https://www.youtube.com/watch?v=Bf5RzGEpA90[Trying JDK21 Structured Concurrency from Clojure] - Andrey Fadeev +* https://www.youtube.com/watch?v=evmRpr_DEBQ[Get Started with Clojure Programming with Cider | Emacs Tutorial] - Ken Huang +* https://www.youtube.com/watch?v=hpjJJqnkqCw[Easel: A Pure Clojure IDE in the Spirit of Emacs] - phronmophobic +* https://www.youtube.com/watch?v=mUsu6YJAXvk[Why Clojure? No operator precedence!!] - Clojure Diary + + +== Blogs, articles, and projects + +* https://scicloj.github.io/clojure-data-tutorials/projects/ml/llm/index.html[Using LLMs from Clojure] - SciCloj community +* https://emil0r.com/posts/2024-12-16-config-files-generation/[porter - config files generation] - Emil Bengtsson +* https://scicloj.github.io/blog/clojurists-together-project-scicloj-community-building-november-2024-update/[Clojurists Together project - Scicloj community building - November 2024 update] - Daniel Slutsky +* https://fpilluminated.com/deck/252[Fibonacci Function Gallery - Part 1] - Philip Schwarz + + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/clojure/core.async[core.async] 1.7.701 - Facilities for async programming and communication in Clojure +* https://github.com/velio-io/collet[collet] https://github.com/velio-io/collet/releases/tag/v0.1.0[0.1.0] - Collet is a powerful Clojure library designed to simplify the development and execution of data processing pipelines (ETL or ELT) +* https://github.com/roman01la/uix.css[uix.css] https://github.com/roman01la/uix.css/blob/master/CHANGELOG.md[0.2.1] - CSS-in-CLJS library +* https://github.com/roman01la/cljs-react-devtools[cljs-react-devtools] 0.2.0 - React DevTools for ClojureScript wrappers +* https://github.com/and-z/komb[komb] https://github.com/and-z/komb/blob/main/CHANGELOG.md[0.0.1] - A tiny Babashka utility for sorting JSON +* https://github.com/seancorfield/honeysql[honeysql] https://github.com/seancorfield/honeysql/releases/tag/v2.6.1243[2.6.1243] - Turn Clojure data structures into SQL +* https://github.com/seancorfield/next-jdbc[next-jdbc] https://github.com/seancorfield/next-jdbc/blob/develop/CHANGELOG.md[1.3.981] - A modern low-level Clojure wrapper for JDBC-based access to databases +* https://github.com/scicloj/tablemath[tablemath] https://github.com/scicloj/tablemath/blob/main/CHANGELOG.md[1-alpha2] - Math and statistics modelling with table ergonomics +* https://github.com/scicloj/tableplot[tableplot] https://github.com/scicloj/tableplot/blob/main/CHANGELOG.md[1-beta5] - Easy layered graphics with Hanami & Tablecloth +* https://github.com/emil0r/porter[porter] - babashka library for creating config files +* https://github.com/Tensegritics/ClojureDart[ClojureDart] - Clojure dialect for Flutter and Dart +* https://github.com/tonsky/fast-edn[fast-edn] https://github.com/tonsky/fast-edn/blob/main/CHANGELOG.md[1.1.0] - Drop-in replacement for clojure.edn that is 6 times faster +* https://github.com/dpassen/malapropism[malapropism] https://github.com/dpassen/malapropism/releases/tag/0.5.234[0.5.234] - Malli-backed configuration library +* https://github.com/clj-commons/aleph[aleph] https://github.com/clj-commons/aleph/blob/master/CHANGES.md[0.8.2] - Asynchronous streaming communication for Clojure - web server, web client, and raw TCP/UDP +* https://github.com/practicalli/astro[astro] https://github.com/practicalli/astro/releases/tag/2024-12-17[2024-12-17] - Rich development workflow with Clojure support, using AstroNvim 4 and selected plugins +* https://github.com/metosin/jsonista[jsonista] https://github.com/metosin/jsonista/blob/master/CHANGELOG.md#0312-2024-11-01[0.3.13] - Clojure library for fast JSON encoding and decoding +* https://github.com/practicalli/clojure-cli-config[clojure-cli-config] https://github.com/practicalli/clojure-cli-config/releases/tag/2024-12-19[2024-12-19] - User aliases and Clojure CLI configuration for deps.edn based projects +* https://github.com/babashka/scittle[scittle] https://github.com/babashka/scittle/blob/main/CHANGELOG.md[0.6.22] - Execute Clojure(Script) directly from browser script tags via SCI \ No newline at end of file diff --git a/content/news/2025/01/02/deref.adoc b/content/news/2025/01/02/deref.adoc new file mode 100644 index 00000000..f17d641d --- /dev/null +++ b/content/news/2025/01/02/deref.adoc @@ -0,0 +1,63 @@ += Clojure Deref (Jan 2, 2025) +Alex Miller +2025-01-02 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=0O5kS0Rq50E[Building Tailwind CSS for Clojure Hiccup Backend (Updated Clojure Service Template)] - Andrey Fadeev +* https://www.youtube.com/watch?v=Z0Re2rySl6E[Specifying port in ring app] - Clojure Diary + +== Blogs, articles, and projects + +* https://compiler-research.org/blogs/jank_intro/[The jank programming language] - Jeaye Wilkerson +* https://slipset.github.io/posts/small-fns-at-the-repl?1[Small Fns At The Repl] - Erik Assum +* https://metaredux.com/posts/2024/12/23/state-of-cider-2024.html[State of CIDER Survey (2024)] - Bozhidar Batsov +* https://kaepr.github.io/posts/writing-a-c-compiler-in-clojure/[Writing a C Compiler in Clojure] - Shagun Agrawal +* https://oss.toyokumo.co.jp[活動について] - Toyokumo, Inc +* https://blog.michielborkent.nl/oss-updates-nov-dec-2024.html[OSS updates November and December 2024] - Michiel Borkent +* https://www.patreon.com/posts/transparency-118956984[Transparency report, December 2024] - Nikita Prokopov +* https://www.taoensso.com/news/2024-12-open-source[Open source update] - Peter Taoussanis +* https://codewithkira.com/2024-12-31-clojurists-together-update-nov-dec-2024.html[OSS Updates November and December 2024] - Kira Howe (McLean) +* https://fnguy.com/RAD_lazy_images.html[Lazy Images in Fulcro RAD] - Alex Sheluchin +* https://www.wedesoft.de/software/2024/12/26/clojure-ruby-python-performance/[Performance comparison of Clojure, Ruby, and Python] - Jan Wedekind + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/clojure/brew-install[brew-install] https://clojure.org/releases/tools[1.12.0.1495] - Clojure CLI +* https://github.com/scicloj/clay[clay] https://github.com/scicloj/clay/blob/main/CHANGELOG.md[2-beta27] - A tiny Clojure tool for dynamic workflow of data visualization and literate programming +* https://github.com/squint-cljs/squint[squint] https://github.com/squint-cljs/squint/blob/main/CHANGELOG.md[0.8.132] - Light-weight ClojureScript dialect +* https://github.com/fulcrologic/fulcro-inspect[fulcro-inspect] https://github.com/fulcrologic/fulcro-inspect/releases[1.0.3] - A tool for inspecting and debugging Fulcro applications during development +* https://github.com/fulcrologic/fulcro-devtools-remote[fulcro-devtools-remote] 0.2.6 - An adapter for writing development tooling that runs as a Chrome extension or an electron app +* https://github.com/fulcrologic/fulcro[fulcro] 3.8.0 - A library for development of single-page full-stack web applications in clj/cljs +* https://github.com/babashka/cli[cli] https://github.com/babashka/cli/blob/main/CHANGELOG.md[0.8.62] - Turn Clojure functions into CLIs! +* https://github.com/cognitect-labs/aws-api[aws-api] https://github.com/cognitect-labs/aws-api/blob/main/CHANGES.md[0.8.723] - AWS, data driven +* https://github.com/scicloj/scicloj.ml.tribuo[scicloj.ml.tribuo] https://github.com/scicloj/scicloj.ml.tribuo/blob/master/CHANGELOG.md[0.1.6] - Use Tribuo ML model in metamorph.ml +* https://github.com/scicloj/scicloj.ml.smile[scicloj.ml.smile] https://github.com/scicloj/scicloj.ml.smile/blob/main/CHANGELOG.md[7.4.4] - A Smile models plugin for metamorh.ml +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-beta4] - A clojure framework for data science +* https://github.com/fulcrologic/statecharts[statecharts] 1.2.8 - A Statechart library for CLJ(S) +* https://github.com/scicloj/metamorph.ml[metamorph.ml] https://github.com/scicloj/metamorph.ml/blob/main/CHANGELOG.md[0.11.1] - Machine learning functions for metamorph based on machine learning pipelines +* https://github.com/nnichols/clojure-lint-action[clojure-lint-action] https://github.com/nnichols/clojure-lint-action/releases/tag/v4[4] - A GitHub Action that lints clojure files with clj-kondo and generates comments with reviewdog on pull requests +* https://github.com/babashka/tools-deps-native[tools-deps-native] https://github.com/babashka/tools-deps-native/blob/master/CHANGELOG.md#v016[0.1.7] - Run tools.deps as a native binary +* https://github.com/liquidz/elin[elin] 2025.1.0-alpha - A Clojure development environment for Vim/Neovim and more!, primarily written in Babashka +* https://github.com/babashka/pod-babashka-go-sqlite3[pod-babashka-go-sqlite3] https://github.com/babashka/pod-babashka-go-sqlite3/blob/main/CHANGELOG.md[0.2.7] - A babashka pod for interacting with sqlite3 +* https://github.com/scicloj/tableplot[tableplot] https://github.com/scicloj/tableplot/blob/main/CHANGELOG.md[1-beta6] - Easy layered graphics with Hanami & Tablecloth +* https://github.com/fulcrologic/fulcro-rad[fulcro-rad] 1.6.9 - Fulcro Rapid Application Development +* https://github.com/fulcrologic/fulcro-rad-datomic[fulcro-rad-datomic] 1.5.5 - Datomic database support plugin for Fulcro RAD +* https://github.com/fulcrologic/fulcro-websockets[fulcro-websockets] 3.4.0 - A Pluggable Remote for Fulcro 3 that uses Websockets +* https://github.com/nrepl/piggieback[piggieback] https://github.com/nrepl/piggieback/blob/master/CHANGES.md[0.6.0] - nREPL support for ClojureScript REPLs +* https://github.com/HendrikLevering/cljs-eval[cljs-eval] https://github.com/HendrikLevering/cljs-eval/blob/main/CHANGELOG.md[0.1.2] - Eval CLJS code directly from CLJ +* https://github.com/lambdaisland/config[config] https://github.com/lambdaisland/config/blob/main/CHANGELOG.md[0.4.17] - Clojure configuration library +* https://github.com/damn/clojure.gdx[clojure.gdx] - Desktop/Android/iOS Clojure game development framework +* https://github.com/babashka/babashka[babashka] https://github.com/babashka/babashka/blob/master/CHANGELOG.md[1.12.196] - Native, fast starting Clojure interpreter for scripting +* https://github.com/taoensso/telemere[telemere] https://github.com/taoensso/telemere/blob/master/CHANGELOG.md[1.0.0-RC2] - Structured telemetry library for Clojure/Script +* https://github.com/vlaaad/reveal[reveal] 1.3.284 - Reveal: Read Eval Visualize Loop for Clojure +* https://github.com/Wall-Brew-Co/clj-xml[clj-xml] https://github.com/Wall-Brew-Co/clj-xml/blob/master/CHANGELOG.md[1.12.0] - The missing link between clj and xml +* https://github.com/taoensso/sente[sente] https://github.com/taoensso/sente/blob/master/CHANGELOG.md[1.20.0] - Realtime web comms library for Clojure/Script +* https://github.com/flow-storm/flow-storm-debugger[flow-storm-debugger] https://github.com/flow-storm/flow-storm-debugger/blob/master/CHANGELOG.md[4.1.0] - A debugger for Clojure and ClojureScript with some unique features \ No newline at end of file diff --git a/content/news/2025/01/09/deref.adoc b/content/news/2025/01/09/deref.adoc new file mode 100644 index 00000000..6e24e076 --- /dev/null +++ b/content/news/2025/01/09/deref.adoc @@ -0,0 +1,44 @@ += Clojure Deref (Jan 9, 2025) +Alex Miller +2025-01-09 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.freshcodeit.com/podcast/is-it-easy-to-manage-a-team[Episode 04: Is it easy to manage a team?] - Clojure in Product +* https://www.youtube.com/watch?v=gBt_tBoy1kE[ClojureScript Tiny Slides] - mccormix +* https://www.youtube.com/watch?v=u_UchyyRzOE[Clojure visual-tools meeting 27 - Workflow Demos 1: Emacs, CIDER, VSCode Calva, Zulip] - Sci Cloj +* https://www.youtube.com/watch?v=2VOXxG_7VGk[Clj visual-tools 28- Workflow Demos 2: CIDER, Portal, Snitch, clj-reload, Cursive, Conjure, Parinfer] - Sci Cloj +* https://www.youtube.com/watch?v=FxUVaytRlxk[Printing Color in Terminal with Clojure] - Clojure Diary + +== Blogs, articles, and projects + +* https://clojureverse.org/t/scicloj-is-looking-for-community-organizers/11123[Scicloj is looking for community organizers] - Daniel Slutsky +* https://blog.404.taipei/making-html-reactive-using-signaali[Making HTML reactive using Signaali] - Vincent Cantin +* https://bytes.vadelabs.com/doing-hard-things-while-living-life-why-we-built-vade-studio-in-clojure/[Doing Hard Things While Living Life: Why We Built Vade Studio in Clojure] - Pragyan Tripathi +* https://electric.hyperfiddle.net/blog/y20250106_threaddump_part1[Internal tools and Electric Clojure, Part 1] - Dustin Getz +* https://confengine.com/conferences/functional-conf-2025/speaker/interview/alex-miller-1[Speaker Interview with Alex Miller] - Functional Conf 2025 +* https://confengine.com/conferences/functional-conf-2025/speaker/interview/amogh-talpallikar[Speaker Interview with Amogh Talpallikar] - Functional Conf 2025 +* https://confengine.com/conferences/functional-conf-2025/speaker/interview/aditya-athalye-1[Speaker Interview with Aditya Athalye] - Functional Conf 2025 + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/pfeodrippe/vybe[vybe] https://github.com/pfeodrippe/vybe/releases/tag/v0.7.469[0.7.469] - A Clojure framework for game dev (alpha) +* https://github.com/metosin/signaali[signaali] https://github.com/metosin/signaali/blob/main/CHANGELOG.md[0.1.0] - A small, portable & flexible implementation of signals +* https://github.com/s-expresso/clojobuf[clojobuf] 0.2.0 - clojure(script) library that dynamically interprets protobuf files +* https://github.com/chr15m/clojurescript-tiny-slides[clojurescript-tiny-slides] - Minimal presentation slides for ClojureScript +* https://github.com/tonsky/fast-edn[fast-edn] https://github.com/tonsky/fast-edn/blob/main/CHANGELOG.md[1.1.2] - Drop-in replacement for clojure.edn that is 6 times faster +* https://github.com/adityaathalye/clojure-multiproject-example[clojure-multiproject-example] - A grug-brained stab at layout and tooling to conveniently develop many Clojure projects in a single source repo +* https://github.com/clojure-goes-fast/clj-async-profiler[clj-async-profiler] https://github.com/clojure-goes-fast/clj-async-profiler/blob/master/CHANGELOG.md[1.6.0] - Embedded high-precision Clojure profiler +* https://github.com/KingMob/TrueGrit[TrueGrit] https://github.com/KingMob/TrueGrit/blob/main/CHANGELOG.adoc[2.3.35] - A data-driven, functionally-oriented, idiomatic Clojure library for circuit breakers, bulkheads, retries, rate limiters, timeouts, etc. +* https://github.com/soulspace-org/overarch[overarch] https://github.com/soulspace-org/overarch/blob/main/Changelog.md[0.35.0] - Overarch provides an ontology and a data driven model of software systems and organizations based on e.g. UML and the C4 model +* https://github.com/scicloj/tableplot[tableplot] https://github.com/scicloj/tableplot/blob/main/CHANGELOG.md[1-beta7] - Easy layered graphics with Hanami & Tablecloth +* https://github.com/fulcrologic/fulcro[fulcro] 3.8.1 - A library for development of single-page full-stack web applications in clj/cljs +* https://github.com/babashka/fs[fs] https://github.com/babashka/fs/blob/master/CHANGELOG.md[0.5.24] - File system utility library for Clojure +* https://github.com/PEZ/languages-visualizations[languages-visualizations] - A Languages visualization experiment \ No newline at end of file diff --git a/content/news/2025/01/17/deref.adoc b/content/news/2025/01/17/deref.adoc new file mode 100644 index 00000000..372836e4 --- /dev/null +++ b/content/news/2025/01/17/deref.adoc @@ -0,0 +1,49 @@ += Clojure Deref (Jan 17, 2025) +Alex Miller +2025-01-17 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=FC2PBTFUAZA[Apropos 2025-01-14] - apropos clojure +* https://www.youtube.com/watch?v=9nY25hwzWRc[Clojure visual-tools 29 - Workflow Demos 3: FlowStorm] - Sci Cloj +* https://www.youtube.com/watch?v=lAmomIESusQ[Content Made Simple Live Stream] - Content Made Simple +* https://www.youtube.com/watch?v=hEF0KzHDN_w[Episode 2: hiccup and some more stuff] - Content Made Simple +* https://www.youtube.com/watch?v=x9dN8CkEy6c[Episode 3 ... upload] - Content Made Simple +* https://www.youtube.com/watch?v=zjLaLXfgY34[Sitefox: Full Stack ClojureScript Tutorial] - mccormix +* https://www.youtube.com/watch?v=tsU74zsNQMc[Where to store your (image) files in Leiningen project, and how to fetch them?] - Clojure Diary + +== Blogs, articles, and projects + +* https://blog.404.taipei/whats-in-a-component[What's in a component] - Vincent Cantin +* https://jank-lang.org/blog/2025-01-10-i-quit-my-job/[I quit my job to work on my programming language] - Jeaye Wilkerson +* https://www.dot.studio/en/notes/case-study-under-whose-command/[Tracing Command Chains Through Time & Location] - DOT • STUDIO +* https://electric.hyperfiddle.net/blog/y20250109_datafy/[Internal tools and Electric Clojure, Part 2] - Dustin Getz +* https://shagunagrawal.me/posts/multiplayer-board-game-in-clojure/[Multiplayer Board Game with Clojure and HTMX] - Shagun Agrawal +* https://lambdaisland.com/blog/2025-01-14-ornament[Ornament] - Laurence Chen +* https://www.mihirdeshpande.com/posts/deepwalk_clojure[Deepwalking in Clojure] - Mihir Deshpande + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/jacobemcken/aws-simple-sign[aws-simple-sign] 2.0.0 - A Clojure library for pre-signing S3 URLs and signing HTTP requests for AWS +* https://git.sr.ht/~hiredman/machinate[machinate] 0.0.119 - a new new concurrent ml in clojure +* https://github.com/filipesilva/gen[gen] 1.0.0 - A CLI tool to generate files and run commands from templates +* https://github.com/bhauman/figwheel-main[figwheel-main] https://github.com/bhauman/figwheel-main/blob/master/CHANGES.md[0.2.20] - Figwheel Main provides tooling for developing ClojureScript applications +* https://github.com/clj-kondo/clj-kondo[clj-kondo] https://github.com/clj-kondo/clj-kondo/blob/master/CHANGELOG.md[2025.01.16] - Static analyzer and linter for Clojure code that sparks joy +* https://github.com/wilkerlucio/pathom3[pathom3] https://github.com/wilkerlucio/pathom3/blob/main/CHANGELOG.md[2025.01.16-alpha] - Interface with complex data via graph mapping +* https://github.com/scicloj/metamorph.ml[metamorph.ml] https://github.com/scicloj/metamorph.ml/blob/main/CHANGELOG.md[0.2] - Machine learning functions for metamorph based on machine learning pipelines +* https://github.com/scicloj/kind-clerk[kind-clerk] https://github.com/scicloj/kind-clerk/blob/main/CHANGELOG.md[1-alpha9] - An adapter for the Clerk tool to support the Kindly conventions +* https://github.com/scicloj/tableplot[tableplot] https://github.com/scicloj/tableplot/blob/main/CHANGELOG.md[1-beta8] - Easy layered graphics with Hanami & Tablecloth +* https://github.com/fulcrologic/statecharts[statecharts] 1.2.12 - A Statechart library for CLJ(S) +* https://github.com/borkdude/deps.clj[deps.clj] https://github.com/borkdude/deps.clj/blob/master/CHANGELOG.md[1.12.0.1495] - A faithful port of the clojure CLI bash script to Clojure +* https://github.com/fulcrologic/fulcro-inspect[fulcro-inspect] https://github.com/fulcrologic/fulcro-inspect/releases[4.0.6] - A tool for inspecting and debugging Fulcro applications during development +* https://github.com/scicloj/tableplot[tableplot] https://github.com/scicloj/tableplot/blob/main/CHANGELOG.md[1-beta9] - Easy layered graphics with Hanami & Tablecloth +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-beta5] - A clojure framework for data science +* https://github.com/imrekoszo/polylith-kaocha[polylith-kaocha] https://github.com/imrekoszo/polylith-kaocha/releases/tag/v0.8.6[0.8.6] - Kaocha-based test runner for Polylith +* https://github.com/seancorfield/honeysql[honeysql] https://github.com/seancorfield/honeysql/releases/tag/v2.6.1267[2.6.1267] - Turn Clojure data structures into SQL diff --git a/content/news/2025/01/23/deref.adoc b/content/news/2025/01/23/deref.adoc new file mode 100644 index 00000000..cb1577a5 --- /dev/null +++ b/content/news/2025/01/23/deref.adoc @@ -0,0 +1,48 @@ += Clojure Deref (Jan 23, 2025) +Alex Miller +2025-01-23 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=C5lsAE2G41c[Clein Bringing a bit of leiningen to deps edn by Noah Bogart] - London Clojurians +* https://www.youtube.com/watch?v=4tbjE0_W-58[Live-reloading Scittle ClojureScript with cljs-josh] - mccormix +* https://www.freshcodeit.com/podcast/the-capacity-to-learn-new-languages[Episode 05: The capacity to learn new languages] - Clojure in Product +* https://www.freshcodeit.com/podcast/discovered-not-the-light-but-the-enlightenment[Episode 06: Discovering Clojure – True enlightenment begins] - Clojure in Product +* https://zencastr.com/z/D1Rt977V[2afd69a4979a Kira Howe] - @defn podcast +* https://www.youtube.com/watch?v=_BvBPN86rQc[The SOLID Principles illustrated using Clojure code examples] - Jan Wedekind + +== Blogs, articles, and projects + +* https://metaredux.com/posts/2025/01/17/a-simpler-way-to-deal-with-java-sources-in-cider.html[A Simpler Way to Deal with Java Sources in CIDER] - Bozhidar Batsov +* https://bytes.vadelabs.com/how-vade-studio-achieves-lightning-fast-static-pages/[Stop Making JavaScript Do Everything - Vade Studio's Secret to Fast Web Pages] - Pragyan Tripathi +* https://ertu.dev/posts/i-made-an-online-shooter-game-in-lisp/[I made a multiplayer shooter game in Lisp] - Ertuğrul Çetin + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/scicloj/wolframite[wolframite] 1.0.0 - An interface between Clojure and Wolfram Language (the language of Mathematica) +* https://github.com/lispyclouds/navi[navi] https://github.com/lispyclouds/navi/releases/tag/0.1.2[0.1.2] - A tiny, data-driven library converting OpenAPI spec to Reitit routes +* https://github.com/filipesilva/gen[gen] 1.0.3 - A CLI tool to generate files and run commands from templates +* https://github.com/juji-io/datalevin[datalevin] https://github.com/juji-io/datalevin/blob/master/CHANGELOG.md[0.9.17] - A simple, fast and versatile Datalog database +* https://github.com/slagyr/speclj[speclj] https://github.com/slagyr/speclj/blob/master/CHANGES.md[3.6.0] - pronounced "speckle": a TDD/BDD framework for Clojure +* https://github.com/uncomplicate/clojure-cpp[clojure-cpp] 0.4.0 - Clojure native interop through JavaCPP +* https://github.com/xadecimal/fpipes[fpipes] 1.0.0 - Functional pipe operators inspired by the F# and OCaml |> pipe operator for Clojure +* https://github.com/igrishaev/pg2[pg2] https://github.com/igrishaev/pg2/blob/master/CHANGELOG.md[0.1.31] - A fast PostgreSQL driver for Clojure +* https://github.com/darkleaf/di[di] https://github.com/darkleaf/di/blob/master/CHANGELOG.md[3.3.0] - DI is a dependency injection framework that allows you to define dependencies as cheaply as defining function arguments +* https://github.com/clojure/java.data[java.data] https://github.com/clojure/java.data/blob/master/CHANGELOG.md[1.3.113] - Functions for recursively converting Java beans to Clojure and vice versa +* https://github.com/noahtheduke/clein[clein] https://github.com/NoahTheDuke/clein/blob/main/CHANGELOG.md[0.4.1] - Build and deploy your deps.edn projects with ease! +* https://github.com/babashka/babashka-sql-pods[babashka-sql-pods] https://github.com/babashka/babashka-sql-pods/blob/master/CHANGELOG.md[0.1.3] - Babashka pods for SQL databases +* https://github.com/seancorfield/honeysql[honeysql] https://github.com/seancorfield/honeysql/blob/develop/CHANGELOG.md[2.6.1270] - Turn Clojure data structures into SQL +* https://github.com/scicloj/clay[clay] https://github.com/scicloj/clay/blob/main/CHANGELOG.md[2-beta28] - A tiny Clojure tool for dynamic workflow of data visualization and literate programming +* https://github.com/borkdude/deps.clj[deps.clj] https://github.com/borkdude/deps.clj/blob/master/CHANGELOG.md[1.12.0.1495-2] - A faithful port of the clojure CLI bash script to Clojure +* https://github.com/chr15m/cljs-josh[cljs-josh] 0.0.5 - Scittle cljs live-reloading server +* https://github.com/lispyclouds/navi[navi] https://github.com/lispyclouds/navi/releases/tag/0.1.2[0.1.2] - A tiny, data-driven library converting OpenAPI spec to Reitit routes +* https://github.com/scicloj/tableplot[tableplot] https://github.com/scicloj/tableplot/blob/main/CHANGELOG.md[1-beta9.1] - Easy layered graphics with Hanami & Tablecloth +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-beta5.1] - A clojure framework for data science +* https://github.com/clojure-lsp/clojure-lsp[clojure-lsp] https://github.com/clojure-lsp/clojure-lsp/releases/tag/2025.01.22-23.28.23[2025.01.22-23.28.23] - Clojure & ClojureScript Language Server (LSP) implementation \ No newline at end of file diff --git a/content/news/2025/01/30/deref.adoc b/content/news/2025/01/30/deref.adoc new file mode 100644 index 00000000..b8499219 --- /dev/null +++ b/content/news/2025/01/30/deref.adoc @@ -0,0 +1,56 @@ += Clojure Deref (Jan 30, 2025) +Alex Miller +2025-01-30 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=A7CcTaVC1d4[Clojure core.async Evolution by Alex Miller] - FunctionalConf 2025 +* https://www.youtube.com/watch?v=uj2wGDeOimU[Clojure visual-tools 30 - Workflow Demos 4: LLMs in Emacs for Clojure] - Sci Cloj +* https://www.youtube.com/watch?v=9wN-uBnrxgs[Apropos Clojure 2025-01-28] - apropos clojure +* https://www.youtube.com/watch?v=EoPOAtiqOC4[Episode 4 ... identity] - Content Made Simple +* https://www.youtube.com/watch?v=sVLXi617hEE[Episode 5 ... users] - Content Made Simple +* https://www.freshcodeit.com/podcast/you-should-be-living-in-pain-right[Episode 07: You should be living in pain, right?] - Clojure in Product +* https://www.youtube.com/watch?v=CspQX_R0NbM[Don't fear the storm (by Juan Monetta)] - London Clojurians +* https://www.youtube.com/watch?v=vnvcKtHHMVQ[Noj v2 - getting started - from raw data to a blog post] - Sci Cloj + +== Blogs, articles, and projects + +* https://electric.hyperfiddle.net/blog/y20250123_waveform[On the state space of CRUD apps vs visual tools — Electric Clojure] - Dustin Getz +* https://bogoyavlensky.com/blog/e2e-tests-in-clojure-with-testcontainers/[End-to-end tests in Clojure with Etaoin and Testcontainers] - Andrey Bogoyavlenskiy +* https://fnguy.com/fulcro_statecharts.html[SCXML-Inspired State Charts In Clojure(script)] - Alex Sheluchin +* https://biffweb.com/p/structuring-large-codebases/[Structuring large Clojure codebases with Biff] - Jacob O'Bryant +* https://mauricio.szabo.link/blog/2025/01/29/quick-post-multiple-shadow-cljs-builds-at-the-same-runtime/[Multiple Shadow-CLJS builds at the same runtime] - Maurício Szabo +* https://thenewstack.io/from-c-to-clojure-new-language-promises-best-of-both/[From C++ to Clojure: New Language Promises Best of Both] - Darryl K. Taft + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/clojure/brew-install[brew-install] https://clojure.org/releases/tools[1.12.0.1501] - Clojure CLI +* https://github.com/juji-io/editscript[editscript] https://github.com/juji-io/editscript/blob/master/CHANGELOG.md[0.6.6] - A library to diff and patch Clojure/ClojureScript data structures +* https://github.com/uncomplicate/neanderthal[neanderthal] https://github.com/uncomplicate/neanderthal/blob/master/CHANGELOG.md#0500[0.52.0] - Fast Clojure Matrix Library +* https://github.com/roman01la/cljs-worklet[cljs-worklet] 0.2.0 - Run ClojureScript functions on a worklet thread in React Native +* https://github.com/darkleaf/hazel[hazel] - POC exploring adaptation of Datomic principles for the frontend +* https://github.com/tonsky/clojure-plus[clojure-plus] https://github.com/tonsky/clojure-plus/blob/main/CHANGELOG.md[1.0.0] - A collection of utilities that improve Clojure experience +* https://github.com/seancorfield/next-jdbc[next-jdbc] https://github.com/seancorfield/next-jdbc/blob/develop/CHANGELOG.md[1.3.994] - A modern low-level Clojure wrapper for JDBC-based access to databases +* https://github.com/cjohansen/replicant[replicant] 2025.01.29 - A data-driven rendering library for Clojure(Script) that renders hiccup to DOM or to strings +* https://github.com/ikappaki/basilisp-blender[basilisp-blender] https://github.com/ikappaki/basilisp-blender/blob/main/CHANGELOG.md[0.4.0] - A library designed to facilitate the execution of Basilisp Clojure code within Blender +* https://github.com/dundalek/stratify[stratify] https://github.com/dundalek/stratify/blob/master/CHANGELOG.md[0.3.0] - Explore and improve architecture of software, visualize structure and dependencies of codebases, calculate code metrics +* https://github.com/clj-commons/pretty[pretty] https://github.com/clj-commons/pretty/blob/main/CHANGES.md[3.3.1] - Library for helping print things prettily, in Clojure - ANSI fonts, formatted exceptions +* https://github.com/hlship/cli-tools[cli-tools] https://github.com/hlship/cli-tools/blob/main/CHANGES.md[0.15] - CLIs and subcommands for Clojure or Babashka +* https://github.com/fulcrologic/statecharts[statecharts] 1.2.13 - A Statechart library for CLJ(S) +* https://github.com/fulcrologic/fulcro[fulcro] 3.8.2 - A library for development of single-page full-stack web applications in clj/cljs +* https://github.com/fulcrologic/fulcro-rad-semantic-ui[fulcro-rad-semantic-ui] 1.4.6 - Semantic UI Rendering Plugin for RAD +* https://github.com/clojure-goes-fast/clj-java-decompiler[clj-java-decompiler] https://github.com/clojure-goes-fast/clj-java-decompiler/blob/master/CHANGELOG.md[0.3.7] - REPL-integrated Clojure-to-Java decompiler +* https://github.com/hlship/cli-tools[cli-tools] https://github.com/hlship/cli-tools/blob/main/CHANGES.md[0.15.1] - CLIs and subcommands for Clojure or Babashka +* https://github.com/BetterThanTomorrow/calva[calva] https://github.com/BetterThanTomorrow/calva/releases/tag/v2.0.485[2.0.485] - Clojure & ClojureScript Interactive Programming for VS Code +* https://github.com/borkdude/deps.clj[deps.clj] https://github.com/borkdude/deps.clj/blob/master/CHANGELOG.md[1.12.0.1501] - A faithful port of the clojure CLI bash script to Clojure +* https://github.com/clj-commons/virgil[virgil] https://github.com/clj-commons/virgil/blob/master/CHANGELOG.md[0.3.2] - Recompile Java code without restarting the REPL +* https://github.com/fogus/lexical-chocolate[lexical-chocolate] https://github.com/fogus/lexical-chocolate/blob/master/CHANGELOG.md[0.0.3] - Provides utilities for building lexical contours +* https://github.com/scicloj/devcontainer-templates[devcontainer-templates] 1.1.2 - Devcontainer templates for Clojure +* https://repo.prod.meissa.de/meissa/dda-backup[dda-backup] 5.3.0 - Backup library \ No newline at end of file diff --git a/content/news/2025/02/06/deref.adoc b/content/news/2025/02/06/deref.adoc new file mode 100644 index 00000000..2fb2455e --- /dev/null +++ b/content/news/2025/02/06/deref.adoc @@ -0,0 +1,42 @@ += Clojure Deref (Feb 6, 2025) +Alex Miller +2025-02-06 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=A7CcTaVC1d4[Clojure core.async Evolution by Alex Miller #FnConf 2025] - ConfEngine +* https://www.youtube.com/watch?v=YEHVEId-utY[Composing (Clojure) Web Stacks using Functional First Principles by Aditya Athalye #FnConf 2025] - ConfEngine +* https://www.youtube.com/watch?v=X__jCh_Yj9w&t=5s[Rama: the 100x programming platform with functional programming at its core - Nathan Marz #FnConf 25] - ConfEngine +* https://www.youtube.com/watch?v=fgRt0ecWfEE[Clojure Corner: Interview with David Nolen] - Flexiana +* https://www.freshcodeit.com/podcast/clojurescript-is-a-clojure-killer-app[Episode 08: ClojureScript is a Clojure killer app] - Clojure in Product +* https://github.com/fogus/evalive/blob/master/CHANGELOG.md[Clojure Data-recur meeting 7 - R4Clj 1: Introducing R and the Tidyverse] - Sci Cloj +* https://www.youtube.com/watch?v=HstQMB3GU4I[Clojure Atom Internals, AtomicReference and Implementation Details] - Andrey Fadeev +* https://www.youtube.com/watch?v=0b_PPWMp_Ls[Static Site Search written in Clojure] - Clojure Diary + +== Blogs, articles, and projects + +* https://www.patreon.com/posts/transparency-121265695[Transparency report, January 2025] - Nikita Prokopov +* https://electric.hyperfiddle.net/blog/y20250112_data_browser[Object Browser demo — Internal Tools with Electric Clojure, Part 3] - Dustin Getz +* https://mccormick.cx/news/entries/advantages-of-generating-clojure-with-llms[Advantages of Generating Clojure with LLMs] - Chris McCormick +* https://medium.com/@_jba/classifying-data-for-developers-in-a-hurry-using-llms-569c895ccfb2[Classifying data for developers in a hurry using LLMs] - Julien Bille +* https://martinklepsch.org/posts/one-shot-babashka-cli-scripts[One-Shot Babashka CLI Scripts] - Martin Klepsch + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/cognitect-labs/aws-api[aws-api] https://github.com/cognitect-labs/aws-api/blob/main/CHANGES.md[0.8.730-beta01] - AWS, data driven +* https://github.com/starfederation/datastar[datastar] 1.0.0-beta.3 - The hypermedia framework +* https://github.com/scicloj/metamorph.ml[metamorph.ml] https://github.com/scicloj/metamorph.ml/blob/main/CHANGELOG.md[1.0] - Machine learning functions for metamorph based on machine learning pipelines +* https://github.com/scicloj/tableplot[tableplot] https://github.com/scicloj/tableplot/blob/main/CHANGELOG.md[1-beta10.1] - Easy layered graphics with Hanami & Tablecloth +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-beta6] - A clojure framework for data science +* https://github.com/bhauman/rebel-readline/tree/master/rebel-readline-nrepl[rebel-readline-nrepl] 0.1.5 - A Clojure library that brings the flexibility of Rebel Readline to your terminal as an nREPL client +* https://github.com/bhauman/rebel-readline[rebel-readline] https://github.com/bhauman/rebel-readline/blob/master/rebel-readline/CHANGELOG.md[0.1.5] - Terminal readline library for Clojure dialects +* https://github.com/chr15m/cljs-josh[cljs-josh] 0.0.6 - Scittle cljs live-reloading server +* https://github.com/fogus/evalive[evalive] https://github.com/fogus/evalive/blob/master/CHANGELOG.md[1.1.1] - Eval functions and macros +* https://github.com/shipclojure/voice-fn[voice-fn] https://github.com/shipclojure/voice-fn/blob/main/CHANGELOG.md[0.1.2] - A Clojure library for building real-time voice-enabled AI pipelines \ No newline at end of file diff --git a/content/news/2025/02/14/deref.adoc b/content/news/2025/02/14/deref.adoc new file mode 100644 index 00000000..0f07ecfe --- /dev/null +++ b/content/news/2025/02/14/deref.adoc @@ -0,0 +1,56 @@ += Clojure Deref (Feb 14, 2025) +Alex Miller +2025-02-14 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=zkEZykTOlQA[Alex Miller guests on Apropos Clojure 2025-02-11] - apropos clojure +* https://www.youtube.com/watch?v=CZqsg3MzbyU[Piloto Podcast deref-in] - clojure-br +* https://www.youtube.com/watch?v=PlHzTEkjAK4[EP01 - Podcast deref-in] - clojure-br +* https://www.freshcodeit.com/podcast/boundaries-to-do-a-meaningful-work[Episode 09: You need boundaries to do a meaningful work] - Clojure in Product +* https://www.youtube.com/watch?v=mzNBRmZHmD4[Clojure Crash Course 2025: Beginner Friendly] - Andrey Fadeev +* https://www.youtube.com/watch?v=TN11X9z9LjU[My aider AI dev setup] - mccormix +* https://www.youtube.com/watch?v=VCu42vxBkV8[Learn Clojure — Exception Handling] - Clojure Diary +* https://www.youtube.com/watch?v=PCY5PYHv-Uc[Learn Clojure — Dealing with Text files] - Clojure Diary + +== Blogs, articles, and projects + +* https://emil0r.com/posts/2025-02-08-modelling-permissions-in-datomic/[Modelling permissions in Datomic] - Emil Bengtsson +* https://flexiana.com/news/2025/02/side-by-side-datomic-and-postgresql-part-2[Datomic vs PostgreSQL: Time Travel and Historical Data (Part 2)] - Giga Chokheli (Flexiana) +* https://bytes.vadelabs.com/taming-llm-responses-with-instaparse/[Taming LLM Responses with Instaparse] - Pragyan Tripathi +* https://widdindustries.com/blog/revisiting-clojure-donts-concat.html[Revisiting 'Clojure Don'ts : concat] - Henry Widd +* https://yyhh.org/blog/2025/02/achieving-high-throughput-and-low-latency-through-adaptive-asynchronous-transaction/[Achieving High Throughput and Low Latency through Adaptive Asynchronous Transaction] - Huahai Yang +* https://fnguy.com/pathom3_instrumentation.html[Pathom3 Instrumentation] - Alex Sheluchin + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/clojure/brew-install[brew-install] https://clojure.org/releases/tools[1.12.0.1517] - Clojure CLI +* https://github.com/clojure/tools.build[tools.build] https://github.com/clojure/tools.build/blob/master/CHANGELOG.md[0.10.7] - Clojure builds as Clojure programs +* https://github.com/abogoyavlensky/slim[slim] https://github.com/abogoyavlensky/slim/blob/master/CHANGELOG.md[0.2.2] - The slim way to build Clojure +* https://github.com/phronmophobic/llama.clj[llama.clj] https://github.com/phronmophobic/llama.clj/blob/main/CHANGELOG.md[0.8.6] - Run LLMs locally. A clojure wrapper for llama.cpp +* https://github.com/igrishaev/taggie[taggie] https://github.com/igrishaev/taggie/blob/master/CHANGELOG.md[0.1.0] - Can we gain anything from Clojure tags? +* https://github.com/monkey-projects/aero-ext[aero-ext] 0.3.0 - Extensions to use with the Aero config lib +* https://github.com/scicloj/scicloj.ml.fasttext[scicloj.ml.fasttext] https://github.com/scicloj/scicloj.ml.fasttext/blob/master/CHANGELOG.md[0.2] - clj-djl models for metamorph.ml and scicloj.ml +* https://github.com/brettatoms/zodiac[zodiac] https://github.com/brettatoms/zodiac/blob/master/CHANGELOG.md[0.4.58] - A simple web framework for Clojure +* https://github.com/brettatoms/zodiac-assets[zodiac-assets] https://github.com/brettatoms/zodiac-assets/blob/master/CHANGELOG.md[0.2.22] - A Zodiac extension to help manage static assets +* https://github.com/brettatoms/zodiac-sql[zodiac-sql] https://github.com/brettatoms/zodiac-sql/blob/master/CHANGELOG.md[0.1.8] - A Zodiac extension for connecting to a SQL database +* https://github.com/jacobemcken/aws-simple-sign[aws-simple-sign] https://github.com/jacobemcken/aws-simple-sign/releases/tag/v2.1.0[2.1.0] - A Clojure library for pre-signing S3 URLs and signing HTTP requests for AWS +* https://github.com/clojure-lsp/clojure-lsp-intellij[clojure-lsp-intellij] https://github.com/clojure-lsp/clojure-lsp-intellij/blob/master/CHANGELOG.md#210[3.0.0] - Intellij Plugin for Clojure & ClojureScript development via Language Server (LSP) made in Clojure +* https://github.com/afucher/clojure-repl-intellij[clojure-repl-intellij] https://github.com/afucher/clojure-repl-intellij/blob/master/CHANGELOG.md[2.0.0] - Free OpenSource IntelliJ plugin for Clojure REPL development +* https://github.com/emil0r/porter[porter] - babashka library for creating config files +* https://git.sr.ht/~hiredman/machinate[machinate] https://git.sr.ht/~hiredman/machinate/tree/master/item/CHANGELOG.md[0.0.126] - a new new concurrent ml in clojure +* https://github.com/clojure-lsp/clojure-lsp[clojure-lsp] https://github.com/clojure-lsp/clojure-lsp/releases/tag/2025.02.07-16.11.24[2025.02.07-16.11.24] - Clojure & ClojureScript Language Server (LSP) implementation +* https://github.com/scicloj/metamorph.ml[metamorph.ml] https://github.com/scicloj/metamorph.ml/blob/main/CHANGELOG.md[1.1.1] - Machine learning functions for metamorph based on machine learning pipelines +* https://github.com/clojure-goes-fast/clj-async-profiler[clj-async-profiler] https://github.com/clojure-goes-fast/clj-async-profiler/blob/master/CHANGELOG.md[1.6.1] - Embedded high-precision Clojure profiler +* https://github.com/borkdude/deps.clj[deps.clj] https://github.com/borkdude/deps.clj/blob/master/CHANGELOG.md[1.12.0.1517] - A faithful port of the clojure CLI bash script to Clojure +* https://github.com/squint-cljs/squint[squint] https://github.com/squint-cljs/squint/blob/main/CHANGELOG.md[0.8.134] - Light-weight ClojureScript dialect +* https://github.com/fogus/reinen-vernunft[reinen-vernunft] 0.0.2 - A Clojure library exploring the application of pure reasoning algorithms +* https://github.com/scicloj/tableplot[tableplot] https://github.com/scicloj/tableplot/blob/main/CHANGELOG.md[1-beta10.2] - Easy layered graphics with Hanami & Tablecloth +* https://github.com/borkdude/rewrite-edn[rewrite-edn] https://github.com/borkdude/rewrite-edn/blob/master/CHANGELOG.md[0.4.9] - Utility lib on top of rewrite-clj with common operations to update EDN while preserving whitespace and comments \ No newline at end of file diff --git a/content/news/2025/02/21/deref.adoc b/content/news/2025/02/21/deref.adoc new file mode 100644 index 00000000..f502b899 --- /dev/null +++ b/content/news/2025/02/21/deref.adoc @@ -0,0 +1,46 @@ += Clojure Deref (Feb 21, 2025) +Alex Miller +2025-02-21 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=xg0VjqgSxCw[Clojure Corner: Interview with Magnar Sveen] - Flexiana +* https://www.freshcodeit.com/podcast/open-source-like-eyes-looking-at-it[Episode 10: Open-source is like all eyes looking at it] - Clojure in Product +* https://www.youtube.com/live/_zOMH26d24c[[EP02] deref-in] - clojure-br +* https://www.youtube.com/watch?v=Qyf15Rrzr_o[Intro to Collet. A low-code ETL management tool (by Sergei Tkachenko)] - London Clojurians +* https://www.youtube.com/watch?v=vSaOweJg4BA[Learn Clojure — edn files] - Clojure Diary +* https://www.youtube.com/watch?v=sqpkZd5FlEE[Learn Clojure — CSV Files] - Clojure Diary + +== Blogs, articles, and projects + +* https://elementsofclojure.com[Elements of Clojure] - Zachary Tellman +* https://shagunagrawal.me/posts/making-a-simple-datalog-engine-in-clojure/[Making a simple Datalog Engine in Clojure] - Shagun Agrawal +* https://gaiwan.co/blog/why-clojure/[Why Clojure?] - Arne Brasseur (Gaiwan) +* https://www.jvm-weekly.com/p/the-state-of-scala-and-clojure-surveys[The State of Scala & Clojure Surveys: How is functional programming on JVM doing - JVM Weekly vol. 119] - Artur Skowronski +* https://lambdaisland.com/blog/2025-02-18-on-extensibility[On Extensibility] - Laurence Chen +* https://clojure-goes-fast.com/blog/tracking-memory-usage/[Tracking memory usage with clj-memory-meter.trace] - Oleksandr Yakushev + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/clojure/core.async[core.async] 1.8.711-beta1 - Facilities for async programming and communication in Clojure +* https://github.com/yonureker/stripe-clojure[stripe-clojure] https://github.com/yonureker/stripe-clojure/blob/master/CHANGELOG.md[0.1.3] - Clojure SDK for the Stripe API +* https://github.com/clojure-emacs/cider[cider] https://github.com/clojure-emacs/cider/releases/tag/v1.17.0[1.17] - The Clojure Interactive Development Environment that Rocks for Emacs +* https://github.com/gersak/toddler[toddler] 0.9.1 - UI library based on lilactown/helix and shadow-css libraries +* https://github.com/clojure-goes-fast/clj-memory-meter[clj-memory-meter] https://github.com/clojure-goes-fast/clj-memory-meter/blob/master/CHANGELOG.md[0.4.0] - Measure object memory consumption in Clojure +* https://github.com/juji-io/datalevin[datalevin] https://github.com/juji-io/datalevin/blob/master/CHANGELOG.md[0.9.20] - A simple, fast and versatile Datalog database +* https://github.com/clj-kondo/clj-kondo[clj-kondo] https://github.com/clj-kondo/clj-kondo/blob/master/CHANGELOG.md[2025.02.20] - Static analyzer and linter for Clojure code that sparks joy +* https://repo.prod.meissa.de/meissa/c4k-jitsi[c4k-jitsi] 3.0.1 - convention 4 kubernetes +* https://github.com/scicloj/clay[clay] https://github.com/scicloj/clay/blob/main/CHANGELOG.md[2-beta29] - A tiny Clojure tool for dynamic workflow of data visualization and literate programming +* https://github.com/scicloj/kindly[kindly] https://github.com/scicloj/kindly/blob/main/CHANGELOG.md[4-beta15] - A small library for defining how different kinds of things should be rendered +* https://github.com/fogus/reinen-vernunft[reinen-vernunft] https://github.com/fogus/reinen-vernunft/blob/main/CHANGELOG.md[0.0.3] - A Clojure library exploring the application of pure reasoning algorithms +* https://github.com/scicloj/tableplot[tableplot] https://github.com/scicloj/tableplot/blob/main/CHANGELOG.md[1-beta11] - Easy layered graphics with Hanami & Tablecloth +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-beta7] - A clojure framework for data science +* https://github.com/afucher/clojure-repl-intellij[clojure-repl-intellij] https://github.com/afucher/clojure-repl-intellij/blob/master/CHANGELOG.md[2.1.0] - Free OpenSource IntelliJ plugin for Clojure REPL development +* https://github.com/roman01la/uix-cloudflare-template[uix-cloudflare-template] - Template project with UIx web app hosted on Cloudflare workers with REST API served from Cloudflare D1 (SQLite) \ No newline at end of file diff --git a/content/news/2025/02/27/deref.adoc b/content/news/2025/02/27/deref.adoc new file mode 100644 index 00000000..d19150fb --- /dev/null +++ b/content/news/2025/02/27/deref.adoc @@ -0,0 +1,45 @@ += Clojure Deref (Feb 27, 2025) +Alex Miller +2025-02-27 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=HwoGMhIx5w0[Clojure AI Meetup 1: voice-fn - real-time voice-enabled AI pipelines] - Sci Cloj +* https://www.youtube.com/watch?v=lcRqEYC-IXo[clj-depend: Validando a arquitetura da sua aplicação | Fabio Domingues] - clojure-br +* https://www.youtube.com/watch?v=MF-A46cTYUY[Alex Engelberg guests on Apropos Clojure 2025-02-25] - apropos clojure +* https://www.youtube.com/live/ut3Q4Rns5IQ[[EP.03] deref-in] - clojure-br +* https://www.youtube.com/watch?v=gDNxF_kK1z8[Ancestry of Polymorphism in Clojure by Amogh Talpallikar #FnConf 2025] - ConfEngine +* https://www.youtube.com/watch?v=twIelJGKuVA[Learn Clojure — Dealing with JSON files] - Clojure Diary +* https://www.youtube.com/watch?v=YOZM_6_DImM[Learn Clojure — YAML] - Clojure Diary +* https://www.youtube.com/watch?v=J9NUEJ_dCdA[Extending Java Class in Clojure] - Clojure Diary + +== Blogs, articles, and projects + +* https://fnguy.com/phuzql_poc.html[PhuzQL: A Fuzzy GraphQL Explorer with Babashka, Pathom, and FZF (PoC)] - Alex Sheluchin +* https://blog.danieljanus.pl/2025/02/21/double-double-toil-and-trouble/[Double, double toil and trouble] - Daniel Janus +* https://www.taoensso.com/news/2025-02-open-source[Open source update] - Peter Taoussanis + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/liquidz/elin[elin] https://github.com/liquidz/elin/blob/main/CHANGELOG.adoc[2025.2.1-alpha] - A Clojure development environment for Vim/Neovim and more!, primarily written in Babashka +* https://github.com/yonureker/stripe-clojure[stripe-clojure] https://github.com/yonureker/stripe-clojure/blob/master/CHANGELOG.md[0.1.4] - Clojure SDK for the Stripe API +* https://github.com/jpmonettas/flow-storm-debugger[flow-storm-debugger] https://github.com/flow-storm/flow-storm-debugger/blob/master/CHANGELOG.md[4.2.0] - A debugger for Clojure and ClojureScript with some unique features +* https://github.com/flow-storm/flow-storm-async-flow-plugin[flow-storm-async-flow-plugin] https://github.com/flow-storm/flow-storm-async-flow-plugin/blob/master/CHANGELOG.md[1.0.0-alpha] - A FlowStorm plugin to debug core.async.flow graphs +* https://github.com/flow-storm/flow-storm-web-plugin[flow-storm-web-plugin] https://github.com/flow-storm/flow-storm-web-plugin/blob/master/CHANGELOG.md[1.0.0-alpha] - FlowStorm web plugin +* https://github.com/cognitect-labs/aws-api[aws-api] https://github.com/cognitect-labs/aws-api/blob/main/CHANGES.md[0.8.735] - AWS, data driven +* https://github.com/imrekoszo/unlazy[unlazy] https://github.com/imrekoszo/unlazy/releases/tag/v1.0.1[1.0.1] - Configuration for clj-kondo, discouraging lazy processing +* https://github.com/scicloj/metamorph.ml[metamorph.ml] https://github.com/scicloj/metamorph.ml/blob/main/CHANGELOG.md[1.2] - Machine learning functions for metamorph based on machine learning pipelines +* https://github.com/squint-cljs/squint[squint] https://github.com/squint-cljs/squint/blob/main/CHANGELOG.md[0.8.136] - Light-weight ClojureScript dialect +* https://github.com/scicloj/clay[clay] https://github.com/scicloj/clay/blob/main/CHANGELOG.md[2-beta30] - A tiny Clojure tool for dynamic workflow of data visualization and literate programming +* https://github.com/fulcrologic/statecharts[statecharts] 1.2.15 - A Statechart library for CLJ(S) +* https://github.com/clj-commons/aleph[aleph] https://github.com/clj-commons/aleph/blob/master/CHANGES.md[0.8.3] - Asynchronous streaming communication for Clojure - web server, web client, and raw TCP/UDP +* https://github.com/fogus/reinen-vernunft[reinen-vernunft] https://github.com/fogus/reinen-vernunft/blob/main/CHANGELOG.md[0.0.4] - A Clojure library exploring the application of pure reasoning algorithms +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-beta8] - A clojure framework for data science +* https://github.com/clojure-emacs/cider[cider] https://github.com/clojure-emacs/cider/blob/master/CHANGELOG.md[1.17.1] - The Clojure Interactive Development Environment that Rocks for Emacs \ No newline at end of file diff --git a/content/news/2025/03/06/deref.adoc b/content/news/2025/03/06/deref.adoc new file mode 100644 index 00000000..a078d9f2 --- /dev/null +++ b/content/news/2025/03/06/deref.adoc @@ -0,0 +1,48 @@ += Clojure Deref (Mar 6, 2025) +Alex Miller +2025-03-06 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=mk6Gffzinyw[Lazytest: Standalone BDD testing (by Noah Bogart)] - London Clojurians +* https://soundcloud.com/clojurestream/e99-replicant-with-christian-johansen[E99 - Replicant with Christian Johansen] - ClojureStream Podcast +* https://www.youtube.com/watch?v=BWowab_aLzo[Cloverage — Clojure Test Coverage] - Clojure Diary +* https://www.youtube.com/watch?v=l3zUcT4oSt0[Filtering maps based on key value pairs in Clojure] - Clojure Diary + +== Blogs, articles, and projects + +* https://www.clojuriststogether.org/news/call-for-proposals.-feb.-2025-member-survey/[Call for Proposals. Feb. 2025 Member Survey] - Kathy Davis (Clojurists Together) +* https://pragprog.com/titles/mmclobrain/clojure-brain-teasers/[Clojure Brain Teasers] - Alex Miller and Lorilyn Jordan Miller +* https://www.karimarttila.fi/clojurescript/2025/02/28/clojurescript-with-replicant.html[Frontend Development with Clojurescript and Replicant] - Kari Marttila +* https://buttondown.com/tensegritics-curiosities/archive/extensible-macros/[Extensible Macros] - Christophe Grand +* https://blog.michielborkent.nl/oss-updates-jan-feb-2025.html[OSS updates January and February 2025] - Michiel Borkent +* https://alza-bitz.github.io/programmers-how-do-you-partition[Programmers: How Do You Partition A Collection?] - Alex Coyle +* https://blog.redplanetlabs.com/2025/03/04/how-multiply-went-from-datomic-to-xtdb-to-rama/[How Multiply went from Datomic to XTDB to Rama] - Nathan Marz +* https://flexiana.com/news/clojure/2025/03/clojure-vs-other-functional-programming-languages-a-quick-comparison[Clojure vs. Other Functional Programming Languages: A Quick Comparison] - Ramon Rios (Flexiana) + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/clojure/brew-install[brew-install] https://clojure.org/releases/tools[1.12.0.1530] - Clojure CLI +* https://github.com/eploko/docker-nrepl.el[docker-nrepl.el] - Easily connect CIDER to nREPL servers running in Docker containers +* https://github.com/clj-arsenal/action[action] 0.0.9 - Controlled, data oriented state manipulation - Clojure/Script/Dart +* https://github.com/PEZ/baldr[baldr] 1.0.9 - Positive reporting for clojure.test, works for Clojure, ClojureScript, Babashka, and nbb +* https://github.com/flow-storm/flow-storm-cljs-compiler-plugin[flow-storm-cljs-compiler-plugin] 1.0.0-beta2 - A FlowStorm plugin to debug the ClojureScript compiler +* https://github.com/rpub-clj/rpub[rpub] https://github.com/rpub-clj/rpub/blob/main/CHANGELOG.md[0.1.0] - A free open-source CMS written in Clojure +* https://github.com/babashka/babashka[babashka] https://github.com/babashka/babashka/blob/master/CHANGELOG.md[1.12.197] - Native, fast starting Clojure interpreter for scripting +* https://github.com/squint-cljs/squint[squint] https://github.com/squint-cljs/squint/blob/main/CHANGELOG.md[0.8.138] - Light-weight ClojureScript dialect +* https://github.com/practicalli/clojure-cli-config[clojure-cli-config] https://github.com/practicalli/clojure-cli-config/releases/tag/2025-03-01[2025-03-01] - User aliases and Clojure CLI configuration for deps.edn based projects +* https://github.com/liquidz/elin[elin] https://github.com/liquidz/elin/blob/main/CHANGELOG.adoc[2025.3.1-alpha] - A Clojure development environment for Vim/Neovim and more!, primarily written in Babashka +* https://github.com/fogus/rv[rv] https://github.com/fogus/rv/blob/main/CHANGELOG.md[0.0.5] - A Clojure library exploring the application of pure reasoning algorithms +* https://github.com/cjohansen/replicant[replicant] 2025.03.02 - A data-driven rendering library for Clojure(Script) that renders hiccup to DOM or to strings +* https://github.com/clojure-emacs/clojure-ts-mode[clojure-ts-mode] https://github.com/clojure-emacs/clojure-ts-mode/blob/main/CHANGELOG.md#020[0.2.3] - The next generation Clojure major mode for Emacs, powered by TreeSitter +* https://github.com/flow-storm/flow-storm-async-flow-plugin[flow-storm-async-flow-plugin] https://github.com/flow-storm/flow-storm-async-flow-plugin/blob/master/CHANGELOG.md[1.0.0-beta3] - A FlowStorm plugin to debug core.async.flow graphs +* https://github.com/scicloj/clay[clay] https://github.com/scicloj/clay/blob/main/CHANGELOG.md[2-beta31.1] - A tiny Clojure tool for dynamic workflow of data visualization and literate programming +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-beta9.1] - A clojure framework for data science +* https://github.com/borkdude/deps.clj[deps.clj] https://github.com/borkdude/deps.clj/blob/master/CHANGELOG.md[1.12.0.1530] - A faithful port of the clojure CLI bash script to Clojure \ No newline at end of file diff --git a/content/news/2025/03/14/deref.adoc b/content/news/2025/03/14/deref.adoc new file mode 100644 index 00000000..1df98e58 --- /dev/null +++ b/content/news/2025/03/14/deref.adoc @@ -0,0 +1,68 @@ += Clojure Deref (Mar 14, 2025) +Alex Miller +2025-03-14 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=vfYB-5Z7gts[Sean Corfield guests on Apropos Clojure 2025-03-11] - apropos clojure +* https://www.youtube.com/live/WIJh2HdNkAU[[EP.04] deref-in] - clojure-br +* https://www.youtube.com/watch?v=YYHRx3EnPmg[ClojureScript compiler fun with FlowStorm] - Juan Monetta +* https://www.youtube.com/watch?v=VzQxh8W1CVI[Ways to debug Clojure code: println, pprint, hashp & debugger] - Andrey Fadeev +* https://www.youtube.com/watch?v=txcD-drmaFs[What's the point of LISP?] - mccormix +* https://www.youtube.com/watch?v=tDz1x2d65C0[Noj Reload Executable] - Timothy Pratley +* https://www.youtube.com/watch?v=gHwFCOkBb_o[Noj in a JAR - setup-free Clojure for beginners] - Sci Cloj +* https://www.youtube.com/watch?v=mrgs6DUViOk[JWT — Authentication and Authorization with JSON web token in Clojure ring] - Clojure Diary + +== Blogs, articles, and projects + +* https://2025.clojure-conj.org[CONJ Nov 12-14 Charlotte, NC] - Clojure/Conj +* https://exercises.clojure.camp/[Exercícios da Clojure Camp agora tem tradução para pt-br] - clojure camp exercises +* https://www.patreon.com/posts/123849792[Transparency report, February 2025] - Nikita Prokopov +* https://pensamientos.hashnode.dev/a-beginners-journey-through-the-clojure-web-development-landscape[A Beginner's Journey Through the Clojure Web Development Landscape] - Jose Javier Blanco Rivero +* https://www.ooloi.org/home/claude-37-meta-reflects-on-clojure-vs-python[Claude 3.7 meta-reflects on Clojure vs Python] - Peter Bengtson +* https://whatacold.io/blog/2025-02-22-flask-clojure-rewrite/[Rewrite of a Flask Web App in Clojure] - Ken Huang +* https://www.karimarttila.fi/clojurescript/2025/03/10/ui-design-with-clojurescript-replicant-and-portfolio.html[Designing UI components with Clojurescript, Replicant and Portfolio] - Kari Marttila +* https://blog.redplanetlabs.com/2025/03/11/how-afterhour-built-an-ultra-scalable-chat-service-in-one-month-with-rama/[How AfterHour built an ultra-scalable chat service in one month with Rama] - Nathan Marz +* https://rigsomelight.com/2025/03/12/inline-eval-adventure.html[Inline Evaluation Adventure] - Bruce Hauman +* http://ernestscribbler.xyz/ernest-reverse-engineers-css-with-clojure.html[In which Ernest reverse engineers CSS with Clojure] - Stephen Nelson-Smith +* https://corfield.org/blog/2025/03/12/lazytest/[Migrating to LazyTest] - Sean Corfield +* https://kirancodes.me/posts/log-data-oriented-programming.html[Functional vs Data-Driven development: a Case-Study in Clojure & OCaml] - Kiran Gopinathan + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/clojure/core.async[core.async] 1.8.718-beta2 - Facilities for async programming and communication in Clojure +* https://github.com/seancorfield/honeysql[honeysql] https://github.com/seancorfield/honeysql/blob/develop/CHANGELOG.md[2.7.1295] - Turn Clojure data structures into SQL +* https://github.com/tonsky/clojure-plus[clojure-plus] https://github.com/tonsky/clojure-plus/blob/main/CHANGELOG.md[1.2.0] - A collection of utilities that improve Clojure experience +* https://github.com/chr15m/awesome-clojure-likes[awesome-clojure-likes] - Curated list of Clojure-like programming languages +* https://github.com/lispyclouds/contajners[contajners] https://github.com/lispyclouds/contajners/releases/tag/1.0.7[1.0.7] - An idiomatic, data-driven, REPL friendly clojure client for OCI container engines +* https://github.com/BetterThanTomorrow/calva[calva] https://github.com/BetterThanTomorrow/calva/releases/tag/v2.0.487[2.0.487] - Clojure & ClojureScript Interactive Programming for VS Code +* https://github.com/abogoyavlensky/slim[slim] https://github.com/abogoyavlensky/slim/blob/master/CHANGELOG.md[0.3.0] - The slim way to build Clojure +* https://github.com/squint-cljs/squint[squint] https://github.com/squint-cljs/squint/blob/main/CHANGELOG.md[0.8.141] - Light-weight ClojureScript dialect +* https://github.com/paintparty/bling[bling] https://github.com/paintparty/bling/blob/main/CHANGELOG.md[0.5.2] - Rich text console printing for Clojure, ClojureScript, and Babashka +* https://github.com/yonureker/stripe-clojure[stripe-clojure] https://github.com/yonureker/stripe-clojure/blob/master/CHANGELOG.md[0.2.1] - Clojure SDK for the Stripe API +* https://github.com/practicalli/astro[astro] https://github.com/practicalli/astro/releases/tag/2025-03-12[2025-03-12] - Rich development workflow with Clojure support, using AstroNvim 4 and selected plugins +* https://github.com/abogoyavlensky/manifest-edn[manifest-edn] https://github.com/abogoyavlensky/manifest-edn/blob/master/CHANGELOG.md[0.1.1] - A small Clojure/Babashka library for hashing static assets +* https://github.com/jacobemcken/wet[wet] https://github.com/jacobemcken/wet/blob/main/CHANGELOG.md[0.3.0] - Liquid in Clojure(Script) +* https://github.com/lukaszkorecki/omega-red[omega-red] 2.2.0 - Idiomatic Redis client for Clojure +* https://github.com/nextdoc/sketch[sketch] 0.1.29 - Domain network modelling +* https://repo.prod.meissa.de/meissa/c4k-keycloak[c4k-keycloak] 1.5.0 - k8s deployment for keycloak +* https://github.com/seancorfield/next-jdbc[next-jdbc] https://github.com/seancorfield/next-jdbc/blob/develop/CHANGELOG.md[1.3.1002] - A modern low-level Clojure wrapper for JDBC-based access to databases +* https://github.com/afucher/clojure-repl-intellij[clojure-repl-intellij] https://github.com/afucher/clojure-repl-intellij/blob/master/CHANGELOG.md[2.4.0] - Free OpenSource IntelliJ plugin for Clojure REPL development +* https://github.com/clojure-lsp/clojure-lsp[clojure-lsp] https://github.com/clojure-lsp/clojure-lsp/blob/master/CHANGELOG.md[2025.03.07-17.42.36] - Clojure & ClojureScript Language Server (LSP) implementation +* https://github.com/borkdude/html[html] https://github.com/borkdude/html/blob/main/CHANGELOG.md[0.2.2] - Html generation library inspired by squint's html tag +* https://github.com/NoahTheDuke/lazytest[lazytest] https://github.com/NoahTheDuke/lazytest/blob/main/CHANGELOG.md[1.6.1] - A standalone BDD test framework for Clojure +* https://github.com/jpmonettas/flow-storm-debugger[flow-storm-debugger] https://github.com/flow-storm/flow-storm-debugger/blob/master/CHANGELOG.md[4.2.1] - A debugger for Clojure and ClojureScript with some unique features +* https://github.com/borkdude/edamame[edamame] https://github.com/borkdude/edamame/blob/master/CHANGELOG.md[1.4.28] - Configurable EDN/Clojure parser with location metadata +* https://github.com/babashka/sci[sci] https://github.com/babashka/sci/blob/master/CHANGELOG.md[0.9.45] - Configurable Clojure/Script interpreter suitable for scripting and Clojure DSLs +* https://github.com/scicloj/clay[clay] https://github.com/scicloj/clay/blob/main/CHANGELOG.md[2-beta32] - A tiny Clojure tool for dynamic workflow of data visualization and literate programming +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-beta10.1] - A clojure framework for data science +* https://github.com/fogus/rv[rv] https://github.com/fogus/rv/blob/main/CHANGELOG.md[0.0.6] - A Clojure library exploring the application of pure reasoning algorithms +* https://github.com/babashka/babashka-sql-pods[babashka-sql-pods] https://github.com/babashka/babashka-sql-pods/blob/master/CHANGELOG.md[0.1.4] - Babashka pods for SQL databases +* https://github.com/squint-cljs/cherry[cherry] https://github.com/squint-cljs/cherry/blob/main/CHANGELOG.md[0.4.24] - Experimental ClojureScript to ES6 module compiler \ No newline at end of file diff --git a/content/news/2025/03/21/deref.adoc b/content/news/2025/03/21/deref.adoc new file mode 100644 index 00000000..250ce2c6 --- /dev/null +++ b/content/news/2025/03/21/deref.adoc @@ -0,0 +1,41 @@ += Clojure Deref (Mar 21, 2025) +Alex Miller +2025-03-21 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=1bUwfgcjoOs[[EP.05] deref-in] - clojure-br + +== Blogs, articles, and projects + +* https://blog.redplanetlabs.com/2025/03/18/rama-the-100x-developer-platform-is-now-free-for-production-use/[Rama, the 100x developer platform, is now free for production use] - Nathan Marz (Red Planet Labs) +* https://replicant.fun/tutorials/forms/[Replicant: Data-driven form processing] - Christian Johansen +* https://replicant.fun/tutorials/first-class-forms/[Replicant: Data-driven first class forms] - Christian Johansen +* https://replicant.fun/tutorials/declarative-forms/[Replicant: Declarative forms] - Christian Johansen + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/Tensegritics/ClojureDart[ClojureDart] - Clojure dialect for Flutter and Dart +* https://github.com/bhauman/rebel-readline/tree/master/rebel-readline-nrepl[rebel-readline-nrepl] 0.1.6 - A Clojure library that brings the flexibility of Rebel Readline to your terminal as an nREPL (Network REPL) client +* https://github.com/filipesilva/gen[gen] 1.1.0 - A CLI tool to generate files and run commands from templates +* https://github.com/thoughtfull-clojure/transductio[transductio] https://github.com/thoughtfull-clojure/transductio/blob/main/CHANGELOG.md[1.1.0] - A bridge from I/O to transducers and back +* https://github.com/slagyr/speclj[speclj] https://github.com/slagyr/speclj/blob/master/CHANGES.md[3.8.0] - pronounced "speckle": a TDD/BDD framework for Clojure +* https://github.com/metosin/vrac[vrac] 0.1.0 - A frontend rendering library in Clojure, for Clojurists +* https://github.com/juji-io/datalevin[datalevin] https://github.com/juji-io/datalevin/blob/master/CHANGELOG.md[0.9.22] - A simple, fast and versatile Datalog database +* https://github.com/igrishaev/pg2[pg2] https://github.com/igrishaev/pg2/blob/master/CHANGELOG.md[0.1.34] - A fast PostgreSQL driver for Clojure +* https://github.com/scicloj/clay[clay] https://github.com/scicloj/clay/blob/main/CHANGELOG.md[2-beta35] - A tiny Clojure tool for dynamic workflow of data visualization and literate programming +* https://github.com/BetterThanTomorrow/calva[calva] https://github.com/BetterThanTomorrow/calva/blob/published/CHANGELOG.md[2.0.492] - Clojure & ClojureScript Interactive Programming for VS Code +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-beta12] - A clojure framework for data science +* https://github.com/fulcrologic/fulcro[fulcro] 3.8.3 - A library for development of single-page full-stack web applications in clj/cljs +* https://github.com/squint-cljs/cherry[cherry] https://github.com/squint-cljs/cherry/blob/main/CHANGELOG.md[0.4.25] - Experimental ClojureScript to ES6 module compiler +* https://github.com/jpmonettas/flow-storm-debugger[flow-storm-debugger] https://github.com/flow-storm/flow-storm-debugger/blob/master/CHANGELOG.md[4.2.2] - A debugger for Clojure and ClojureScript with some unique features +* https://github.com/exoscale/coax[coax] 2.0.2 - Clojure.spec coercion library for clj(s) +* https://github.com/squint-cljs/squint[squint] https://github.com/squint-cljs/squint/blob/main/CHANGELOG.md[0.8.142] - Light-weight ClojureScript dialect +* https://github.com/lukaszkorecki/omega-red[omega-red] 2.3.0 - Idiomatic Redis client for Clojure \ No newline at end of file diff --git a/content/news/2025/03/28/deref.adoc b/content/news/2025/03/28/deref.adoc new file mode 100644 index 00000000..cb7f058f --- /dev/null +++ b/content/news/2025/03/28/deref.adoc @@ -0,0 +1,51 @@ += Clojure Deref (Mar 28, 2025) +Alex Miller +2025-03-28 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=QhMv8KLQMho[Como eu me preparei para chegar bem no Nubank com Alberto Souza] - clojure-br +* https://www.youtube.com/watch?v=cDfmpe_w_3I[Bobbi guests on Apropos Clojure 2025-03-25] - apropos clojure +* https://www.youtube.com/watch?v=WiOUiHsq_dc[Clojure visual-tools 31 - Workflow Demos 5: Clay] - Sci Cloj +* https://www.youtube.com/watch?v=oV9F9bmPr58[Clojure visual-tools 32- Workflow Demos 6: old-school tools, REPL, Emacs, Org-mode, AI, MCP, & more] - Sci Cloj +* https://www.youtube.com/watch?v=pd_lwg2eQ8g[Clojure Corner: Interview with Oleksandr Yakushev] - Flexiana +* https://www.youtube.com/watch?v=tMx-iW-X4Qs[Episode 9 ... the refactoring will continue until morale improves] - Content Made Simple +* https://www.youtube.com/watch?v=_EzB6z_F-Ak[The Y Combinator: developing intuition around abstract recursion - Dave Kimber | Lambda Days 2024] - Code Sync +* https://www.youtube.com/watch?v=lFy9bHxYxIg[Logging in Ring - Not as good as I expected] - Clojure Diary +* https://www.linkedin.com/feed/update/urn:li:ugcPost:7309822102444924931/[The Spring Equinox of Code?] - Peter Strömberg + +== Blogs, articles, and projects + +* https://www.thoughtfull.systems/notes/2025-02-14-run-flags-for-polling-threads/[Run flags for polling threads] - technosophist +* https://clojure.org/reference/deps_edn#basis[Runtime basis] - Alex Miller (Clojure team) +* https://blog.redplanetlabs.com/2025/03/26/next-level-backends-with-rama-graphs/[Next-level backends with Rama: storing and traversing graphs in 60 LOC] - Nathan Marz (Red Planet Labs) +* https://martinklepsch.org/posts/embracing-js-files-in-clojurescript/[Using JS in ClojureScript Projects] - Martin Klepsch + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/clojure/tools.build[tools.build] https://github.com/clojure/tools.build/blob/master/CHANGELOG.md[0.10.8] - Clojure builds as Clojure programs +* https://github.com/tonsky/clojure-plus[clojure-plus] https://github.com/tonsky/clojure-plus/blob/main/CHANGELOG.md[1.3.1] - A collection of utilities that improve Clojure experience +* https://github.com/Tensegritics/ClojureDart[ClojureDart] - Clojure dialect for Flutter and Dart +* https://github.com/thoughtfull-clojure/desiderata[desiderata] https://github.com/thoughtfull-clojure/desiderata/blob/main/CHANGELOG.md[1.0.1] - Things wanted or needed but missing from clojure.core +* https://github.com/whatacold/google-analytics[google-analytics] 0.1.0-SNAPSHOT - A ClojureScript library for collecting custom events to Google Analytics +* https://github.com/NoahTheDuke/fluent-clj[fluent-clj] https://github.com/NoahTheDuke/fluent-clj/blob/main/CHANGELOG.md[0.0.2] - Project Fluent for Clojure/script +* https://github.com/ring-clojure/ring[ring] https://github.com/ring-clojure/ring/blob/master/CHANGELOG.md[1.14.0] - Clojure HTTP server abstraction +* https://github.com/rm-hull/nvd-clojure[nvd-clojure] https://github.com/rm-hull/nvd-clojure/blob/main/CHANGELOG.md[5.0.0] - National Vulnerability Database dependency checker for Clojure projects +* https://github.com/gersak/toddler[toddler] 0.9.7 - UI library based on lilactown/helix and shadow-css libraries +* https://github.com/alexander-yakushev/compliment[compliment] https://github.com/alexander-yakushev/compliment/blob/master/CHANGELOG.md[0.7.0] - Clojure completion library that you deserve +* https://github.com/pitch-io/uix[uix] https://github.com/pitch-io/uix/blob/master/CHANGELOG.md[1.4.0] - Idiomatic ClojureScript interface to modern React.js +* https://github.com/zidicat/Inview[Inview] - Enlive inspired lib for transformation of Hiccup data for use in Clojure and ClojureScript +* https://github.com/BetterThanTomorrow/calva[calva] https://github.com/BetterThanTomorrow/calva/blob/published/CHANGELOG.md[2.0.495] - Clojure & ClojureScript Interactive Programming for VS Code +* https://github.com/chr15m/cljs-josh[cljs-josh] 0.0.7 - Scittle cljs live-reloading server +* https://github.com/scicloj/clay[clay] https://github.com/scicloj/clay/blob/main/CHANGELOG.md[2-beta37] - A tiny Clojure tool for dynamic workflow of data visualization and literate programming +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-beta13] - A clojure framework for data science +* https://github.com/scicloj/tableplot[tableplot] https://github.com/scicloj/tableplot/blob/main/CHANGELOG.md[1-beta12] - Easy layered graphics with Hanami & Tablecloth +* https://github.com/fogus/rv[rv] https://github.com/fogus/rv/blob/main/CHANGELOG.md[0.0.7] - A Clojure library exploring the application of pure reasoning algorithms +* https://github.com/clj-commons/virgil[virgil] https://github.com/clj-commons/virgil/blob/master/CHANGELOG.md[0.4.0] - Recompile Java code without restarting the REPL diff --git a/content/news/2025/04/05/deref.adoc b/content/news/2025/04/05/deref.adoc new file mode 100644 index 00000000..da3ae852 --- /dev/null +++ b/content/news/2025/04/05/deref.adoc @@ -0,0 +1,53 @@ += Clojure Deref (Apr 5, 2025) +Alex Miller +2025-04-05 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=bOQyCdUByHA[[EP.06] deref-in] - clojure-br +* https://soundcloud.com/clojurestream/e101-fcis-with-magnars?utm_source=clipboard&utm_medium=text&utm_campaign=social_sharing[E101 FC/IS with magnars] - ClojureStream Podcast +* https://www.youtube.com/watch?v=ZUUstGuTRPM[Toddler - UI or not to UI (by Robert Geršak)] - London Clojurians +* https://www.youtube.com/watch?v=c0Rl9DKOTOY[Clojure visual-tools 33- Workflow Demos 7: Clojure Sublimed, Executor, clj-reload, clojure+, Clay] - Sci Cloj +* https://www.youtube.com/watch?v=fvcnCxFHyos[Scicloj AI Meetup 2: practice session - build a RAG] - Sci Cloj +* https://www.youtube.com/watch?v=IRqXVvocsps[7 UIs with Replicant, Ep 0: Setup] - Replicant TV +* https://www.youtube.com/watch?v=kUvd1o6w0Hc[7 UIs with Replicant, Ep 1: Counter] - Replicant TV +* https://www.youtube.com/watch?v=qYokrc09mQw[Refactoring Ring. Keep your handlers clean] - Clojure Diary +* https://www.youtube.com/watch?v=9-HTMlx5aNg[Clojure stuff one needs to know, and sites where one can be updated] - Clojure Diary + +== Blogs, articles, and projects + +* https://jank-lang.org/blog/2025-03-28-error-reporting/[Can jank beat Clojure's error reporting?] - Jeaye Wilkerson +* https://moea.github.io/playground/clojure/gadt/static/typing/2025/03/29/gadt.html[Playing Fast and Loose With GADTs] - Moe Aboulkheir +* https://flexiana.com/news/2025/03/experience-with-claude-code[Experience with Claude Code] - Jiri Knesl (Flexiana) +* https://flexiana.com/news/2025/04/why-clojure-developers-love-the-repl-so-much[Why Clojure Developers Love the REPL So Much] - Jakub Zika (Flexiana) +* https://www.patreon.com/posts/transparency-125684280[Transparency report: March 2025] - Nikita Prokopov +* https://blog.redplanetlabs.com/2025/04/01/massively-scalable-collaborative-text-editor-backend-with-rama-in-120-loc/[Massively scalable collaborative text editor backend with Rama in 120 LOC] - Nathan Marz (Red Planet Labs) +* https://saunved.com/tech/learning-clojure-as-a-js-dev[Learning Clojure as a Javascript developer] - Saunved Mutalik + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/clojure/core.async[core.async] https://github.com/clojure/core.async?tab=readme-ov-file#changelog[1.8.735] - Facilities for async programming and communication in Clojure +* https://github.com/NoahTheDuke/splint[splint] https://github.com/NoahTheDuke/splint/blob/main/CHANGELOG.md[1.20.0] - A Clojure linter focused on style and code shape +* https://github.com/amiorin/big-config[big-config] - An alternative to traditional configuration languages +* https://github.com/jaidetree/valhalla[valhalla] https://github.com/jaidetree/valhalla/releases/tag/2025.3.29[2025.3.29] - A ClojureScript focused validation library +* https://github.com/k13labs/futurama[futurama] https://github.com/k13labs/futurama/blob/main/CHANGELOG.md[1.3.1] - Futurama is a Clojure library for more deeply integrating async abstractions with core.async +* https://github.com/atproto-clj/atproto-clj[atproto-clj] - ATProto Clojure SDK +* https://github.com/AbhinavOmprakash/snitch[snitch] https://github.com/AbhinavOmprakash/snitch/blob/main/CHANGELOG.md[0.1.16] - Snitch is inline-defs on steroids +* https://github.com/cjohansen/replicant[replicant] 2025.03.27 - A data-driven rendering library for Clojure(Script) that renders hiccup to DOM or to strings +* https://github.com/flow-storm/flow-storm-debugger[flow-storm-debugger] https://github.com/flow-storm/flow-storm-debugger/blob/master/CHANGELOG.md[4.3.0] - A debugger for Clojure and ClojureScript with some unique features +* https://github.com/thoughtfull-clojure/desiderata[desiderata] https://github.com/thoughtfull-clojure/desiderata/blob/main/CHANGELOG.md[1.1.0] - Things wanted or needed but missing from clojure.core +* https://github.com/babashka/process[process] https://github.com/babashka/process/blob/master/CHANGELOG.md#0522-2024-02-29[0.6.23] - Clojure library for shelling out / spawning sub-processes +* https://github.com/borkdude/edamame[edamame] https://github.com/borkdude/edamame/blob/master/CHANGELOG.md[1.4.29] - Configurable EDN/Clojure parser with location metadata +* https://github.com/mpenet/pact[pact] 1.0.8 - clojure.spec to json-schema generation library +* https://github.com/scicloj/clay[clay] https://github.com/scicloj/clay/blob/main/CHANGELOG.md[2-beta39] - A tiny Clojure tool for dynamic workflow of data visualization and literate programming +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-beta14] - A clojure framework for data science +* https://github.com/practicalli/clojure-cli-config[clojure-cli-config] https://github.com/practicalli/clojure-cli-config/releases/tag/2025-04-02[2025-04-02] - User aliases and Clojure CLI configuration for deps.edn based projects +* https://github.com/babashka/pod-babashka-instaparse[pod-babashka-instaparse] https://github.com/babashka/pod-babashka-instaparse/blob/main/CHANGELOG.md[0.0.5] - A pod exposing Instaparse to babashka +* https://github.com/kaepr/game-of-life-cljs[game-of-life-cljs] - Conway's Game of Life implemented in ClojureScript \ No newline at end of file diff --git a/content/news/2025/04/11/deref.adoc b/content/news/2025/04/11/deref.adoc new file mode 100644 index 00000000..b9b25dfa --- /dev/null +++ b/content/news/2025/04/11/deref.adoc @@ -0,0 +1,38 @@ += Clojure Deref (Apr 11, 2025) +Alex Miller +2025-04-11 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=52lGEPWA2WU[David Nolen guests on Apropos Clojure 2025-04-08] - apropos clojure +* https://www.youtube.com/watch?v=H7ZlwEDxzRs[Clojure Corner: Interview with Michiel Borkent] - Flexiana +* https://zencastr.com/z/cK98nMcr[defn episode 6ae6acf85d52 Chris Pellets McCormick] - defn +* https://www.youtube.com/watch?v=N85uFVL7YF0[7 UIs with Replicant, Ep 2: Navigation and state management] - Replicant TV +* https://www.youtube.com/watch?v=jb1BcYpyOAs[Supercharge your debugging with Snitch] - CalvaTV +* https://www.youtube.com/watch?v=JfF8ukaxG00[Elegant way of filtering maps based on key value pairs] - Clojure Diary +* https://www.youtube.com/watch?v=TpkiwqVf8Bo[Build Order - Using Clojure to determine build order] - Clojure Diary + +== Blogs, articles, and projects + +* https://andersmurphy.com/2025/04/07/clojure-realtime-collaborative-web-apps-without-clojurescript.html[Clojure: Realtime collaborative web apps without ClojureScript] - Anders Murphy +* https://thomascothran.tech/2025/04/avoid-with-redefs/[Avoid with-redefs in tests] - Thomas Cothran +* https://blog.redplanetlabs.com/2025/04/08/next-level-backends-with-rama-recommendation-engine-in-80-loc/[Next-level backends with Rama: recommendation engine in 80 LOC] - Nathan Marz (Red Planet Labs) +* https://www.evalapply.org/posts/demo-clojure-workflow-scicloj/index.html#main[Keeping it Old-Tool: REPL habits of a grug-brained Clojure programmer] - Aditya Athalye +* https://mehmetgoekce.substack.com/p/object-oriented-programming-in-java[Object-Oriented Programming in Java 21 vs Functional Programming in Clojure: A Technical Comparison] - Mehmet Gökçe + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/clojure/core.async[core.async] https://github.com/clojure/core.async?tab=readme-ov-file#changelog[1.8.741] - Facilities for async programming and communication in Clojure +* https://github.com/clj-kondo/clj-kondo[clj-kondo] https://github.com/clj-kondo/clj-kondo/blob/master/CHANGELOG.md[2025.04.07] - Static analyzer and linter for Clojure code that sparks joy +* https://repo.prod.meissa.de/meissa/c4k-forgejo[c4k-forgejo] 6.0.0 - Provision forgejo on k8s with c4k +* https://github.com/abogoyavlensky/clojure-stack-lite[clojure-stack-lite] 0.1.0 - A quick way to start a full-stack Clojure app with server-side rendering +* https://github.com/squint-cljs/squint[squint] https://github.com/squint-cljs/squint/blob/main/CHANGELOG.md[0.8.144] - Light-weight ClojureScript dialect +* https://github.com/BetterThanTomorrow/calva[calva] https://github.com/BetterThanTomorrow/calva/blob/published/CHANGELOG.md[2.0.498] - Clojure & ClojureScript Interactive Programming for VS Code +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-beta15] - A clojure framework for data science \ No newline at end of file diff --git a/content/news/2025/04/17/deref.adoc b/content/news/2025/04/17/deref.adoc new file mode 100644 index 00000000..8a83fccd --- /dev/null +++ b/content/news/2025/04/17/deref.adoc @@ -0,0 +1,46 @@ += Clojure Deref (Apr 17, 2025) +Alex Miller +2025-04-17 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=_H-5SWm3Lvk[Episode 10 ... the refactoring continues until the code improves] - Content Made Simple +* https://www.youtube.com/watch?v=EpUfIrQBJ9E[Single-binary ClojureScript] - mccormix +* https://www.youtube.com/watch?v=punj0oHSrPQ[numbers, radix, arbitrary precision in Clojure] - Clojure Diary + +== Blogs, articles, and projects + +* https://obryant.dev/p/yakread-algorithm/[Yakread's ranking algorithm] - Jacob O'Bryant +* https://bogoyavlensky.com/blog/build-and-publish-clojure-lib-with-slim/[Building and publishing a Clojure library from scratch with Slim] - Andrey Bogoyavlenskiy +* https://scicloj.github.io/blog/clojure-in-new-fields-opening-up/[Clojure in new fields - opening up] - Daniel Slutsky +* https://ilmo.bearblog.dev/conjtest-a-new-policy-as-code-tool-built-with-clojure-go/[Conjtest: a new Policy-as-Code tool built with Clojure/Babashka & Go] - Ilmo Raunio +* https://andersmurphy.com/2025/04/15/why-you-should-use-brotli-sse.html[Why you should consider using brotli compression with SSE] - Anders Murphy +* https://blog.redplanetlabs.com/2025/04/16/next-level-backends-with-rama-fault-tolerant-timed-notifications-in-25-loc/[Next-level backends with Rama: fault-tolerant timed notifications in 25 LOC] - Nathan Marz (Red Planet Labs) + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/cursive-ide/cursive[cursive] https://github.com/cursive-ide/cursive/blob/master/CHANGELOG.md[2025.1] - Cursive: The IDE for beautiful Clojure code +* https://github.com/ilmoraunio/conjtest[conjtest] https://github.com/ilmoraunio/conjtest/blob/main/CHANGELOG.md[0.0.1] - A command-line utility heavily inspired by and partially based on Conftest +* https://github.com/dakrone/cheshire[cheshire] https://github.com/dakrone/cheshire/blob/master/ChangeLog.md[6.0.0] - Clojure JSON and JSON SMILE (binary json format) encoding/decoding +* https://github.com/amiorin/big-container[big-container] - doom emacs development inside a container +* https://github.com/filipesilva/datomic-pro-manager[datomic-pro-manager] 1.0.0 - Download, setup, and run Datomic Pro backed by SQLite in a single command +* https://github.com/thoughtfull-clojure/amalgam[amalgam] https://github.com/thoughtfull-clojure/amalgam/blob/main/CHANGELOG.md[2.0.0] - Useful utilities and mixtures for com.stuartsierra/component +* https://github.com/BetterThanTomorrow/calva[calva] https://github.com/BetterThanTomorrow/calva/blob/published/CHANGELOG.md[2.0.501] - Clojure & ClojureScript Interactive Programming for VS Code +* https://github.com/squint-cljs/squint[squint] https://github.com/squint-cljs/squint/blob/main/CHANGELOG.md[0.8.146] - Light-weight ClojureScript dialect +* https://github.com/babashka/cli[cli] https://github.com/babashka/cli/blob/main/CHANGELOG.md[0.8.65] - Turn Clojure functions into CLIs! +* https://github.com/abogoyavlensky/slim[slim] https://github.com/abogoyavlensky/slim/blob/master/CHANGELOG.md[0.3.2] - The slim way to build Clojure +* https://github.com/basilisp-lang/basilisp[basilisp] https://github.com/basilisp-lang/basilisp/blob/main/CHANGELOG.md[0.3.8] - A Clojure-compatible(-ish) Lisp dialect targeting Python 3.9+ +* https://github.com/clojure-emacs/clojure-ts-mode[clojure-ts-mode] https://github.com/clojure-emacs/clojure-ts-mode/blob/main/CHANGELOG.md#020[0.2.3] - The next generation Clojure major mode for Emacs, powered by TreeSitter +* https://github.com/taoensso/nippy[nippy] https://github.com/taoensso/nippy/blob/master/CHANGELOG.md[3.5.0] - Fast serialization library for Clojure +* https://github.com/taoensso/timbre[timbre] https://github.com/taoensso/timbre/blob/master/CHANGELOG.md[6.7.0] - Pure Clojure/Script logging library +* https://github.com/taoensso/tufte[tufte] https://github.com/taoensso/tufte/blob/master/CHANGELOG.md[2.7.0] - Simple performance monitoring library for Clojure/Script +* https://github.com/http-kit/http-kit[http-kit] https://github.com/http-kit/http-kit/blob/master/CHANGELOG.md[2.9.0-beta1] - Simple, high-performance event-driven HTTP client+server for Clojure +* https://github.com/scarletcomply/license-finder[license-finder] https://github.com/scarletcomply/license-finder/blob/main/CHANGELOG.md[0.4.0] - Finds licenses of your Clojure(Script) dependencies +* https://github.com/babashka/babashka[babashka] https://github.com/babashka/babashka/blob/master/CHANGELOG.md[1.12.198] - Native, fast starting Clojure interpreter for scripting \ No newline at end of file diff --git a/content/news/2025/04/25/deref.adoc b/content/news/2025/04/25/deref.adoc new file mode 100644 index 00000000..5fc6a4be --- /dev/null +++ b/content/news/2025/04/25/deref.adoc @@ -0,0 +1,59 @@ += Clojure Deref (Apr 25, 2025) +Alex Miller +2025-04-25 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=_g69GKN6lAM[Fogus guests on Apropos Clojure 2025-04-22] - apropos clojure +* https://www.youtube.com/watch?v=DN0l78bFsDY[Scicloj AI Meetup 4 # LLM tools feedback loop # MCPs, Modex, and Datomic MCP] - Sci Cloj +* https://www.youtube.com/watch?v=-3VOuwUihSY[Episode 11 ... the refactoring continues cos we can] - Content Made Simple +* https://www.youtube.com/watch?v=I-XSgHeuol0[7 UIs with Replicant, Ep 4: Flight booking, part 1] - Replicant TV +* https://www.youtube.com/watch?v=xzC3g0qIRro[Anders and the Game of Life] - Datastar +* https://www.youtube.com/watch?v=_bmuH5XONww[Use Shadcn Style React Components in ClojureScript] - Kelvin Mai +* https://www.youtube.com/watch?v=ACwJNGxo3o4[The Duality of Transducers — Clojure's Transducers from Scratch] - Cameron Desautels + +== Blogs, articles, and projects + +* https://www.clojuriststogether.org/news/q2-2025-funding-announcement/[Q2 2025 Funding Announcement] - Kathy Davis (Clojurists Together) +* https://blog.ambrosebs.com/2025/04/20/optimizing-syntax-quote.html[Optimizing syntax-quote] - Ambrose Bonnaire-Sergeant +* https://www.karimarttila.fi/clojure/2025/04/20/clojure-power-tools-part-3.html[Clojure Power Tools Part 3] - Kari Marttila +* https://mauricio.szabo.link/blog/2025/04/14/exposing-clojure-to-ruby-and-other-languages/[Exposing Clojure to Ruby and other languages] - Maurício Szabo +* https://mauricio.szabo.link/blog/2025/04/21/exposing-clojure-to-ruby-and-other-languages-callbacks/[Exposing Clojure to Ruby and other languages – Callbacks] - Maurício Szabo +* https://mauricio.szabo.link/blog/2025/04/22/exposing-clojure-to-ruby-and-other-languages-java-objects-in-c/[Exposing Clojure to Ruby and other languages – Java objects in C] - Maurício Szabo +* https://blog.danieljanus.pl/2025/04/22/datomic-forking-the-past/[No, really, you can’t branch Datomic from the past] - Daniel Janus +* https://blog.redplanetlabs.com/2025/04/22/how-gd-netcetera-used-rama-to-100x-the-performance-of-a-product-used-by-millions-of-people/[How G+D Netcetera used Rama to 100x the performance of a product used by millions of people] - Nathan Marz (Red Planet Labs) +* https://emil0r.com/posts/2025-04-23-look-at-how-little-i-need/[Look at how little I need] - Emil Bengtsson +* https://www.emcken.dk/programming/2025/04/21/local-s3-storage-with-minio-for-clojure-dev-env/[Local S3 storage with MinIO for your Clojure dev environment] - Jacob Emcken + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/flow-storm/flow-storm-flowbook-plugin[flow-storm-flowbook-plugin] 1.0.0-alpha - A FlowStorm plugin for timelines serialization/replaying +* https://github.com/cognitect-labs/aws-api[aws-api] https://github.com/cognitect-labs/aws-api/blob/main/CHANGES.md[0.8.741] - AWS, data driven +* https://github.com/k13labs/walkr[walkr] https://github.com/k13labs/walkr/blob/main/CHANGELOG.md[0.0.1] - Walkr (walk-reduce) is a Clojure library built to help you easily walk-reduce clojure data structures +* https://github.com/igrishaev/pg2[pg2] https://github.com/igrishaev/pg2/blob/master/CHANGELOG.md[0.1.38] - A fast PostgreSQL driver for Clojure +* https://github.com/clj-commons/etaoin[etaoin] https://github.com/clj-commons/etaoin/blob/master/CHANGELOG.adoc#v1.1.42[1.1.43] - Pure Clojure Webdriver protocol implementation +* https://github.com/johnmn3/wrap-map[wrap-map] https://github.com/johnmn3/wrap-map/blob/main/CHANGELOG.md[0.1.11] - map type maps +* https://github.com/igrishaev/jsam[jsam] https://github.com/igrishaev/jsam/blob/master/CHANGELOG.md[0.1.0] - A lightweight, zero-deps JSON parser and writer +* https://github.com/potetm/fusebox[fusebox] https://github.com/potetm/fusebox/blob/master/CHANGELOG.md[1.0.10] - An extremely lightweight fault tolerance library for Clojure(Script) +* https://github.com/ericdallo/metrepl[metrepl] https://github.com/ericdallo/metrepl/blob/master/CHANGELOG.md[0.3.0] - Metrics of your Clojure nREPL +* https://github.com/emil0r/ez-form[ez-form] 2025.04.23 - A data-driven library for forms using hiccup +* https://github.com/xadecimal/async-style[async-style] https://github.com/xadecimal/async-style/blob/main/CHANGELOG.md[0.1.0] - Higher level utilities over Clojure core.async that let you use an async style of programming with ease +* https://github.com/babashka/babashka[babashka] https://github.com/babashka/babashka/blob/master/CHANGELOG.md[1.12.199] - Native, fast starting Clojure interpreter for scripting +* https://github.com/amiorin/big-config[big-config] https://github.com/amiorin/big-config/blob/main/CHANGELOG.md[0.1.169] - An alternative to traditional configuration languages +* https://github.com/scicloj/clay[clay] https://github.com/scicloj/clay/blob/main/CHANGELOG.md[2-beta40] - A tiny Clojure tool for dynamic workflow of data visualization and literate programming +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-beta16] - A clojure framework for data science +* https://github.com/amiorin/big-container[big-container] https://github.com/amiorin/big-container/blob/main/CHANGELOG.md[0.1.25] - doom emacs development inside a container +* https://github.com/soulspace-org/overarch[overarch] https://github.com/soulspace-org/overarch/blob/main/Changelog.md[0.36.0] - Overarch provides an ontology and a data driven model of software systems and organizations based on e.g. UML and the C4 model +* https://github.com/taoensso/tufte[tufte] https://github.com/taoensso/tufte/blob/master/CHANGELOG.md[3.0.0-beta1] - Simple performance monitoring library for Clojure/Script +* https://github.com/scicloj/kindly[kindly] https://github.com/scicloj/kindly/blob/main/CHANGELOG.md[4-beta16] - A small library for defining how different kinds of things should be rendered +* https://github.com/scicloj/kindly-advice[kindly-advice] https://github.com/scicloj/kindly-advice/blob/main/CHANGELOG.md[1-beta13] - A small library to advise Clojure data visualization and notebook tools how to display forms and values, following the kindly convention +* https://github.com/replikativ/datahike[datahike] https://github.com/replikativ/datahike/releases/tag/0.6.1596[0.6.1595] - A durable Datalog implementation adaptable for distribution +* https://github.com/clojure-lsp/clojure-lsp[clojure-lsp] https://github.com/clojure-lsp/clojure-lsp/blob/master/CHANGELOG.md[2025.04.23-18.16.46] - Clojure & ClojureScript Language Server (LSP) implementation +* https://github.com/datopia/invariant[invariant] - This repository provides invariant verification in Datalog for immutable databases like Datahike \ No newline at end of file diff --git a/content/news/2025/04/28/async_flow.adoc b/content/news/2025/04/28/async_flow.adoc new file mode 100644 index 00000000..6e3aa2c6 --- /dev/null +++ b/content/news/2025/04/28/async_flow.adoc @@ -0,0 +1,18 @@ += Introducing core.async.flow +Alex Miller +2025-04-28 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +https://github.com/clojure/core.async[core.async] 1.9.808-alpha1 is now available, featuring the first release of **core.async.flow**. You can read more about core.async.flow in https://clojure.github.io/core.async/flow.html[the rationale] and https://clojure.github.io/core.async/clojure.core.async.flow.html[the docs]. + +core.async.flow is in alpha state - all APIs are still subject to change but we welcome your feedback as we move towards a non-alpha release. + +This release also adds datafy support for channels and buffers. + +== core.async.flow-monitor + +In addition, we are today releasing https://github.com/clojure/core.async.flow-monitor/[core.async.flow-monitor] v0.1.0, which is a tool for visualizing a flow's processes as SVG (viewable inline in Calva or Cursive!), and dynamically monitoring and interacting with flows as they are running. + + diff --git a/content/news/2025/05/03/deref.adoc b/content/news/2025/05/03/deref.adoc new file mode 100644 index 00000000..a94f6fc1 --- /dev/null +++ b/content/news/2025/05/03/deref.adoc @@ -0,0 +1,68 @@ += Clojure Deref (May 3, 2025) +Alex Miller +2025-05-03 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://www.youtube.com/watch?v=lXFwf3O4BVY[A quick demo of core.async.flow] - ClojureTV +* https://www.youtube.com/watch?v=vY6q_4XcdRk[Building a 3D Multiplayer Shooter in Clojure: The Making of Wizard Masters (by Ertugrul Cetin)] - London Clojurians +* https://www.youtube.com/watch?v=WfpuEhtas0Q[Clojure Corner: Interview with Eric Dallo] - Flexiana +* https://www.youtube.com/watch?v=PWHidCezwFM[Clojure in new fields - opening up] - Sci Cloj +* https://www.youtube.com/watch?v=s2UPaRjs0kg[SciNoj Light #1 pre-conference interview: Cvetomir Dimov] - Sci Cloj +* https://www.youtube.com/watch?v=B1yPkpyiEEs[Clojure for data analysis - getting started with Noj v2, VSCode, Calva, and Clay] - Sci Cloj +* https://share.descript.com/view/nJkFVXo15lM[Electric Clojure in 5 minutes — Systems Distributed 2024] - Dustin Getz +* https://www.youtube.com/watch?v=ABM7wSlb3mM[7 UIs with Replicant, Ep 5: Flight booking, part 2] - Replicant TV +* https://www.youtube.com/watch?v=qn34p5JWmOU[Automatic Type Conversion in Clojure] - Clojure Diary + +== Blogs, articles, and projects + +* https://www.taoensso.com/news/2025-04-open-source[Open source update] - Peter Taoussanis +* https://blog.michielborkent.nl/oss-updates-mar-apr-2025.html[OSS updates March and April 2025] - Michiel Borkent +* https://www.linkedin.com/pulse/secure-adaptable-systems-how-wrap-map-extends-edge-john-newman-5bkxe/?trackingId=RTatQDN8T92TTHF8hdo7WA%3D%3D[Secure, Adaptable Systems: How Wrap Map Extends Functional Programming's Edge] - John Newman +* https://shagunagrawal.me/posts/compiling-clojure-to-wasm-image/[Compiling Clojure to WebAssembly] - Shagun Agrawal +* https://www.karimarttila.fi/python/2025/04/26/converting-clojure-to-python-using-copilot.html[Converting Clojure Backend to Python Using Copilot] - Kari Marttila +* https://blog.michielborkent.nl/babashka-java-reflection-type-hints.html[Babashka Java interop, reflection and type hints] - Michiel Borkent +* https://romanliutikov.com/blog/running-clojure-in-wasm[Running Clojure in Wasm] - Roman Liutikov +* https://romanliutikov.com/blog/closure-compiler-lands-class-fields-support[Closure Compiler lands class fields support] - Roman Liutikov +* https://romanliutikov.com/blog/bringing-react-native-worklets-to-clojurescript[Bringing React Native Worklets to ClojureScript] - Roman Liutikov +* https://xtdb.com/blog/building-a-bitemp-index-1-taxonomy[Building a Bitemporal Index (part 1): A Taxonomy of Bitemporal Data] - James Henderson (XTDB) +* https://blog.redplanetlabs.com/2025/04/29/next-level-backends-with-rama-personalized-content-moderation-in-60-loc/[Next-level backends with Rama: personalized content moderation in 60 LOC] - Nathan Marz (Red Planet Labs) +* https://jank-lang.org/blog/2025-05-02-starting-seamless-interop/[Starting on seamless C++ interop in jank] - Jeaye Wilkerson +* https://tonsky.me/blog/hashp/[When You Get to Be Smart Writing a Macro] - Nikita Prokopov + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/clojure/core.async[core.async] https://github.com/clojure/core.async?tab=readme-ov-file#changelog[1.9.808-alpha1] - Facilities for async programming and communication in Clojure +* https://github.com/clojure/core.async.flow-monitor[core.async.flow-monitor] 0.1.0 - A real-time monitoring and interaction tool for clojure.core.async.flow +* https://github.com/babashka/babashka[babashka] https://github.com/babashka/babashka/blob/master/CHANGELOG.md[1.12.200] - Native, fast starting Clojure interpreter for scripting +* https://github.com/igrishaev/virtuoso[virtuoso] https://github.com/igrishaev/virtuoso/blob/master/CHANGELOG.md[0.1.1] - A number of trivial wrappers on top of virtual threads +* https://github.com/pfeodrippe/vybe[vybe] https://github.com/pfeodrippe/vybe/releases/tag/v0.7.598[0.7.598] - A Clojure framework for game dev +* https://github.com/nakkaya/weave[weave] - An easy-to-use, Clojure-based web application framework +* https://github.com/flow-storm/flow-storm-async-flow-plugin[flow-storm-async-flow-plugin] https://github.com/flow-storm/flow-storm-async-flow-plugin/blob/master/CHANGELOG.md[1.0.0-beta5] - A FlowStorm plugin to debug core.async.flow graphs +* https://github.com/clojure-emacs/cider[cider] https://github.com/clojure-emacs/cider/blob/master/CHANGELOG.md[1.18] - The Clojure Interactive Development Environment that Rocks for Emacs +* https://github.com/babashka/fs[fs] https://github.com/babashka/fs/blob/master/CHANGELOG.md[0.5.25] - File system utility library for Clojure +* https://github.com/taoensso/telemere[telemere] https://github.com/taoensso/telemere/blob/master/CHANGELOG.md[1.0.0] - Structured telemetry library for Clojure/Script +* https://github.com/taoensso/tufte[tufte] https://github.com/taoensso/tufte/blob/master/CHANGELOG.md[3.0.0-RC1] - Simple performance monitoring library for Clojure/Script +* https://github.com/practicalli/nvim-astro5[nvim-astro5] https://github.com/practicalli/nvim-astro5/blob/main/CHANGELOG.md[2025-04-24] - Neovim 0.11 config for Clojure development, based on AstroNvim v5 +* https://github.com/tonsky/clojure-plus[clojure-plus] https://github.com/tonsky/clojure-plus/blob/main/CHANGELOG.md[1.4.0] - A collection of utilities that improve Clojure experience +* https://github.com/borkdude/quickdoc[quickdoc] https://github.com/borkdude/quickdoc/blob/main/CHANGELOG.md[0.2.5] - Quick and minimal API doc generation for Clojure +* https://github.com/BetterThanTomorrow/calva[calva] https://github.com/BetterThanTomorrow/calva/blob/published/CHANGELOG.md[2.0.507] - Clojure & ClojureScript Interactive Programming for VS Code +* https://github.com/paintparty/bling[bling] https://github.com/paintparty/bling/blob/main/CHANGELOG.md[0.6.0] - Rich text console printing for Clojure, ClojureScript, and Babashka +* https://github.com/abogoyavlensky/clojure-stack-lite[clojure-stack-lite] https://github.com/abogoyavlensky/clojure-stack-lite/releases/tag/0.1.2[0.1.2] - A quick way to start a full-stack Clojure app with server-side rendering +* https://github.com/fogus/rv[rv] https://github.com/fogus/rv/blob/main/CHANGELOG.md[0.0.8] - A Clojure library exploring the application of pure reasoning algorithms +* https://github.com/garrett-hopper/tailwindcss-clojure-class-sorter[tailwindcss-clojure-class-sorter] - A VSCode extension that provides a source action to sort Tailwind CSS classes within your Clojure code, including Hiccup templates +* https://github.com/scicloj/clay[clay] https://github.com/scicloj/clay/blob/main/CHANGELOG.md[2-beta42] - A tiny Clojure tool for dynamic workflow of data visualization and literate programming +* https://github.com/scicloj/kindly-advice[kindly-advice] https://github.com/scicloj/kindly-advice/blob/main/CHANGELOG.md[1-beta14] - A small library to advise Clojure data visualization and notebook tools how to display forms and values, following the kindly convention +* https://github.com/soulspace-org/overarch[overarch] https://github.com/soulspace-org/overarch/blob/main/Changelog.md[0.37.0] - Overarch provides an ontology and a data driven model of software systems and organizations based on e.g. UML and the C4 model +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-beta17] - A clojure framework for data science +* https://github.com/emil0r/ez-form[ez-form] https://github.com/emil0r/ez-form/blob/master/CHANGELOG.adoc[2025-05-01] - A data-driven library for forms using hiccup +* https://github.com/seancorfield/deps-new[deps-new] https://github.com/seancorfield/deps-new/blob/develop/CHANGELOG.md[0.8.1] - Create new projects for the Clojure CLI / deps.edn +* https://github.com/scicloj/wolframite[wolframite] https://github.com/scicloj/wolframite/blob/main/CHANGELOG.md[1.1.0] - An interface between Clojure and Wolfram Language (the language of Mathematica) +* https://github.com/practicalli/clojure-cli-config[clojure-cli-config] https://github.com/practicalli/clojure-cli-config/blob/main/CHANGELOG.org[2025-05-02] - User aliases and Clojure CLI configuration for deps.edn based projects \ No newline at end of file diff --git a/content/news/2025/05/10/deref.adoc b/content/news/2025/05/10/deref.adoc new file mode 100644 index 00000000..770f3028 --- /dev/null +++ b/content/news/2025/05/10/deref.adoc @@ -0,0 +1,62 @@ += Clojure Deref (May 10, 2025) +Alex Miller +2025-05-10 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). Thanks to Anton Fonarev for link aggregation. + +== Podcasts, videos, and media + +* https://soundcloud.com/clojurestream/e102-pedestal-with-hlship[E102 - Pedestal with hlship] - ClojureStream Podcast +* https://www.youtube.com/watch?v=dxJgD0CoxVU[Introducing Calva AI Tools a k a Backseat Driver] - CalvaTV +* https://www.youtube.com/watch?v=IkxKVcv_63o[Scicloj AI Meetup 5 # Structured Data from LLMs #Agentic Data-science] - Sci Cloj +* https://www.youtube.com/watch?v=a-PrBjlBdw8[JP Monetta guests on Apropos Clojure 2025-05-06] - apropos clojure +* https://www.youtube.com/watch?v=r8bBNt9Y9fs[ClojureScript + SVG motion graphics] - mccormix +* https://www.youtube.com/watch?v=Zcd6kXmL5mI[Clojure editor flares for Cursive and Calva] - Timothy Pratley +* https://www.youtube.com/watch?v=sJQJWcPXsWc[Private Functions in Clojure] - Clojure Diary +* https://www.youtube.com/watch?v=VgONX4aItEE[Java Files in Clojure Project] - Clojure Diary +* https://www.youtube.com/watch?v=nwXBqFMPLKg[jar files in Clojure project] - Clojure Diary +* https://www.youtube.com/watch?v=bfFpO3SLQIc[Ref type in Clojure in practice] - faster-than-light-memes + +== Blogs, articles, and projects + +* https://clojure.github.io/core.async/flow-guide.html[core.async.flow Guide] - Clojure Team +* https://romanliutikov.com/blog/towards-react-server-components-in-clojure-part-1[Towards React Server Components in Clojure, Part 1] - Roman Liutikov +* https://code.thheller.com/blog/shadow-cljs/2025/05/07/dealing-with-zombies.html[CLJS: Dealing with Zombies] - Thomas Heller +* https://tutorials.datomic.com/todo-list-part-1.html[Building a TODO List App with Datomic Pro - [Part 1]] - Datomic Documentation +* https://potetm.com/devtalk/stability-by-design.html[Stability by Design] - Timothy Pote +* https://vlaaad.github.io/lsp-client-in-200-lines-of-code[LSP client in Clojure in 200 lines of code] - Vlad Protsenko + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/clojure/core.async.flow-monitor[core.async.flow-monitor] 0.1.1 - A real-time monitoring and interaction tool for clojure.core.async.flow +* https://github.com/RokLenarcic/proto-relay[proto-relay] 0.1.0 - Utilities for creating functions that delegate to some underlying protocol +* https://github.com/2food/datomic-graph-viz[datomic-graph-viz] 1.0.0 - Visualize a datomic database as a graph +* https://github.com/yonureker/stripe-clojure[stripe-clojure] https://github.com/yonureker/stripe-clojure/blob/master/CHANGELOG.md[0.3.0] - Clojure SDK for the Stripe API +* https://github.com/BetterThanTomorrow/calva-backseat-driver[calva-backseat-driver] https://github.com/BetterThanTomorrow/calva-backseat-driver/blob/master/CHANGELOG.md[0.0.10] - VS Code AI Agent Interactive Programming. Tools for CoPIlot and other assistants. Can also be used asan MCP server +* https://github.com/lukaszkorecki/mokujin[mokujin] 1.0.0.82 - Structured logging for Clojure. Thin layer on top of clojure.tools.logging with MDC support +* https://github.com/cjohansen/dataspex[dataspex] 2025.05.7 - See the shape of your data: point-and-click Clojure(Script) data browser +* https://github.com/babashka/nbb[nbb] https://github.com/babashka/nbb/blob/main/CHANGELOG.md[1.3.201] - Scripting in Clojure on Node.js using SCI +* https://github.com/jonasseglare/clj-freqt[clj-freqt] - Frequent subtree mining with FREQT in Clojure +* https://github.com/lispyclouds/navi[navi] https://github.com/lispyclouds/navi/releases/tag/0.1.4[0.1.4] - A tiny, data-driven library converting OpenAPI spec to Reitit routes +* https://github.com/tonsky/clojure-plus[clojure-plus] https://github.com/tonsky/clojure-plus/blob/main/CHANGELOG.md[1.5.0] - A collection of utilities that improve Clojure experience +* https://github.com/BetterThanTomorrow/calva[calva] https://github.com/BetterThanTomorrow/calva/blob/published/CHANGELOG.md[2.0.509] - Clojure & ClojureScript Interactive Programming for VS Code +* https://github.com/julienvincent/msgpack-clj[msgpack-clj] 1.1.0 - High performance Clojure bindings for msgpack-java +* https://github.com/borkdude/edamame[edamame] https://github.com/borkdude/edamame/blob/master/CHANGELOG.md[1.4.30] - Configurable EDN/Clojure parser with location metadata +* https://github.com/ilmoraunio/conjtest[conjtest] https://github.com/ilmoraunio/conjtest/blob/main/CHANGELOG.md[0.0.2] - A command-line utility heavily inspired by and partially based on Conftest +* https://github.com/fogus/rv[rv] https://github.com/fogus/rv/blob/main/CHANGELOG.md[0.0.9] - A Clojure library exploring the application of pure reasoning algorithms +* https://github.com/scicloj/clay[clay] https://github.com/scicloj/clay/blob/main/CHANGELOG.md[2-beta44] - A tiny Clojure tool for dynamic workflow of data visualization and literate programming +* https://github.com/scicloj/tableplot[tableplot] https://github.com/scicloj/tableplot/blob/main/CHANGELOG.md[1-beta13] - Easy layered graphics with Hanami & Tablecloth +* https://github.com/scicloj/noj[noj] https://github.com/scicloj/noj/blob/main/CHANGELOG.md[2-beta18] - A clojure framework for data science +* https://github.com/thoughtfull-clojure/desiderata[desiderata] https://github.com/thoughtfull-clojure/desiderata/blob/main/CHANGELOG.md[2.1.2] - Things wanted or needed but missing from clojure.core +* https://github.com/thoughtfull-clojure/amalgam[amalgam] https://github.com/thoughtfull-clojure/amalgam/blob/main/CHANGELOG.md[2.8.3] - Useful utilities and mixtures for com.stuartsierra/component +* https://github.com/thoughtfull-clojure/amalgam-dirigiste[amalgam-dirigiste] https://github.com/thoughtfull-clojure/amalgam-dirigiste/blob/main/CHANGELOG.md[0.3.0] - Self-adjusting thread pool component with metrics reporting +* https://github.com/tatut/ripley[ripley] https://github.com/tatut/ripley#changes[2025-05-08] - Server rendered UIs over WebSockets +* https://github.com/squint-cljs/squint[squint] https://github.com/squint-cljs/squint/blob/main/CHANGELOG.md[0.8.147] - Light-weight ClojureScript dialect +* https://github.com/squint-cljs/cherry[cherry] https://github.com/squint-cljs/cherry/blob/main/CHANGELOG.md[0.4.27] - Experimental ClojureScript to ES6 module compiler +* https://github.com/babashka/pod-babashka-fswatcher[pod-babashka-fswatcher] https://github.com/babashka/pod-babashka-fswatcher/blob/main/CHANGELOG.md[0.0.6] - Babashka filewatcher pod +* https://github.com/abogoyavlensky/clojure-stack-lite[clojure-stack-lite] https://github.com/abogoyavlensky/clojure-stack-lite/releases/tag/0.1.2[0.1.3] - A quick way to start a full-stack Clojure app with server-side rendering \ No newline at end of file diff --git a/content/news/2025/05/23/deref.adoc b/content/news/2025/05/23/deref.adoc new file mode 100644 index 00000000..eb6253e9 --- /dev/null +++ b/content/news/2025/05/23/deref.adoc @@ -0,0 +1,69 @@ += Clojure Deref (May 23, 2025) +Christoph Neumann +2025-05-23 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). + +A huge thanks to Anton Fonarev who has put in a ton of work aggregating these links for the last +couple of years! It's a lot to keep up with week after week. As you move on to other things, we want +you to know that your work hasn't gone unnoticed, and we really appreciate your help. + +== Podcasts, videos, and media + +* https://youtu.be/bHlLeZCKaLE[REPL Driven Test After Development in Clojure] - Clojure Diary +* https://zencastr.com/z/tS_FyddQ[defn episode 1a156fe163a1 Nathan Marz] - @defn podcast +* https://youtu.be/B_D1VAAd3NU[Func Prog Podcast Episode 3 - Peter PEZ Strömberg] - Func Prog Sweden +* https://youtu.be/PnHybllAxmM[Clojure Corner: Interview with Ovi Stoica] - Flexiana +* https://youtu.be/kbKNUd6k760[factorial in Clojure. Using memonize. Numeric Data Types] - Clojure Diary +* https://youtu.be/ptN53mef_IY[Autology: Writing a self-rewriting Lisp (by Dave Kimber)] - London Clojurians +* https://youtu.be/h8cdxBnW8Ic[Nathan Marz guests on Apropos Clojure 2025-05-20] - apropos clojure +* https://youtu.be/0BYnGnAPUUY[2o Encontro Presencial Clojure BR] - clojure-br + +== Blogs, articles, and projects + +* https://www.clojuriststogether.org/news/annually-funded-developers-update-mar./april-2025/[Annually-Funded Developers' Update: Mar./April 2025] - Kathy Davis +* https://xtdb.com/blog/building-a-bitemp-index-2-resolution[Building a Bitemporal Index (part 2): "Bitemporal Resolution" · XTDB] - James Henderson +* https://romanliutikov.com/blog/towards-react-server-components-in-clojure-part-2[Towards React Server Components in Clojure, Part 2] - Roman Liutikov +* https://clojure-diary.gitlab.io/2025/05/14/wrote-about-java-integration-and-private-functions-in-clojure-book.html[Wrote about Java integration, and private functions in Clojure Book] - Karthikeyan A K +* https://flexiana.com/news/2025/05/flowstorm-debugging-and-understanding-clojure-code-on-a-new-level[FlowStorm: Debugging and Understanding Clojure Code on a New Level - Flexiana] - Jakub Zika +* https://blog.fogus.me/clojure/arities-as-proto.html[Arities as pseudo-protocol] - Fogus +* https://andersmurphy.com/2025/05/20/clojure-sqlite-c-api-with-project-panama-and-coffi.html[Clojure: SQLite C API with project Panama and Coffi] - Anders Murphy +* https://www.emcken.dk/programming/2025/05/11/clojure-function-definitions/[Consistent code style for Clojure function definitions] - Jacob Emcken +* https://lambdaisland.com/blog/2025-05-13-on-interactive[On Interactive Development] - Laurence Chen + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/clojure/tools.build[tools.build] https://github.com/clojure/tools.build/blob/master/CHANGELOG.md[0.10.9] - Clojure builds as Clojure programs +* https://github.com/metosin/malli[malli] https://github.com/metosin/malli/releases/tag/0.18.0[0.18.0] - High-performance data-driven data specification library for Clojure/Script. +* https://github.com/igrishaev/whew[whew] - Try to tame CompletableFuture +* https://github.com/shipclojure/simulflow[simulflow] https://github.com/shipclojure/simulflow/releases/tag/0.1.4-alpha[0.1.4-alpha] - A Clojure library for building real-time voice-enabled AI pipelines. Simulflow handles the orchestration of speech recognition, audio processing, and AI service integration with the elegance of functional programming. +* https://github.com/behrica/scicloj.ml.smile2[scicloj.ml.smile2] - Plugin of Java Smile (> v.2.6) into metamorph.ml +* https://github.com/clojure-emacs/clojure-ts-mode[clojure-ts-mode] https://github.com/clojure-emacs/clojure-ts-mode/releases/tag/v0.4.0[0.4.0] - The next generation Clojure major mode for Emacs, powered by TreeSitter +* https://github.com/Ramblurr/datomic-pro-flake[datomic-pro-flake] https://github.com/Ramblurr/datomic-pro-flake/releases/tag/v0.6.0[0.6.0] - A Nix flake providing a Datomic Pro package and NixOS module +* https://github.com/IGJoshua/coffi[coffi] https://github.com/IGJoshua/coffi/blob/develop/CHANGELOG.md[1.0.615] - A Foreign Function Interface in Clojure for JDK 22+. +* https://github.com/fulcrologic/java-probe[java-probe] - Clojure functions that can extract javadoc and source in a REPL. Primarily intended as a tool for AI nREPL MCP tools. +* https://github.com/seancorfield/logging4j2[logging4j2] https://github.com/seancorfield/logging4j2/releases/tag/v1.0.2[1.0.2] - A Clojure wrapper for log4j2 +* https://github.com/clj-commons/rewrite-clj[rewrite-clj] https://github.com/clj-commons/rewrite-clj/releases/tag/v1.2.50[1.2.50] - Rewrite Clojure code and edn +* https://github.com/igrishaev/lambda[lambda] https://github.com/igrishaev/lambda/blob/master/CHANGELOG.md[0.1.6] - An AWS Lambda in a single binary file +* https://github.com/filipesilva/datomic-pro-manager[datomic-pro-manager] https://github.com/filipesilva/datomic-pro-manager/tree/v1.0.1[1.0.1] - Download, setup, and run Datomic Pro backed by SQLite in a single command. +* https://github.com/seancorfield/honeysql[honeysql] https://github.com/seancorfield/honeysql/releases/tag/v2.7.1310[2.7.1310] - Turn Clojure data structures into SQL +* https://github.com/lread/test-doc-blocks[test-doc-blocks] https://github.com/lread/test-doc-blocks/releases/tag/v1.2.21[1.2.21] - Test AsciiDoc and CommonMark code blocks found in articles and docstrings. +* https://github.com/cursive-ide/cursive[cursive] https://cursive-ide.com/blog/cursive-2025.1.1.html[2025.1.1] - Cursive: The IDE for beautiful Clojure code +* https://github.com/cursive-ide/cursive[cursive] https://cursive-ide.com/blog/cursive-2025.2-eap1.html[2025.2-eap1] - Cursive: The IDE for beautiful Clojure code +* https://github.com/steffan-westcott/clj-otel[clj-otel] https://github.com/steffan-westcott/clj-otel/blob/master/CHANGELOG.adoc[0.2.8] - An idiomatic Clojure API for adding telemetry to your libraries and applications using OpenTelemetry. +* https://github.com/metosin/oksa[oksa] https://github.com/metosin/oksa/releases/tag/1.2.0[1.2.0] - Generate GraphQL queries using Clojure data structures. +* https://repo.prod.meissa.de/meissa/c4k-forgejo[c4k-forgejo] https://repo.prod.meissa.de/meissa/c4k-forgejo/src/tag/7.0.0[7.0.0] - Provision forgejo on k8s with c4k +* https://github.com/squint-cljs/cherry[cherry] https://github.com/squint-cljs/cherry/blob/main/CHANGELOG.md[0.4.28] - Experimental ClojureScript to ES6 module compiler +* https://github.com/practicalli/astro[astro] https://github.com/practicalli/astro/releases/tag/2025-05-13[2025-05-13] - Rich development workflow with Clojure support, using AstroNvim 4 and selected plugins +* https://github.com/BetterThanTomorrow/calva-power-tools[calva-power-tools] https://github.com/BetterThanTomorrow/calva-power-tools/releases/tag/v0.0.8[0.0.8] - A VS Code Extension providing commands for extra powerful things in the Clojure ecosystem +* https://github.com/babashka/nbb[nbb] https://github.com/babashka/nbb/blob/main/CHANGELOG.md[1.3.204] - Scripting in Clojure on Node.js using SCI +* https://github.com/practicalli/clojure[clojure] https://github.com/practicalli/clojure/releases/tag/2025-05-16[2025-05-16] - Practicalli Clojure REPL Driven Development +* https://github.com/soulspace-org/overarch[overarch] https://github.com/soulspace-org/overarch/blob/main/Changelog.md[0.38.0 ; good release example] - Overarch provides a data model for the holistic description of a software system, opening multiple use cases on the model data. Supports C4 and UML diagram generation with PlantUML. +* https://github.com/scicloj/clay[clay] https://clojars.org/org.scicloj/clay/versions/2-beta45[2-beta45] - A REPL-friendly Clojure tool for notebooks and datavis +* https://github.com/BetterThanTomorrow/calva-backseat-driver[calva-backseat-driver] https://github.com/BetterThanTomorrow/calva-backseat-driver/releases/tag/v0.0.12[0.0.12] - VS Code AI Agent Interactive Programming. Tools for CoPIlot and other assistants. Can also be used asan MCP server. +* https://github.com/BetterThanTomorrow/calva[calva] https://github.com/BetterThanTomorrow/calva/releases/tag/v2.0.514[2.0.514] - Clojure & ClojureScript Interactive Programming for VS Code diff --git a/content/news/2025/05/30/deref.adoc b/content/news/2025/05/30/deref.adoc new file mode 100644 index 00000000..60afb9b0 --- /dev/null +++ b/content/news/2025/05/30/deref.adoc @@ -0,0 +1,55 @@ += Clojure Deref (May 30, 2025) +Christoph Neumann +2025-05-30 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). + +== Podcasts, videos, and media + +* https://youtu.be/W7CR-r8XRgE[Let CoPilot extend VS Code with Backseat Driver and Joyride] - CalvaTV +* https://youtu.be/F61YWNapxJg[Clojure MCP Demo] - Metosin +* https://youtu.be/kmW804dNqgA[Scicloj AI Meetup 7 - Can we turn CoPilot into an Interactive Programmer?] - Sci Cloj +* https://youtu.be/OINVSndi9MI[SciNoj Light #1 - 1.2: An intro to the Noj toolkit - Daniel Slutsky] - Sci Cloj +* https://youtu.be/O79Zoaw-rHg[SciNoj Light #1 - 1.3: Probability and statistics - Daniel Slutsky] - Sci Cloj +* https://youtu.be/ERvoEvNZTII[SciNoj Light #1 - 1.4: Customer churn analysis, LLMs & logic programming - siavash mohammady] - Sci Cloj +* https://youtu.be/M6ojW4LyxGU[SciNoj Light #1 - 1.5: Linear Foundations & Nonlinear Frontiers - Jelena Losic] - Sci Cloj +* https://youtu.be/NXwunJXqfZU[SciNoj Light #1 - 1.6: RAGgedy Ann's Big Adventure - Paula Gearon] - Sci Cloj +* https://youtu.be/9AUxV1e0sNk[SciNoj Light #1 - 1.7: Parliamentary Questions - RAG Evaluation - Eoin Carney] - Sci Cloj +* https://youtu.be/_9QjVjBNxjY[SciNoj Light #1 - 1.8 - Discussion: RAGs and Structured Knowledge] - Sci Cloj +* https://youtu.be/7Uc5GnYT03A[SciNoj Light #1 - 1.9: Noj Deep Dive - Harold & Daniel Slutsky] - Sci Cloj +* https://youtu.be/MfA8Tyt7Rgk[SciNoj Light #1 - 1.10: Brain data in Clojure - Lorelai Lyons] - Sci Cloj +* https://youtu.be/RXr9i-aw0lM[SciNoj Light #1 - 2.1: 1D Viscous Fluid Flow Data Analysis, Burgers’ Equation - Siyoung Byun] - Sci Cloj +* https://youtu.be/wdjtHjvtGUQ[SciNoj Light #1 - 2.2: UK Electricity Demand Time Series Forecasting - Anton Lobach] - Sci Cloj +* https://youtu.be/RrgxbCyECVw[SciNoj Light #1 - 2.3: Tropical cyclone trajectory modelling - K Ram Narayan, Naimish Mani B] - Sci Cloj +* https://youtu.be/GbqerAZmjco[SciNoj Light #1 - 2.4: Studying planning with a novel video game - Cvetomir Dimov] - Sci Cloj +* https://youtu.be/d6wWL1I2POE[SciNoj Light #1 - 2.5: Building a Data Science Ecosystem in Clojure - Kira Howe] - Sci Cloj +* https://youtu.be/3HZ5rngHzWM[SciNoj Light #1 - 2.7: The Impact of Lane Reductions - Heather Moore-Farley] - Sci Cloj + +== Blogs, articles, and projects + +* https://blog.agical.se/en/posts/a-rich-poor-man-x-s-css-hot-reload/[A rich poor man's CSS hot reload] - Peter Strömberg +* https://scicloj.github.io/scinoj-light-1/schedule.html[SciNoj Light #1] - Daniel Slutsky +* https://www.metosin.fi/blog/2025-05-27-bruce-hauman-has-done-it-again[Bruce Hauman Has Done It Again – Metosin] - Valtteri Harmainen +* https://clojurecivitas.github.io/conferences/scinoj_light_1/notes/hallway_track.html[The Hallway Track: SciNoj Light #1 Data Analysis Stories – Clojure Civitas] - Timothy Pratley +* https://www.thoughtfull.systems/notes/2025-05-30-how-to-reuse-a-macro-like-a-function/[How to reuse a macro like a function] - technosophist + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/bhauman/clojure-mcp[clojure-mcp] - Clojure MCP - REPL-Driven Development with AI Assistance +* https://github.com/clojure-emacs/inf-clojure[inf-clojure] https://github.com/clojure-emacs/inf-clojure/releases/tag/v3.3.0[3.3.0] - Basic interaction with a Clojure subprocess +* https://github.com/behrica/scicloj.ml.smiledf[scicloj.ml.smiledf] - A library to convert between Smile dataframes and tech.ml datasets +* https://github.com/clojure-lsp/clojure-lsp[clojure-lsp] https://github.com/clojure-lsp/clojure-lsp/releases/tag/2025.05.27-13.56.57[2025.05.27-13.56.57] - Clojure & ClojureScript Language Server (LSP) implementation +* https://github.com/borkdude/unused-deps[unused-deps] - Find unused deps in a clojure project +* https://github.com/BetterThanTomorrow/calva-backseat-driver[calva-backseat-driver] https://github.com/BetterThanTomorrow/calva-backseat-driver/releases/tag/v0.0.13[0.0.13] - VS Code AI Agent Interactive Programming. Tools for CoPIlot and other assistants. Can also be used as an MCP server. +* https://github.com/TheFakeLorLyons/brainflow-java[brainflow-java] https://github.com/TheFakeLorLyons/brainflow-java/tree/v1.0.006[1.0.006] - Containing only the java brainflow implementation so that it is not necessary to push the brainflow code directly inside the brainfloj clojure wrapper. +* https://github.com/athos/sweet-array[sweet-array] https://github.com/athos/sweet-array/releases/tag/0.3.0[0.3.0] - Array manipulation library for Clojure with "sweet" array type notation and more safety by static types +* https://github.com/igrishaev/remus[remus] https://github.com/igrishaev/remus/blob/master/CHANGELOG.md[0.2.5] - Attentive RSS/Atom feed parser for Clojure +* https://github.com/squint-cljs/squint[squint] https://github.com/squint-cljs/squint/releases/tag/v0.8.148[0.8.148] - Light-weight ClojureScript dialect +* https://github.com/seancorfield/build-uber-log4j2-handler[build-uber-log4j2-handler] https://github.com/seancorfield/build-uber-log4j2-handler/releases/tag/v2.24.3[2.24.3] - A conflict handler for log4j2 plugins cache files for the tools.build uber task. +* https://github.com/scicloj/metamorph.ml[metamorph.ml] https://github.com/scicloj/metamorph.ml/blob/main/CHANGELOG.md[1.2.1] - Machine learning functions for tech.ml.dataset and metamorph +* https://github.com/clojure-emacs/clojure-mode[clojure-mode] https://github.com/clojure-emacs/clojure-mode/releases/tag/v5.20.0[5.20.0] - Emacs support for the Clojure(Script) programming language diff --git a/content/news/2025/06/02/clojure-1-12-1.adoc b/content/news/2025/06/02/clojure-1-12-1.adoc new file mode 100644 index 00000000..4d80f1dc --- /dev/null +++ b/content/news/2025/06/02/clojure-1-12-1.adoc @@ -0,0 +1,12 @@ += Clojure 1.12.1 +Alex Miller +2025-06-02 +:jbake-type: post + +Clojure 1.12.1 is now available! Find download and usage information on the <> page. + +* https://clojure.atlassian.net/browse/CLJ-2899[CLJ-2899] - Revert change in semantics of qualified symbol in invocation position if field and method of same name +* https://clojure.atlassian.net/browse/CLJ-2898[CLJ-2898] - Objects that are both IFn and FunctionalInterface unnecessarily get converted to FI +* https://clojure.atlassian.net/browse/CLJ-2888[CLJ-2888] - gen-class - did not support new array class symbol syntax +* https://clojure.atlassian.net/browse/CLJ-2886[CLJ-2886] - add-libs - send only procurer keys to tool invocation +* https://clojure.atlassian.net/browse/CLJ-2906[CLJ-2906] - Add missing :added metadata to 1.12 functions diff --git a/content/news/2025/06/06/deref.adoc b/content/news/2025/06/06/deref.adoc new file mode 100644 index 00000000..fa0a1fa4 --- /dev/null +++ b/content/news/2025/06/06/deref.adoc @@ -0,0 +1,44 @@ += Clojure Deref (June 6, 2025) +Christoph Neumann +2025-06-06 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). + +== Podcasts, videos, and media + +* https://youtu.be/plMpFV5s8nY[Vibe Coding With Clojure-MCP: Bruce Hauman/Luke Burton/Gene Kim] - IT Revolution +* https://youtu.be/iQ22MhGSS-g[7 UIs with Replicant, Ep 6: Timer] - Replicant TV + +== Blogs, articles, and projects + +* https://building.nubank.com/clojure-developer-advocate-nubank/[Building the Future of Clojure: Welcoming Christoph Neumann as Nubank’s First Clojure Developer Advocate - Building Nubank] - Nubank Editorial +* https://cjohansen.no/keys/[On keys and their usage] - Christian Johansen +* https://magnars.com/three-tidbits/[Three Tiny Tidbits That Made Adding Municipalities Effortless] - Magnar Sveen +* https://clojurecivitas.github.io/clojure/transducers/what_if.html[What if… we were taught transducers first? – Clojure Civitas] - Sean Corfield +* https://lambdaisland.com/blog/2025-06-03-beyond-the-if-pattern[Beyond the If Pattern] - Laurence Chen +* https://romanliutikov.com/blog/towards-react-server-components-in-clojure-part-3[Towards React Server Components in Clojure, Part 3 | Roman Liutikov, Software Engineer] - Roman Liutikov +* https://factorhouse.io/blog/articles/beyond-reagent-with-hsx-and-rfx/[Factor House | Blog | Beyond Reagent: Migrating to React 19 with HSX and RFX] - Thomas Crowley +* https://xtdb.com/blog/building-a-bitemp-index-3-storage[Building a Bitemporal Index (part 3): Storage · XTDB] - James Henderson +* https://www.ooloi.org/home/the-musical-journey-to-understanding-transducers-building-oolois-piece-walker[The Musical Journey to Understanding Transducers: Building Ooloi's Piece-Walker] - Peter Bengtson +* https://jank-lang.org/blog/2025-06-06-next-phase-of-interop/[The next phase of jank's C++ interop] - Jeaye Wilkerson + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/clojure/clojure[clojure] https://clojure.org/news/2025/06/02/clojure-1-12-1[1.12.1] - Clojure +* https://clojure.org/reference/clojure_cli[clojure_cli] https://clojure.org/releases/tools#v1.12.1.1550[1.12.1.1550] - Clojure CLI +* https://redplanetlabs.com/download[rama] https://github.com/redplanetlabs/rama-release-notes/#110[1.1.0] - The 100x Developer Platform +* https://github.com/gersak/timing[timing] - Time computation library with CRON scheduling capability +* https://github.com/StudistCorporation/annotation-reporter[annotation-reporter] - GitHub annotation test reporter for Kaocha +* https://github.com/ilmoraunio/conjtest[conjtest] https://github.com/ilmoraunio/conjtest/releases/tag/v0.2.0[0.2.0] - A policy-as-code tool with which you can write security policies using Clojure. +* https://github.com/clojure-emacs/clojure-ts-mode[clojure-ts-mode] https://github.com/clojure-emacs/clojure-ts-mode/releases/tag/v0.5.0[0.5.0] - The next generation Clojure major mode for Emacs, powered by TreeSitter +* https://github.com/slagyr/speclj[speclj] https://github.com/slagyr/speclj/blob/master/CHANGES.md[3.10.0] - pronounced "speckle": a TDD/BDD framework for Clojure. +* https://github.com/clj-kondo/clj-kondo[clj-kondo] https://github.com/clj-kondo/clj-kondo/releases/tag/v2025.06.05[2025.06.05] - Static analyzer and linter for Clojure code that sparks joy +* https://github.com/babashka/http-client[http-client] https://github.com/babashka/http-client/releases/tag/v0.4.23[0.4.23] - HTTP client for Clojure and Babashka built on java.net.http +* https://github.com/amiorin/big-container[big-container] https://github.com/amiorin/big-container/blob/main/CHANGELOG.md[0.1.45] - doom emacs done right. +* https://github.com/practicalli/clojure-cli-config[clojure-cli-config] https://github.com/practicalli/clojure-cli-config/releases/tag/2025-06-03[2025-06-03] - User aliases and Clojure CLI configuration for deps.edn based projects +* https://github.com/scicloj/tableplot[tableplot] https://github.com/scicloj/tableplot/blob/main/CHANGELOG.md[1-beta14] - Easy layered graphics with Hanami & Tablecloth diff --git a/content/news/2025/06/16/deref.adoc b/content/news/2025/06/16/deref.adoc new file mode 100644 index 00000000..41b3b333 --- /dev/null +++ b/content/news/2025/06/16/deref.adoc @@ -0,0 +1,62 @@ += Clojure Deref (June 16, 2025) +Christoph Neumann +2025-06-16 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). + +https://2025.clojure-conj.org/[Clojure/Conj 2025] will be held Nov 12-14 in Charlotte, NC. Early Bird Registration is now open. We look forward to seeing you in-person and online! + +== Podcasts, videos, and media + +* https://youtu.be/QIam96cpIoI[Dustin Getz - Electric Clojure Differential Dataflow for UI (KEYNOTE)] - LambdaConf +* https://youtu.be/2TY6cJ8YiwU[SciNoj Light #1 - 2.6: macroexpand-1 community session] - Sci Cloj +* https://youtu.be/i3x0z9mzWm0[Clojure visual-tools 34 - partial recording: nrepl-ws-server, nrepl-ws-client, Clay] - Sci Cloj +* https://youtu.be/JgksTXhSumw[Clojure Corner: Interview with Martin Kavalar] - Flexiana +* https://youtu.be/25lJNRibYv8[Simple ideas with huge impact from Clojure and Rama (by Nathan Marz)] - London Clojurians +* https://youtu.be/AGTDfXKGvNI[UI, Pure and Simple (by Christian Johansen)] - London Clojurians +* https://youtu.be/36hOSp83ozM[Scicloj AI Meetup 8: Clojure-MCP] - Sci Cloj +* https://youtu.be/kRd4JYIiWb0[Designing Clobber: A Deep Dive into a Clojure-Powered Editor for Text and Code] - phronmophobic +* https://zencastr.com/z/jXOA-uA9[defn episode 3d32130bbe3d Drew Raines] - @defn podcast +* https://youtu.be/n6ICeRyXHsI[Turning the Conference Inside Out - reflecting backward & forward on Clojure conferences and growth] - Sci Cloj +* https://youtu.be/MiIsqKfTW58[Functional Creative Coding with Patterning (by Phil Jones)] - London Clojurians +* https://www.therepl.net/episodes/56/[XTDB: A Bitemporal database in Clojure] - The REPL +* https://youtu.be/-yYJV7WEFjI[CoPilot hacked my editor] - CalvaTV + +== Blogs, articles, and projects + +* https://bytes.vadeai.com/how-one-clojure-function-destroyed-agent-framework-completely/[How One Clojure Function Destroyed Agent Framework Completely] - Pragyan Tripathi +* https://forum.defold.com/t/defold-editor-development-tips-and-tricks/80710[Defold Editor Development. Tips and Tricks] - Alexey Gulev +* https://www.wedesoft.de/software/2025/06/14/akima-splines/[Akima splines] - Jan Wedekind + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/coconutpalm/clojure-desktop-toolkit[clojure-desktop-toolkit] https://github.com/coconutpalm/clojure-desktop-toolkit/releases/tag/v0.3.1[0.3.1] - Create native state-of-the-art desktop applications in Clojure using Eclipse's SWT graphics toolkit. +* https://github.com/basilisp-lang/basilisp[basilisp] https://github.com/basilisp-lang/basilisp/releases/tag/v0.4.0[0.4.0] - A Clojure-compatible(-ish) Lisp dialect targeting Python 3.9+ +* https://github.com/nextdoc/ai-tools[ai-tools] https://github.com/nextdoc/ai-tools/tree/1.0[1.0] - tools that help AI development assistants do Clojure +* https://github.com/metosin/malli[malli] https://github.com/metosin/malli/releases/tag/0.19.1[0.19.1] - High-performance data-driven data specification library for Clojure/Script. +* https://github.com/NoahTheDuke/lazytest[lazytest] https://github.com/NoahTheDuke/lazytest/releases/tag/v1.7.0[1.7.0] - A standalone BDD test framework for Clojure +* https://github.com/nextjournal/markdown[markdown] https://github.com/nextjournal/markdown/blob/main/CHANGELOG.md[0.7.186] - A cross-platform clojure/script parser for Markdown +* https://github.com/seancorfield/deps-new[deps-new] https://github.com/seancorfield/deps-new/releases/tag/v0.9.0[0.9.0] - Create new projects for the Clojure CLI / deps.edn +* https://github.com/xtdb/xtdb[xtdb] https://github.com/xtdb/xtdb/releases/tag/v2.0.0[2.0.0] - An immutable SQL database for application development, time-travel reporting and data compliance. Developed by @juxt +* https://github.com/seancorfield/next-jdbc[next-jdbc] https://github.com/seancorfield/next-jdbc/releases/tag/v1.3.1048[1.3.1048] - A modern low-level Clojure wrapper for JDBC-based access to databases. +* https://github.com/babashka/babashka[babashka] https://github.com/babashka/babashka/releases/tag/v1.12.202[1.12.202] - Native, fast starting Clojure interpreter for scripting +* https://github.com/borkdude/quickblog[quickblog] https://github.com/borkdude/quickblog/releases/tag/v0.4.7[0.4.7] - Light-weight static blog engine for Clojure and babashka +* https://github.com/NoahTheDuke/fluent-clj[fluent-clj] https://github.com/NoahTheDuke/fluent-clj/releases/tag/v0.1.0[0.1.0] - Project Fluent for Clojure/script +* https://github.com/gersak/patcho[patcho] - Patching micro lib for Clojure +* https://github.com/lsolbach/qclojure[qclojure] - A functional quantum computer programming library for Clojure with simulation backend and visualizations. +* https://github.com/tonsky/clojure-plus[clojure-plus] https://github.com/tonsky/clojure-plus/releases/tag/1.6.0[1.6.0] - A project to improve experience of using Clojure stdlib +* https://github.com/potetm/fusebox[fusebox] https://github.com/potetm/fusebox/blob/master/CHANGELOG.md[1.0.11] - An extremely lightweight fault tolerance library for Clojure(Script) and Babashka +* https://github.com/babashka/fs[fs] https://github.com/babashka/fs/releases/tag/v0.5.26[0.5.26] - File system utility library for Clojure +* https://github.com/BetterThanTomorrow/calva[calva] https://github.com/BetterThanTomorrow/calva/releases/tag/v2.0.519[2.0.519] - Clojure & ClojureScript Interactive Programming for VS Code +* https://github.com/pedestal/pedestal[pedestal] https://github.com/pedestal/pedestal/blob/master/CHANGELOG.md[0.8.0-beta-1] - The Pedestal Server-side Libraries +* https://github.com/cjohansen/dataspex[dataspex] https://github.com/cjohansen/dataspex/tree/v2025.06.7[2025.06.7] - See the shape of your data: point-and-click Clojure(Script) data browser +* https://github.com/BetterThanTomorrow/joyride[joyride] https://github.com/BetterThanTomorrow/joyride/releases/tag/v0.0.47[0.0.47] - Making VS Code Hackable like Emacs since 2022 +* https://github.com/clj-commons/pretty[pretty] https://github.com/clj-commons/pretty/blob/main/CHANGES.md[3.4.0] - Library for helping print things prettily, in Clojure - ANSI fonts, formatted exceptions +* https://github.com/exoscale/coax[coax] https://github.com/exoscale/coax/tree/2.0.4[2.0.4] - Clojure.spec coercion library for clj(s) +* https://github.com/seancorfield/build-uber-log4j2-handler[build-uber-log4j2-handler] https://github.com/seancorfield/build-uber-log4j2-handler/releases/tag/v2.25.0[2.25.0] - A conflict handler for log4j2 plugins cache files for the tools.build uber task. +* https://github.com/seancorfield/logging4j2[logging4j2] https://github.com/seancorfield/logging4j2/releases/tag/v1.0.3[1.0.3] - A Clojure wrapper for log4j2 diff --git a/content/news/2025/06/20/deref.adoc b/content/news/2025/06/20/deref.adoc new file mode 100644 index 00000000..748a7635 --- /dev/null +++ b/content/news/2025/06/20/deref.adoc @@ -0,0 +1,36 @@ += Clojure Deref (June 20, 2025) +Christoph Neumann +2025-06-20 +:jbake-type: post + +ifdef::env-github,env-browser[:outfilesuffix: .adoc] + +Welcome to the Clojure Deref! This is a weekly link/news roundup for the Clojure ecosystem (feed: https://clojure.org/feed.xml[RSS]). + +The https://2025.clojure-conj.org/[Clojure/conj] 2025 https://2025.clojure-conj.org/speakers[Call for Presentations] is open now until July 27! We are seeking proposals for both 30 minute sessions and 10 minute lightning talks. + +== Podcasts, videos, and media + +* https://youtu.be/kGOB9IPKHfo[Christoph Neumann guests on Apropos Clojure 2025-06-17] - apropos clojure +* https://youtu.be/v43Kfc7fYT0[Writing Model Content Protocol (MCP) Servers in Clojure (by Vedang Manerikar)] - London Clojurians +* https://youtu.be/v9d_1k5V8RU[Three personal software products I created with Clojure] - Clojure Diary + +== Blogs, articles, and projects + +* https://www.juxt.pro/blog/value-and-cost-of-a-test/[JUXT Blog: The Value and Cost of a Test] - James Henderson +* https://biffweb.com/p/edn-html-forms/[EDN-infused plain html forms] - Jacob O'Bryant + +== Libraries and Tools + +New releases and tools this week: + +* https://github.com/taoensso/nippy[nippy] https://github.com/taoensso/nippy/releases/tag/v3.6.0[3.6.0] - Fast serialization library for Clojure +* https://github.com/ivarref/yoltq[yoltq] https://github.com/ivarref/yoltq/releases/tag/v0.2.82[0.2.82] - An opinionated Datomic queue for building (more) reliable systems. Supports retries, backoff, ordering and more. +* https://github.com/babashka/sci[sci] https://github.com/babashka/sci/releases/tag/v0.10.46[0.10.46] - Configurable Clojure/Script interpreter suitable for scripting and Clojure DSLs +* https://github.com/babashka/scittle[scittle] https://github.com/babashka/scittle/releases/tag/v0.7.23[0.7.23] - Execute Clojure(Script) directly from browser script tags via SCI +* https://github.com/ivarref/finddep[finddep] - Find the root (top) of a given dependency in Clojure +* https://github.com/taoensso/trove[trove] - Modern logging facade for Clojure/Script +* https://github.com/fogus/rv[rv] https://github.com/fogus/rv/blob/main/CHANGELOG.md[0.0.10] - A Clojure library exploring the application of pure reasoning algorithms. +* https://github.com/babashka/babashka[babashka] https://github.com/babashka/babashka/blob/master/CHANGELOG.md[1.12.203] - Native, fast starting Clojure interpreter for scripting +* https://github.com/squint-cljs/squint[squint] https://github.com/squint-cljs/squint/releases/tag/v0.8.149[0.8.149] - Light-weight ClojureScript dialect +* https://github.com/BetterThanTomorrow/joyride[joyride] https://github.com/BetterThanTomorrow/joyride/releases/tag/v0.0.50[0.0.50] - Making VS Code Hackable like Emacs since 2022 diff --git a/content/reference/async.adoc b/content/reference/async.adoc deleted file mode 100644 index 2a367a8e..00000000 --- a/content/reference/async.adoc +++ /dev/null @@ -1,157 +0,0 @@ -= core.async -Alex Miller -2021-11-17 -:type: reference -:toc: macro -:icons: font -:prevpagehref: deps_and_cli -:prevpagetitle: Deps and CLI - -ifdef::env-github,env-browser[:outfilesuffix: .adoc] - -toc::[] - -The core.async library adds support for asynchronous programming using channels. - -== Channels - -Channels are queues that carry values and support multiple writers and readers. Channels are created with `https://clojure.github.io/core.async/#clojure.core.async/chan[chan]`. Values in a channel are stored in a buffer. Buffers are never unbounded and there are several provided buffer types: - -* Unbuffered - `(chan)` - no buffer is used, and a rendezvous is required to pass a value through the channel from writer to reader -* Fixed size - `(chan 10)` -* Dropping - `(chan (dropping-buffer 10))` - fixed size, and when full drop newest value -* Sliding - `(chan (sliding-buffer 10))` - fixed size, and when full drop oldest value - -Channels are first-class values that can be passed around like any other value. - -Channels may optionally be supplied with a <> and an exception handler. The transducer will be applied to values that pass through the channel. If a transducer is supplied, the channel *must* be buffered (transducers can create intermediate values that must be stored somewhere). - -The `ex-handler` is a function of one argument (a Throwable). If an exception occurs while applying the transducer, the `ex-handler` will be invoked, and any non-nil return value will be placed in the channel. If no `ex-handler` is supplied, exceptions will flow and be handled where they occur (note that this may in either the writer or reader thread depending on the operation and the state of the buffer). - -[%hardbreaks] -Creating channels: https://clojure.github.io/core.async/#clojure.core.async/chan[chan] -Buffers: https://clojure.github.io/core.async/#clojure.core.async/buffer[buffer] https://clojure.github.io/core.async/#clojure.core.async/dropping-buffer[dropping-buffer] https://clojure.github.io/core.async/#clojure.core.async/sliding-buffer[sliding-buffer] https://clojure.github.io/core.async/#clojure.core.async/unblocking-buffer%3F[unblocking-buffer?] - -==== Put and take - -Any value can be placed on a channel, except `nil`. The primary operations on channels are _put_ and _take_, which are provided in several variants: - -* Blocking: `https://clojure.github.io/core.async/#clojure.core.async/%3E%21%21[>!!]`, `https://clojure.github.io/core.async/#clojure.core.async/%3C%21%21[!]`, `https://clojure.github.io/core.async/#clojure.core.async/%3C%21[` points in the direction the value travels relative to the channel arg. For example, in `(>!! chan val)` the `>` points into the channel (_put_) and `(!!] https://clojure.github.io/core.async/#clojure.core.async/%3C%21%21[!] https://clojure.github.io/core.async/#clojure.core.async/%3C%21[!`, `> -* <> -* https://clojure.github.io/core.async[API docs] -* https://github.com/clojure/core.async[Source] diff --git a/content/reference/clojure_cli.adoc b/content/reference/clojure_cli.adoc index 05c40f62..281ee014 100644 --- a/content/reference/clojure_cli.adoc +++ b/content/reference/clojure_cli.adoc @@ -17,7 +17,7 @@ The Clojure CLI is a command-line tool to run Clojure programs on the Java Virtu == Installation -The Clojure CLI can be installed via Homebrew, bash/posix script, or Powershell depending on the platform. See the <> for details and the <> for version information. You can also read the <> for a longer tutorial. For artifact building, check out the <>. +The Clojure CLI can be installed in a variety of ways, see the <> for details and the <> for version information. You can also read the <> for a longer tutorial. For artifact building, check out the <>. Any version of the Clojure CLI can use any version of the Clojure language. Generally it is best to use the latest <> to have the latest features and fixes. Given a CLI version A.B.C[.D], the default <> used at the REPL will be A.B.C, however you can specify an older (or newer!) version of the language in your dependencies. @@ -26,7 +26,7 @@ Any version of the Clojure CLI can use any version of the Clojure language. Gene The CLI is invoked via either `clojure` or `clj`. In general, you can treat these interchangeably but `clj` includes `rlwrap` for extended keyboard editing, particularly useful with the REPL. This reference uses `clj` for REPL examples and `clojure` for non-REPL examples. -Each execution of the Clojure CLI runs a Clojure program by determining all paths, dependencies, and main entry point, then invoking the program on the JVM. The primary kind of execution is determined by `-X`, `-T`, and `-M` (or their absence). Configuration is defined by one or more <> files in combination with the <>. +Each execution of the Clojure CLI runs a Clojure program by determining all paths, dependencies, and main entry point, then invoking the program on the JVM. The primary kind of execution is determined by `-X`, `-T`, and `-M` (or their absence). Configuration is defined by one or more <> files in combination with the <>. @@ -60,14 +60,13 @@ exec-opts: clj-opts: <> Pass JVM option - <> Extra deps.edn data + <> Extra deps.edn data or file <> Ignore user deps.edn file <> Compute and echo classpath <> Print dependency tree <> Use this classpath, ignore deps.edn <> Force classpath computation <> Print path info - <> Print env and command parsing info <> Set specific number of download threads <> Write dep expansion trace.edn <> Print version to stdout and exit @@ -165,7 +164,7 @@ You can use the `-M` exec-opt to invoke clojure.main, which supports calling a n clojure [clj-opt*] -M[aliases] [main-opts] ---- -The -M aliases are pulled from `deps.edn` and combined to form an arg map. The arg map can modify the classpath or supply `:main-opts`, a vector of string main options. See the <> page for more information on the available arguments. +The -M aliases (if provided) are pulled from `deps.edn` and combined to form an arg map. The arg map can modify the classpath or supply `:main-opts`, a vector of string main options. See the <> page for more information on the available main-opts. Common uses: @@ -196,23 +195,23 @@ While `-A` can be used with all execution commands, it is the only exec opt that [[opt_x]] **-X[aliases]** -`-X` takes one or more concatenated <>, which are always simple or qualified keywords, e.g. `-X:test` or `-X:test:perf/benchmark`. +`-X` optionally takes one or more concatenated <>, which are always simple or qualified keywords, e.g. `-X:test` or `-X:test:perf/benchmark`. -The `-X` exec-opt indicates <>, and all arguments after `-X` are defined by that execution context. All clj-opts (`-S`, `-P`, etc) should be placed before the `-X`. +The `-X` exec-opt indicates <>, and all arguments after `-X` are arguments to the function being executed, not the CLI. All clj-opts (`-S`, `-P`, etc) must be placed prior to the `-X` in the command line. [[opt_t]] **-Ttoolname, -T[aliases]** `-T` takes either a tool name (always symbols, not keywords) or one or more concatenated <>, which are always simple or qualified keywords, e.g. `-T:test` or `-T:test:perf/benchmark`. -The `-T` exec-opt indicates <>, and all arguments after `-T` are defined by that execution context. All clj-opts (`-S`, `-P`, etc) should be placed before the `-T`. +The `-T` exec-opt indicates <>, and all arguments after `-T` are arguments to the tool function, not the CLI. All clj-opts (`-S`, `-P`, etc) must be placed prior to the `-T` in the command line. [[opt_m]] **-M[aliases]** -`-M` takes one or more concatenated <>, which are always simple or qualified keywords, e.g. `-M:test` or `-M:test:perf/benchmark`. +`-M` optionally takes one or more concatenated <>, which are always simple or qualified keywords, e.g. `-M:test` or `-M:test:perf/benchmark`. -The `-M` exec-opt indicates <>, and all arguments after `-M` are defined by that execution context. All clj-opts (`-S`, `-P`, etc) should be placed before the `-M`. +The `-M` exec-opt indicates <>, and all arguments after `-M` are interpreted by clojure.main. All clj-opts (`-S`, `-P`, etc) must be placed prior to `-M` in the command line. [[opt_p]] **-P** @@ -229,7 +228,7 @@ Also see <> for more information on other ways t [[opt_sdeps]] **-Sdeps deps** -Use `-Sdeps` to supply an additional deps.edn source on the command line. This is used as the last <> in the merge. The deps data will need to be appropriately <> for the command line. +Use `-Sdeps` to supply additional deps.edn data or a path to a deps.edn file on the command line. This is used as the last <> in the merge. The deps data will need to be appropriately <> for the command line. [[opt_srepro]] **-Srepro** @@ -265,11 +264,6 @@ Print environment and path information found and used by the Clojure CLI, mostly This flag does not alter any other execution that may be specified on the command line, so it can be used to debug the location of the cache files for a particular command. -[[opt_sdescribe]] -**-Sdescribe** - -Print configuration settings as edn data and exit. This overlaps in functionality with `-Sverbose` but may be useful for programmatic use. - [[opt_sthreads]] **-Sthreads N** @@ -343,7 +337,7 @@ When multiple aliases are supplied, the keys in the aliases arg maps are merged The alias keys above are meaningful for Clojure CLI execution, but you may define aliases for any purpose. If you are creating a custom tool that needs configuration, it is a good practice to define well-known, namespaced aliases or alias-keys for use by your tool. Please refrain from adding top-level keys to the <> files - they may not always be available via programmatic tools. -Programs run by the Clojure CLI are given the "runtime basis" for the execution, including all alias data. The clojure.java.basis API being added in Clojure 1.12 can be used to retrieve alias data at runtime in the program. +Programs run by the Clojure CLI are given the <> for the execution, including all alias data. The https://clojure.github.io/clojure/#clojure.java.basis[clojure.java.basis] API added in Clojure 1.12 can be used to retrieve alias data at runtime in the program. [[namespaces]] === Namespace resolution @@ -577,7 +571,7 @@ These data types need to be surrounded by single quotes: * Sets - `'#{:a :b}'` * Lists - `'(1 2 3)'` -On Windows, WSL2 shells can follow the advice above, but on cmd.exe or Powershell, additional escape quoting is required for string values. Unfortunately the combination of quoting rules for converting command line Windows program arguments and Powershell quoting and word splitting are https://stackoverflow.com/a/59681993/7671[very complicated]. +On Windows, WSL2 shells can follow the advice above, but using clojure.exe, additional escape quoting is required for string values. Unfortunately the combination of quoting rules for converting command line Windows program arguments, quoting, and word splitting are https://stackoverflow.com/a/59681993/7671[very complicated]. To pass a string value at the top level, if the string value does not have spaces, you can use `'\"str\"'`. If the string value does have spaces (or not) you should use `'"""str value"""'`. @@ -599,7 +593,7 @@ PS D:> clj -X clojure.core/prn :val '{:s1 """nospaces""" :s2 ""has spaces""}' [[programs]] == Programs -The Clojure CLI is designed to provide access to programs (functions) in other libraries with their own independent classpath. This capability is leveraged to provide expanded functionality via the built-in `:deps` alias in the root deps.edn, which provides the https://github.com/clojure/tools.deps.cli[tools.deps.cli] (see https://clojure.github.io/tools.deps.cli[API]). +The Clojure CLI is designed to provide access to programs (functions) in other libraries with their own independent classpath. This capability is leveraged to provide expanded functionality via the built-in `:deps` alias in the root deps.edn, which provides the https://github.com/clojure/tools.deps.cli[tools.deps.cli] (see https://clojure.github.io/tools.deps.cli/[API]). [[deps_list]] === Dependency list @@ -734,7 +728,7 @@ The params that can be provided are: `find-versions` will print the git or Maven coordinates, one per line, to the console. -[[deps_install]] +[[deps_mvn_install]] === Local Maven install The `-X:deps mvn-install` program is provided with the Clojure CLI for convenience and can be executed with `-X` to install a jar into your local Maven cache. @@ -769,7 +763,7 @@ As mentioned above, edn strings must be in double quotes, and then single-quoted A pom file must be either provided explicitly, generated from :lib/:version, or found inside the .jar file (the default). -[[deps_pom]] +[[deps_mvn_pom]] === Generate Maven pom Use the following program to generate or update an existing pom.xml with the deps and paths from your project: @@ -821,7 +815,7 @@ For example: clj -Ttools install io.github.clojure/tools.deps.graph '{:git/tag "v1.0.63"}' :as deps-graph ---- -On Windows, additional <> is required in Powershell: +On Windows, additional <> is required: [source,shell] ---- @@ -891,9 +885,9 @@ Some tools provide functions designed to be used for programmatic execution from There are several argument map keys that have special significance to the Clojure CLI during -X or -T. All of these keys will be removed from the argument map before the function is invoked: -* `:clojure.exec/invoke` - `true` to use this protocol -* `:clojure.exec/out` - `true` to capture and return stdout during function execution -* `:clojure.exec/err` - `true` to capture and return stderr during function execution +* `:clojure.exec/invoke` - `:fn` to use this protocol +* `:clojure.exec/out` - `:capture` to capture and return stdout during function execution +* `:clojure.exec/err` - `:capture` to capture and return stderr during function execution The result is wrapped into a printed envelope map with the following keys and returned via the CLI stdout: @@ -916,7 +910,7 @@ The coordinate attributes determine which procurer is used. In general, most pro Some procurers may also look for configuration attributes at the root of the deps.edn configuration map using the the same qualifier. -[[procurer_maven]] +[[procurer_mvn]] === Maven The Maven procurer uses the qualifier `mvn` and is used to retrieve library artifacts from https://maven.apache.org/[Maven repositories], the standard repository manager in the Java ecosystem. Libraries are downloaded as .jar files and stored in the Maven local repository cache (located in ~/.m2/repository by default). Other JVM-based tools may also use this cache. diff --git a/content/reference/data_structures.adoc b/content/reference/data_structures.adoc index 1273a03e..13db4062 100644 --- a/content/reference/data_structures.adoc +++ b/content/reference/data_structures.adoc @@ -42,7 +42,7 @@ Clojure also supports the Java boxed number types derived from java.lang.Number, === Longs -By default Clojure operates with natural numbers as instances of Java's long primitive type. When a primitive integer operation results in a value that too large to be contained in a primitive value, a java.lang.ArithmeticException is thrown. Clojure provides a set of alternative math operators suffixed with an apostrophe: +', -', *', inc', and dec'. These operators auto-promote to BigInt upon overflow, but are less efficient than the regular math operators. +By default Clojure operates with natural numbers as instances of Java's long primitive type. When a primitive integer operation results in a value that is too large to be contained in a primitive value, a java.lang.ArithmeticException is thrown. Clojure provides a set of alternative math operators suffixed with an apostrophe: +', -', *', inc', and dec'. These operators auto-promote to BigInt upon overflow, but are less efficient than the regular math operators. === Ratio @@ -109,7 +109,7 @@ https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/keyword[key [[Symbols]] == Symbols -Symbols are identifiers that are normally used to refer to something else. They can be used in program forms to refer to function parameters, let bindings, class names and global vars. They have names and optional <>, both of which are strings. Symbols can have metadata (see https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/with-meta[with-meta]). +Symbols are identifiers that are normally used to refer to something else. They can be used in program forms to refer to function parameters, let bindings, class names, class members, and global vars. They have names and optional <>, both of which are strings. Symbols can have metadata (see https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/with-meta[with-meta]). Symbols, just like Keywords, implement IFn for invoke() of one argument (a map) with an optional second argument (a default value). For example `('mysym my-hash-map :none)` means the same as `(get my-hash-map 'mysym :none)`. See https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/get[get]. diff --git a/content/reference/deps_edn.adoc b/content/reference/deps_edn.adoc index 2a09d248..3cb302d2 100644 --- a/content/reference/deps_edn.adoc +++ b/content/reference/deps_edn.adoc @@ -15,9 +15,9 @@ toc::[] The deps.edn file is a data file specifying all information needed to form a project classpath, including deps, paths, and external dependency repository information. The deps.edn file format is used by the https://github.com/clojure/tools.deps[tools.deps library] and the <>. -If you are building a tool that would like to leverage deps.edn, create well-known namespaced <> as a means to convey tool configuration, rather than adding new arbitrary tags elsewhere in the deps.edn data - these may not be preserved or conveyed during processing. Tools can access alias data via the basis at runtime, or programatically via tools.deps. +If you are building a tool that would like to leverage deps.edn, create well-known namespaced <> as a means to convey tool configuration, rather than adding new arbitrary tags elsewhere in the deps.edn data - these may not be preserved or conveyed during processing. Tools can access alias data via the <> at runtime, or programatically via tools.deps. -.Index of all attributes +.Index of deps.edn attributes [[index]] [subs=+macros] ---- @@ -75,7 +75,7 @@ If you are building a tool that would like to leverage deps.edn, create well-kno <> {"repo" {<> "https://..." <> {<> true <> :daily - <> true} + <> :warn} <> {#_same_as_releases}}} ;; Tool publishing @@ -140,7 +140,7 @@ Examples: [[deps_mvn]] == Maven deps -The Maven procurer uses the qualifier `mvn` and is used to retrieve library artifacts from https://maven.apache.org/[Maven repositories], the standard repository manager in the Java ecosystem. Libraries are downloaded as .jar files and stored in the Maven local repository cache (located in ~/.m2/repository by default or override with <>). Other JVM-based tools may also use this cache. +The Maven procurer uses the qualifier `mvn` and is used to retrieve library artifacts from https://maven.apache.org/[Maven repositories], the standard repository manager in the Java ecosystem. Libraries are downloaded as .jar files and stored in the Maven local repository cache (located in ~/.m2/repository by default or override with <>). Other JVM-based tools may also use this cache. Maven libraries are located in Maven repositories using "Maven coordinates", typically the groupId, artifactId, and version (sometimes also abbreivated as GAV). In deps.edn, the library name is parsed as `groupId/artifactId` and the version is taken from `:mvn/version`. Some Maven artifacts also have a "classifier", which is a variant of a particular artifact. In the Maven procurer, classifiers are included at the end of the lib name, separated by a `$` in this format: `groupId/artifactId$classifier`. @@ -209,8 +209,8 @@ The most common git url protocols are https and ssh. https repos will be accesse For more information on creating keys and using the ssh-agent to manage your ssh identities, GitHub provides excellent info: -* https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/ -* https://help.github.com/articles/working-with-ssh-key-passphrases/ +* https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent +* https://docs.github.com/en/authentication/connecting-to-github-with-ssh/working-with-ssh-key-passphrases Other protocols (including local and file) should work but are not commonly used. @@ -375,7 +375,7 @@ The `:main-opts` are a collection of string options provided to a program starte [[procurers]] == Procurer config -[[procurers_mvn]] +[[procurer_mvn]] === Maven The Maven procurer uses the Maven resolver and Maven repository system to download artifacts. This is described further in the <> section. Some options can be configured in the deps.edn. @@ -405,11 +405,9 @@ The `:url` is a string url to the repository root. `http://` urls are not supported by default, but see <> for information on the `CLOJURE_CLI_ALLOW_HTTP_REPO` if you need this. -[[procurer_mvn_repos_releases]] -[[procurer_mvn_repos_snapshots]] ==== :releases and :snapshots -The `:releases` attribute is optional, but can be used to override the default repository configuration for release (non-snapshot artifacts): +[[procurer_mvn_repos_releases]]The `:releases` attribute is optional, but can be used to override the default repository configuration for release (non-snapshot artifacts): [source,clojure] ---- @@ -421,16 +419,13 @@ The `:releases` attribute is optional, but can be used to override the default r :checksum :fail}}}} ---- -The `:snapshots` attribute is the same as the `:releases` attribute, but applies repository policy for snapshot artifacts. +[[procurer_mvn_repos_snapshots]]The `:snapshots` attribute is the same as the `:releases` attribute, but applies repository policy for snapshot artifacts. Repository attributes: -[[procurer_mvn_repos_enabled]] -[[procurer_mvn_repos_update]] -[[procurer_mvn_repos_checksum]] -* `:enabled` is a boolean, default=true. Sometimes this is used to target a repository only for releases or snapshots. -* `:update` is a flag for how often to check the repo for updates, valid values are `:daily` (default), `:always`, `:never`, or an interval in minutes (integer). -* `:checksum` is a flag for checksum validation, one of `:warn` (default), `:fail`, `:ignore`. +* [[procurer_mvn_repos_enabled]]`:enabled` is a boolean, default=true. Sometimes this is used to target a repository only for releases or snapshots. +* [[procurer_mvn_repos_update]]`:update` is a flag for how often to check the repo for updates, valid values are `:daily` (default), `:always`, `:never`, or an interval in minutes (integer). +* [[procurer_mvn_repos_checksum]]`:checksum` is a flag for checksum validation, one of `:warn` (default), `:fail`, `:ignore`. Also see <> for additional configuration in the Clojure CLI. @@ -493,3 +488,70 @@ If your library needs preparation, add the `:deps/prep-lib` key to your `deps.ed ==== :fn `:fn` is the function to invoke with `-T` during prep + +[[basis]] +== Runtime basis + +The runtime basis is a representation of the dependency environment when the Clojure runtime starts. It includes information about the dependencies, classpath, and how the basis was created. + +The runtime basis can be accessed from within Clojure, using the https://clojure.github.io/clojure/#clojure.java.basis[clojure.java.basis] API. It includes access to both the initial basis and the current basis, which may be modified by the https://clojure.github.io/clojure/clojure.repl-api.html#clojure.repl.deps/add-libs[add-libs] and related functions. + +.Index of runtime basis attributes +[[basis_index]] +[subs=+macros] +---- +{;; The basis is a superset of the merged <> + ;; so may contain all of those attributes plus these: + + ;; Project paths + <> {:dir "project/dir" + + :root :standard|path|map + :user :standard|path|map + :project :standard|path|map + :extra path|map + + :aliases [:alias1 ...] + :args {arg val}} + <> {arg val} + <> {lib coord} + <> {classpath-path classpath-info} + <> [classpath-path ...]} +---- + +[[basis_config]] +=== :basis-config + +The `:basis-config` attribute contains the parameters used when the basis was created and should be sufficient to recreate the basis later. That property is in particular used by https://clojure.github.io/clojure/clojure.repl-api.html#clojure.repl.deps/sync-deps[sync-deps]. + +The `:basis-config` may have the following attributes: + +* `:dir` - absolute or relative path to the project directory (containing project deps.edn), defaults to current directory +* `:root` - root deps.edn source, one of `:standard` (read from classpath), a path, or a literal map +* `:user` - user deps.edn source, one of `:standard` (read from user config dir), a path, or a literal map +* `:project` - project deps.edn source, one of `:standard` (read from `:dir`), a path, or a literal map +* `:extra` - extra deps.edn source, either a path or a literal map +* `:aliases` - a vector of supplied alias keywords providing argmap keys +* `:args` - a map of extra argmap args, applied after alias argmaps are merged + +[[basis_argmap]] +=== :argmap + +The basis `:argmap` contains the merged argmap that was used when resolving dependencies and computing the classpath. The argmaps can be supplied either indirectly by the `:aliases` or directly via the `:args` key when creating the basis. + +See the <> for a complete list of argmap args and what they do. + +[[basis_libs]] +=== :libs + +The basis `:libs` key is a map of every dependency, both direct and transitive, included in the basis classpath. The `:libs` value is a map from lib name (qualified symbol) to lib coordinate with some additional keys. While most of the keys are non-normative, one important added key is the `:paths` vector of file paths to add to the classpath for this lib. + +[[basis_classpath]] +=== :classpath + +The `:classpath` key is a map where the keys are classpath paths (strings) and the values describe why that path is included. Most commonly this will be either a map with `:lib-name` key (for libs) or a map with `:path-key` key for source paths. + +[[basis_classpath_roots]] +=== :classpath-roots + +The `:classpath-roots` key is a vector that orders the classpath (the path strings should match the keys of the `:classpath` key). See the <> for ordering rules. diff --git a/content/reference/evaluation.adoc b/content/reference/evaluation.adoc index 3bea30ff..b0bf9621 100644 --- a/content/reference/evaluation.adoc +++ b/content/reference/evaluation.adoc @@ -26,7 +26,14 @@ A Symbol is _resolved_: * If it is namespace-qualified, the value is the value of the binding of the global var named by the symbol. It is an error if there is no global var named by the symbol, or if the reference is to a non-public var in a different namespace. * If it is package-qualified, the value is the Java class named by the symbol. It is an error if there is no Class named by the symbol. -* Else, it is not qualified and the first of the following applies: +* If the qualifier names a class, and the name is: +** a static field in the class, then the value is the value of the static field. +** a static method of the class, then the value is a Clojure function that invokes the static method. (since 1.12) +** a `.` prefixing an instance method of the class, then the value is a Clojure function that invokes the instance method. (since 1.12) +** `new`, then the value is a Clojure function that invokes the constructor. (since 1.12) +* If the qualifier names a class or primitive type, and the symbol name is: +** `1`-`9`, then the value is the array class whose component type is the qualifier and dimension per the digit. (since 1.12) +* Else, it is not qualified and the first of the following applies to the symbol name: . If it names a special form it is considered a special form, and must be utilized accordingly. . If in a local scope (e.g. in a function definition or a let form), a lookup is done to see if it names a local binding (e.g. a function argument or let-bound name). If so, the value is the value of the local binding. . A lookup is done in the current namespace to see if there is a mapping from the symbol to a class. If so, the symbol is considered to name a Java class object. Note that class names normally denote class objects, but are treated specially in certain special forms, e.g. `.` and `new`. diff --git a/content/reference/java_interop.adoc b/content/reference/java_interop.adoc index 9b9410a0..4d1e97ce 100644 --- a/content/reference/java_interop.adoc +++ b/content/reference/java_interop.adoc @@ -17,10 +17,14 @@ toc::[] [%hardbreaks] **Classname** -**Classname$NestedClassName** +**Classname$InnerClass** +**Classname/N** +**primitive/N** Symbols representing class names are resolved to the Class instance. Inner or nested classes are separated from their outer class with a `$`. Fully-qualified class names are always valid. If a class is `import`ed in the namespace, it may be used without qualification. All classes in java.lang are automatically imported to every namespace. +A symbol whose ns-part names a class or a primitive, and whose name part is a single digit between 1 and 9, designates an array class of that component type and dimension. Added in 1.12. + [source,clojure-repl] ---- String @@ -29,6 +33,8 @@ String -> #'user/date? (.getEnclosingClass java.util.Map$Entry) -> java.util.Map +(.getComponentType String/1) +-> java.lang.String ---- == Member access @@ -38,6 +44,7 @@ String **(.instanceMember Classname args*)** **(.-instanceField instance)** **(Classname/staticMethod args*)** +**(Classname/.instanceMethod instance args*)** **Classname/staticField** [source,clojure-repl] @@ -52,20 +59,27 @@ String -> "1.6.0_07-b06-57" Math/PI -> 3.141592653589793 + ---- -The preferred idiomatic forms for accessing field or method members are given above. The instance member form works for both fields and methods. The instanceField form is preferred for fields and required if both a field and a 0-argument method of the same name exist. They all expand into calls to the dot operator (described below) at macroexpansion time. The expansions are as follows: +The preferred idiomatic forms for accessing field or method members are given above. The instanceMember form works for both fields and methods. The instanceField form is required if both a field and a 0-argument method of the same name exist. + +Since Clojure 1.12, `Classname/.instanceMethod` refers to an instance method. When an instance method is specified, the instance should be provided after the member and before the args. When a qualified instance method is present then the qualifying class takes precedence over any additional type information on the instance for the purpose of resolving the instance method. + +The unqualified "." forms expand into calls to the dot operator (described below) at macroexpansion time. The expansions are as follows: [source,clojure] ---- (.instanceMember instance args*) ==> (. instance instanceMember args*) -(.instanceMember Classname args*) ==> - (. (identity Classname) instanceMember args*) +(.instanceMember Classname args*) ==> (. (identity Classname) instanceMember args*) (.-instanceField instance) ==> (. instance -instanceField) -(Classname/staticMethod args*) ==> (. Classname staticMethod args*) -Classname/staticField ==> (. Classname staticField) ---- +[[methodvalues]] +=== Method values + +Since Clojure 1.12, programmers can use qualified methods as ordinary functions in value contexts - the compiler will automatically generate the wrapping function. When used as values, qualified methods supply only the class and method name, and thus cannot resolve overloaded methods. Therefore, the compiler will generate a reflective call when a qualified method does not resolve due to overloading. Developers can supply <> on qualified methods to specify the signature of a single desired method, 'resolving' it. `:param-tags` are ignored on unqualified methods like `.instanceMember`. + == The Dot special form [[dot]] @@ -129,14 +143,13 @@ Macro. Evaluates instance-expr then calls all of the methods/functions with the [%hardbreaks] **(Classname. args*)** +**(Classname/_new_ args*)** **(_new_ Classname args*)** Special form. The args, if any, are evaluated from left to right, and passed to the constructor of the class named by Classname. The constructed object is returned. -=== Alternative Macro Syntax - As shown, in addition to the canonic special form new, Clojure supports special macroexpansion of symbols containing '.': `(new Classname args*)` @@ -145,7 +158,13 @@ can be written `(Classname. args*) ;note trailing dot` -the latter expanding into the former at macro expansion time. +the latter expanding into `(new Classname args)` syntax at macro expansion time. + +Since Clojure 1.12, a qualified form may also be used (it is not rewritten at macro expansion time): + +`(Classname/new args*)` + +Like methods, qualified constructors `Classname/new` can be used in <> and take <> metadata. '''' @@ -324,6 +343,13 @@ For example, byte arrays (byte-array []) have a type of "[B". * chars - A character array * objects - An object array +[[paramtags]] +== param-tags + +Since Clojure 1.12, developers can supply `:param-tags` metadata on qualified methods to specify the signature of a single desired method, 'resolving' it. The `:param-tags` metadata is a vector of zero or more tags: `[... tag ...]`. A tag is any existing valid `:tag` metadata value as described above. Each tag corresponds to a parameter in the desired signature (arity should match the number of tags). Parameters with non-overloaded types can use the placeholder `_` in lieu of the tag. When you supply :param-tags metadata on a qualified method, the metadata must allow the compiler to resolve it to a single method at compile time. + +A new metadata reader syntax `^[ ... ]` attaches `:param-tags` metadata to member symbols, just as `^tag` attaches `:tag` metadata to a symbol. + [[primitives]] == Support for Java Primitives @@ -402,10 +428,22 @@ Thus a function defined as both takes and returns values of primitive type `long` (invocations with a boxed argument and indeed any object result in a cast and delegation to the primitive-typed overload). +[[coercions]] == Coercions +=== Primitive coercions + At times it is necessary to have a value of a particular primitive type. These coercion functions yield a value of the indicated type as long as such a coercion is possible: https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/bigdec[bigdec] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/bigint[bigint] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/boolean[boolean] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/byte[byte] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/char[char] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/double[double] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/float[float] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/int[int] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/long[long] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/num[num] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/short[short] +[[functional_interfaces]] +=== Functional Interface Conversion + +Java programs emulate functions with https://docs.oracle.com/javase/8/docs/api/java/lang/FunctionalInterface.html[Functional Interfaces], which have a single method. + +Clojure developers can invoke Java methods taking Functional Interfaces by passing functions with matching arity. The Clojure compiler implicitly converts functions to the required Functional Interface by constructing a lambda adapter. You can explicitly coerce a function to a Functional Interface by hinting the binding name in a `let` binding, e.g. to avoid repeated adapter construction in a loop, e.g. `(let [^java.util.function.Predicate p even?] ...)`. + +Since Clojure 1.12, all `IDeref` impls (`delay`, `future`, `atom`, etc) implement the https://docs.oracle.com/javase/8/docs/api/java/util/function/Supplier.html[Supplier] interface directly. + [[optimization]] == Some optimization tips @@ -417,6 +455,20 @@ At times it is necessary to have a value of a particular primitive type. These c * Many people seem to presume only the unchecked- ops do primitive arithmetic - not so. When the args are primitive locals, regular + and * etc do primitive math with an overflow check - fast _and_ safe. * So, the simplest route to fast math is to leave the operators alone and just make sure the source literals and locals are primitive. Arithmetic on primitives yields primitives. If you've got a loop (which you probably do if you need to optimize) make sure the loop locals are primitives first - then if you accidentally are producing a boxed intermediate result you'll get an error on recur. Don't solve that error by coercing your intermediate result, instead, figure out what argument or local is not primitive. +[[streams]] +== Java Stream Support + +Clojure collections implement the Java collection interfaces, which provide https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html[Stream] and https://docs.oracle.com/javase/8/docs/api/java/util/Spliterator.html[Spliterator] access. Clojure persistent vectors implement a custom Spliterator that supports parallel streams. + +Clojure provides functions (since 1.12) to interoperate with streams in an idiomatic manner, all functions behave analogously to their Clojure counterparts: + +* `(https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/stream-seq![stream-seq!] stream)` => `seq` +* `(https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/stream-reduce![stream-reduce!] f [init-val] stream)` => `val` +* `(https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/stream-transduce![stream-transduce!] xf f [init-val] stream)` => `val` +* `(https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/stream-into![stream-into!] to-coll [xf] stream)` => `to-coll` + +All of these operations are terminal stream operations (they consume the stream). + == Simple XML Support Included with the distribution is simple XML support, found in the src/clj/clojure/xml.clj file. All names from this file are in the clojure.xml namespace. diff --git a/content/reference/metadata.adoc b/content/reference/metadata.adoc index 46813a08..25b46bb7 100644 --- a/content/reference/metadata.adoc +++ b/content/reference/metadata.adoc @@ -77,18 +77,10 @@ Returns an object of the same type and value as obj, with `(apply f (meta obj) a Modify or reset the metadata respectively for a namespace/var/ref/agent/atom. -== Metadata Reader Macros +== Metadata Reader -In addition to with-meta, there are a number of reader macros (<>) for applying metadata to the expression following it at read-time: +In addition to `with-meta`, there is reader support (<>) for applying metadata to the expression following it at read-time. -* `^{:doc "How it works!"}` - adds the metadata map to the metadata of the next value read -* `^:dynamic` - like `^{:dynamic true}` -* `^String` - like `^{:tag java.lang.String}` -* `^"java.lang.String"` - like `^{:tag java.lang.String}` +See <> and <> for more information on how metadata is used by the compiler for method overload selection. -The `:tag` key is used to hint an objects type to the Clojure compiler. See <> for more information and a complete list of special type hints. -It is possible to add multiple pieces of metadata by chaining the metadata reader macros together. -For example: `^:dynamic ^ints obj` would apply both the :dynamic flag and ints type-hint to obj. Metadata chains from right to left (left takes precedence). - -Note that metadata reader macros are applied at read-time, not at evaluation-time, and can only be used with values that support metadata, like symbols, vars, collections, sequences, namespaces, refs, atoms, agents, etc. Some important exceptions that *don't* support metadata are strings, numbers, booleans, Java objects, keywords (these are cached and can be shared within the runtime), and deftypes (unless they explicitly implement clojure.lang.IMeta). diff --git a/content/reference/other_libraries.adoc b/content/reference/other_libraries.adoc index aaab2f9a..b0584cd6 100644 --- a/content/reference/other_libraries.adoc +++ b/content/reference/other_libraries.adoc @@ -18,6 +18,11 @@ toc::[] == Java Utilities (clojure.java.*) +**https://clojure.github.io/clojure/clojure.java.basis-api.html[clojure.java.basis]** + +Access to the initial and current runtime basis, which specifies the libraries and versions +currnently loaded on the JVM classpath. + **https://clojure.github.io/clojure/clojure.java.io-api.html[clojure.java.io]** Contains polymorphic I/O utility functions for Clojure backed by Java classes. @@ -25,6 +30,10 @@ Contains polymorphic I/O utility functions for Clojure backed by Java classes. Provides the function https://clojure.github.io/clojure/clojure.java.javadoc-api.html#clojure.java.javadoc/javadoc[javadoc] that attempts to display the appropriate Javadocs for a class or instance class. +**https://clojure.github.io/clojure/clojure.java.process-api.html[clojure.java.process]** + +Support for launching and communicating subprocesses. This namespace supersedes clojure.java.shell and uses the latest Java process APIs. + **https://clojure.github.io/clojure/clojure.java.shell-api.html[clojure.java.shell]** Provides a https://clojure.github.io/clojure/clojure.java.shell-api.html#clojure.java.shell/sh[sh] function that facilitates launching and managing subprocesses. See the function documentation for details on its expected arguments. diff --git a/content/reference/protocols.adoc b/content/reference/protocols.adoc index 1ea4e7a5..33695220 100644 --- a/content/reference/protocols.adoc +++ b/content/reference/protocols.adoc @@ -51,6 +51,7 @@ A protocol is a named set of named methods and their signatures, defined using h ** all are namespace-qualified by the namespace enclosing the definition * The resulting functions dispatch on the type of their first argument, and thus must have at least one argument * defprotocol is dynamic, and does not require AOT compilation +* Note: primitive type hints are not supported on protocol functions https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/defprotocol[defprotocol] will automatically generate a corresponding interface, with the same name as the protocol, e.g. given a protocol my.ns/Protocol, an interface my.ns.Protocol. The interface will have methods corresponding to the protocol functions, and the protocol will automatically work with instances of the interface. diff --git a/content/reference/reader.adoc b/content/reference/reader.adoc index 163abb69..cdbb8acf 100644 --- a/content/reference/reader.adoc +++ b/content/reference/reader.adoc @@ -134,18 +134,19 @@ Single-line comment, causes the reader to ignore everything from the semicolon t `@form => (deref form)` +[[metadata]] === Metadata (^) Metadata is a map associated with some kinds of objects: Symbols, Lists, Vector, Sets, Maps, tagged literals returning an IMeta, and record, type, and constructor calls. The metadata reader macro first reads the metadata and attaches it to the next form read (see https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/with-meta[with-meta] to attach meta to an object): + `^{:a 1 :b 2} [1 2 3]` yields the vector `[1 2 3]` with a metadata map of `{:a 1 :b 2}`. + -A shorthand version allows the metadata to be a simple symbol or string, in which case it is treated as a single entry map with a key of :tag and a value of the (resolved) symbol or string, e.g.: + -`^String x` is the same as `^{:tag java.lang.String} x` + +A shorthand version allows the metadata to be a simple symbol or string, in which case it is treated as a single entry map with a key of `:tag` and a value of the (resolved) symbol or string, e.g.: + +`^String x` is the same as `^{:tag java.lang.String} x`. -Such tags can be used to convey type information to the compiler. + +A shorthand version for type signatures allows the metadata to be a vector, in which case it is treated as a single entry map with a key of `:param-tags` and a value of the (resolved) type hints, a vector of `:tag` values or `_`, e.g.: `^[String long _]` is the same as `^{:param-tags [java.lang.String long _]}`. See <> on how param-tags are used. Another shorthand version allows the metadata to be a keyword, in which case it is treated as a single entry map with a key of the keyword and a value of true, e.g.: + -`^:dynamic x` is the same as `^{:dynamic true} x` + +`^:dynamic x` is the same as `^{:dynamic true} x` Metadata can be chained in which case they are merged from right to left. diff --git a/content/reference/repl_and_main.adoc b/content/reference/repl_and_main.adoc index 74893cd7..fe04ba6d 100644 --- a/content/reference/repl_and_main.adoc +++ b/content/reference/repl_and_main.adoc @@ -54,7 +54,7 @@ The simplest way to launch a Clojure _repl_ is to use the < ---- @@ -155,6 +155,7 @@ By default, the Clojure REPL starts in the `user` namespace and this namespace i The Clojure REPL automatically loads the following namespaces and refers the following functions: * `clojure.repl` - https://clojure.github.io/clojure/clojure.repl-api.html#clojure.repl/source[`source`] https://clojure.github.io/clojure/clojure.repl-api.html#clojure.repl/apropos[`apropos`] https://clojure.github.io/clojure/clojure.repl-api.html#clojure.repl/dir[`dir`] https://clojure.github.io/clojure/clojure.repl-api.html#clojure.repl/pst[`pst`] https://clojure.github.io/clojure/clojure.repl-api.html#clojure.repl/doc[`doc`] https://clojure.github.io/clojure/clojure.repl-api.html#clojure.repl/find-doc[`find-doc`] +* `clojure.repl.deps` - https://clojure.github.io/clojure/clojure.repl-api.html#clojure.repl.deps/add-lib[`add-lib`] https://clojure.github.io/clojure/clojure.repl-api.html#clojure.repl.deps/add-libs[`add-libs`] https://clojure.github.io/clojure/clojure.repl-api.html#clojure.repl.deps/sync-deps[`sync-deps`] * `clojure.java.javadoc` - https://clojure.github.io/clojure/clojure.java.javadoc-api.html#clojure.java.javadoc/javadoc[`javadoc`] * `clojure.pprint` - https://clojure.github.io/clojure/clojure.pprint-api.html#clojure.pprint/pp[`pp`] https://clojure.github.io/clojure/clojure.pprint-api.html#clojure.pprint/pprint[`pprint`] @@ -166,6 +167,19 @@ The Clojure runtime will look for and load `user.clj` on runtime startup, if it Because the `user.clj` file is loaded by the Clojure runtime on initialization, this typically happens before the main namespace in an application executes. Any namespaces or resources loaded by `user.clj` thus impacts startup time for your application. +[[add_lib]] +== Adding libraries for interactive use + +There are many development-time cases where it would be useful to add a library interactively without restarting the JVM - speculative evaluation, adding a known dependency to your project, or adding a library to accomplish a specific task. + +The <> can be used to <> loaded at REPL startup time. Since Clojure 1.12, you can also dynamically load libraries at the REPL for interactive use. These functions are available in the `clojure.repl.deps` namespace: + +* https://clojure.github.io/clojure/clojure.repl-api.html#clojure.repl.deps/add-lib[`add-lib`] takes a lib that is not available on the classpath, and makes it available by downloading (if necessary) and adding to the classloader. Libs already on the classpath are not updated. If the coordinate is not provided, the newest Maven version or git tag (if the library has an inferred git repo name) are used. +* https://clojure.github.io/clojure/clojure.repl-api.html#clojure.repl.deps/add-libs[`add-libs`] is like `add-lib`, but resolves a set of new libraries and versions together. +* https://clojure.github.io/clojure/clojure.repl-api.html#clojure.repl.deps/sync-deps[`sync-deps`] calls `add-libs` with any libs present in <>, but not yet present on the classpath. + +These new functions are intended only for interactive use at the repl - using a deps.edn is still the proper way to build and maintain your code. To this end, these functions all check that `pass:[*repl*]` is bound to `true`. In a clojure.main REPL, these new functions are automatically referred in the user namespace. In other repls, you may need to `(require '[clojure.repl.deps :refer :all])` before use. + == tap tap is a shared, globally accessible system for distributing a series of informational or diagnostic values to a set of (presumably effectful) handler functions. It can be used as a better debug `prn`, or for facilities like logging etc. diff --git a/content/reference/sequences.adoc b/content/reference/sequences.adoc index 4767da3d..1682f5bd 100644 --- a/content/reference/sequences.adoc +++ b/content/reference/sequences.adoc @@ -48,7 +48,7 @@ Longer seq from a shorter seq: https://clojure.github.io/clojure/clojure.core-ap Seq with head-items missing: https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/rest[rest] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/next[next] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/fnext[fnext] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/nnext[nnext] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/drop[drop] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/drop-while[drop-while] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/nthnext[nthnext] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/for[for] Seq with tail-items missing: https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/take[take] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/take-nth[take-nth] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/take-while[take-while] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/butlast[butlast] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/drop-last[drop-last] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/for[for] Rearrangment of a seq: https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/flatten[flatten] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/reverse[reverse] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/sort[sort] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/sort-by[sort-by] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/shuffle[shuffle] -Create nested seqs: https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/split-at[split-at] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/split-with[split-with] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/partition[partition] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/partition-all[partition-all] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/partition-by[partition-by] +Create nested seqs: https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/split-at[split-at] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/splitv-at[splitv-at] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/split-with[split-with] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/partition[partition] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/partition-all[partition-all] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/partition-by[partition-by] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/partitionv[partitionv] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/partitionv-all[partitionv-all] Process each item of a seq to create a new seq: https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/map[map] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/pmap[pmap] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/mapcat[mapcat] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/for[for] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/replace[replace] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/reductions[reductions] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/map-indexed[map-indexed] https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/seque[seque] === Using a seq diff --git a/content/reference/special_forms.adoc b/content/reference/special_forms.adoc index 42afbe1e..022e31ce 100644 --- a/content/reference/special_forms.adoc +++ b/content/reference/special_forms.adoc @@ -101,6 +101,17 @@ Evaluates the expressions __expr__s in a lexical context in which the symbols in -> 1 ---- +If the _binding_ symbol `:tag` metadata is a Java interface annotated as a https://docs.oracle.com/javase/8/docs/api/java/lang/FunctionalInterface.html[FunctionalInterface], the __init-expr__ will be <> (if necessary) to the specified interface: + +[source,clojure] +---- +(let [coll (java.util.ArrayList. (range 10)) + ^java.util.function.Predicate pred even?] + (.removeIf coll pred) ;; mutate coll + coll) +-> [1 3 5 7 9] +---- + See <> for more information about binding forms. *Locals created with `let` are not variables. Once created their values never change!* diff --git a/content/releases/devchangelog.adoc b/content/releases/devchangelog.adoc index 47ea1eb1..31568a9d 100644 --- a/content/releases/devchangelog.adoc +++ b/content/releases/devchangelog.adoc @@ -19,6 +19,26 @@ Note: All dev releases are subject to breaking changes for new work since the pr == Release 1.12.0 +=== 1.12.0-rc2 (Aug 3, 2024) [[v1.12.0-rc2]] + +https://clojure.org/news/2024/08/28/clojure-1-12-0-rc2[Release Notes] + +* https://clojure.atlassian.net/browse/CLJ-2873[CLJ-2873] `add-libs` - reloads data readers after extending runtime classpath +* https://clojure.atlassian.net/browse/CLJ-2881[CLJ-2881] `definterface` - add support for array class type hints + +=== 1.12.0-rc1 (Aug 3, 2024) [[v1.12.0-rc1]] + +https://clojure.org/news/2024/08/03/clojure-1-12-0-rc1[Release Notes] + +* https://clojure.atlassian.net/browse/CLJ-2145[CLJ-2145] Fix clearing of closed overs in `^:once` fns +* https://clojure.atlassian.net/browse/CLJ-2865[CLJ-2317] `recur` to head of `:once` fn cancels once + +=== 1.12.0-beta2 (Jul 29, 2024) [[v1.12.0-beta2]] + +* https://clojure.atlassian.net/browse/CLJ-2867[CLJ-2867] Convey type hints on metadata values +* https://clojure.atlassian.net/browse/CLJ-2865[CLJ-2865] `c.java.process/start` - return `Process`, improve process api +* https://clojure.atlassian.net/browse/CLJ-2819[CLJ-2819] `c.tools.deps.interop/invoke-tool` - improved error handling + === 1.12.0-beta1 (Jun 15, 2024) [[v1.12.0-beta1]] * https://clojure.atlassian.net/browse/CLJ-2853[CLJ-2853] Reflection error incorrectly reported target object type, not qualifying class @@ -200,6 +220,15 @@ Enhancements: * https://clojure.atlassian.net/browse/CLJ-1872[CLJ-1872] Extend `empty?` to `counted?` colls that aren't seqable, such as transients +== Release 1.11.4 + +=== 1.11.4 (Aug 3, 2024) [[v1.11.4]] + +https://clojure.org/news/2024/08/03/clojure-1-11-4[Release Notes] + +* https://clojure.atlassian.net/browse/CLJ-2145[CLJ-2145] Fix clearing of closed overs in `^:once` fns +* https://clojure.atlassian.net/browse/CLJ-2865[CLJ-2317] `recur` to head of `:once` fn cancels once + == Release 1.11.3 === 1.11.3 (Apr 24, 2024) [[v1.11.3]] @@ -651,7 +680,7 @@ clj -A:clj/next - https://clojure.atlassian.net/browse/CLJ-2128[CLJ-2128] spec error during macroexpand no longer throws compiler exception with location - Updated to use spec.alpha 0.1.123 -=== https://groups.google.com/forum/#!topic/clojure/nB4qnDNGS2A[1.9.0-alpha16] (Apr 27, 2017) +=== https://groups.google.com/g/clojure/c/nB4qnDNGS2A[1.9.0-alpha16] (Apr 27, 2017) 1.9.0-alpha16 includes the following changes since 1.9.0-alpha15: diff --git a/content/releases/download_key.adoc b/content/releases/download_key.adoc index f9fba025..e0f5405e 100644 --- a/content/releases/download_key.adoc +++ b/content/releases/download_key.adoc @@ -14,21 +14,21 @@ A typical url in Maven Central will look something like: [source] ---- -https://repo1.maven.org/maven2/org/clojure/clojure/1.11.3/clojure-1.11.3.jar +https://repo1.maven.org/maven2/org/clojure/clojure/1.12.0/clojure-1.12.0.jar ---- Your dependency manager / build tool will download that file to your local Maven cache, usually: [source] ---- -~/.m2/repository/org/clojure/clojure/1.11.3/clojure-1.11.3.jar +~/.m2/repository/org/clojure/clojure/1.12.0/clojure-1.12.0.jar ---- You can append .asc to any jar or pom url in Maven to obtain the signature for that file: [source] ---- -curl -O https://repo1.maven.org/maven2/org/clojure/clojure/1.11.3/clojure-1.11.3.jar.asc +curl -O https://repo1.maven.org/maven2/org/clojure/clojure/1.12.0/clojure-1.12.0.jar.asc ---- == Verification @@ -42,7 +42,7 @@ The Clojure key used to sign all jars is registered in the MIT key server (pgp.m You can check this by verifying the jar with the signature: ---- -$ gpg --verify clojure-1.11.3.jar.asc ~/.m2/repository/org/clojure/clojure/1.11.3/clojure-1.11.3.jar +$ gpg --verify clojure-1.12.0.jar.asc ~/.m2/repository/org/clojure/clojure/1.12.0/clojure-1.12.0.jar gpg: Signature made Thu Jun 6 08:43:47 2019 CDT gpg: using RSA key 8D06684A958AE602 gpg: Good signature from "Clojure/core (build.clojure.org Release Key version 2) " [unknown] diff --git a/content/releases/downloads.adoc b/content/releases/downloads.adoc index 37588efd..90302079 100644 --- a/content/releases/downloads.adoc +++ b/content/releases/downloads.adoc @@ -14,7 +14,8 @@ New to Clojure? Head to the <> * Dependencies: ** `org.clojure/spec.alpha {:mvn/version "0.5.238"}` ** `org.clojure/core.specs.alpha {:mvn/version "0.4.74"}` * Requirements: Java 8 or higher (recommended: Java 8, Java 11, Java 17, Java 21) +//// == Older Releases @@ -84,7 +88,7 @@ Leiningen dependency: == Clojure Source -Clojure source code is hosted at https://github.com/clojure/clojure[github.com/clojure/clojure]. Builds of the very latest version of Clojure's master branch are available at https://oss.sonatype.org/content/repositories/snapshots/org/clojure/clojure/1.12.0-master-SNAPSHOT/[oss.sonatype.org]. +Clojure source code is hosted at https://github.com/clojure/clojure[github.com/clojure/clojure]. Builds of the very latest version of Clojure's master branch are available at https://oss.sonatype.org/content/repositories/snapshots/org/clojure/clojure/1.13.0-master-SNAPSHOT/[oss.sonatype.org]. == Get Clojure @@ -95,7 +99,7 @@ Specify the version of Clojure that you want in your deps.edn: [source,clojure] ---- {:deps - {org.clojure/clojure {:mvn/version "1.11.3"}}} + {org.clojure/clojure {:mvn/version "1.12.1"}}} ---- === Via Leiningen @@ -104,7 +108,7 @@ Modify the dependencies and repositories sections of your https://leiningen.org/ [source,clojure] ---- ; under dependencies, select the release of clojure that you want -:dependencies [[org.clojure/clojure "1.11.3"]] +:dependencies [[org.clojure/clojure "1.12.1"]] ---- == Using Clojure SNAPSHOT releases diff --git a/content/releases/downloads_older.adoc b/content/releases/downloads_older.adoc index 8ca92c05..663d87fb 100644 --- a/content/releases/downloads_older.adoc +++ b/content/releases/downloads_older.adoc @@ -9,6 +9,9 @@ ifdef::env-github,env-browser[:outfilesuffix: .adoc] == Older Clojure Releases +* https://repo1.maven.org/maven2/org/clojure/clojure/1.12.0/[Clojure 1.12.1] (Jun, 2025) - https://clojure.org/news/2025/06/02/clojure-1-12-1[release notes] +* https://repo1.maven.org/maven2/org/clojure/clojure/1.12.0/[Clojure 1.12.0] (Sep, 2024) - https://clojure.org/news/2024/09/05/clojure-1-12-0[release notes] +* https://repo1.maven.org/maven2/org/clojure/clojure/1.11.4/[Clojure 1.11.4] (Aug, 2024) - https://clojure.org/news/2024/08/03/clojure-1-11-4[release notes] * https://repo1.maven.org/maven2/org/clojure/clojure/1.11.3/[Clojure 1.11.3] (Apr, 2024) - https://clojure.org/news/2024/04/24/clojure-1-11-3[release notes] * https://repo1.maven.org/maven2/org/clojure/clojure/1.11.2/[Clojure 1.11.2] (Mar, 2024) - https://clojure.org/news/2024/03/08/clojure-1-11-2[release notes] * https://repo1.maven.org/maven2/org/clojure/clojure/1.11.1/[Clojure 1.11.1] (Apr, 2022) - https://clojure.org/news/2022/04/05/clojure-1-11-1[release notes] diff --git a/content/releases/tools.adoc b/content/releases/tools.adoc index aec24fec..39b21f2e 100644 --- a/content/releases/tools.adoc +++ b/content/releases/tools.adoc @@ -20,7 +20,56 @@ For more information see the following docs: == Releases -Recent official releases are described here. Prereleases and older versions can be found in the https://github.com/clojure/brew-install/blob/1.11.1/CHANGELOG.md[repo changelog]. +Recent official releases are described here. Prereleases and older versions can be found in the https://github.com/clojure/brew-install/blob/1.12.1/CHANGELOG.md[repo changelog]. + +=== 1.12.1.1550 (Jun 3, 2025) [[v1.12.1.1550]] + +* `-Sdescribe` - undocumented (prefer using tools.deps APIs instead) +* `-Sverbose` - add explicit deps.edn references + +=== 1.12.1.1543 (Jun 3, 2025) [[v1.12.1.1543]] + +* Update to Clojure 1.12.1 + +=== 1.12.1.1538 (Jun 2, 2025) [[v1.12.1.1538]] + +* Update to Clojure 1.12.1 + +=== 1.12.0.1530 (Mar 5, 2025) [[v1.12.0.1530]] + +* clj -Sdeps can now take a path to an edn file instead of a literal map +* Fix computation of tool argmap when both aliases and tools are used together +* Update tools.deps to latest + +=== 1.12.0.1517 (Feb 10, 2025) [[v1.12.0.1517]] + +* During dep expansion, only consider lib to be omitted if all parent paths to root are omitted +* Memoize dep lookups during dep expansion to avoid unnecessary calls +* Update tools.deps, tools.deps.cli to latest + +=== 1.12.0.1501 (Jan 27, 2025) [[v1.12.0.1501]] + +* Fix bug with -Srepro -Spom + +=== 1.12.0.1495 (Dec 31, 2024) [[v1.12.0.1495]] + +* Echo args in -M deprecation warning for clarity +* Refactored tool classpath calculation and align on create-basis +* Update deps to latest + +=== 1.12.0.1488 (Nov 21, 2024) [[v1.12.0.1488]] + +* https://clojure.atlassian.net/browse/TDEPS-265[TDEPS-265] - `-Ttools install-latest` fixed bug when :coord with git url provided +* https://clojure.atlassian.net/browse/TDEPS-268[TDEPS-268] - `-X:deps find-versions` returns all procurer types, not just first found +* Updated tools.deps, tools.deps.cli, tools.tools to latest + +=== 1.12.0.1479 (Sep 5, 2024) [[v1.12.0.1479]] + +* Use Clojure 1.12.0 as default Clojure version + +=== 1.11.4.1474 (Aug 5, 2024) [[v1.11.4.1474]] + +* Use Clojure 1.11.4 as default Clojure version === 1.11.3.1463 (May 1, 2024) [[v1.11.3.1463]] pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy