I should have shared it earlier, but this is my second project update for the work funded by Clojurists Together: Clojurists Together | May 2023: Short Term Project Updates
I’m very excited about this feature because it transforms the online editor into a proper interactive Clojure environment. When the track was first launched in 2021 we received some valuable feedback from fellow Clojurists, who said that the online editor was quite lacking to someone familiar with using an editor connected REPL. I too consider this an inseparable part of the Clojure development experience, so this is something I’ve wanted to do for a long time.
Once I prototyped the desired behavior using Nextjournal’s clojure-mode, the next task was to figure out how to best integrate it into the existing Ruby on Rails/React application while making as minimal impact on the codebase as possible. The first thing I tried was to use scittle to load SCI via the
Basic intro - I tried to give special attention to the very first lesson, because for the majority of students this is their first contact with Clojure and I take that as a considerable responsibility. Its objective is to provide the fastest possible onramp to get the student started without them needing to immediately look anywhere else. Since Exercism is all about teaching new languages to folks who already know how to code, our target experience level is someone who has never seen Clojure, Lisp, or functional programming concepts before, but is fluent in at least one other language. So far, feedback has been very positive :)
Lists exercise - This one needed to be revamped because the idiomatic solution included threading macros, which were not yet taught at that point. So this exercise now teaches threading macros, and the Card Games exercise (see below) is being ported from the Python track because it is a better exercise for teaching list operations.
- Hashmaps - International Calling Connoisseur
- Chars - Squeaky Clean
- Regex - Date Parser
- closures - Coordinate Transformation
- Multimethods - Wizards and Warriors
- Lists - Card games
- Threading macros
- Protocols - My idea for this is to do something inspired by emmy, which is a very nice example of protocols. For example, an exercise involving defining operations for complex numbers would be cool. A long term vision is to create a mathematics mini-course, since Clojure is superb for this and more people should try it! The main part of the syllabus takes priority, however.
- Associative destructuring
- Multiarity, variadic, anonymous functions
The learning exercise test suites now include metadata linking each test case to its respective task in the instructions. This enables a better user experience, because now after the tests are run, there is a button to return the student to the proper place.
Besides allowing me to work on this full time, the funding enabled me to adopt two beautiful kitty cats! Now, coding is even more fun. Many thanks to all who made this possible.