Skip to content
All the JavaScript 30 exercises written in ClojureScript
HTML Clojure CSS
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
01-drumkit Cleanup README for drumkit app Feb 12, 2019
03-css-variables Migrate from boot -> deps.edn / clj cli Feb 12, 2019
09-dev-tool-tricks Correct the numbers for each exercise Jul 14, 2018
13-slide-in-on-scroll Migrate from boot -> deps.edn / clj cli Feb 12, 2019
15-localstorage-and-event-delegation Migrate from boot -> deps.edn / clj cli Feb 12, 2019
16-mousemove-text-shadows Migrate from boot -> deps.edn / clj cli Feb 12, 2019
18-string-times Migrate from boot -> deps.edn / clj cli Feb 12, 2019
19-unreal-webcam-fun Migrate from boot -> deps.edn / clj cli Feb 12, 2019
22-follow-along-links Migrate from boot -> deps.edn / clj cli Feb 12, 2019
24-sticky-nav Bump clojurescript versions + correct rename Jul 14, 2018
25-event-delegation Bump clojurescript versions + correct rename Jul 14, 2018

ClojureScript 30

This is Wes Bos's JavaScript 30 challenge written in ClojureScript.

I started learning Clojure to improve my functional programming skills and expose myself to a different way of thinking. The idea was that I would learn Clojure, a functional language, and then apply these skills to JavaScript.

This repo contains each of the JS30 exercises written in ClojureScript and write-ups on lessons learned. In this spirit, I hope others find this repo and can use it on their own journey towards learning Clojure.

Never heard of Clojure? Skeptical? I encourage you to watch ClojureScript for Skeptics which really highlights the story elements that make Clojure a compelling language.

Table of Contents

Getting Started

Before you can start working on clj/cljs you need to setup your development environment. The following guide is OSX only.

Editor Setup

I recommend Atom or VSCode. By default, these are lightweight editors with strong Clojure language support.

Please note that if you ask around, or observe the Clojure community, Emacs, vim and Intelij Cursive are the top dogs. If you already know how to use one of these, please do so, otherwise, stick to a simple editor. Clojure is going to be a learning journey on its own, there is no need to burden yourself with tools that get in the way of just learning the language.

To emacs/vim people, this is not a slight against your editors. These are amazing editors and people should learn them. When I was learning clojure, I took the time to work with them and the burden on my original goal of learning clj/cljs was too great. Remember what it is like to be new at something - its all about baby steps

With this in mind, here are packages that I recommend adding to Atom to make working with Clojure an even more enjoyable experience:

Content Overview

Each repo represents a stand alone project and will contain its own README where you can learn more about it.

Learning Themes

After re-reading and editing all my responses, here are some high level themes I was able to carve out:

  1. Learn to read the Clojure docs

    They are opinionated and consistent. Once you learn how they are written, they are an amazing tool.

  2. Don't dig too deep too fast

    Clojure feels more complex at times then JavaScript. Digging too deep too early leads to information overload. Take it easy.


Please note that I am a developer by trade, so I went into this with a solid understanding of development patterns and languages and most importantly how to learn languages.

If you are new to programming, do not let the above paragraph discourage you. When I wrote this I was, still and likely never will be a programming prodigy. What I do is grind it out and never stop myself from asking questions, no matter how foolish they may seem.

Special Thanks

I want to thank wes bos for providing amazing, free content. This is a truly awesome resource that I believe could be used to help developers learn not just JavaScript, but any language that compiles to JS. For example:

and the above list goes on, but the ones I mentioned are the ones that are more interesting to me and likely more well known.

Big thanks to the clj/cljs community which is by far one of the friendliest, most willing and easily accessible communities I have experienced!

You can’t perform that action at this time.