All Projects → inclojure-org → clojure-by-example

inclojure-org / clojure-by-example

Licence: other
An introduction to Clojure, for programmers who are new to Clojure.

Projects that are alternatives of or similar to clojure-by-example

Java Training Exercices
Stars: ✭ 44 (-66.92%)
Mutual labels:  training-materials
Cobol Programming Course
Training materials and labs for a "Getting Started" level course on COBOL
Stars: ✭ 1,963 (+1375.94%)
Mutual labels:  training-materials
technical-training-solutions
No description or website provided.
Stars: ✭ 69 (-48.12%)
Mutual labels:  training-materials
Enterprise Clojure Training
A Clojure training course for Developers and Senior Developers
Stars: ✭ 64 (-51.88%)
Mutual labels:  training-materials
Training
Container, Monitoring & Logging, Cloud & DevOps Tutorials and Labs
Stars: ✭ 121 (-9.02%)
Mutual labels:  training-materials
Learnosm
LearnOSM.org content, Jekyll layouts & issue tracking. This repository is dedicated to helping people learn how to map in OpenStreetMap (OSM) and use many of the software and tools in the OSM community.
Stars: ✭ 200 (+50.38%)
Mutual labels:  training-materials
Training
Various Plone Trainings
Stars: ✭ 32 (-75.94%)
Mutual labels:  training-materials
android-cuberto-dialog-design
This is an implementation inspired by beautiful design by Cuberto on his Dribble page, which can be found here https://dribbble.com/shots/3206606-Landing-page-wip
Stars: ✭ 15 (-88.72%)
Mutual labels:  tutorial-sourcecode
Designpatternsincsharp
Samples associated with Pluralsight design patterns in c# courses.
Stars: ✭ 149 (+12.03%)
Mutual labels:  training-materials
You Dont Know Js
A book series on JavaScript. @YDKJS on twitter.
Stars: ✭ 147,493 (+110796.99%)
Mutual labels:  training-materials
Training Material
A collection of code examples as well as presentations for training purposes
Stars: ✭ 85 (-36.09%)
Mutual labels:  training-materials
Scala Course
Scala for Statistical Computing and Data Science Short Course
Stars: ✭ 118 (-11.28%)
Mutual labels:  training-materials
Fundamentals Materials
React Native Training - Materials Example App
Stars: ✭ 219 (+64.66%)
Mutual labels:  training-materials
Openacc Users Group
Stars: ✭ 57 (-57.14%)
Mutual labels:  training-materials
adsy-trainings
Workshop and training materials
Stars: ✭ 13 (-90.23%)
Mutual labels:  training-materials
Minerva Training Materials
Learn advanced data science on real-life, curated problems
Stars: ✭ 37 (-72.18%)
Mutual labels:  training-materials
Lunatech Scala 2 To Scala3 Course
Lunatech course - "Moving forward from Scala 2 to Scala 3"
Stars: ✭ 174 (+30.83%)
Mutual labels:  training-materials
cache-lite
An extremely lite-weight cache framework in Kotlin, demonstrating how cache works.
Stars: ✭ 97 (-27.07%)
Mutual labels:  tutorial-sourcecode
clojure-bootcamp
No description or website provided.
Stars: ✭ 14 (-89.47%)
Mutual labels:  training-materials
Functional Light Js
Pragmatic, balanced FP in JavaScript. @FLJSBook on twitter.
Stars: ✭ 14,764 (+11000.75%)
Mutual labels:  training-materials

Introduction

This workshop aims to get your brain and fingers accustomed to just enough of the Clojure programming language to start doing useful things with it.

In other words, "What could one do with just a little bit of Clojure?".

What is Clojure?

Clojure is an interactive functional programming language that can run on many platforms like the JVM, .NET CLR, Javascript (browsers, nodeJS, React Native), as native binaries via Graalvm, and even as shell scripts!

It is used by software teams worldwide to deliver high-value software systems at giant companies like Apple, Walmart, to "decacorns" like GoJek, Nubank, to a wide array of startups, and one-person businesses like Partsbox.com.

Its interactivity and dynamism foster a sense of playfulness that attracts all manner of creative makers---hobbyist as well as serious artists and musicians.

A small but vibrant global community is busy building amazing things with the language.

Intended usage

  • Support a 1-day guided workshop for programmers new to Clojure (not absolute programming beginners).
  • Also function as at-home learning material for said programmers.
  • The master branch is heavily commented, for at-home use
  • A solutions branch will be available, as a companion to master. But don't peek at it in advance!
  • You may see a workshop-code branch. Ignore it. It is meant only for workshop use, and is subject to deletion/re-creation.
  • Incidentally, if you landed here while searching for Hirokuni Kim's "Clojure By Example", well, follow the link!

Contributions

  • If you find bugs or errors, please send a PR (but please don't change the course structure or pedagogy).

Workshop Goals

  • Acquire a "feel" of Clojure, for further self-study/exploration.
  • Learn how Clojurists usually think with Clojure to solve problems.
  • See how it's not so hard to do surprisingly powerful things with a mere handful of "primitive" functions, data structures, and ideas.
  • Get you started with a good development setup and workflow that will serve you well if (when) you continue to program with Clojure, as a hobby, or at work!

Workshop Anti-Goals

  • Try to explain Functional Programming theory or Clojure's innards. (Many free and paid tutorials and books do so very well.)
  • Try to fully cover Clojure primitives/features. (That's homework!)
  • Devolve into language wars, editor wars, syntax wars, type wars... (Life's too short, people.)
  • Focus too much on tooling or operational things. (At least not while there's fun to be had!)

Suggested learning mindset

  • Think of this as an exercise in "constrained creativity".
  • Ignore details, achieve much with as little know-how as possible.
  • Focus on what things do; not what they are, or why they are.
  • Inform your intuition for doing things, and then use that to dive deeper into all the juicy details at your own pace, later.

Take what is useful, discard the rest.

Setup Instructions

It's a liiitle bit of work. But not too bad.

Just do the following one by one, and you should be fine.

IntelliJ + Cursive IDE

We support IntelliJ + Cursive IDE in the classroom for this workshop. We suggest you use this setup, unless of course, you have already configured your favourite editor for Clojure development. We've listed alternate starter kits below (VSCode, Vim, Emacs, Atom), but please avoid bikeshedding editors. Just complete the workshop first!

Once installed:

  • Launch IntelliJ and select "Import Project" from the opening splash screen.
  • OR use IntelliJ's file menu to open this project via File > New > Project From Existing Sources
  • Select this project's main directory; click OK
  • The "Import Project" dialog box should open
  • Select Leiningen under "Import project from external model"; click Next
  • Click Next again in the following screen that shows "Root Directory"; wait for it...
  • Again, click Next in the screen that says "Select Leiningen projects to import"
  • And again, click Next in the "Please select project SDK" screen (ensure you select JDK version 1.8 or higher)
  • Click "Finish", and wait for IntelliJ to set up the project
  • Under Run... click on Run... and then select REPL for clojure-by-example (or whatever your project name happens to be).
  • A right pane should open, with a REPL session.
  • Now, open the ex00.. file under the src folder
  • Use the menu under Tools > REPL to (a) Switch to the file's "namespace", and then (b) load the file into the REPL
  • Scroll down a little, till you see (+ 1 2).
  • Place your cursor after the closing parenthesis ), then right-click to open the context menu, and click on REPL > "Send '(+ 1 2)' to the REPL.
  • You should see '(+ 1 2)' appear in the REPL window, followed by 3. This means you successfully evaluated an expression in the REPL.
  • Now you may start from the top of ex00 and work through the material in each "ex" file
  • Important: For every exercise file, remember to first switch to the file's namespace, and load the file in the REPL (use the menu under Tools > REPL)

Also keep the Cursive user guide handy, in case you need editor help, as you solve the workshop material. In particular, the Paredit guide may be useful, if you stumble when editing Clojure code.

(Optional) Java and Leiningen

Being a JVM hosted language, Clojure requires Java to run. For the workshop, we also use a Clojure build tool called Leiningen. If you're using IntelliJ + Cursive for the workshop, you won't need to install Java or Leiningen separately, since Intellij will come with a JDK and Cursive will download Leiningen when you import the project. So just follow the IntelliJ + Cursive setup guide and you'll be good to go for the workshop.

If you're working on a production project however, it's useful to have both Java and Leiningen separately installed.

Java

  • Run java -version in your terminal.
  • If Java is not installed, please download and install Java from here. Any version should do.
  • Once you are done, java -version should show you a Java version.

Notes:

  • We have not tested this project with Java 7.

Leiningen

Follow Leiningen setup instructions here.

Alternative Starter Kits:

If you can't use IntelliJ for some reason, you may try one of these. Although we haven't tested with these setups, the workshop material should work fine. You'll also have to install Leiningen and Java separately.

Your favourite editor:

You may find instructions for your favourite editor at one of these pages. But there are only so many choices. Ultimately, you must pick your poison and run with it:

Course Design Philosophy

Just some peoples' opinion. You need not be slave to it ;-)

Almost anyone can hope to do more with more. Up to a point, that is.

Far too often, we end up doing less with more; bogged down by the complexity and blinding glitter of too much choice, and overabundance.

Figuring out how to do more with less feeds our curiosity, and it often satisfies and empowers us deeply.

So, may you stay small and achieve important things.

Live long, and prosper. \\//_

Credits

  • clj-pune people, especially kapilreddy, and jaju for critique while making "pratham", the precursor to this project.
  • adityaathalye, jysandy, and kapilreddy for course design, code reviews, critique, commits, and being the core teaching staff at the first edition of this workshop at IN/Clojure 2018.
  • All the workshop participants, and the many Clojurists who generously donated their time to make it successful.
  • inclojure-org for being the umbrella under which this work happened.

Copyright and License

Copyright © 2017-2018 IN/Clojure.

Distributed under the MIT license.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].