Do you have XCode? Type `gcc` at your terminal prompt.
If it says `no input files`, you have XCode.
Otherwise, install XCode: `https://developer.apple.com/xcode/`, with the command line tools.
To install dependencies pick either one of Homebrew or Macports, but not both:
Homebrew -
`brew install git gmp libsigsegv openssl`
Macports -
`sudo port install git gmp libsigsegv openssl`
###2. Build
Clone this repo:
git clone git://github.com/urbit/urbit.git
`cd` to the unpacked Urbit directory you just created:
cd urbit
If this works, `ls urb/` should show:
urbit.pill zod/
Then just run `make` in the urbit directory.
Sometimes things are just easy.
###3. Run
Run `bin/vere -c mypier` in the urbit directory, where `mypier` is a directory that doesn't yet exist. All your state (an append-only log and a memory checkpoint) will live in this directory. The name of your pier doesn't matter and is not visible internally.
A _pier_ is an Urbit virtual machine that hosts one or more Urbit identities,
or _ships_. When you run `bin/vere -c`, it automatically creates a 128-bit ship, or `submarine`. Your name (a hash of a randomly-generated public key) will look something like:
If you would like to safely bring this ship back into port (End the Unix process),
just enter Control-D.
###4. Registration
Arvo instances in the Urbit network, called "ships", are addresses in a finite namespace much like IP numbers. You should be able to remember your personal IP number. However, numbers are cumbersome for humans to memorize. Urbit solves this problem by mapping each address to a phonetic name, whose length is proportional to how many of that type of ship there are.
In this section, we'll get you registered with some Urbit ships. One of these ships, a destroyer, will be both your personal cloud computer and identity in the social network of Urbit.
The long name in your prompt now is that of a submarine. Submarines are cheap, temporary ships that are tiring to remember but useful for trying Urbit out or browsing anonymously. But this moniker is mouthful. You can stick with it for now, but you're going to need a wider xterm.
Instead, registering for a destroyer will get you a nice short name like
~waclux-tomwyc
Destroyers are rarer ships meant to be associated with a user's digital identity. They are far fewer destroyers in the Urbit namespace than submarines.
Tlon would be glad to give you a destroyer from the batch that they own. Head over to [tlon.io](http://tlon.io) to complete the automated registration process.
Your destroyers will arrive in the form of `[ship ticket]` pairs.
Let's say one of your ships is `~waclux-tomwyc` and its ticket is
~ribdyr-famtem-larrun-figtyd
(Where do we get these phonetic strings from, anyway? Just random unsigned integers,
rendered in Hoon's syllabic base, `@p`.)
A new life awaits you on the off-world colonies! To begin, just
type at the submarine prompt:
:begin ~waclux-tomwyc
and follow the directions. When the script completes, hit return
and you'll be the `~waclux-tomwyc` you wanted to be. Now, when other user's see you in chat or look at your
Urbit social profile (a fasplan), they can learn whatever information you gave the :begin process.
###5. Play with Arvo
If all went well, you now have a nice short prompt:
~waclux-tomwyc/try=>
If all did not go well (send us another email), or you're just
too impatient to wait for your destroyer, you have a big long
prompt. Which is fine, really, just ugly - and all these
exercises will still work.
####Example commands
Let's try a few quick things to stretch your fingers. Type these
command lines and you should see the matching results:
~waclux-tomwyc/try=> "hello, world"
"hello, world"
~waclux-tomwyc/try=> (add 2 2)
4
~waclux-tomwyc/try=> :hello %world
"hello, world."
~waclux-tomwyc/try=> :cat /=main=/bin/hello/hoon
::
:: /=main=/bin/hello/hoon
::
|= *
|= [planet=@ta ~]
^- bowl
:_ ~ :_ ~
:- %%
!>("hello, {(trip planet)}.")
What did you just do?
One, you used Arvo as a Hoon REPL to print the constant `"hello,
world"`, which is a fancy way to write the Nock noun
[104 101 108 108 111 44 32 119 111 114 108 100 0]
Two, you called the Hoon `add` function to see that two plus two
is four. Math seems to work the same on the off-world colonies.
Three, you ran the Arvo application `:hello` with the argument
`%world`, which is just a fancy way to write the atom
`431.316.168.567` (or, for non-Germans, `431,316,168,567`). You
might recognize it better as `0x64.6c72.6f77` - the ASCII
characters in LSB first order.
(Is Urbit German? Sadly, no. But all our noun print formats are
URL-safe, which dot is and comma isn't.)
And you (4) used the Arvo application :cat to print the Hoon file
/=main=/bin/hello/hoon
which, supposing your current date is
~2013.9.1..04.38.31..f259
(ie, September 1, 2013 at 4:38:31 GMT/LS25 plus 0xf259/65536