Thursday, June 23, 2011

Magnificalc as an Ecosystem

I would like to announce a change of direction for Magnificalc as a project. Magnificalc will no longer be strictly about developing an Android app and reusable libraries. Magnificalc will now have the following vision:

  • A modular advanced graphing calculator, accessible across platforms
  • Used as a teaching tool
  • Synchronization across device boundaries

Synchronization will be implemented as decentralized as possible to avoid the possibility of central ownership of user data. The plugins and history for any given user will be synced to a cloud server (backend pending), then one will be able to access their data anywhere: on their Android device, their desktop computer, or the web.

Appcelerator Titanium may power this new vision by allowing JavaScript code for the web to be reused! A version of exprtreelib for JavaScript is in development now.

Thursday, June 16, 2011

Announcing exprtreelib release

Today, after nearly two months of work, I am pleased to announce the release of Magnificalc's first and most essential component, exprtreelib! exprtreelib performs the following functions:
  • Parsing of expressions
  • Construction of expression trees
  • Representation of expressions as trees
exprtreelib consists of a main entry class: the ExpressionParser, and classes to represent parts of an expression, namely Expression, Term, and Factor. The following types of factor are supported:
  • Constant
  • Variable (with attached coefficient)
  • Function
  • Subexpression
All factors contain an associated exponent field, which is a factor itself.

An implementation of a symbol table using a Rudolf Bayer red-black tree (1972) is included in the library. The symbol table is a required argument to the isAbstract and evaluate methods of interface INode.

The parser is written with ANTLRv3, and the objects are written in Java. The unit tests are written with the ScalaTest BDD framework.

To get the source and compile it, visit the project site at http://moosna-saltlakecity.github.com/exprtreelib! Happy coding!

Wednesday, June 8, 2011

Oops! Decision made too quickly.

Well, after experimenting with Adobe AIR/Flex 4.5, I discovered that the requirements of my app could not be attained with AIR on Android. I must support Android Eclair and up on as low as ARM6 devices at 600MHz! AIR cannot do that for me, therefore, I am switching back to Java, with Maven3 as my build tool. Sorry, I got too excited when I posted my last post! Follow this blog to get more updates on Magnificalc's progress!

Friday, June 3, 2011

Moving to Adobe Flex 4.5

Hey everyone,

Today I'm pleased to announce that Magnificalc is being rewritten in ActionScript3 for Adobe Flex 4.5! This will make Magnificalc runnable over the web (with Flash Player), on the desktop (with AIR for desktop), and on mobile (AIR 2.6 for Android, AIR for BlackBerry).

Now, one may be asking, "what about iOS? AIR now supports iOS!" Well, AIR on iOS does not support dynamic loading of code, which will make Magnificalc an actual modular calculator. Without this support, Magnificalc's goal of modularity is made impossible. Therefore, iOS will not be supported.

The exprtreelib project has been renamed flexprtreelib to fit the new transition, and the Magnificalc parser grammer now compiles to AS3 through ANTLR3's ActionScript target. This transition has been easy and painless. AS3's syntax is similar enough to Scala's that there is really no learning curve.