Home
Overview
Components
Getting Started
Latest Version
Version History
What's New
Development
Word Cloud
Contact Us

 

Cloud Services
Moxie in the Cloud
Social Network
Microsoft® Office 365
Login - Office 365

 

 

What's New or Changed

2011-04-08

Updated: "What is it?"

New: "Some Technical Details" and "Security"

See Also

Components    

Overview

What is it?

Moxie provides a single, easy to deploy package with the following tightly integrated components: Web Server, Database, Content Management System, Programming and Query Language, Database Administration Interface, and eCommerce. Each of these components is designed to be aware of the others and interact in harmony.

Having no dependencies beyond the base Windows operating system, Moxie is quick and easy to deploy, mange, and update. Updating Moxie typically involves a simple replacement of just four small files. An important security and scalability point is that many copies of Moxie can be run on the same server; each completely independent and isolated from each other with no shared resources.

Because Moxie is free, well documented, and has professional support available, its total cost of ownership, deployment, and support is incredibly low.

Two-Minute Case Study

Horse Council British Columbia is a large not-for-profit organization with over 20,000 members. A long time ago they paid an experienced database developer $20,000 to create a customized membership management database application written on top of a well-known file-sharing database system. Unfortunately the amount of data the system was required to manage, combined with the number of concurrent users left them with a corrupt database within the first month of operation. Despite an initial effort from the developer to make the solution stable, he soon pointed the finger at the office staff and somehow blamed them for the problems.

Not about to make the same mistake twice, HCBC set out to spec and quote a real database system. Working with the largest two database vendors in the market they worked through a needs assessment with each of them in order to produce an accurate quote. This is when the gap in the market place became apparent: Both of the quotes came in at over $1,000,000.

The incentive to build Moxie was born from this experience and we have helped many other organizations along the way. Twelve years and three major versions later the Platform was released to the general public so that other developers and organizations may benefit from it as well.

During these years, a related organization trying to implement a similar system with a price tag of only $250,000 failed entirely, writing off the entire amount as the project could not be completed with such limited resources. A national organization in another country has since succeeded in building such a system, spending approximately $1,000,000 on development; but now has the ongoing expense of staffing approximately 10 fulltime developers and database administrators.

To now put the above numbers into perspective, the yearly cost of ongoing development and support of the HCBC system running on Moxie is approximately $12,000 per year.

Example Use Cases

For the Tech-Savvy, non-programmers

Right out of the box, you can use Moxie to replace existing office data needs. Instead of trying to share spreadsheets between users, or use corruption-prone file-sharing database systems, a clean install of Moxie will let you not only create shared data tables, but easily create relationships between them. The user interface is automatically generated for you. You can even use simple Field Attributes to implement data criteria and formulas. If you are ok with spreadsheet formulas, you can quickly learn to be more productive with Field Attributes.

For Web Developers

Moxie is an ideal candidate for moving legacy, customized line-of-business software to the web. The ratio of the Moxie's scalability vs. the amount of development effort required is second to none. Moxie Developers can stay focused on the design and business logic of a deployment while over a decade's worth of database design research does the grunt work for you.

For Desktop Developers

Your clientele are probably already asking you about bridging parts of your system to the web. If they have not already, they will be soon. With the ability to easily write custom COM objects that plug into Moxie, you can build a bridge between your existing system and a modern website front end. Or, you might even find that it is relatively little work to port your entire system to Moxie when compared to other web alternatives: by linking to your existing business logic code base from a Moxie plug-in you can start out miles ahead.

Licensing

Moxie can be freely distributed and used without charge. Paid professional support is available if needed. The License Agreement requires that if Moxie is going to be used for ecommerce the built-in ecommerce functionality must be utilized in conjunction with credit card merchant accounts sold by Cnawlece Incorporated (with competitive rates.) Be sure to read the License Agreement for full details. The commission Cnawlece receives from these merchant accounts pays for the ongoing development and support of Moxie.

Some Technical Details

Developing in Moxie is a significant timesaver for experienced developers and an ideal system for new developers to start with. Although the design and development experience is very high-level, every action invokes hand-crafted, highly optimized routines that in many cases are written in assembler.

The Moxie Database is both an In-Memory and a NoSQL Database; optimized for delimited variable length data and wastes next-to-nothing both in RAM and on the disk. A unique aspect of the Moxie Database is that it can efficiently perform binary searches within the delimited variable length data.

The Web Server is built for speed as well. It offers a near-instant file cache system for the 100 most recently used files that are less than 128KB. It also aggressively uses the ETag HTTP header system for all server output, regardless of the source being a disk file; CMS generated content; or programmatically generated content. This results in the most common template and graphic files using well under 1 millisecond of server CPU time and next-to-nothing bandwidth. The tight integration of the Web Server, Database, and Content Management System allow Moxie to serve CMS generated pages with a typical CPU load of only 0.03 seconds.

The entire Moxie platform is heavily multithreaded. Every connection and all associated overhead is handled independently in its own thread.

Note that the above quoted CPU utilization times are not from expensive hardware; the times given here are for a single thread on a 3-year old Intel Q6600 CPU.

Security

Security has been designed into the entire Moxie platform from the beginning, with the benefit of knowing the pitfalls that have continued to impact legacy web platforms. Although no system can be said to be unbreakable, Moxie does its best to allow web developers to benefit from the collective wisdom the industry has gained in the most recent decade. Here is how Moxie handles some of those considerations.

One of the most important aspects is that the MOX runtime system keeps user data separated from the source code at all times. There is no equivalent of an SQL injection attack in Moxie; as Database Query strings are not built at runtime. This is possible because there is only one language and one runtime, compared to having a programming language build query strings to be executed by another runtime.

A second very important aspect is that all data received by the MOX runtime from the outside users is sanitized on arrival before the developer even touches it. Instead of a developer needing to asses and clean such user input, if the developer wants any input to be viewed as HTML it must be converted back to HTML during output. The default RecoverHtml functions built into Moxie only recovers a very small and safe subset of HTML tags; blocking problems such as scripts, embedded objects, iFrames, and everything else that is not basic formatting. Of course, a developer can within the code or the template use any of these items; what we are talking about here is user generated data.

All MOX source code is stored and managed by Moxie, implementing a simple but effective security access system at the lowest level to ensure safeguards are enforced.

The user login process, the management of user passwords, and login sessions are all handled by Moxie as well. Important design points, such as two users with the same password not having similar password hashes, are already implemented for you. The secure password hashes are stored separate from the normal Database Table data and cannot be inadvertently loaded or outputted. All login attempts and their results are logged automatically and every HTTP and eCommerce request by the user references the Session ID in the server's log. An optional, built-in Two Factor Login (Authentication) process offers Administrator's a flexible approach to greatly improving their website's security.