search


Reducing Friction
Sun Feb 25 00:00:00 UTC 2018

Clojure is a simple and beautiful language, but one source of friction to programming in Clojure is getting a development environment setup correctly. Sometimes setting up the development environment can be so daunting that people give up before even getting to actual programming. This is often true with Clojure development, requiring developers to install and setup: java/node.js, emacs (cider, clojur-emode, paredit), vim, IntelliJ/Cursive, Lighttable, git, leiningen/boot before a single line of Clojure code is written. Learning to use these tools effectively is another major source of friction. So far we've only experimented with HTML because it only requires a text editor.

While setting up a development environment is unavoidable, we can delay the pain and have a taste of what programming is like without the complex setup: Power Turtle to the rescue

Power Turtle is a project, built on top of a Google project Clojure Turtle that allows coding Clojure in a visual and fun way directly in the browser without any additional dependencies

Here is a talk by the creators introducing the project Learning Clojure through Logo - Elango Cheran, Timothy Pratley



Lambda Kids
Sun Feb 11 00:00:00 UTC 2018

This site is called Lambda Kids. λ is the Greek letter used to represent a mathematical model of computation called Lambda Calculus. The other model of computation is called Turing Machine. It turns out both models of computation are isomorphic, a fancy math word meaning equivalent. Anything that a Turning Machine can compute, the Lambda Calculus can compute also. Likewise anything that the Lambda Calculus can compute, a Turning Machine can compute.

If Turning Machines and Lambda Calculus are equivalent, why not just learn one way of programming? Because true understanding of anything comes from seeing that thing from multiple perspectives. This is true in life and in mathematics. In fact mathematics is useful because it gives us tools to see problems from many different perspectives. In mathematics this is called isomorphism , a fancy word for finding an equivalance between two different systems. You are already familar with this concept. Analogies, metaphors, and parables are examples of isomophisms (more accurately homomorphisms ) and are useful tools we all use to learn new concepts and ideas or to understand a familar idea better. You do not truely understand something until you can see it from multiple perspectives.

Lambda Calculus is the theoretical foundation of a programming paradigm called functional programming. The purpose of this site is to teach programming in general with a focus on functional programming from the perspective of kids using a dialect of LISP called Clojure

Connor and I in Greece Summer 2017
I have a 6 year old son. His name is Connor. Due to divorce, we are separated by thousands of miles. Before he was even born, I thought about how to teach him programming. I wanted to 3-D print his toys, robot parts and program robots we build together in LISP/Clojure. I still have no idea how to teach it effectively so I am volunteering to teach a group of home school kids in Odessa Ukraine. They are about 10yrs old and their parents are allowing me to use them as guinea pigs. Hopefully they will learn as much from me as I will from them. This site will be a collection of videos, tutorials and notes on how to teach my son Connor programming via proxy teaching other kids programming. More importantly I want to give them him the tools to learn and explore ideas on his own through programming.

As a parent, I'm always thinking of what the future will be like and how to prepare my son Connor for it. Technology changes quickly and computer languages come and go. Why teach kids an old language like LISP? Wouldn't it be obsolete by the time they enter the workforce?

Predicting the future is hard, but the faster technology changes, the more important it is to understand from first principles. The ideas in LISP are timeless because it is based on Lambda Calculus. Lambda Calculus was discovered/invented before electronic computers existed. It existed before humans were around and will exist after humans are extinct. No matter what new language becomes popular, having a solid understanding of LISP will prepare them to learn much faster than someone who does not understand LISP.

Clojure is a practical LISP. They can use it now to create useful things from desktop, server and mobile and web apps. They do not have wait to "grow up" to create something useful for the world or earn money. If these kids continue to pursue self-study of Clojure, they don't need to study computer science in university and can pursue other interests either in the arts/humanities or the sciences/mathematics The future is multidisciplinary and knowing computer science alone will not be enough.