PurelyFunctional.tv Newsletter 417: Clojure at heart 🥰

Issue 417 - March 08, 2021 · Archives · Subscribe

Clojure at heart 🥰

My fellow Clojurists,

I am grateful every day that I get to teach Clojure full time. We really have a great community and an awesome language. After finishing my functional programming book, I am refocusing on helping you thrive with Clojure with three major plans. I am overhauling my course platform, reorganizing my courses, and updating and expanding my material.

The first major plan is to overhaul the course platform. My courses are currently hosted on a WordPress installation with many plugins and a lot of custom code. It has worked well, but over the years I have not added a fraction of the features that I wished to. I have decided to move to a hosted course platform called Podia. If you try to buy a course today, you will be redirected there.

Podia is a clean, easy-to-use platform for you, the learner. It helps you keep track of what you've watched and what you have left to watch. What's more, they are adding new features all the time. While it doesn't have every little feature I had, it has many features I don't. In the long run, having a company dedicated to building out the platform is better for you.

I will be migrating existing customers to the new platform this week. If you have ever bought a course from me, expect an email with more details. You will continue to have access to the old platform for one year.

I am phasing out monthly and yearly memberships. Existing members can continue their subscriptions at their normal fee until March 7. If you are a member, I will email you with more details. I am not accepting any new subscriptions.

The second major plan is to reorganize the courses into bundles. What was once a mishmash of course topics is now clearly ordered. There are four bundles:

  1. Beginning Clojure
  2. Advanced Clojure
  3. Web backend
  4. ClojureScript frontend

My site has been hard to navigate (or so my readers tell me). These topic areas will make everything easier to find. It also makes it much clearer what subtopics might be missing. That brings me to the third plan.

The third major plan is to build out and update the four main topics. Over the past few years, I have spent a lot of time expanding my course offerings and very little maintaining what I have. Clojure doesn't change very quickly, so most of it still applies. However, small things change and there are bugs. And there are simply some important topics that I need to teach. I have created a maintenance schedule to test and improve all of the courses on a regular basis.

Regular maintenance means you will always have up-to-date code, correct explanations, and better coverage of the topic. The value you get out of the courses should improve over time, not degrade. For instance, if you buy the Web backend bundle today, as I add new material, you will get that material, too.

Past plans

You may remember that about a year ago, I was poised to expand my course offerings into the realm of React.js. React.js was (and still is) a growing market. I was also finishing up my book, Grokking Simplicity. And I had plans for new Clojure courses. The pandemic hit, my kids were at home, and my plans were dashed. I chose to focus on only my book during that time. I finished it and it is now in production (final touches for printing). Now I have the opportunity to work again on courses.

I have been experimenting with React.js and how to teach it. There is a lot of potential there. Yet, I find myself called back to Clojure. You and the whole Clojure community have been so supportive and there is so much more to teach. I may expand into other topics, but Clojure will always be my base.

Quarantine update 😷

I know a lot of people are going through tougher times than I am. If you, for any reason, can't afford my courses, and you think the courses will help you, please hit reply and I will set you up. It's a small gesture I can make, but it might help.

I don't want to shame y ou or anybody that we should be using this time to work on our skills. The number one priority is your health and safety. I know I haven't been able to work very much, let alone learn some new skill. But if learning Clojure is important to you, and you can't afford it, just hit reply and I'll set you up. Keeping busy can keep us sane.

Stay healthy. Wash your hands. Wear a mask. Take care of loved ones.

Clojure Challenge 🤔

Last issue's challenge

Issue 416

Please do participate in the discussion at the submission links above. It's active and it's a great way to get comments on your code.

This week's challenge

Character swap

Write a function that swaps every occurrence of one string with another, and vice versa. It is like clojure.string.replace but works both ways.


(swap "abc" "a" "b") ;=> "bac"
(swap "book" "k" "t") ;=> "boot"
(swap "Closure" "j" "s") ;=> "Clojure"
(swap "bee" "b" "e") ;=> "ebb"
(swap "abc" "1" "2") ;=> "abc"

Thanks to this site for the challenge idea where it is considered Hard in JavaScript. The problem has been modified from the original.

Please submit your design process as comments to this gist. Discussion is welcome.

Rock on!
Eric Normand