below marks the link to the first introductary video.| References:
https://en.wikipedia.org/wiki/T/Maker https://en.wikipedia.org/wiki/Peter
Roizen Email:
roizen@ix.netcom.com |
| Links: The Download Page My other outside-the-box idea: WildWords Crossword Game |
Some say teach everyone algebra. Others say let many learn "practical math." Meanwhile graduating
seniors and the population at large are setting new lows for numeracy
measures. And, how do you do this "practical math" easily when every
spreadsheet is driven by the abstract notation you are trying to
avoid? Even those who do pass algebra but with some reluctance can quickly become victims of
"use it or lose it." A better answer:
you have to come up with a new tool with a foundation in arithmetic. Nobody forgets arithmetic. You're
probably not going to be surprised that I think I have such a tool. With help
from a Microsoft or Google, it could be polished up and dispersed to millions never appropriately served at their math cafeteria. T/Maker
is easy to use. It's non-algebaic yet very capable. It might even draw
some of the disenfranchised back in the game. So, why me? How
did I get here? Why am I suggesting this thing that no one else ever
even
imagined? Answer below. |
![]() ![]() History:
While the world produced cell-based algebra
spreadsheets (starting with VisiCalc), unusual choices
resulted in a task on my desk that was fundamentally different. It involved typing
instructions within a document to perform calculations. I did this with arithmetic symbols across the
page and in the left margin. These could be removed automatically before printing. Thus the document was undisturbed on paper. I
published T/Maker in 1979 with that feature in what was a word processor plus
many other utilities. Later in 1991, I extracted the math part and added cells in a version for
Windows.
In 2020 a
system update killed these tools. Jumping ship to a regular
spreadsheet would have been a
betrayal of worthy ideas, fond memories, and surprising success. So
I
resurrected and expanded this one-of-a-kind syntax. The obvious
audience would be people with no knowledge of algebra. Am I a
madman on a mission? I am on a mission and
might be the one person in the world who was destined to
create
this page, at this time, with this approach. The lead-up described is accurate and
spans more than four decades. If that isn't destiny, it's pretty close to it. Sketch from Programmers At Work, Microsoft Press, (c) 1983 Not the best title for the 1991 version! |
A Surprisingly Big Chunk Of The Most Important Ideas Plus A Video Of Real Time Usage With A Nifty Tool:
What does it mean to calculate something? Usually you have some numbers and hope to derive a new one based on them. Maybe your annual sales from monthly figures? Maybe the average number of eggs per day laid by your chickens? Who knows? Aside from the numbers to start with, you will need basic arithmetic symbols representing known operations with two numbers: + adds two numbers, / divides a first number by a second, etcetera. There are two kinds of numbers used in a calculation. There are known constants like 3.1416 (pi) that is often needed when calculating with circles. And there is the radius or diameter of a circle which varies from circle to circle. You generally won't have a line on your screen or in a print-out like "My value for pi" or "The number of months in a year." But you would probably have one that shows the diameter or radius of the circle in question. That would allow changing the radius while using the same math for that new circle. So what should one look for in a software program intended to do calculations? Easy ways to write and understand the math operators and the sequence in which they would be executed is a good start. A number of convenient choices to identify the numbers used from the grid and where new numbers should be placed would be cool. If you could see all this side by side in a visually intuitive display that would be great. But allowing a calculation to be specified in a location where it is not used can be helpful in uncommon-sense situations. A tool that walked through and displayed your operations one by one would very much increase your confidence and comfort level. All these charms are accomplished by T/Maker. It is not intended to be a replacement for Excel or its like. T/Maker homesteads in the desolation valley between a hand calculator and an algebraic spreadsheet. It is well-suited for daily life calculations. It is unsuited for global economic forecasts. Ironically, way back then, My Employer = The World Bank! Let's imagine a giant calculator with tons of buttons sitting on top a screen of green and white boxes in two dimensions. Formulas are not written in T/Maker as in algebra. Rather, you compose something called a Calculation Trail. These are placed in the green cells. The white cells hold the text and numbers you want to see or print when not fiddling with the math. Each trail is made up of steps which are numbered and will be executed in number order. One step is like a sequence of buttons pressed on a calculator. T/Maker reads and does the step moving left to right. Unlike a formula, one trail can calculate many values. Also there is no need for parentheses or confusing rules of precedence. You
can see some Basic Operators in the middle of the toolbar. There
are tool tips to learn most everything. The
exclamation point ! enters a value into the calculator. But which value
is that? In T/Maker there are different values you can choose to
specify. A
key to understanding T/Maker is learning to read the
operator symbol and seeing immediately what value is designated. When the symbol requires such a value and none is present, T/Maker
takes the value from the adjacent white column. Step 1 sets
the value
in the calculator to 2. Step 2 adds the value 3 to the calculator since
that constant follows the operator. The presence of 55 in the white
cell is of no importance. Columns in T/Maker are named from A to Z.
When a symbol is followed by a single letter, the value used will be
the
one in the column named. In step 3 the value in the calculator is
multiplied by the value in column D which is 5. As with step 2, the
number in the adjacent cell is of no consequence. With experience, you
learn to choose among the possible conventions and where to place them for a clear presentation of what is going on.There are things called "Functions" that take the value in the calculator and replace it with a value derived from it. "sqr" is one that replaces the calculator's value with its square root. An equal sign = is an Output operator and is followed by a designation of where to place the current calculator value. The same is true of the number symbol #. The difference is the = also clears the calculator to zero while the # leaves the value in the calculator unchanged for further manipulations. T/Maker's calculator offers memory storage slots you can name yourself. A memory name must start with two letters optionally followed by more letters and numbers. They must not be the same as a keyword in the toolbar. Choose them for their clarity and rememberability. They are immensely valuable for intermediate results. In Step 4, the square root value in the calculator is placed in a memory named SaveIt. Step 5 enters 4 in the calculator, adds the value in the SaveIt memory and puts the result in cell c6 -- column C row 6. Cell names are discouraged. They have no intuitive value and often lead to mistakes. Step 6 determines the area of a circle form its diameter using the memory pi which is built-in. Sometimes it's best to do a whole calculation in one green cell if relevant cells are all on the same row. That is often the case in tables. "Special" functions require multiple input numbers as with a mortgage payment (amount, interest rate, length of loan). By convention the parameters are placed in fixed name memories. "Flow Control" allows impromptu exits from or restarts of various calculations. A "When" clause describes a conditional test so different situations can be handled by different calculations. T/Maker's calculator is completely programmable and useable to create simulations, perform binary searches, etcetera. Still, giving a completely ignored audience a way to do daily life bookkeeping and calculations sans algebra is the major breakthrough here. Even though you have learned a lot, please watch this video demonstrating the above and some surprises in real time. Size the new window as needed. |
Geometry: This
subject is often taught with a requirement of algebra first. Frankly, I think
geometry is the easier of the two with more immediately apparent
applications. DIY projects are particulary needy of perimeters, areas,
and volumes. Even familiarizing everyone with the variety of
measures used in different circumstanes is useful: miles, meters, cubic
inches, acres, etcetera.. The
table below figures out the number of bags of QuikCrete needed to
fill the holes made for 30 fence posts. The video explains the
thinking and the use of memories. This can be done with less typing,
but I like doing stuff in the clearest way. Also, all the relevant
constants can be changed for other other holes and posts. You can
imagine knocking out some complicated word problems exercising critical
thinking. What pieces do I need along the way? How do I put them
together? Important life decisions, however, are almost never about a
single number solution. So there will also be time spent figuring collections of numbers to be better informed.![]() Optional Video (a bit repetitive for now but better explained) |
Home Budgeting and Bill Paying: Sometimes
a well-made list with a minimum of
calculations is valuable on its own. You don't always have to be
predicting the future of hedge funds! To the right is one that's a
favorite of mine. It lists all bills
that need to be paid. The list includes the number per year, how it
arrives, where to find details about it, what day it closes, how it is
paid, an approximate average amount, the total per year (calculated),
and a
number to sort on for my prefered order. The other number calculated is
the column total of "Total" The table can also be sorted on any
other column. I print one now and then to mark an amount paid if any
for potentially adjusting the
average. With the number of bills one has these days, I am happy
to have this page in a permanent location on my phyiscal desktop.
My actual list has a lot more lines. Take a quick look at some easy and
useful manipulations of this list including the insertion of a new cloned row. Optional Video |
Graphics: While the charts and
graphs are not on a par with well-established
spreadsheets, you can use them to get insights into your data and
a student can learn what type of chart best illustrates a certain
point. This is one of a number of areas where T/Maker could be improved
by teaming up with a company that already has a professional collection
of charts and graphs. The current graph interface could be kept pretty
much as is in terms of simplicity. Better to forgo a few capabilities
than start to make things complicated.
|
Statistics: An
understanding of some basic statisics is certainly useful. Many can be
obtianed with one trail using the & (Combo
cursor). It uses memories to keep track of a number of key indices.
These can be fetched from the memories and displayed as in the table
below. With a few other trails you can put the values in normalized
form and calculate correlation coefficients. I am not suggesting the
average student calculates their own correlations but they should
understand what a lot of every day terms mean like the mean versus the
median. I would also teach scepticism for the statements made in
typical advertisements or new articles. The ten best places to live,
etcetera. A lot of nonsense is passed off as science.![]() |
Forms:
With
four different line styles plus the possibility of no line, you can
design some nice forms. Allow text to span
multiple columns when setting formats (Alignment "+" Spans). Text can
be
specified in an invisible ink format
effectively blanking it out. This is useful when elements in a table
are needed for calculations but not desired in a final print-out. A
respectably looking estimate or invoice could cetainly be made for the
self-employed. |
Printing:
Print the table in one of four fonts. Choose font
style and size. Set a row height to tighten or spread out the
vertical dimension. Decide whether or not to print lines. Options are
available for row names and column names. Switch between landscape
and portrait as well as set margins with two system dialog boxes called
up with a button. The top of the page shows the length and width of your table in pages. In addition to marign adjustments, changing the size of the font and other items may affect these numbers. Use the Recalculate button to refigure the size when you have altered any items. I generally try for a minimum number of pages with the width of only a single page. |
Starting From (Almost) Scratch :
I do keep the template below handy without any data. It gives me a
head start on adding up lump sums or quantities with unit prices.
My once a year hand-prepared maintenance bill for a runabout gets
checked for labor and parts. The template includes a single
pie chart for all the items most of which are zero. I just push the
Show button for that. ![]() |
Video: Gambling on Roulette What
you saw: You saw a table that plays the optimal strategy for roulette
within
constraints defined by the you. In addition to demonstrating a
functional use of memories, it calls on a number of elements available
in the large toolbar above. These include conditional logic and
branching which makes this not just a table but a program. So why is it
here in a page hoping to entice persons with very modest math skills?
As they say, "that's a good question." T/Maker does provide room for any user to grow with more and more difficult problems. But probably more important in a classroom setting, T/Maker can open up a world with a variety of topics. With some reasonable amount of time, I believe the workings behind this roulette exercise could be explained to pretty much everyone. The same can be said for T/Maker tables calculating basic statistics, performing simulations or binary searches, contrasting investment strategies, weighing present versus future values, or factoring in appreciation and depreciation, etc. Plus, these important values can be calculated with T/Maker and explained intuitively without complicated algebraic formulas. Dumb me! I should not have used the metaphore of "rolls the dice" in the video for "spins the ball." |
| Find
/ Replace Helper in Misc. Menu: If you are in a position where you regularly enter data of purchases or whatever that need to be listed, the Find / Replace helper can be handy. Use it to create abbreviations to minimize typing and store them with the file. Then the Do All Instructions / Cells button is used to replace all abbreviations with the fully spelled out text. For a needed monthly list of purchases, start with the previous month's file, rename it, and blank out the data to take advantage of the abbreviations stored in it. Quick look. Video: Find Replace Helper ![]() |
![]() |
| The When Clause: Different
rows or columns in a table may require very different calculations.
With the Apply button you do have the possibility to have a number of
different trails and choose to apply them across different rows or
columns as needed. This introduces an overhead of keeping track of what
is used where and making choices when a new row or column is
added. Another approach is to put something in the trail or a
step that lets the trail determine if it should do a calculation or
not. This is achieved through what is called a "When Clause."
This clause
is a true or false test which can be put in a step. If the clause is
true, the operators after it are executed normally. If the clause is
false execution moves on to the next step. The clause itself consists of the word "when," a first operand, a test to be performed, and the second operand for the test. One chooses the elements proceeding from left to right on the help screen. This completes the edit area to the right of the light green "Load Clipboard and Cursor" button below. You may also edit what is in that area to provide specifics of what happens when the test is true. Then you can push the just mentioned button to get a cursor representing the text and click it where needed. It is often the case that some form of almost the same clause is needed more than once. You can change the text in the edit area and use the aforementioned button to get a new cursor. Note below that the calculation given is only executed for rows designated with the code "A". ![]() Watch the
construction of a When Clause demonstrating another use of it with the
Tally Table button.
|
Importing
Data: To
try T/Maker, you don't have to start with typing data. You can probably
import data from a program you have that exports files in the popular
CSV (Comma Seperated Values) format. T/Maker can also import data using
white space as a delimiter, parsing mostly vertical columns, or using a
first line that is a template for where columns of data are located.
![]()
Save the file as it is first. Duplicate or move data in a table by exporting it. Then import it to the new location. Erase the old data when that operation is completed. Don't save anything until you are sure. BTW, one backup file is kept with zzz prepended to the file name if you set that option in the Options Menu. |
Column
Relative Memory Names: Here
is a feature that got created because it's useful. Let's say you are
doing the same calculations on a range of columns. Suppose Trail 3
creates a value that would be useful in Trail 7. You might put in Trail
3 a notation like step 4 to save the value in a memory for use by Trail
7. Problem: All applications of Trail 3 are done before T/Maker even
gets to Trail 4. Therefore the value in memory Myval will be
overwritten each time the trail is applied on a subsequent column. Realizing
that you will need a different trail using a different memory name for
each column, you have to wonder if there is a better way to attack this
prorblem. There is.If a memory name ends with a question mark, the question mark is replaced by the column letter in which the name is used, case insensitive. That means when MYval? occurs in column A, it is as though you wrote MyvalA. Thus a use in one column of Myval? will not refer to the same memory when it is used in another column. This
technique is used with the "Combo cursor" to calculate a number of
statistics across multiple columns without having one application step step
on the toes of another. It can also be used, for example, to store
values from say row 11 so they can be easily called back in row 61 as memory names. |
| Mortgage
Payment The Hard Way: This
is the formula for a monthly mortgage payment (M) from the amount
borrowed (Principle) over (n) periods at an interest rate (i) per
period: M = P [ i(1 + i)^n ] / [ (1 + i)^n – 1 ]. It is more easily forgotten than remembered. This example is for readers who wonder about unexpected tasks that T/Maker might handle. Most will not be attempting to construct a table at this level of complexity. But hopefully they can get the idea of how it works. Skip it if you like. I do know the payment accounting that is done each month. Interest is added. The payment is subtracted. That yields the remaining balance for the next month. And so it goes for every period. T/Maker is programmable. With the terms of a mortgage and a given monthly payment, it could do the math. If the final balance ended up negative by more than a trivial amount, it would mean the payment was too large. If it ended up too positive, it would mean the payment was too small. Something called a binary search is a smart way to deal with this type of situation. First we need to find a low and a high estimate for the correct payment (discussed later), then we take the average of the two, and do the math. If the remaining balance is too negative the payment was too much. We change the high estimate to the average we just used and start over with a new average. If the balance is too positive, the payment was too little. We change the low estimate to the average instead and try again. If the balance was a trivial amount from zero, the payment is right and we stop repeating loops. The term "Binary" is used because the range of possibilities is cut in half with each iteration. We will have three sorts of stages in this process: 1) Start Up: calculate the correct value as in the previous example to compare with this approach and set some nicely named memories with initial values. 2) Prep Next Guess: Prepare memories with values to run through all payments and establish our next payment guess. 3) Run and Evaluate: Do all payments, evaluate the remaining balance, and take the appropriate action. We will do one trail for each stage which makes it easier to see what is going on. A trail is a very flexible item. Trail 1: ![]() ![]() ![]() Startup: When T/Maker begins calculating all memories are effectively zero. In the first step, Pass is a memory which will be zero at the first execution of the trail. A When Clause is used with the "not equal" comparison to see what the story is. This test will fail since Pass is zero, so the rest of step 1 will not be done. T/Maker will jump to step 2. Later when Pass is not zero, the rest of the step will be done and T/Maker would EXit this TRAIL (EXTRAIL) and jump to step 1 of next trail, namely, 2. This trail is meant to be executed only once. Steps 2 through 5 calculate the correct mortgage payment in the way of the previous example. Step 6 puts the borrowed amount in the memory Amount. Step 7 divides the interest per period by 100 so it is a rate as opposed to a percentage. Step 8 puts the number of periods in the memory Months. In truth, it could be quarters or years or whatever. Perhaps a memory named Periods would have been more to the point. Trail 2: ![]() ![]() Prep Next Guess: The first two steps of trail 2 are only done the first time trail 2 is executed. Otherwise, the Low and High estimates for the Payment are controlled in the third stage. The Low payment is calculated to only pay back something less than the full amount of the loan. Banks don't generally offer that. The High payment would pay back the interest on the full amount every month plus the Low payment. This would probably be called "sharking." Step 3 displays the Low payment. Step 4 calculates and displays the Payment based on the average of Low and High. Step 5 displays the High payment. Step 6 sets the memory Remains to full Amount (this is before the first payment is made). It also sets the Time to 1 (think of this as the current month/period). And it adds 1 to the memory Pass. This makes sure we won't do the one-time steps again and serves to count the total number of different payment amounts that were tried before the correct payment was found. Trail 3: ![]() ![]() Step 1 calculates the remaining amount including new interest. Step 2 subtracts the next payment from the remaining amount. Steps 3 and 4 simply display memory values of interest, Step 5 Regardless of the Time, If what remains is already less than minus 5 the payment is too high. So the High value is reset to the current Payment and the table is RESTART(ed) from the beginning. However, this time Pass is not equal to zero so various steps will be skipped. Step 6 tests if the final payment was just made. If not, this trail is RETRAIL(ed) which means T/Maker will jump back to the first step for this trail and advance another time period. Step 7 is only tested after all payments are made. It checks if the remaining amount is greater than 5. If so the Payment was too low, so the Low value is reset to the current Payment and the table RESTART(ed). Otherwise it is mission accomplished! The amount remaining is between minus and plus $5. If there were a trail 4, T/Maker would have started on it. Don't lose sight of the benefit that this example offers an oppotunity for students to learn something interesting independent of this problem solved. This can be done with many other subjects: statistics, probabilities, etc. For the record, no trail yet has used a cell name except the example of how to use a cell name! |
The Quadratic:
Real life math is generally about applying known
formulas to known values to get an estimate or understanding. Finding
solutions to equations or points where lines intersect is more about
scientific pursuit than managing your home or even small
business. Part of algebra includes this famous formula which can
be a nightmare for some students. I thought I would put in a table that
solves it
for the coefficients a, b, and c. Pushing the Compute button
displays
the solution if there is one in real numbers and prepares a list of
numbers for the chart to the right. The Show button would show the chart.![]() |
![]() The necessary designations for the graph values were put in the table manually on the Graphs input page. I first did the graph as a single line showing the parabola f(x) versus x. That was rather boring and quite low on information value. I then tried the presentation above. The value of x is shown as a red bar which starts off negative and climbs. The blue bar shows the value of the function. You can see the two solutions where the height of the blue bar is zero. When things are easy, a spirit of trial and error discovery is encouraged. That often leads to something unexpected and better. |