November 2020 Monthly Update
By Alyssa Parado
Welcome to the final (half) month of updates from our Q3 projects. Our Q4 projects have started this month and will continue through to February.
- #295 - fix set explain
- #298 - fast schema creation
- #303 - Schemas know th IntoSchema that created it
- working with Functional Schema Bundle (much bigger than expected):
- the three months is over! started bit late, so will continue to work to get the Ongoing (more) done. Already happy with the results, the main goal was to ship the lib. Coudn’t have done that without Clojurists Together funding.
A range of updates, new content and tool reviews and testing. Reviewed 75 solutions for 44 students on Exercism.io over the last two week, adding that advice and code walk-throughs to the Practicalli Clojure book.
Several high-quality REPL driven development videos will be released soon, awaiting some final editing and post processing.
Practicalli Study Group
Continued solving Exercism.io challenges for the Live broadcasts, with a request to specifically do the Spiral Matrix challenge * 090 - Code challenges - Exercism.io Space-Age challenge * 091 - Code challenges - Exercism.io Spiral Matrix challenge
Add SpaceVim to Clojure Editors in book now the Clojure command line bug is fixed. Continued adding REPL driven development approaches to solving Exercism.io challenges.
Launch Portal data navigator with any REPL using
:inspect/portal-cli aliases. The REPL automatically evaluates the
dev/user.clj source code file to require portal, open the portal window and add portal as a
+New sections * Exercism.io bob challenge - walking through two alternative solutions * SpaceVim and vim-fireplace install guide - including clj-kondo * SpaceVim and vim-fireplace user guide - a quick guide to get started.
Updated * Portal - auto-start portal on REPL startup * Clojure CLI tools version used with CircleCI and updating scripts to use latest Clojure CLI tools release and -M flag with aliases. * nrepl and cider aliase for the Reveal data visualization tool
Updates and fixes to the user level configuration for Clojure CLI projects. Added clj-kondo as a GitHub action to lint all pull requests and commits, ensuring aliases are in a good state.
- Alternative REPLs: socket server and prepl aliases
:inspect/reveal-nreplto run an nREPL server with Reveal data visualization
:inspect/reveal-light-nrepla light theme version with a 32 point Ubuntu Mono font useful for demos and HiDPI screens
:inspect/reveal-nrepl-ciderCIDER specific libraries and middleware configuration with
:inspect/reveal-light-nrepl-cideras a light version
:test/cognitect-precompilealias to compile tests before running Cognitect Labs test runner
- Monthly update of library versions for all aliases using
community/zulip-eventto add community event to zulip chat
test/cloverageadd clojure exec options for cloverage (#8)
:inspect/reveal-light-nreplCider specific aliases for Reveal data browser
Practicalli Data Science
Created a new (alpha state) book to provide practical guides to using Clojure tools and libraries to build applications in a data science context. Working with the SciCloj community to raise awareness of what is possible in this space and as I grow my understanding it will be captured in the Practicalli Data Science book.
- Notespace section - created a simple demo of the Notespace data science journal tool for Clojure, combined with Portal to help browse large data sets.
Updated to new Practicalli theme and put all project content first, moving overview and design content to the reference section. The book will focus on figwheel-main, reagent and ClojureScript for the next quarter.
Update Clojure documentation section to show Clojure and Java documentation functions, including how to navigate to source code and specifications from help.
- PR #2926 - Tip to evaluate namespace before documentation lookup - added to Practicalli Spacemacs instead.
Clojurists Together Project Update Q3 2020 November 1-15
Here is an overview of the work I did per project.
- Can’t call symbol literal #622
- Random number stream doesn’t work #630
- :or in destructuring broken for false case #632
- Support nested libspecs #399
- Allow names of vars when def is allowed #434
- Allow aliases in protocol fn impls #440
- Allow overriding :line metadata #443
- Lint deps.edn #945
- Export and import config via classpath #559, clj-kondo/confi g#1
- Cache jar analysis #705
- Fix index out of bounds exception clj-kondo.lsp#11
- Better resolving of vars referred with
:includeoption for shadowed-var linter #1040
- Mark generated nodes to avoid redundant dos and lets despite location metadata #1059
- Fix number of retries when linting in parallel #1068
- Grasp: a new tool to grep Clojure code using clojure.spec! It uses sci under the hood.
The last iteration was focused on reviews and testing of the tuple feature as well as the last adjustments for the Datomic compatibility.
Datomic API compatibility was finished up with more tests and the
listen functionality that allows for callbacks on each transaction. Finally these features were merged with the PR #240.
Tests were added for the different tuple types with the open PR #251 ready to review. We planned to finish this up in the upcoming days for the release of 0.3.3 of Datahike.
Release 0.3.3 Candidate
Since Datahike was extended with multiple new features a new release candidate was defined. It will include the following features:
- Support for tuples (#104)
- Switch to Clojure CLI tools (#253)
- Adapt API namespace for Datomic compatibility (#196)
- Implement query with string (#196)
- Implement transact with lazy sequence (#151, #78, #196)
After the review of the last PRs a release is planned within the next week.
Beyond Clojurists Together Tasks
We started working on a remote client for datahike-server. For the server we are now looking into a JSON API that would allow other programming languages to use Datahike.
The ClojureScript port is moving forward focussing on the transactor and query engine.
The upsert feature had to be adjusted and is now benchmarked in order to see which functions take most of the perfomance.