| References:
https://en.wikipedia.org/wiki/T/Maker https://en.wikipedia.org/wiki/Peter
Roizen Email:
roizen@ix.netcom.com |
| Links: The Download Page Tutorial Videos My other outside-the-box idea: WildWords Crossword Game |
| America,
we have a problem. The math skills of our people are going to hell
in a hand basket. Graduating high school seniors are setting new
records for low achievement. The powers that be continue to recommend
more teachers and better approaches explaining algebra to all students.
This affects a very limited portion of the total population. It has not
reversed or slowed the nationwide decline from year to year.
Another collection of experts feels we should forget algebra in favor
of practical math for students not interested in careers requiring
more. I have not seen any of these experts suggest a coresponding tool
to do this job. "Use it or lose it"
applies to math as much as many endeavors. You will find here a tool of
my own making. With help from a Microsoft or Google it could be an
aid to tens of millions who have nothing whatsoever to use
now. So, why me? |
![]() ![]() My Relevant Personal History: Six unlikely circumstances over a dozen years led me to create a means for in-document calculations specified in arithmetic. I published T/Maker which included that in 1979 and a Windows math-only part in 1991.
In 2020 a
system update killed both. Jumping ship to an algebra
spreadsheet would have been a
betrayal of decades of ideas, fond memories, and surprising success. I
decided to resurrect and expand the still unique syntax
and emphasize it for an ignored
group -- people with no knowledge of algebra. If I sometimes
sound like a madman on a mission, I will admit I am on a mission and
might actually be the one person in the world who seems predestined to
create
this page, at this time, with this approach. The history is there even though this does sound somewhat
like madness. Sketch
from Programmers At Work,
Microsoft Press, (c) 1983 |
| Calculating
In Arithmetic:
Note: You are free to go after completing this one box. Imagine a big fat calculator with tons of crazy buttons sitting on top of green and white boxes in two dimensions. Suppose you could type whatever text and numbers you want in the white cells and things called Calculation Trails in the green cells. A trail would have a series of steps done in number order. Each step would be a sequence of buttons touched on the calculator (or typed in). So what have we got on this screen? In the first step we have a Basic Operator which is an exclamation point. This operator enters a value into our calculator which is 1 in this case. Unsurprisingly step number 2 adds 1 to the calculator and step number 3 (an Output Operator) puts the calculator's value into column C then zeros the calculator. If step 3 had been the # Output Operator instead, it would have just left the current value, 2, in the calculator. Operators don't always have to refer to the number in the
white adjacent column. In step 4 the two numbers used in this
calculation are written as constants just after the operator itself. In
step 5, the numbers for the operators and the output location are
designated by their column names -- single letters in upper or lower
case. Note that this step could have been put in any column because
no operators reference an adjacent white column. It is also
possible to use cell names like A11 or e6 but it's discouraged and
usually avoidable.Extremely valuable, an operator can also refer to a value in a named memory. You can make up your own memory names on the fly. They must start with two letters followed by optional numbers or letters. Upper and lower case letters are not distinguished from each other. I recommend some upper case to highlight memory names in steps. Memory names are perfect for storing intermediate values for later use and much less mistake prone than cell names. Step 6 stores the total in a memory named "Two." Step 7 enters the value in that memory into the calculator and outputs it to the white adjacent column. Honestly, have you ever seen a presentation of some calculations in such a visually intuitive and easy to read format? Don't skip the video for even more surprises. And look at the next example for a full problem solved needing geometry. As for the other elements in this giant toolbar: "Functions" replace the value in the calculator with a function of it (sqr is the square root). "Special:" are just that. I should actually drop Cnt and Avr (Count and Average) as there is a better way to do a variety of statistics with one trail. The other special functions need a few input parameters. 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 differently. This calculator is completely programmable and can be used to create simulations, perform binary searches, etc., etc. Even so, the target audience consists of mathematically uninclined students and average people wanting to do daily life bookkeeping and calculations to support informed decision-making. Feedback welcomed. I get almost none which makes me wonder if I am lost in space with this. Time for a "some more cool stuff" video! Size the new browser window as necessary. Thank you for your time. I hope you saw something new and worthwhile here and might pass it on. |
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. |