- 1.1 Introduction
- 1.1.1 Welcome!
- 1.1.2 So what are we going to learn in this course, Beginning Hoon?
- 1.2 Our Goals
- 1.3 Why would anyone want to learn Hoon?
- 1.4 Let’s begin.
- 1.4.1 What is a Program?
- 1.4.2 How we will display things
- 1.5 Learning paths that wander and then return
- 1.5.1 What are Urbit, Nock and Hoon? (the basics)
- 1.6 Hoon Programs and Hoon’s weaknesses
- 1.6.1 Types of Naivety in Hoon:
- 1.6.2 Aura/Type
- 1.7 Naivety: Stopping / finishing a program
- 1.7.1 Naivety: The ‘work product’ must be declared
- 1.8 What you need to know and do before beginning
- 1.8.1 Setup
- 1.8.2 How & where to run Urbit
- 1.9 “Mounting” your “desk.”
- 2.1 |commit programs so that your Urbit can “see” it
- 2.1.1 Introduction to the dojo: finally getting into it
- 2.2 Concepts covered in the intro to dojo video:
- 2.3 The “Landscape” interface: we won’t be using it
- 2.3.1 Just to be sure: let’s |commit a program
- 2.4 Important Basic Concepts for Hoon: Atoms, Auras, Cells, Nouns, Lists, Runes
- 2.4 Nock
- 2.5 What are: Atoms, Auras, Cells and Nouns?
- 2.5.1 Why do we need cells?
- 2.6 So then what are Nouns?
Hoon Syntax: Commands, Runes, Tall and Flat Forms
- 2.8 Anki Flash Card Deck: Hoon Rune Phonetics
- 2.8.2 Anki Flash Card Deck: Hoon rune families
- 2.8.3 Anki Flash Card Deck: Hoon runes in plain English
- 2.8.4 Essential skills: beginning debugging concepts
1.2 Our Goals
Hoon is a unique language with a unique vocabulary which sometimes has parallels to other terms in computer science, but often uses language that is altogether new and unique to Hoon. There are simply new and different ways of doing things in Hoon which are not seen precisely elsewhere.
The layered novelty of language and concepts in Hoon can be frustrating as one is trying to build a holistic understanding. To address that we will go through these new concepts carefully, with visual aids, and bring in new concepts and language at a manageable pace. It is our goal to keep you in the “fun flow” part of the learning curve, where study is just challenging enough to keep you interested as you work through it, and the paths through the valleys of temporary confusion are of reasonable length before being resolved. If we have achieved this, fantastic! If not, then we definitely want to hear from you. We believe this comfortable zone of learning can be achieved, and that is where we have set our sights.
1.3 Why would anyone want to learn Hoon?
That is a good question. We can only speak for ourselves, but here are some of our reasons:
- We believe in Urbit and its potential for the world. Under this banner, we love the promise of information privacy and having a relationship with computers we can trust. We would love to regain the ability to build communities and interact online without the psychological manipulation of companies who F* with our S* through inflammatory and profit-driven content selection when we simply want to communicate with friends. And there are many other Urbit-related reasons. We assume that if you are here, you have found your own.
- We have found that once you begin learning Hoon, you can re-discover the extreme childhood fun of puzzle solving and brain-teasers. Hoon presents an opportunity to go deeper and deeper as learning gets more complex. If this is your sort of challenge, then this is a sort of “fun of doing” that never goes away.
- We hope to instill in you the (we think quite powerful) self-satisfaction of being able to vision and build something that is beautiful or impactful. For a number of people, there is a subtle sense that if one doesn’t know how to code that the world is leaving you behind as a sort of “non-participant” in some of the important frontiers.
- We know that there is a beauty to seeing and understanding something complex, in this case a well-authored and fully functional program, with all of its purpose and problem-solving and interconnectedness that actually does something. That is a later stage of expertise but cannot be underestimated. It’s a “wow” realization and is certainly something to shoot for in the big picture journey toward mastery.
Finally, we alluded to this above, but it bears repeating: You are going to have to get your hands dirty. You will need to work through our examples, complete the exercises, watch the videos, attend office hours and generally tinker a lot and work through many things yourself. Programming is problem solving, and will require breaking down complex problems to their core components and successfully tackling each challenge. You’ll learn to deal with complex things eventually, but first, you will need to learn to problem-solve on a small scale with simple code (we will get to it later, but a good place to try out small snippets of code is your ship’s “Dojo”).
Hopefully you love to tinker or can channel the inner tinkerer who has lived in each of us since childhood. It will serve you greatly to work patiently in a ‘workshop’ mindset, through tidbits, to small bits, to medium sized pieces, to interconnected complex final products which are things of beauty. So with all of that, it’s time to get started…