Professional Documents
Culture Documents
Magic Designer Overview: Original Instructions in PDF
Magic Designer Overview: Original Instructions in PDF
This computer program is an exact emulation of a toy which was sold years ago called Magic Designer . It also once
had the name Hoot Nanny. It is made out of metal and comes with circular paper and colored pens.
Here is a description of this toy and how it is used: Original Instructions in PDF
This program uses trigonometry to figure out how to draw these designs. Without getting too technical this is how it
http://akatz712.freehostia.com/main.html (1 of 3)7/3/2009 7:38:30 PM
MagicDesigner - Overview
works:
To draw a design, the paper is rotated a full circle. The position of the pen moves around due to the motion of the
gears. The program takes many samples and asks, where is the pen at this point? Because the number of pixels is
not infinite (typical computers have 1024 by 768 or 800 by 600) a finite number of samples is all that is needed to get
the maximum possible accurate drawing. The length of the two arms is known and the position of the pegs (which are
those pins standing on the gears) is calculated relative to a common center. Then, one of the possible two points
where the circles made by those two arms swinging around their pegs (imagine that the arms were not connected to
one another) intersect, is where the pen is located at that moment. This becomes a colored pixel.
The following is snapshot of the computer program. Pieces of it and how it is used are on the HELP PAGES.
Free Download:
Tested with latest Firefox 3, Internet Explorer 8,7,6, Opera 9, Google Chrome 2, Safari 4.
Jewish Sites
http://www.1stingames.com/gamesdata/magicdesigner/index.pdf7/3/2009 7:38:32 PM
Complex Curved Shapes Generator Programs | Get Complex Curved Shapes Generator Programs at SourceForge.net
Find and develop open-source software Welcome, Guest! Log In | Create Account
● Develop SourceForge.net > Find Software > Complex Curved Shapes Generator Programs
Community
●
Complex Curved Shapes Generator Programs by akatz712
● Summary
● Site Support
● Files
● About ● Support
● Develop
Complex Curved Shapes This computer program is an exact emulation of a toy which was sold years ago called Magic
Generator Programs Designer. There are 2 versions - MS Windows one written in Euphoria and C and one written for
the Web for people who do not have a Windows computer.
Screenshot
http://complexshapes.sourceforge.net
Project Feed Go
Show: Everything
Subscribe
● Screenshot Added
akatz712 added a screenshot of Magic Paper
● Screenshot Added
akatz712 added a screenshot of Magic Parameters
Added the ability to automatically repaint the drawing area in the Windows application.
Sponsor Link
Play the best Trading Card Game in the World
Keywords
WINDOWS CATEGORIES:
Magic Designer 1.2
● Antivirus
● Authoring tools
● CD/DVD Tools
● Compression tools
● Desktop Enhancements
File managers
●
Downloads: 781 Add to download basket Tell us about an update
● Internet
IPOD TOOLS
●
User Good (3.5/5)
● Mobile Phone Tools ● Rating: 18 user(s)
Rated by:
● Multimedia
● Network Tools
Developer: Andrew Katz | More programs
● Office tools
License / Price: Freeware / FREE
● Others
● System View more screenshots (2) Read user reviews (0) Add a review Refer to a friend
● Tweak Subscribe
● UNIX
● Windows Widgets
Avira Antivir Virus What's New in This Release: [ read full changelog ]
Definition File
Update July 2, · Added PDF printing using "Larry"s bezier smoothing
2009 · Used Cairo for drawing.
· Added multiple designs draw capability.
87,963 · Fixed Help localization
Windows Live · Changed defaults to solve mirror image bug and design orientation.
Messenger 2009 · Added arm adjustment due to width of physical arms.
· Saving advanced fields to MGS file.
14.0.8064.0206
· Made shift lever edit box editable.
78,828 Banding ellipse improvements:
FreeZ Online TV · There is always an ellipse.
1.12 · A radio is used to edit begin or end or center.
· clicking left button continues with the same ellipse.
68,081 · fine tune with arrow keys, cross hairs
RemoveWGA 1.2 · Use pixmap to do immediate repaints for normal painting of drawing area.
50,610 · Prev Curr Next use press and hold.
· Remove Refresh and dirty since all designs are kept neat at all times.
Y! Multi Messenger · Made two windows. Esc to toggle maximize.
8.x and 9.x · Changed the way Basic/Advanced/circle studs work.
48,645 · Apply number to Undo, Redo, Prev, Next as well as Draw.
· Added buttons size (to show if designs are off page), slow (preview draw), ellipse
Windows Live
· (to hide ellipse).
Messenger · Grouped drawing ap...
8.5.1302.1018
48,622
Softpedia guarantees that
Nexus Radio 3.2.2 Magic Designer 1.2 is 100%
46,964 CLEAN, which means it does
Microsoft Office not contain any form of
2007 malware, including spyware,
38,321 viruses, trojans and
backdoors. [read more >]
DVD Shrink
3.2.0.15 magic designer | trigonometrical simulation | accurate drawing | magic designer
TAGS: SHARE THIS
36,195 | trigonometry | trigonometrical
WEEK'S BEST
SUBMIT PROGRAM | ADVERTISE | GET HELP | SEND US FEEDBACK | RSS FEEDS | ENTER NEWS SITE | ENGLISH BOARD | ROMANIAN FORUM
© 2001 - 2009 Softpedia. All rights reserved. Copyright Information | Privacy Policy | Terms of Use | Update your software | Archive Go
Search
Softpedia™ and the Softpedia™ logo are registered
trademarks of SoftNews NET SRL.
Size
PDF
MGS
Hide
http://akatz712.freehostia.com/Browser_Version_AJAX_canvas.htm7/3/2009 7:38:59 PM
MagicDesigner - Basic
In order to make a design you need 5 things to be in place. The pair of pen arms counts as
two. The setting of the shift lever. The circular paper. And a pen. The computer selects a white
paper and thin black pen for you by default.
1. Make a paper by pressing Max Circle (or make your own ellipse or circle). In 2009, the
Max Circle comes automatically.
2. Make the desired settings. (Letters on both arms, and setting for the shift lever)
3. Press the Draw button.
4. Repeat steps 2 and 3. Or, you can go back to 1.
There are two types of numbers on this tab. One are size
units and the other are angle units. The Center is given the
value of 6000, since that is a round number with many
divisors. And, because the radius of the center gear in the
toy is 3 inches. The sizes of the Gears, Peg offsets, and
Arms are all to be considered relative to each other and to
the Center. For example, doubling all of these would
produce an identical design. Take note that the program
tries to prevent duplicate designs, but it does not check this
case.
The Basic tab only gives fixed values for the arms (each
letter is 1/12 the size of the center gear) and shift lever (one
degree in a 60 degree range). The Advanced tabs allow
finer adjustments, as well as experimenting with arm
lengths not possible. Keep in mind that many designs
simply cannot be made with arbitrary values, since if the
arms never meet, the program will tell you that in the status
line, and nothing will appear in the draw window. Also, note
that sometimes a design is drawn, and nothing appears in
the draw window. This means that the design is outside of
the visible window. You can edit and clip the design and
draw again to confirm that. And if the circle is also larger
than the window, you can edit it, and shrink it to see what is
drawn.
These parameters deal with the line being drawn. There are 4 choices for line
thickness. The default is 1. That is the thinnest and most precise line. However,
when taking snapshots of the drawing window, sometimes one will end up with
a nicer looking graphic later on, with some of the thicker lines. I stopped at 4,
since there is very little visual difference between 3 and 4, so why go to 5.
There is a special effect I found called hollow line. Draw a design with a line
thickness of 3, and then draw the same design again, except match the line
color to the background color, and use a line width of 1. The order of designs is
important.
There are two small square colored buttons. Both show the current selected color as
well as bring up a color selection dialog, to change the color. The button on the left is
for the line being drawn. The button on the right is for the background color. Be aware
that these buttons do not have the 3D depress action when you click on it. That was a
technical trade off. The default line color is black, and the default background color is
white. It is best to change the background color first, since if you change it after alot
of good designs are drawn, they may no longer be visible or not have a nice look. Of
course, one can change the background color at any time, or change any individual
design.
http://akatz712.freehostia.com/Common.html7/3/2009 7:39:02 PM
MagicDesigner - Button Operations
The purpose of ellipse controls is to allow one to extend the original toy to allow
placement of one or more designs in different places on an imaginary paper. This is
most similar to if one took the papers from Magic Designer and made a scrap book. But
it gives more control, since one can vary both the size and flatness of each ellipse. The
ellipse becomes part of the specification of each design, just like the arm and shift lever
settings.
The Max Circle button replaces the current ellipse with a circle calculated to be the
largest one which is possible with the current drawing area. Initially that would be
575x575. But the area can be resized. On my computer monitor 751x751 is the size after
the Esc key is pressed.
The second button is useful, since an ellipse which is not a circle makes flattened
designs, as one would imagine. Normally one wants a circle, since that is what the toy
used, and what is most visually appealing. So, press on the circle button and it will
change the ellipse into the smaller circle. What I mean by that, is that if an ellipse is 200
tall and 100 wide, the resulting circle will be 100x100.
The next button, which has 4 arrows pointing to the center, will center the ellipse or
circle in the middle of the drawing window. This is most useful if you Esc after you
made your ellipse or circle.
The Ellipse button toggles the visibility of the ellipse. Sometimes the ellipse itself
interferes with being able to see the designs. It is not necessary to press this button if
one wants to use the mouse or other ellipse functions, since the ellipse will be made
visible.
The two sliders are used in zooming. In this picture they are disabled, since Begin is
checked. The left slider is the gross one. It has 20 settings starting at 10 and going to
3810. That is the diameter of the larger axis of the ellipse. The right slider goes from 0
to 199, so when added to the left gives the actual zoomed size. One cannot use the
mouse on the drawing area when in Zoom mode. The arrow keys can also be used and
go smoothly from right to left slider. Remember that when the ellipse is large, it
disappears off the screen both in positive and negative numbers. A design will never be
visible in negative numbers, even though the program will say that it is drawn. The Bxy
and Exy give the extent of the current ellipse. What large ellipses are mainly useful for
There are four modes selected from the radio set. Begin allows the mouse to be used to
change one corner of the ellipse. The End mode allows changes to the opposite corner.
In the old version of the program, Begin was done when one clicked on the mouse
button, and all dragging was to the End. This new method gives greater control. The
Center mode is used to move the entire ellipse around the drawing area by holding to its
center. And Zoom I just discussed.
The program will turn the crank handle for you (in fact it happens so fast that you
are not aware of a handle). That is what the Draw button is all about.
To draw a design, simply press the Draw button. It stands in the center of things,
since it is the most used button. It reads all of the settings and draws a design
according to them. It will usually not let you do the same design twice, since that
tends to confuse things. There are exceptions. But this was mainly to stop a
common mistake, where someone pressed the Draw several times in a row without
changing anything.
There is a Slow button. When this is pressed, the design is drawn much slower
(roughly 25 seconds) in a preview mode so you can see what it will be. You may
like this because it gives the same sensation one had as a child when using the
original toy, and one was anticipating what may happen.
Not all settings are able to produce a design. If the design is impossible to draw,
you will see a message in the status line. In addition to that, some designs are partly
drawn or partly visible. The partly drawn ones are cases where only part of the
design would appear on the paper. This would be the same as if on the original toy,
a design was drawn until one could not do it; one lifted the arms up and placed
them back down when the design became possible again. The toy instructions
specifically tell you not to do this, since it may damage the mechanism.
Fine is checked means to sample the design 360 times rather than 120
times per rotation of the crank. This is rarely needed. If you see the curve to
have some flattening edit it with fine checked to see if that improves it.
The number field next to Draw is the most powerful new feature of the new
version. It will make that many designs when you press Draw. It starts with
settings at the selected design (either the one last drawn or one reached by
navigation). And morphs to the settings. Most of the possible settings can
be morphed. If one of others (such as Fine or Clip) are different between
selected design and current settings, it will not draw. The two most likely
changes to be made are morphing between ellipses, such as a zoomed
one, and selecting a range in the shift lever. It starts at some delta after the
selected design. An example would be draw CC10 and change the shift
lever to 30 and enter the number 10 and press Draw. It will draw CC:12, 14,
16, 18, 20, 22, 24, 26, 28, 30. It is also important to know that if one
entered 11, that the designs would still get drawn, but they would be drawn
in fractional degrees. These designs cannot be expressed using the Basic
tab, so they would show 00 in the Shift lever when navigating or editing.
There are three ways designs can look on the paper. The standard way is
called Nice. It is a smooth curve using anti-aliasing technology like in PDF
files. Dots shows a dot at each sample point. Dots gives a similar feeling as
Slow, since it shows the speed of how the curve was drawn. Using dots
with larger Stroke shows little squares. Jagged is a jagged curve using no
anti-aliasing. This has the same appearance as the old version of this
program, even though the underlying technique is different. Its main
purpose is to be used for designs to be exported to Paint programs where
one colors in the areas between designs. Anti-aliased designs leave color
residues.
The button with a pencil on it is called an Edit button. You would usually use this,
if you just did a Draw and are not happy with it. It will undo and erase the design
from the screen. It is important to remember that you cannot get a design back if
you press Edit twice in a row.
There are two differences between the Edit and Undo buttons. One is that Edit
changes the design settings and Undo does not. If you do not like the design you
can press either one. If you really change your mind again, you can press Draw
after Edit, or press Redo after Undo.
The buttons under the pencil are Undo and Redo. Each time you Undo a design, it
is added to the Undo stack. And when you press Redo, it takes the design off the
top of the stack and draws it. These buttons, combined with the following buttons I
will discuss, form a completely functional editing package. The one thing lacking
is the ability to change the same thing about several designs at once. The number
next to Draw is also used by Undo and Redo.
The design suite or session should be seen as list, which you can move from one
end of to the other. Sometimes the order that designs are drawn is important, and
most times it is not. To navigate the designs you can press the Previous and Next
buttons (backwards arrow is previous). The purpose of the current button (blue
circle) is to make sure you know what design is selected. The concept of selecting a
design is very useful if you want to Edit or Undo that one. Also, any designs drawn
from the Draw or Redo buttons is placed after the selected design and before the
following design in this list. This may or may not be useful. If you get confused
about the order, press Previous (or Next) repeatedly. The Previous will cycle to the
last design after the first, and the Next will cycle to the first design after the last.
The way these navigation buttons work, is that you press and hold the button down
for as long as you want to see the design. The design is the only design seen, and
the entire design session is restored when releasing the button using the mouse.
The first column of buttons corresponds to a typical file menu. They are New,
Load, and Save. There is no separate Save as, since the file dialog is versatile. New
can be used as a start over. It removes all of the designs. If you want to restore the
default design settings, use the button on the Advanced tab. The New and Load
button will ask you for a confirmation if you have not saved first. The Load button
will allow you to select a previously saved file. The Load process does not remove
the Undo/Redo stack. So if you want to merge two design sessions, first Undo
everything, then Load, then Redo. The Save button will allow you to save all of the
designs made as well as the current background color setting. It is important to
know, that the actual picture is not being saved. Only the parameters used to make
each design. To save the actual picture, you have two options. The Copy to
clipboard or the PDF buttons.
The Help button allows access to these pages from the Application. Help is
viewed in the web browser.
The PDF button is another form of copy. It will bring up a file dialog to ask where
to save this PDF file. Then the program will create the file and launch the PDF
viewer showing this PDF. Depending on system load and design session
complexity, this can take a few seconds, so please be patient. The PDF is scaled to
the current size of the rectangular paper drawing area. There is a Landscape check
box. This will write the PDF in landscape mode. This makes better use of the PDF
in most cases, since most of the time the drawing area will be wide screen, and the
PDF is like paper in print out. One can print the PDF using the PDF viewer, or
dynamically scale the designs. This is the main advantage of a PDF over a Paint
program.
The Size button shows the x,y pixel extents of the paper drawing area, and the
design session. This is most useful since designs can be drawn off paper. They are
not actually drawn because of the operating system. But they are known internally.
So if it shows designs off paper, one can resize the drawing area to possibly see
these designs.
Help with the Status Line and Keyboard of the Magic Designer
Windows Program
1. Bx,y: The pixel position of the corner the ellipse. Note that it could be the any of the 4
corners.
2. Ex,y: The pixel position of the opposite to Bx,y corner of the ellipse. Remember that this
ellipse represents a virtual paper. These pixel positions can be negative if you zoom. It is
also possible to band an ellipse into negative numbers. The point 0.0 is the upper left
corner of the Drawing area. Unless you resize the program, the bottom right corner is
575, 575. What is shown in this image results when the user presses the Max circle
button.
3. This field is set whenever the mouse is in the drawing window area. It is the current
mouse position. When you leave the drawing window the field is not updated. However, if
holding down the mouse button in the process of banding an ellipse, this field is
continually updated.
4. This shows: 'selected of total' designs. It will show 0 of 0 is there is no designs. And
unless one uses the Prev or Next buttons, these two numbers will always be the same.
When pressing the blue circle button, the selected design can be seen.
5. This is the size of the Undo stack. Every time you press Undo it moves the design from
the total just mentioned. Since the total works like a queue and the Undo is a stack, it is
possible to reorder the sequence that the designs are drawn. When you press Redo, it
draws the last design which was Undo.
6. This is a general message field. Here is a list of all the messages:
Of the 18 buttons in the application, 13 of them have keyboard shortcuts. Painted on these
buttons is a hint to what these are. Here is a list:
● F1 - Help
● F2 - Undo
● F3 - Redo
● F4 - Previous
● F5 - Current
● F6 - Next
● F7 - Max circle
● F8 - Circle
● F9 - Center
● F10 - Do the current ellipse mode with an up arrow key times 20 (Zoom shrink)
● F11 - Do the current ellipse mode with a down arrow key times 20 (Zoom expand)
● F12 - Go to the next ellipse mode (Begin -> End -> Center -> Zoom -> Begin)
● Ctrl+C - Copy to clipboard
● P - print to PDF
● Esc - toggle full screen for Drawing area.
● Arrow keys - Up Left Down Right - Depends on Ellipse mode. With the exception of
Zoom, the arrow keys move the ellipse in that direction. Begin and End stretch or
compress and Center moves. With Zoom, Up and Left are the same, and Down and
Right same.
The main usefulness of giving these functions above keyboard shortcuts, is so that you can
use most of Magic Designer in this full screen mode. The buttons that are not given keyboard
shortcuts are those which would not make sense. For example, Edit and Draw rely upon seeing
what is in the controls. And typically before Edit, one would press Current. So if the design is
only visible in full screen mode, one can quickly toggle to it, and toggle back and do the Editing
and then Draw. And even though you may not see it being drawn, when toggling back to full
screen, it may be visible.
The physical crank sometimes interferes with some drawings. This does not happen on the
computer.
The clipping can be turned off, thus drawing off the paper.
A design can be discontinuous, meaning that parts of it are impossible to draw. This can be
done with the toy, but it is very difficult and can damage it.
Various changes in configurations. This is discussed elsewhere. The physical toy is one case
of a family of complex curved shape generators.
To save what is on the drawing window, one must use a screen capture technique or program.
There is no point for this program to have this capability, since each program is best at what it
was designed to do. Here is a recommended screen capture program: MWSnap
One additional thing to do, which is very popular, is to capture the designs as a picture and
then paste it into a paint program, and color it in. Windows comes with Paint, but I would also
recommend this program: Paint.net
Update May 15, 2007: A function has been added to a new button to copy the drawing window
to the clipboard so it can be pasted into any graphics viewer or paint program. This makes it
unnecessary to use a screen capture program.
Differences between the Windows (Download) version and the Browser Version:
● The Basic parameters are not overridden by the Advanced parameters. This means that
the arms are calculated based upon them, in the same way as the From Basic button
works. And it means that there is no slider for the left Gear angle to go through all 360
degrees. 2009: The design philosophy for both versions is now that the Basic and
Advanced parameters have to work together. And while sometimes things cannot be
expressed in Basic parameters, this must be taken into account.
● The starting angles of the gears and pegs are not in the advanced tab. The reason for
this, is that it is hard to explain. 2009: This is bull. The idea is to have the Browser
version be fully functional. Since 2007 it has become clear that all new software
development in the world is web based.
● Not all circle stud configurations are supported. This is related to the above. 2009 Ditto.
● The prime and not prime check box is not offered. It is thought this would only be useful
with some gear angles. 2009 Ditto.
● The advanced parameters are only offered in a gross way. There are several reasons
for this. One is that it is easier to explain. Two is that there is no need for data validation.
Three is that rotations can be calculated. 2009 Ditto. But as of this date, 6/30/2009, the
Browser version does not have all of the Advanced parameters nor the circle studs.
● No ability to load or save a design session. ** will find a way to do this ** (see below)
This is in Browser version but relies on a server.
● No ability to undo except in reverse of the order drawn. 2009: Now in Browser version.
● No ability to redo or edit a previous design. 2009: Now in Browser version.
● Clipping works differently. It is currently not an option, and works in an absolute way to
the drawing area. In the Windows version it works with an imaginary paper. 2009: Now
in Browser version.
● Make sub drawing areas. With the Windows program this involves placing an ellipse
anywhere, using banding. 2009 Now in Browser version.
● No slow option. It does not apply since Walter Zorn drawing is wait and then pop. I need
to look into canvas for dynamic drawing. 2009: Canvas and javascript timeout allows this.
● Number of samples is fixed at 7200 per rotation due to the slower execution of
javascript. The default for the windows version is 18000, but can be increased, since in
zooming, some designs need more samples. 2009: This issue pretty much goes away.
But both program versions have a 'fine' option which makes 3 times as many samples. It
is rarely needed, though.
The ability to save a design was implemented using a PHP program and the mySQL database
provided by the cp-free server. The rows correspond exactly to what is stored by the Windows
program. One thing I found out, was that PHP will return NOTHING if there is a syntax error.
Also, PHP will make a new page in the browser, so to get back to the drawing requires the
back button. As a side effect of this, I place on that page the text needed for the Windows
program. So, for people who have the Windows program, and make designs with the Browser
version, they can save their designs for loading into the Windows program. In Firefox, if you
save that page as a text file, and name it 'something.mgs', and then load that file into the
Windows version, you will see the exact same designs. Actually, there is a subtle difference,
which deals with the tiny DIVs, and I am not sure why that is. Why the C and javascript
versions would round differently.
There is a general issue (resolved) with the storing of colors. In Windows, the (R,G,B) is stored
with R in the low byte. On the Web, colors are given this text string format: #RRGGBB. Those
are 6 hex digits.
Finally, as of today, the Opera browser does not store the designs (but does store the
background color) to the database. The values in the data is not getting to the PHP for that
part, and I am not sure why.
Internet Explorer has a different problem, which was there all along. Shapes made with Walter
Zorn's library, which is what is used in the Browser program, go away if you use the back and
forward button in the browser. I did a Start button to clean things up, because the browser
refresh was not a clean start for Internet Explorer. However, it is disturbing for these nice
shapes to vanish when they get saved. It seems as if Internet Explorer is not consistent. It tries
hard to maintain values entered into forms, and yet loses the colors too easily. Also, the way
that things are laid out in Internet Explorer is ugly, so that my Advanced parameters which are
hidden, still makes the browser think that it needs to scroll, when it should not. I wonder why
Internet Explorer is the leading browser, with all of these problems.
Using a technique which has been called AJAX, PHP does not need to generate full pages. I
found a way to treat the server as a servant, and leave the client in control. I wrote a general
purpose AJAX PHP caller, based upon something I found online at this site: AJAX Form POST
Request .
I have changed the placement of this exact duplicate session MGS file, which is identical to the
Windows Euphoria version. It is a button to toggle a hidden DIV, just like for the Advanced
parameters. If the user also has the Windows program, they can select and copy using the
mouse the contents of that DIV, and paste it into a text editor like Notepad, and save it as a file.
MGS. Then clicking on it should bring up an identical design to what is seen in the browser.
I never resolved the problem with Opera browser with PHP. But using AJAX seems to have
eliminated that problem.
The other main problem with Internet Explorer, is that it does a scrolling of the browser, even
though the DIVs are hidden from view.
Still to do:
The problems with Internet Explorer are that the text is not handled in the same way. A blank
line is placed under the text and this makes some things appear larger than they need to be,
like in the Advanced parameters. And, there is a known bug in innerHTML for options in a
select list. But the work around is also giving me some problems. There are many ways to do
the same thing in javascript, and I think creating elements is the most direct method. It turned
out that the innerHTML was not the main issue. Internet Explorer does not use appendChild
method, but uses the add method instead. Actually, things are not that simple. With IE, the
appendChild method works in some cases and not others. I am making use of Walter Zorn's
function chkDHTM having been called to know what to use.
Loading a saved design session makes 3 PHP programs, and I wrote them all with the same
idea. No HTML code or code of any form is generated. PHP is only being used to save or
return the data from SQL database. I came up with the idea to send rows with a linefeed
(ASCII 10) in between each one, and the javascript uses the responseText.split("\n") to get
each line into an array. The other thing I do, which is a bit of extra work, is to use the Windows
program MGS file format in the PHP program.
It turns out that only the Opera browser shows each design as it is being loaded, while IE and
Firefox wait until all of the designs are loaded and it displays them all. Perhaps there should be
a message saying to wait.
I found out that the extra blank lines in Internet Explorer are due to the Forms having margins
around them. To standardize all the browsers to look the same, CSS is used to set the margins
for Forms. I needed Forms because the sliders javascript I am using requires it. Forms makes
the addressing of elements easier, but one can use id in any element to find it globally.
One issue remains. The subtle difference which I mentioned before on April 11. This is due to
the way zoom is used. Both programs do use 531, I think, but when the browser version writes
MGS file it makes a 532. I need to standardize the zoom factor, and make sure MGS are
written okay, and make sure that existing saved designs loaded back are going to give a legal
zoom factor (-12 to 12 with 0 for none).
I have been working on another computer program called Complex Curves Shapes Generator.
The development of this program made me realize that I can leverage all that I had done for
Magic Designer. So, I made a stripped down application which has everything in Magic
Designer other than what appears on the Basic and Advanced tabs. And Complex Curves
Shapes Generator has another method of specifying designs. It is not based on any particular
physical toy, but is loosely based on Spirograph. It actually comes from a Flash program I
found on the web: Isotope 2
Two ideas which I wish to work on with this program are color effects inside a design, and
being able to interact with the design as it is being drawn. I had some problems making the
color routines both callable externally from Euphoria and from inside of the C code. I got
something which works, but I am not sure it is the correct or elegant way to program.
Being able to interact is easier if the whole thing is programmed in Euphoria. So, I also
compared C and Euphoria rewritten versions of the drawing logic. I used a drawing logic which
I fit into that stripped down application which I call Generic Shapes. I felt that I should stay with
C for the drawing, since it is faster. So, I am thinking at both ends. I am thinking for maximum
possible speed, and also for slowness so I can change a design as it is being drawn. Perhaps I
need to maintain both versions, and use the Euphoria drawing logic for the slow side. That is
extra work, and I prefer only having one way, so we will see.
In the course of speed, I finally realized how to fix the number one problem with Magic
Designer and any other drawing program. And that is, that to be professional, it needs to
repaint itself. This is why I am releasing Magic Designer as a next version as soon as possible.
How does this repaint work? It is another extension of the DIV idea. The early versions of
Magic Designer simply plotted a point and a line was drawn from the previous point. And when
I wrote the Browser version, and used Walter Zorn's library, I realized that all curves were a
mass of tiny DIVs. Each of these DIVs has either length or width, a color, a thickness. So, the
program can keep track of these emulated DIVs in the drawing process, like the browser keeps
track of them. It simply has an array of C structures having position, width/length, color,
thickness, and orientation. It takes 16 bytes per DIV and I am allowing 100,000 DIVs per
design. That is the buffer, and when a design is done, it is copied to what length was used.
Magic Designer designs typically have less than 1000 segments (identical word to DIV). And
when Refresh is pressed or when Windows generates a Paint message to the drawing
window, these DIVs are replayed back. This saves the time to recalculate. I found that this is
anywhere from 50% to many times more faster.
There have been many enhancements to the Magic Designer Windows version. The Browser
version has not changed.
● Automatic Repaint.
● Copy to Clipboard.
● Connect to these Help pages from the application.
● Right mouse click to center the ellipse anywhere.
● Esc key to toggle full screen mode.
● 13 buttons have keyboard shortcuts.
● Clean up GUI to make 120 DPI okay.
● Increase usable drawing window from 531 to 552. This means the Browser version will
need to change.
The following discusses various challenges faced and overcome in the Browser and Download
versions from April to July 2009.
Using the real Magic Designer is about drawing designs on paper. The paper provided is
circular paper, which is notched to be inserted securely in the notches in the center area.
There is a pair of arms, with holes on each arm, connected at one end. It is similar to a pair of
scissors. However, at the place of connection is a holder for a pen or pencil. To specify one
design, the user places the arms onto pegs on two smaller gears. The holes are marked with
letters from A to R. 'A' produces the longest arm, and 'R' the shortest. 'J' gives an arm length
closest to the center of the paper. The left gear is placed according to a shift lever which can
be set. This lever is in numbers from 10 to 70. So, the user will specify a design with two letters
and a number. For example, 45BC means insert left arm at hole B onto the peg on the left
gear, and insert right arm at hole C onto the peg on the right gear, and slide the shift lever to
45. The shift lever has a metal thing you push down to slide, and once a number is selected,
one lets go and it locks into place. The number 70 gives the maximum distance between the
two gears, and the number 10 gives the minimum distance. To do the actual drawing, the user
places two fingers in finger depressions near the place that the arms are connected, and
provides light pressure so that the pen or pencil point is in contact with the paper. Then with
the other hand, the user turns a crank handle, which in turn moves the center containing the
paper, which also moves the two gears. It takes a full rotation of the center to complete the
design. One will typically draw several (3-5) designs on one paper and be satisfied with the
result. But there is no real limit to the number of designs one can place on one piece of paper.
I had to refer to alot of the hardware of the real Magic Designer to describe how it is used. But
from this point, I will describe the hardware of its internal mechanisms, and no longer mention
the hardware related to the user (such as how to move the shift lever).
There are actually 3 gears which I will call center, left, and right. And the shift lever actually
measures degrees (360 being a circle). A 4th gear of the crank handle is part of the user
related hardware. The shift lever is connected underneath to the left gear. Being able to
emulate magic designer drawing on the computer required a precise measurement of the
hardware. So, I am now jumping ahead a bit by saying that I am treating this designer as polar
coordinates. That means that the center of center is the point (0,0), and 0 radians (and
degrees) is to the far right, and goes in the forward direction counter clockwise. I came up with
the following measurements presented here as a list:
Finally, in addition to this hardware are two fixed pegs known as circle studs. If the user places
the left and right arms onto the left and right circle studs, a circle is drawn on the paper. If the
user places one of the arms on a gear peg and the other on a circle stud, other designs are
possible. I have mentioned this in the user section. But the existence of these circle studs
helped alot in the mathematical understanding of the parameters of the instrument. For the
purpose of this section of this document, the measurements are:
● The right circle stud is at 0 degrees and the left circle stud is at 180 degrees. These are
analogous to the angles of the gears mentioned above and not the angles of the pegs.
Since circle studs are not on gears, one has to imagine them to be. One considers the
peg angles to be 0, as well as the measurement from peg to the center of imaginary
gear to be 0.
● The distance from the circle studs to the center of imaginary gears is 1/4 inch. This
means that the imaginary gears diameter is 1/2 inch.
It is important to recognize, that the ratio of sizes between the gears and the center determines
the symmetry of the designs. In the case of the Magic Designer, there is 6 sided symmetry,
which is the same as the Star of David or a snowflake.
To emulate the drawing on the computer, I thought of it as sampling points and connecting the
dots [later on I decided not to connect the dots, and in 2009 the dots are connected by bezier
curves]. The main intermediate goal for finding a point is to figure out where on the paper the
arms intersect. A standard design takes one full rotation to complete, so that is 360 degrees.
So, samples are taken which correspond to a fixed fraction of that. For example, on a very
slow computer in my first emulation on the Atari computer, circa 1981, I took 360 samples. And
in my computer application, I have decided to sample 18000 times (or every 1/50 of a degree).
In 2009, only 120 samples are needed (360 in Fine mode). But between each sample is a
bezier curve which has its own internal algorithm to draw, and roughly corresponds to 150, so
one can still stay 18000 samples. Obviously, the place on the paper is changing in a very
dynamic way. In fact, it is based on trigonometry (sines and cosines).
The first step to determining the design in the algorithm, is to know the starting parameters,
which are a combination of the hardware measurements and the user's particular design. The
shift lever controls both the starting left gear angle and the left peg angle. The letters of the
arms specifies the arm lengths. It is the movement of the pegs relative to one another that
produces the design itself. That is why circle studs only make circles.
Set up the relative coordinate system. There is a center circle, so I will assign 0,0 to the center
of that circle. And according to the rules of polar coordinates, one can assign 0 degrees or 0
radians to the right direction, and angle increases going counter clockwise.
The rule of this device is that there are 2 circles, which I will call gears, which rotate when the
center circle rotates. One of these gears is fixed always, since there are 2 gears and one can
say that the other is always relative to the first one. And there is a place on the rim of the
center circle, called angle gearR, at which it is placed. The other gearL has a starting point for
any particular design, and this is called angle gearL. The shift lever, which is connected
underneath to gearL, which is calibrated in degrees and labeled from 10 to 70, gives the
starting point of any design.
Angle gearR is 315. The shift lever of 10 is at 135 degrees. The shift lever at 70 is at 75
degrees. It just so happens that a shift lever of 10 is directly opposite to the angle gearR. The
angle of gearL is 150 degrees more than angle of the shift lever, due to that underneath thing.
On both gears is a peg. The distance of the peg from the center of the gear determines the
amount of movement in the design.
Since gearR is fixed, and the gear rotates, one can decide to stop it when the peg on gearR,
which we will call pegR, is at an angle of 0. On the mechanical device, the gears cannot be
physically in the same place. However, on the computer they can be. As we will see, this
makes for some interesting ideas. The point of this, is to determine a starting angle for pegL.
This is a hard way to do it. So, from observation, I have found that when the shift lever is at 57,
angles of pegL and pegR match. The interesting thing about gears, is that it takes around 52
degrees for the pegs angles to go back in alignment. One can see that by looking at the pegs
at shift lever 70. Angle of pegL is 270 when the angle of pegR is 0. This seems correct, since
the designers of this toy seemed to have done things with sensible numbers. In 2009, this was
changed so that Angle of pegL is 45 when angle of PegR is 135. This change has the effect of
simply holding and rotating the circular paper. So physically it does not matter, but on a
computer screen it does matter.
To summarize, we have these values for the precise measurement of the hardware:
Radius of center = 3
Radius of gearR = 0.5
Radius of gearL = 0.5
Angle of gearR = 315
Distance of pegR from center of gearR = 0.375
Distance of pegL from center of gearL = 0.375
Angle of gearL = 315 (gearR) - 180 (seen on other side of gearR) + 10 (an arbitrary number
they use) + 150 = 295 - shift lever value.
Angle of pegR is assigned 0. This indicates an arbitrary start of the drawing of the design with
the crank handle.
And finally, Angle of pegL = 270 (when shift lever is 70), or more accurately 270 more than the
angle of pegR.
As one turns the center circle with the turn crank handle, it rotates, so we need to decide
where in space we are located. The goal is to find the point where the arms intersect. We have
not yet discussed the arms.
There is a set of 2 arms with holes down the lengths which are placed over the pegs for each
design. This in effect allows one to make arms of any length (within reason). The length of the
arm when hole A is in a peg is measured as 5 3/4 inches, and for B it is 5 1/2 inches, and so
on. The last letter is R, which is 1 1/2 inches. When one gets to R, there is a mathematical
distortion because these arms do not get thinner as they go from A to R. The formula to
A pen is placed in a holder at the intersection of the arms, and it writes on the paper. As the
crank is turned, this causes the entire coordinate system to rotate. The rotation direction is
very important. Basically, if the rotation angle is increasing, the angles of the pegs on the gears
are decreasing!
This discussion is continued with the math which can be found: Programming the Magic
Designer
The Magic Designer is one instance of a complex curved shape generator. A CCSG. There are
different classes of CCSGs. To define the class in which the Magic Designer belongs, look at
the parameters which were measured, and vary them. But an underlying structure remains,
called degrees of freedom. The following are degrees of freedom for this class of CCSG, with
comments for the actual physical device added:
In 1981, I got my first computer, an Atari 400. It had great graphics for the computer of that
era, and a Basic language. Here is a website which discusses the Atari computers: Wiki on
Atari
I developed the code to draw a design. However, this was before graphical user interfaces,
and before hard disks, and even 180K floppy disk drives were several hundred dollars. So I
did not have a useful way to interact with the program. Basically one did that with the joy
stick. Looking back, I could have used that to select one number and two letters. That was
all that was needed. I think it took a considerable amount of time to draw a design on a high
resolution screen, which was 320 x 192. That was one color and I plotted a point for 360
degrees of angle. (The current program can draw a design in a 575 x 575 window in any
color with 7200 calculated points, in a fraction of a second.) I knew that the floating point
emulation in Atari Basic was very slow, so I wanted to do it in assembly language, but the
6502 8 bit CPU does not support floating point operations in hardware. Realizing this, I
stopped working on speeding this up.
In 1994, I bought my first PC. It was made by CyberMax and it was a 486DX50 running
Windows 3.11. That was a 16 bit version of Windows. Actually things were more
complicated. I learned the Windows API, which was 16 bit at that time. I used Turbo C++ (in
C rather than C++) to rewrite the magic designer math algorithm from Atari Basic. When I
upgraded to Windows 95, my program broke and I lost interest in it for many years. What
was important, was that it was my first experience with Windows style programming with
what is called and IDE. When programming in Windows, it is a matter of placing controls,
which the user uses to set up parameters and to run parts of the application, and writing
code to respond to events that the Windows operating system captures and gives to these
controls. Typical events would be the mouse moving or the user pressing a button on the
screen.
Early in 2007 I was having fun looking for free software. Free software is not timed trial
versions, or versions with limited capabilities, or versions where there are annoying things
like a company logo. Nor is free software, shareware, which means the person who wrote
the software is begging for a fee based upon your conscience to pay it. Free software is
software you can download and use as is. It often comes with a support community of more
experienced users, as well as source code in some cases. Examples of freeware are
Audacity, the digital audio editor, Thunderbird, the email client program, and VLC Media
player. Then I happened to see the Watcom C compiler. Watcom was the best names from
the old days for language compilers. And now it is free software. In 2009, I switched to
Bloodshed Dev-C++ Here is a site which lists the well known C compilers: Free C/C++
Compilers
Basically, the redoing of the magic designer software divided into two parts. The first was to
get the software working in C language again by using the Watcom compiler, debugger (it is
the most stable low level debugger I have seen), and numerous manuals. I also downloaded
the Microsoft Windows 2004 SDK, which is a place to look up how to call any Windows
function in C language. I picked 2004, since I bought my computer in 2004. It is a Dell
Dimension 3000 with a 2.4 GHz Celeron processor. Then I realized that I wanted a
development tool, which is called an IDE, which can be used to visually place controls, and
it generates source code for you. You still have to write the inside of event handlers.
Basically, you visually place the controls, set properties of these controls, and there is a
matrix of code control x event. I found this free language called Euphoria. It is interpreted
like Basic, but has a syntax like a higher level C language. So, it is very easy for me to learn.
They also claim it is very high performance. However, that was not my worry, since I already
structured the actually drawing function in C language which was compiled by the Watcom
compiler. I made it into a DLL to be called from the Euphoria program. Euphoria has a
Windows library, with key developer Derek Parnell, and the IDE, with key developer Judith
Evans. Here is the website: The Euphoria Programming Language . The people there have
been very helpful.
My user interface design is based on the idea of saving screen space for a maximum sized
square drawing window. So, I decided to use buttons rather than a standard menu. And I
decided to stick with my original idea of having side by side parameters and draw area. My
technical issues with Euphoria were tool tips which I use for help, and colored buttons.
There was a colored button module, but I wanted something which I could simply change
the color of the button in the program. So, I used a child window for the colored button. For
the tool tips, I needed some help to make subfields in the status line. The status line is the
major feedback to the user, so I had to make a sacrifice and give up drawing area for it.
Derek provided me with the code to do the status line. But I am waiting on him for some
improvements.
The next part of this page will discuss the way that the drawing of a design is implemented.
It is best to read the page on the Magic designer mentioned first.
Determine the fixed points of the center of gears, relative to center of the center gear (where
the paper is located). Using polar coordinates, this is r = radius of center + radius of gear,
and theta is the angle of the gear. Polar coordinates start theta=0 as due East, and rotate
counter clockwise, while radius is from the center of the center.
Determine the starting angles of the pegs. This is similar to a spirograph problem. The
question is, how many times does a quarter rotate, when it is rotated around another
quarter? It is twice, as described in this website: http://
forum.physorg.com/index.php?act=Print&client=printer&f=20&t=9512
"A wheel rotates three times in rolling once around a fixed wheel with twice the diameter of
the rolling wheel. Since the circumference of the rolling wheel is half that of the larger one,
this produces two rotations with respect to the fixed wheel, and the revolution adds a third
rotation with respect to an observer from above. The general formula, where 'a' is the
diameter of the fixed wheel and 'b' is the diameter of the rolling wheel, is (a/b)+1. This gives
the number of rotations for one revolution. Thus if the rolling wheel has a diameter twice that
of the fixed wheel, it rotates 1.5 times. The rolling wheel, as it gets larger, approaches a limit
of one rotation per revolution-a limit that is achieved only when it rolls around a degenerate
'circle' of zero diameter, namely a point."
So, since the ratio of gear to the center circle is 1:6, it rotates 7 times around. This means
that it only takes 51.5 (360/7) degrees of rotation for the peg to return to its original angle.
So, to calculate the starting angle of peg for the design, ((center/gear)+1) * (70-shift lever) +
starting value (270).
In a loop:
Imagine that the crank is being turned a tiny bit for each calculation. And then these points
will be plotted. To make it a curve, one hopes that each point is continuous to the point
before. Of course this is a pixel screen, but the points are maintained as floating point
numbers, and then rounded to the nearest integer The concept of segments is used now,
because this was how I needed to make DIVs to make the Web Browser version of the
program. A segment is a rectangle of either 1xn or nx1 consecutive pixels. More on this later
on. 2009 update is that I use Canvas and Cairo. Canvas is an HTML feature which supports
2-D vector drawing inside of rectangle. Firefox implemented Canvas using Cairo, which is a
low level 2-D drawing library. And this is what I am now using in both the download and the
browser versions. Floating point numbers are maintained and the curves are bezier curves
with antialiasing, like in a PDF.
Determine the fixed points of the pegs, relative to the center of the gears. Using polar
coordinates, this is r = distance from peg to center of gear and theta = starting value -
(center/gear)*(how far in the turn). Note that the spirograph adjustment is not used, since
the gears are fixed once the design begins. Also note, that how far into the turn is
subtracted, since the gears are turning clockwise! Convert these to x , y and add (vectors) to
the earlier calculation of center of gears to center of center.
Calculating the intersection of the two arms is the most complex problem. It is essentially the
intersection of two circles drawn around the pegs. We know the arms lengths (from the letter
the peg is in), and the positions of the pegs. I found the following site which not only
explains it all, but provided a C program which is used here: Intersection of two circles It
detects if there is an intersection, and where it is (there are 2). If there is no intersection, it
would be as if the gears tore the arms apart! The problem is, that there are 2 intersections of
2 circles. These are called prime and not prime. It turns out that prime is almost always
correct, but in the Advanced tab there is an option to choose not prime.
Next, convert these x , y back to polar coordinates, so I can move the point according to the
rotation of the center. From the same wiki page is how this is done:
r = square root ( x^2 + y^2 )
The r value may be compared to the radius of the center, so that it will not go outside the
lines. When this happens on the real device, there are gaps in the design. There are several
ways this can be handled on the computer from leaving it alone to connecting the dots once
it returns to the center circle. The program provides a clipping option, as well as not
connecting the dots, since that is not real.
To obtain theta in the interval [0, 2pi], the following may be used (arctan denotes the inverse
of the tangent function):
\theta = \begin{cases} \arctan(\frac{y}{x}) & \mbox{if } x > 0 \mbox{ and } y \ge 0\\ \arctan(\frac
{y}{x}) + 2\pi & \mbox{if } x > 0 \mbox{ and } y < 0\\ \arctan(\frac{y}{x}) + \pi & \mbox{if } x < 0\
\ \frac{\pi}{2} & \mbox{if } x = 0 \mbox{ and } y > 0\\ \frac{3\pi}{2} & \mbox{if } x = 0 \mbox
{ and } y < 0 \end{cases}
It is important to know that the center circle is rotating in the opposite direction as the gears
are. Because of this, the amount the center has rotated is subtracted from the polar angle.
When I went out to look for likely users of my Magic Designer program, I found a substantial
portion of the community who thinks of designs and also uses computers, loves the Mac
computer. A program written for the Windows operating system will not work on a Mac
computer. And since I do not own a Mac, I could not develop software for one. So, I came
up with another approach to allow anyone to make these designs. It is called Browser
Version of Magic Designer. A web browser is an application which is made to work the same
way on any computer. To make the web browser do things, a combination of technologies is
used. I decided that javascript would be the best choice. I had considered java, but that
requires either a java program to get loaded onto the users computer, or for a server hosting
my site to run a java program (or any program) and sending the results back to the users
computer's open browser. Since I do not want to rely on a hosting site, and I do not want the
user to support any dynamically loaded plug ins, I decided to use javascript. All browsers
support it, and it is very powerful. It is blocked by some browsers by default. But so many
existing sites use javascript, that this blocking is not a worry. My main concern would be
feasibility and speed of execution. Unlike a program running on a user computer, javascript
is a high overhead interpreted language. Some of that is what makes it so very flexible. In
addition to knowing javascript, I also need to understand HTML, which is the markup
language which was first created to make the World wide web, and DOM, which is the way
that HTML is converted internally inside of a browser and manipulated by javascript
programs, much like Windows programs manipulate controls. And there is also CSS, which
is defining styles. Finally, different browsers do work differently, even though there is only
one javascript language. So, much of javascript programming involves supporting multiple
browsers. I already have Internet Explorer and Firefox. So, I downloaded Opera, and
decided I would make my program work in all 3 of these. In 2009, I support these 3, as well
as Google Chrome and Safari.
I did alot of research, and my first thought was to learn to use some javascript library.
However, I decided against it. It was hard to locate javascript which drew anything. Web
pages were designed to handle text and image files, and not draw. But I found Walter Zorn.
This is a key website: DHTML : Drawing shapes with javascript. His library handles lines,
polygons, and ellipses. What I did was to extend his library, but not change his source code.
I see my magic designer shapes as a complicated ellipse. It all comes down to making these
little DIVs. Inside of the DOM are built hundreds of tiny rectangles of color. I call these
segments. And I modified my standard windows program to make them, and it speeded that
program up. I had been calling Window's LineTo function to make every plot point. I
changed my program to make only tiny rectangular boxes either 1xn or nx1. I also
implemented thick lines by taking these segments and surrounding them. And then, since
javascript and C are so similar, I was able to go through my C program and quickly rewrite it
for javascript. In 2009, I replaced my technique based on Walter Zorn, and use Canvas and
Cairo in my C program. It is VERY important to give credit to some one I only know of as
Larry. He developed an algorithm to connect small bezier curves.
What editors did I use? And, what other things did I use? Rather than look for a library of
controls, I found just the ones I needed. I make heavy use of a slider control found at : Tigra
Slider Control And, for picking color, I found this: Javascript Color Picker Input Controls T In
2009, I replaced both the sliders and color picker. See this link which lists all of the tools
used. Third Party Links related to Magic Designer There are so many development editors
which help with HTML and javascript. I started with Microsoft FrontPage, since I can visually
layout a page. However, I now think that DIVs are better than tables for laying things out.
But I still think that FrontPage is a good starting point, and for pages which have a simple
layout, like this one, one can stay in FrontPage. So, what editor am I using? I am using
several, but I like Notepad++ now. Here is where one can find that: Notepad++
http://akatz712.freehostia.com/Browser_Version_AJAX.htm7/3/2009 7:39:10 PM
Third Party Links related to Magic Designer
And finally, none of this would be possible if it was not for an anonymous person named Larry, who
developed the method to join bezier curves smoothly together. Unfortunately, there is not a website for
this.
http://akatz712.freehostia.com/ThirdPartyLinks.html7/3/2009 7:39:11 PM
My Other Links
Here is a collection of links I found on the Web which are about me:
In the early 1980's, I wrote 3 computer programs which were published in 2 magazines for the
Atari computer.
Coming Home
My Livejournal
http://akatz712.freehostia.com/Other_links.htm7/3/2009 7:39:11 PM
My Favorite Sites
Email client
Chat client
Music player
Video player
Anti virus
Office suite
Text editor
Screen capture
Image viewer
Audio capture
File sharing
Misc Utility
Folder explorer
File search
File compare
File compress
DVD Burner
Painting drawing
http://akatz712.freehostia.com/MyFavoriteSites.html7/3/2009 7:39:14 PM
Andrew S Katz Resume
ANDREW S. KATZ
home: (973)301-0448
e-mail: AKatz712 @ gmail.com
SOFTWARE DEVELOPMENT
● High and low level software design (functionality, UI, internal structure).
● Learning and programming with various tools, languages, and OSes.
● Software maintenance (improving performance, standardizing interfaces, reliability).
● Debugging (problem investigation and resolution).
● Writing specifications and doing peer critiques.
Technical Skills:
PROFESSIONAL EXPERIENCE
● Learned: Access, Windows 2000, SQL Server, Embarcadero, Visual Interdev, ASP,
Proxy Server
● Used metrics data on sales productivity to develop drill down HTML reports.
* C / UNIX
● Developed the order entry front end user interface introducing the use of V8 smart
objects to improve ease of user navigation and adding distribution functionality to the
software package.
● Restructured the financial report writer to improve execution by introducing the
persistent procedures capability.
* Progress / Windows 95
● Ported and transferred ownership of the medical protocol engine to hospital client. This
included strategic changes to a C language program to link with a custom object
● Designed and developed graphical capabilities for the Medtake product. Adapted a
flexible coding scheme to firmware limitations and explained it to client services.
● Designed and supported an enhanced tool for client screen customization. Made the
screen editor navigation keyboard arrow based to improve the productivity of the in
house screens department.
● Designed and developed the Nursing care plan module in Medtake. This included
design and coding of runtime UI, record management, network protocol, screen design
tool, compiler, and reports.
● Designed and developed an expansion of charting to allow up to 4 windows per record,
increasing the maximum number of phrases the user could choose from in writing
sentences about patient care.
● Extended the menu structure to implement a capability for screen sequences. This
facilitated the design of forms or protocol based data entry.
● Designed and developed software to allow charting as acceptance of previously charted
readings.
● Modified the software to ensure data integrity when charting is done after discharge by
ADT system.
* Forth / PC level
● Designed a forms based routing system for the US Army, using JAM forms and Sybase
database procedures linked together with C language hooks.
* C / Sybase / UNIX
● Developed and implemented a highly efficient data re-expansion algorithm. Made use of
Host based assembly language to increase data flow.
● Designed and developed internal data set, check pointing and recovery for reliability and
reconstruction.
● Adapted software for a variety of output devices, formats, and sources. This included
buffering data output to make efficient use of the streaming magnetic tape drive.
● Played key role in software lifecycle: specification writing, component authorship,
system testing, problem resolution, version control, working with other departments,
guiding junior staff.
● Enhanced, tested, and patched assembly language embedded real time software.
● Maintained a variety of software tools and testing suites used by other engineering
groups.
Sign in
Windows Live™ HomeProfilePeopleMailPhotosMore ▼SkyDriveGroupsSpaces
Family SafetyMobileDownloads
Office Live
All services
● MSN ▼
● Autos
● Games
● Money
● Movies
● Music
● News
● Sports
● Weather
Ken's Book
Andrew•SkyDrive•Ken's Book
Slide showView: Thumbnails ▼Sort by: Custom ▼EmbedOrder printsMore ▼ Options ▼ Help
Ken's Book - Windows Live
Ken's Book - Windows Live
Ken's Book - Windows Live
Ken's Book - Windows Live
Ken's Book - Windows Live
Ken's Book - Windows Live
Ken's Book - Windows Live
Ken's Book - Windows Live
Ken's Book - Windows Live
Ken's Book - Windows Live
Ken's Book - Windows Live
● Feedback
Peabody Penguin's - Curve-A-Graph(c)
Back when I was a kid I loved playing with Spirograph©. With the onset of the computer age I
looked for a program that would mimic this marvellous toy. First for my System 80 then an
Amiga 500. My parents purchased AMOSPro and I was able to write a program I called Curve-A-
Graph. I transferred it over to an Amiga 1200 then I finally bought an IBM clone and rewrote
Curve-A-Graph to work on it.
I am continually refining it but the current incarnation can be downloaded via the below
download buttons. I hope you have as much fun with it as I did programming it.
http://users.chariot.net.au/%7Epbb/cag/curve_a_graph.html7/3/2009 7:39:44 PM