Function plotter uplift

A slight function plotter improvement is implemented in this 2.0 beta2 version. You can download it from here… My primary concern was to increase computation speed when plotting functions, but I don’t think I was very successful at it.

  • Computation algorithms are optimized and this resulted in about 20% faster function plotting and somewhat increased accuracy. My goal was set much higher, but I failed. Still I hope the function plotter will be more responsive now.
  • I implemented possibility to plot up to 4 functions simultaneously inside one plotter window (until now, only 3 functions were possible).
  • The plotter window grid and coordinate system is now continuously updated as you scroll or stretch the plotter window. Thus, the navigation should be easier now. I also marked zero-x and zero-y axis with a thicker line width.
  • Experimentally, while the ‘analyze’ option is turned on, the integral of the first function is calculated (for the range shown) and displayed in the lower-right corner of the plotting window.


  • In addition, I added ‘\triangle’ and ‘\square’ commands. You can also type ‘x^~’ to put tilde over the variable ‘x’.

Numerical computation

Because the Math-o-mir is not a number cruncher, a non-trivial numerical computation is not really supported. Therefore I am using the ‘analyze’ option of the function plotter when I need to crunch some numbers. The function plotter is capable to numerically find local minimums/maximums as well as intersection points between two functions. For example, when I need to find zeros of some function (only for functions of single variable) that I cannot solve symbolically, I will plot it in the function plotter together with a trivial ‘y=0’ function and the function plotter will find their intersections. Now I also implemented the numerical integration within the function plotter (all of this has limited accuracy, and results should be used with care.)

My further goal is to implement a ‘parametric function plotter’. This one will be somewhat more complex and will be able to plot equations in parametric form. I still have no idea how the user interface should look like… What I really want is to be able to use it also for simple numerical simulations: it should be able to work with integrals and derivatives. I would like to simulate some simple linear and non-linear systems in time. At least those that can be solved equation by equation. Now you understand why I am trying to increase the computation speed.

Math-o-mir v2.0 beta

Due to some compatibility changes, I decided to increase version number to 2.0. You can download the 2.0 beta from here. The mentioned compatibility issues are as follows:

  • The file format is changed. It is still possible to load and save Math-o-mir 1.x files (in fact, the 1.x file format is the default even in this beta) but this legacy support might have bugs. (You might want to back-up your files because this beta is not thoroughly tested yet. Also, saving bitmaps in the legacy format is not supported.) The new Math-o-mir 2.x file format is available under the Save As dialog box: here you can choose option “MOM file (2.x)”. The new file format is still XML, but generated files will be smaller. As a result I removed the option “MOM compressed file”.
  • The toolbox items are rearranged. Many are removed and few new ones are added. As a result, if you had some keyboard accelerators configured they might not work correctly any more and you will have to reconfigure them.

The reason for file format change is to decrease the file size. Math-o-mir files are very verbose (they still are, only to a lesser extent) as a result of XML usage. I roughly estimate that an average page adds about 50kB to the file size. The new file version significantly improves bitmap storage. If you used to paste large bitmaps into Math-o-mir documents you probably noticed that files were getting large and everything was slow. I hope it is going to be better now.

The reason for toolbox rearrangement is to group items in a more organized way. I also removed many items that were not really needed. I however added few new items:

  • the ‘equal with a hat’ operator is added (coresponds to)
  • the D’Alambert operator is added (just an empty box)
  • the triangle symbol is added
  • fancy functions for real and imaginary part of a complex number are added

Other news are that I added three additional above-variable decorations: caron (hacek), tilde and triple dot. I rearranged the software so that I have the space now to add even more decorations if needed… I upgraded the thin-line-drawing-tool so that it can draw lines angled at 45 degrees… Finally, I removed options to adjust parentheses height.

Math-o-mir 1.93 beta

As always, I uploaded very early beta version, 1.93 beta, that can be downloaded from here. Because Math-o-mir is a freeware, early user feedback is important during development process, and so I am making beta versions available during whole development process.

  • The very-large-toolbox-size option is added. This is intended for high-resolution monitors because it is probably not practical below 1920×1080. To make this possible I had to paint larger icons and this consumes some extra 40k of memory.
  • At the same time I removed very-small-toolbox-size option. This practically discontinued support for 640×480 resolution monitors. I concluded that even rural Africa has 800×600 by now.
  • The drawing-box menu is refreshed – some options added some removed.

I am doing some structural changes in software and it might cause stability issues in following betas. Let me know if you find anything. At the same time this beta reduces memory usage for hand drawings. Stammi bene.

Typing math is still hard

I received today an e-mail containing constructive, yet negative critique of the Math-o-mir software. It was written by an engineering student who wanted to remain unnamed, but was kind and allowed me to publish this part of his e-mail. Among else, he says:

I wish I could be able to use such a capable program, but I am finding that it will take many days to learn how to use even basic functions. And I must move on with my studies. I think that I will have to continue using hand written notes. I am sorry, but it would take too  much time to become proficient with Mathomir. I have printed the manual and am constantly having to flip through it.  Finding instructions for one problem or feature causes me to flip to several more pages and often these searches branch out to looking at more pages. It is though I am lost in a huge maze with no overall map. It is a shame that I printed out about 100 pages of manual and have spent hours determined to learn to enter text and basic equations, but I can only spent so much time before I have to go back to my studies. I do hope that you will be able to refine the program and the  manual so that more people will be able to use it. I am not a trained computer professional, but I do have an education in electronics and mechanics. It is perplexing to me why very complex software is required just to enter math equations into a computer only for the purpose of keeping notes.

The paragraph is well written and because it also contains my own deepest concerns, I decided to publish it. While it is a very rare occasion to receive such a response, I have that feeling that there are many, many potential users who feel the same when they first face the software. Many of them eventually just return to paper-and-pencil. Some of them possibly feel swindled and robbed of their time.

But I am not cheating. Math typing is hard and I mentioned this fact several times on this blog. It takes some serious effort and time to master it. It took me one year to stop instinctively looking for paper-and-pencil when I needed to make a quick calculation… But I don’t know, I really don’t have the slightest idea why everybody (including me) have this feeling that typing mathematics on a computer should be an easily solvable problem. When I first started working on the Math-o-mir software, I was thinking ‘to first spend a week to implement a perfect keyboard handling mechanism and then I can move on to more serious things’. Years passed…

And I am not even the most incompetent programmer around. It seems that nobody managed to solve the problem perfectly. In fact, Math-o-mir implements one of best solutions ‘in business’ (if you ask me, the best)… In any case, the problem still stands and all those users complaining have all rights doing so! I however believe that I can still find ways to improve the software, and documentation too, even if by the trail-and-error methods.

So if you are under time constraints, I don’t recommend switching your paper-and-pencil for a computer software. I am sure such switch would slow you down for at least several weeks. If you want to make the switch, I would recommend a relaxed approach. I don’t think math typing is a skill you can learn overnight. It takes time for your brain to rewire. (You might be thinking that paper-and-pencil is so much more intuitive, but just recall how many years you spent, in your quickest-learing-ages, to master the pencil.)

Math-o-mir v1.92 build 4

I uploaded the build 4 and you can download your favorite math note-taking application  from here (or, of course, from the homepage). As in any ‘build’ release, there are only minor functional upgrades. These ‘build’ releases mostly address bugs. Nevertheless, we have the following news:


  • It is possible to use Spacebar+Enter keystroke to toggle math/text typing mode. I figured that some people might prefer Spacebar+Enter instead of Alt+Spacebar (which remains available), especially those running Math-o-mir with Wine.
  • More conversely, the index and exponent of a variable will not be horizontally aligned any more if the variable is in italic font (slanted). Instead their alignment will be slanted too. I  wonder what are you going to say about that.
  • Expression written in indexes are now rendered in a more condensed way. In fact, both indexes and exponents are now moved closer to the variable.
  • It is now possible to type a Greek letter behind the delta sign (like typing DDww will create delta-omega).


I believe this is the last build of v1.92 (unless we find a terrifying bug) so I am going to start the next release. I feel I failed to define the ultimate keyboard interface in version 1.92, so I can only hope that I will reach that goal in the next release (yeah, right). I am also annoyed by many exceptions in keyboard handling – I am wondering if such exceptions are advancements or regressions.

Finally I must remind you (and search engines) that Math-o-mir is the fastest math-typing software you can find (not only within its free-price range). It will come good if you need to jot-down some math ideas or evaluate a math/physics problem. Remember that it also includes a symbolic calculator. It is not LaTeX based, so you don’t need to learn LaTeX to create math documents.

A bug or what?

Yesterday I was calculating some Butterworth filters and experienced some weird Math-o-mir behavior. Inter-character spacing in numbers (spacement between digits) was displayed erratically. As I was editing, or changing zoom level, the inter-character spacing changed in a non-causal way. For example, a number 1000 might be displayed either as   1   0   0   0 , or in a very condensed form where digits would overlap. I couldn’t find any regularity in this behavior – seemed like non-initialized variables or a memory corruption.

If you had a similar experience with Math-o-mir, let me know. I am interested to learn from what version does this bug exist and how often it is experienced.

Sacrificing upsilon

Another build, v1.92 build 3, is now downloadable from the homepage. This is another debug build with only slight improvements. Better to say, I will need to demonstrate that the implemented changes are indeed improvements.

First, there was a bug that could crash the software if the backspace key was used in the quick-type mode to delete a line wrapper. Several other bugs and annoyances were also corrected… There are some differences in keyboard handling, specifically in Greek letter typing. I will explain in more details, if nothing else then only to have it written down somewhere.

In Math-o-mir, you can use double strokes to generate Greek letters. But ever since I switched to the double-stroke method, I am experiencing difficulties typing plain text. Here is a list of issues (some of them also take part in the math-typing mode):

  1. Some words start with a double letter (eel, aardvark…), and even many more words contains double letters within them. As a result, any double-letter typed within a word will not be converted to Greek letter. For example, when you start typing ‘aardvark’ the ‘aa’ will be converted to the alpha symbol, but as you continue to type ‘rdvark’ the alpha symbol will revert back to ‘aa’. Fine.
  2. Some languages might have a single word containing only a double-letter. I know no such word in any language, but who knows. This would be a difficult situation because Math-o-mir would not be able to tell if user wanted to type a Greek symbol or a two-letter word… That is why double strokes are timed and you should double-stroke relatively quickly to generate Greek symbols. If a two-letter word is needed instead, you can type it slowly. (Both things are annoying: the need to type Greek symbols quickly and the need to type a potential two letter word slowly.)
  3. I lied – I know a two-letter word that has two identical letters. It is ‘mm’ (millimetre). In fact, a mathematician can came up with any two-letter variable name including aa, bb, cc … or whatever. That is why I cannot just ignore such two-letter words. So I implemented a not-very-perfect solution to triple-stroke letter and revert it back to double stroke (still faster than to type it slowly). For example, if you want to type ‘bb’ you can quickly type ‘bbb’ to revert the beta symbol into bb… Another example, you need to type a variable called Vcc (where ‘cc’ is in the index): V <spacebar held> c c c <spacebar released>. Huh. Huuuhuuh…. Not a nice solution, but it works. Do you think that this solution is good enough to be used in all cases so that I can stop timing the double strokes and just convert them to Greek letters invariably of the typing speed? Damn millimetre! Who wants to type mmm instead of mm?
  4. But how do you type micrometre? mmm? (first two ‘mm’ are to generate the Greek mu letter). No, it wont work… Here is my solution that I implemented in this version. The Greek mu letter can now be generated by ‘uu’ double-stroke. Then you can type micrometre as ‘uum’. As you can see I sacrificed the Greek upsilon symbol. The only way to make the upsilon now is to use the \upsilon (or \Upsilon) command. To make things easier, I also implemented \ups (\Ups) to do the same. Fortunately the lowercase upsilon is rarely used.
  5. Still I retained the mm keystroke and it still generates the mu letter. The big question is should I discontinue the ‘mm’ keystroke for mu letter generation? By doing so, you would be free to type the millimetre in a normal way. The problem is that inexperienced users might get confused searching for the mu. (btw, note that ‘uu’ is so much easier to stroke than ‘mm’). In any case I will be discouraging ‘mm’ in favor of ‘uu’.
  6. There are some words that contain mixed letters, Greek and Latin. You don’t believe? A common example is uP (microprocessor, an abbreviation). So in this version I added several exceptions to the general algorithm that Greek letters are reverted back to double letters as you continue to type a word. Exceptions are: if the second letter is the uppercase while the leading Greek symbol is lowercase (as in the uP example above); if the second letter is ‘m’ or ‘g’ or ‘s’ while the first letter is the Greek mu letter (as in micrometer, microgram, microsecond); and if the first Greek letter is the uppercase Greek delta letter invariably of the second letter. I just hope there are not many words worldwide that start with ‘uum’, ‘uug’ and ‘uus’.
  7. Why the uppercase Greek delta letter has special handling? I wanted an easy way to type variables like deltaX etc. Now you can just type: DDx… This is far from perfect, because what if you want to enter a word that actually starts with DD? For example, DDT, DDE, DDCMP and any of many other acronyms. In this case you need to type DDDT, DDDE, DDDCMP (or type it slowly) – very, very annoying. In addition, stroking ‘DD’ to generate Greek uppercase delta is not that handy… The right solution, that I don’t have yet, is to have a special keystroke that would generate Greek uppercase delta (equal in appearance as the one generated by DD, but different in behavior because it would stick to the variable that follows). But I cannot find a suitable keystroke (all keystrokes are taken already).
  8. Finally, how do you type kiloohm? kWW? It won’t work because WW is only converted to Greek omega if it is typed at the beginning of the word. I don’t have the solution for this. [To type a kiloohm in plain text you can either switch to math typing mode and type .kohm, or you can type ‘k WW’ (with space bar in between to generate ‘k’ and ‘omega’ separately) and then use Shift+Backspace to splice the two letters together.]
  9. Unrelated to Greek letters, there is another issue with plain-text typing. The usage of the underline character. In Math-o-mir the underline is used to generate variable index, so there are difficulties when you want to type something_like_that. To type the underline, you need to hit the underline key twice. Annoying as hell. I was thinking to disable the underline key as the index generator in plain-text typing mode. Undecided yet.

I wrote a long article to clear my mind. I am still not sure if the upsilon key is a good sacrifice. By the way, this version also implements the \varpi command so that you can generate the alternate Greek pi symbol.