How To

The following document contains a collection of How To tutorials. Some of them are text, some are videos, some are both.

Before the Basics
How To Do Basics Calculations
How To Use Parenthesizes
How To Move Bubbles
How To Label a Bubble
Gestures in Oovium
How To Use the If-Then-Else Function
How To Use the Summation Function
How To Work With Aethers
How To Work With Mechs
How To Work With Grids
How to Create Mind Maps
How To Work With Dropbox
Tips and Tricks
Recursive Mechs

Before the Basics

How To Do Basic Calculations

When one first boots into Oovium they are (approximately) presented with a blank black screen. The first obvious question is: hunh?!

Oovium is many things and will become many more. And although it may not be readily apparent at first, one of those things is a calculator.

(1a) double tap anywhere on the background

This creates an expression bubble and pops up a number pad similar to a normal calculator's. From here we can type in an expression as we would with a normal calculator.

(1b) type 893 19

Now, all that's left to do is get the answer. This can be done by either hitting the '=' key or by simply re-tapping the bubble. Which, if everything goes well, should be 47.

(1c) hit the '=' key. (or re-tap the bubble)

So, what has this gained us over a normal calculator? Well, for one thing we can tap the bubble again and see what our original expression was and modify it if we like. Another nice thing is that this and any bubbles created act as memory slots that are able to be referenced from any new bubbles.

In example 1 we have typed the entire expression into a single bubble. For example 2, let's do this same calculation, but this time spread the calculation out between 3 bubbles. Feel free to clear your aether before starting on example 2.

(2a) create two separate bubbles one with 893 and one with 19.

Now we will make use of those two bubbles to complete your calculation. In order to reference previous bubbles in new expressions, just tap the previous bubble.

(2b) double tap to create a 3rd bubble

(2c) tap the 893 bubble

(2d) tap the key on the keypad

(2e) tap the 19 bubble

Now you should have an expression which makes use of the previous two bubbles and draws lines to those bubbles. As always, tap the '=' key or the bubble itself to see the result.

Even with only these basic techniques I think one will find Oovium to be a useful tool for executing and understanding various calculations and hopefully a significant improvement over previous tools.

How To Use Parenthesizes

Among Oovium's innovations and quirks is its magical parenthesizes key. This key has been the source of some confusion, but hopefully through this little tutorial we can clear that up. They key is located on the main number keypad and is labeled like this: (,)

That is, it has a left paren, comma and right paren printed on it and when you hit the magical paren key it will type one of those 3 symbols (or nothing at all). It figures out which symbol you want from context; it turns out that in any situation there is one and only one appropriate symbol.

Let's give it a try:

(3a) Open a new bubble and type 3(4+5)=

Ok, that was pretty easy, but what about the comma you ask?

Well, some functions take multiple parameters as input values and these values are separated with a comma. Like the parenthesizes in the example above, Oovium will know whether or not you want a comma. One example of a function that takes multiple parameters is the min() function. The min function takes two parameters and returns which ever one is the lesser.

(4a) Evaluate the expression min(8,11)

Well, that seemed to go ok.

Oovium seems to do fine on these simple examples; perhaps we can confuse it with a more complex example:

(5a) Try: max(7(6+3),(2+3)(4+5))

Wow, that Oovium has some skillz; that sure is a magical button.

How To Move Bubbles
The workspace of Oovium is referred to as an aether. There is a set of gestures in Oovium that make use of something called
anchoring. Normally, sliding one's finger across Oovium will simply cause the aether to slide. Anchoring is holding the aether still with one finger while doing something else with another.

Moving Bubbles Individually
To move a bubble, anchor the aether with one finger and simply drag the bubble to its new location with another. Once the anchor finger is set a second finger can be placed on a bubble; both fingers can now slide freely. The first finger will move the aether as a whole; the second will move only the bubble it is touching. A third (or forth, etc) finger can be used to move a 2nd (or third...) bubble independently also.

Moving Multiple Bubbles
A set of bubbles can be moved simultaneously, by selecting them and then anchor-dragging them around as described above.

By anchoring with one finger and then dragging with a second finger on an empty patch of aether, a yellow line begins to appear. This yellow line is called the lasso. Using the lasso it is possible to select one or more bubbles; then once selected the bubbles can be moved as a unit by anchor dragging them.

Note also, additional bubbles can be added to the selection by anchor-tapping them.

How To Label a Bubble

The instance bubbles in Oovium can be labeled. This can be useful in keeping track of what a bubble represents on the aether. It is also useful in keeping track of the bubble in other expressions, since the label is also used to represent the bubble in those expressions.

In example 6, we will simply label a bubble and then reference that bubble from another expression.

(6a) Create a bubble and type 893=

(6b) Anchor+tap the bubble to bring up the context menu for that bubble

Anchoring is an important class of gestures in Oovium. It means holding the aether still with one finger while doing something else with another; in this case tapping a bubble. Anchor+tapping on any bubble in Oovium will bring up a context menu for that bubble. This is similar to clicking the right mouse key on something on a normal computer. In this case we are interested in the 'label' key.

(6c) Hit the 'label' key in order to bring up the label text box. Type 'Geology' into the text box and hit return to save it

Now the bubble is labeled. If you wish to change it, go back to the context menu and hit label again. To remove it altogether, backspace through all the characters.

(6d) Now create a 2nd bubble. Click the first bubble, then type 19=

As you can see, the label name 'Geology' is used instead of the value '893' in the new bubble.

Gestures in Oovium

The workspace of Oovium is an arbitrarily large 2 dimensional plane that allows a user to hang expression bubbles upon it. This plane is referred to as the aether. As bubbles are added to the aether, it automatically resizes to accommodate all of the bubbles. In using Oovium, there is an important class of gestures known as anchoring.

Anchoring is holding the Aether still with one finger while performing another action with a different finger. These gestures are:

MOVE BUBBLE [Anchor+Drag:bubble]
Anchor with one finger, then drag a bubble with another. The more fingers that you use, the more bubbles you can drag around.

CONTEXT MENU [Anchor+Tap:bubble]
Anchor with one finger and tap a bubble with another. This will bring up a context menu for the bubble that will allow you to perform additional actions to the bubble, such as Label and Delete.

LASSO [Anchor+Drag:aether]
Anchor with one finger and drag another finger on empty space. A neon yellow path will begin to render along the path of your second finger. You will be able to select multiple Bubbles and then move them as a group or perform relevant context menu actions on all of them.

MOVE CURSOR [Anchor+Tap:expression]
While editing an expression, anchor with one finger and tap the expression with another. The cursor will move to the location of the tap, allowing you to modify the expression at that location.

How To Use the If-Then-Else Function

The if function allows users to create conditional calculations. The function takes 3 parameters: condition, then, else; i.e, if(condition,then,else).

The function evaluates all 3 parameters then checks to see if the condition is true or false. If the condition is true then the function returns the value of the 2nd parameter otherwise it returns the value of the 3rd parameter.

In Oovium, true is any number not equal to 0, false is any number equal to 0. There are currently 3 comparison operators =, < and >. Each of those operators returns 1 if true, 0 if false.

So, an example usage would be if(3=4,5,6), which would evaluate to 6 since 3 is not equal to 4.

Let's try an example in Oovium:

(7a) Create two bubbles, one set to 78, the other set to 45.

(7b) Label the 78 bubble Minerals and label the 45 bubble Seeds.

(7c) Create a 3rd bubble and tap the 'if' function located on the 'mis' tab.

(7d) Now click the Minerals bubble, followed by the greater than sign also located on the 'mis' tab and then tap the Seeds bubble.

(7e) Finally, type: ,23,45) at the end.

The expression should evaluate to 23 since Minerals is greater than Seeds. Of course you could change the value of Minerals or Seeds to get the other result.

How To Use the Summation Function

One of the functions on the 'mis' page is the ∑ function, known as the summation function. This function is quite powerful, but perhaps not as intuitive as other functions. It allows a user to iterate an expression over a range of values, returning the sum of all those values.

The ∑ function has two forms; the first of which is:

∑(start value,end value,expression)

In order to avoid confusion with the imaginary number i, Oovium uses k as the iteration variable.

start value - is a number indicating the initial value for k.
end value - is a number indicating the final value for k.
expression - is the function to be summed over.

In all of the articles above, we have been dealing with bubbles that are of the number datatype. Currently, Oovium has 4 native datatypes: number, complex, vector and function.

In order to create an instance of the function type one embeds the expression in brackets using the [] key. Let's try a simple example. In example 8, we wish to calculate the sum of the numbers 1 through 9.

(8a) Create a new bubble and type: ∑(1,9,[k])

This should evaluate to 45.

Oovium represents datatype through the color of the instance bubble. Green for number, Cyan for complex, Magenta for vector and blue for function. Just as we can create instance bubbles of type number, we can also create instance bubbles of type function. To illustrate this, let's repeat the above example, but this time splitting out each of the parameters into their own bubbles.

(9a) Create two bubbles, one equal to 1 and the other equal to 9.

(9b) Create a third bubble, and type: [k]

(9c) Create a fourth bubble, compositing the other 3 bubbles as parameters of the ∑ function.

The second form for the ∑ function differs from the first form in that instead of indicating a final value for k, the 2nd parameter is of type function and represents a conditional while statement:

∑(start value,condition,expression)

start value - is a number indicating the initial value for k.
condition - is a function indicating the conditions under which to continue iterating.
expression - is the function to be summed over.

(10a) Create a new bubble and type: ∑(1,[k<10],[k])

Using the conditional form in the above case is pretty silly since it would be easier to just use the first form, however this form allows for much more sophisticated conditionals which can be useful at times.

How To Work With Aethers
In Oovium, the two dimensional workspace on which bubbles are placed is called an aether. With version 1.1, it has become possible to store multiple aethers on your device and quickly switch between them using the aether Heads-Up-Display (HUD).

Each aether has a name. The name of the currently active aether is displayed on the aether hud located in the upper left hand corner. The button directly to the right of the name will bring up a properties hover for that aether.

In order to create a new aether, tap the aether hud. This will expand the hud, showing a list of all the aethers stored to the device. Also a button labeled 'new' will appear to the right. Tap the 'new' bubble to create new aether.

In order to switch to another aether, tap the name of the aether you would like to load. The list of aethers on the hud is scrollable, so just slide up and down to see the entire list.

If you would like to change the name of the current aether, tap the property button of the hud just to the right of the aether's name. This will bring up the aether's properties hover. This hover will allow you to rename it, add a comment or include the mechs from other aethers.

Tap into the name text box in order to change the name (a keyboard will appear). The box below the name is for comments and notes.

Tap the OK button to save your changes.

The includes area is for indicating which external aethers' mechs you wish to include in the current aether.

Also, see the
Dropbox article for more information about uploading and downloading aethers to your dropbox.

How To Work With Mechs

One of the goals of Oovium is to make the tools and techniques currently available to programmers more accessible and therefore usable by non-programmers. Along those lines, version 1.1 introduced the mech. The mech is a type of bubble that allows a user to define their own function. These functions can then be used in instance bubbles just like any of the built-in functions.

There are three basic parts to a function definition: the name, the parameters and the result. For the mech bubble, the top is the name, the middle is the parameters and the bottom is the result.

Let's try a simple example. For example 11, we will create a function called 'cents' that will round a number to the nearest cent (0.01).

(11a) Find the bubble toolbar in the upper right hand corner. Click the toolbar to expand it. Select the mech tool.

Once a bubble tool is selected, the next time one double taps on the aether, a bubble of that type will be created. After creating the bubble, the active tool will revert back to being the instance bubble. Let's create our first mech:

(11b) Double tap on the aether to create the mech bubble.

When a mech is created, it starts out in a mode that allows you to change its name, add or remove parameters and change the names of those parameters. Both function names and parameter names must begin with alpha characters and contain only alphanumeric characters without any spaces.

In this case, we wish to change the name of the function to 'cents', but a single parameter named 'x' is fine for our purposes.

(11c) Tap into the function name text field and change the name from 'f' to 'cents'

Function names must be unique within the aether (parameter names must be unique only within the function itself).

The last thing we need to do is to define the actual function. We need to switch the mech bubble into the result definition mode. The bottom section of the mech is the result. It acts very similar to a normal instance bubble.

(11d) Tap the bottom of the mech bubble in order to activate the result area.

Now let's define the result:

(11e) Input the 'round(' function from the mis tab. Then tap the parameter x above from the mech bubble. Then finish with: 100)100=

And that does it. The function is now complete. Let's give it a try and see how we did:

(11f) Create a new instance bubble. Go to the cus tab and select our new function 'cents'. Then enter: 1.2345)=

If you have never programmed before, congratulations! You have just written your first program. If you have programmed before, congratulations anyway! Don't delete the cents function, we will make use of it later on in this How To.

Now, just as for normal instance bubbles, the definition of the mech result does not need to stay contained within the mech itself. It can make use of external bubbles also. In our second example, we will do just that; create a mech with multiple parameters that makes use of an external bubble in defining its result.

In example 12, we are going to create a function for adding a tip and splitting up restaurant bills, called tipsplit. There are numerous apps in the AppStore that allow people to do just that, but we will use Oovium to create such a function so you won't need to buy any of them!

(12a) Create a new mech. Change the name to 'tipsplit'. Add two more parameters. Change the parameters to A, t and p. Hit the OK button.

'A' will represent the amount of the bill; 't' will represent the tip percent (as a decimal, .18 for 18%) and 'p' will represent the number of people to split it between. Now, let's define the result.

(12b) Create a new instance bubble. Tapping the parameters on the mech when needed enter the following: A(1+t)p

This defines the basic calculation; it first adds the tip to the bill by multiplying by (1+t) and then divides by the number of people. However, it is possible that the amount will come out with fractional cents. So, lets make use of our previous custom function 'cents' in order to complete our new function.

(12c) Tap the bottom of the mech bubble in order to activate the result area. By either tapping the top of the bubble directly or by picking it off the list from the 'cus' tab input our 'cents' function. Tap our new external bubble and end with )=.

And that should do it. All that's left to do is try it out.

(12d) Create a new instance bubble and input: tipsplit(35.89,.18,3)=

The answer should be 14.12.

In our final example, we will make use of the
∑ function in order to create the useful payment function. This function will calculate the monthly payment for a loan given the amount of the loan, the interest rate and the number of months. (It assumes monthly compounding)

If you have not already gone through the Summation article, perhaps, this would be a good time to do so.

(13a) Create a new mech; name it 'payment'. Add two more parameters; name the parameters A, r and n.

A for the amount of the loan, r for the interest rate and n for the number of periods. This calculation is actually a bit complicated and I will not bother deriving it for you here. However, the first thing we will do is define the function that we will be iterating over for each of the periods.

(13b) Create a new instance bubble. Type: [(1+r12)^(-k)]=

Again, the 'r' is obtained by tapping the r parameter on the mech bubble. The 'k' is the iteration variable; it is located on the 'mis' tab. (See the Summation article for more information.)

Now, we wish to iterate that function for each of the periods. We will make use of the ∑ function located on the mis tab to accomplish this.

(13c) Create a new instance bubble. Type: ∑(1,n,
Now, tap the instance bubble we created for 13b. Finish with )=

This gives us the denominator of our number. To this point we have not made use of the loan amount.

(13d) Create a new instance bubble. Divide the input amount, A by the our last instance bubble.

This gives a raw final number, but of course it may include fractional cents. So, lets make use of our trusty cents function again.

(13e) Tap the result area of the payment mech. Input the cents function and pass the result of our last bubble into it.

And that completes our payment function. Which as you can see is quite sophisticated and also pretty useful. Last thing we want to do is test it out.

(13f) Create a new instance bubble and input: payment(10000,.05,36)=

If everything went well, the answer should be 299.71.

How To Work With Grids

A major motivation for Oovium is fixing the flaws inherent in spreadsheet applications, however, the spreadsheet is ubiquitous for a reason. Oovium attempts to maintain the strengths of the spreadsheet while eliminating its weaknesses. Along these lines, version 1.1 introduced the GridBub.

How to Create Mind Maps

How To Work With Dropbox

Tips and Tricks

Recursive Mechs

© 2015 Aepryus Software, Inc.