Web applications are more than just static web “pages”. They are typically interactive applications designed to run in a browser. The user interfaces with the browser front-end (client) while database activity, security, and other processing tasks are handled on the back-end (server). We develop both client and server side applications consistent with modern practice and universal standards.
For server-side web applications, we take a different approach than many other web developers. On larger projects, we prefer natively compiled applications that use Fast-CGI as an interface where possible, rather than the many interpreted languages commonly used on servers. We feel the superior performance, security, efficiency, and economy of this approach far outweighs whatever benefits interpreted languages like PHP, Ruby, and even Java can offer. Of course, we will adapt to any ecosystem required by the project.
For back-end database servers, we are comfortable using both relational and non-relational databases. For No-SQL applications, we prefer Apache CouchDB when “document” style data is the primary type. SQLite, MySQL, or Firebird are in our toolbox of SQL based relational database systems.
Since we write the code for both client and server, you can be sure that our web applications will be tightly integrated, secure, and high in performance. We do not forget the importance of a good user experience, either. Since web apps can be a nightmare for end-users if they are not done right, we make sure the user is not waiting around for unneeded server responses or stuck using clunky, antiquated GUIs.
Cloud Computing Solutions
Cloud computing is an attempt to provide software “in the cloud” as a service on Internet based servers, as opposed to software as a product that you install on a local machine. Some businesses are moving their LAN based operations over to “Cloud” services like Google apps and the like. We are able to develop custom Cloud Computing solutions for various businesses when it makes sense to perform specific operations in a managed Internet data center, instead of hiring IT staff to manage them on a local LAN.
We have developed a unique software architecture for cloud deployments. It focuses on fault-tolerance, high availablability, high concurrency, and low resource consumption. We believe our architecture yields one of the best solutions for performance, good user experience, security, and scalability.
In addition to running application logic in a browser, as many SAAS solutions do, we offer multi-platform desktop apps for the client-side as an option for your cloud application. This allows for a more desktop style look and feel that users are comfortable with – without all the limitations, compatibility issues, and security risks of browser-based apps. We also design the database to have local and cloud components that automatically and efficiently stay in sync. This allows all user created data to be interacted with locally, so there is no waiting on network latency or bandwidth limitations. Changes to the database are then later synchronized with their server counterparts, so changes are made efficiently without hampering a good user experience.
Our architecture also optimizes hardware resources in the data center. Server side software is all natively compiled and efficiently coded to conserve server resources. This means less hardware “power” is needed to handle loads from multiple simultaneous users. Whether using dedicated hardware, or using virtual machines, our architecture will make the best use of available hardware. Scaling is efficient and automated using our cloud architecture – which allows both applications and data to be replicated across multiple machines spread across multiple data centers, while still being accessible 24/7. These replicas provide sufficient redundancy in the event of system failure, so the architecture proves to be quite fault tolerant.
How do we get the work done? We consult with you to define the scope of work, giving recommendations within the project’s time, budget, and technical constraints. After contract negotiation, the application life-cycle management process begins. It is an iterative process that is divided into 4 major phases:
- The inception phase – the primary objective is to scope the system adequately and define its requirements as a basis for validating initial cost and budgets.
- The elaboration phase – the primary objective is to mitigate the key risk items identified by requirements analysis and to document the architecture of the project in its basic form.
- The construction phase – the primary objective is to build the software system, its components and features.
- The transition phase – the primary objective is to ‘transit’ the system from development into production, making it available to and understood by the end user.
These major phases are both incremental and chronological. Each phase may be broken into smaller iterations.
Tools (not a complete list):
- Client/Server Side Frameworks: jQuery (Base, UI, Mobile), Sencha Touch, ExtJS, PouchDB, Zend, Bootstrap, AngularJS, D3js, SVG.js, Fabric.js, NodeJS.
- SQL/NoSQL Database Management Systems: CouchDB, Apache SOLR, MySQL.
- Coding IDEs/Editors: WebStorm, Notepad++, Eclipse, QT, Lazarus, ConTEXT.
- Hybrid Mobile App Tools: Sencha Command, Ionic, PhoneGap, Apache Cordova.
- HTML 5 Game Creation: Construct 2, Game Maker.
Web Application Examples
Advertisor Marketing Interface
Dwila HTML-5 Customer Waitlist App
Dwila (“Don’t wait in line anymore”) is a simple app that notifies customers when their service is ready. The HTML-5 version runs in Webkit browsers, both mobile & desktop (Chrome & Safari browsers on Windows, Linux, & Mac. – Native mobile browsers on iOS, Android, & Blackberry 6+). Dwila HTML-5 uses App Cache technology, so it works when your device is either online or offline. Customer data is sand-boxed on your device, so it stays safe and secure from anyone else who uses Dwila. When Dwila HTML-5 is updated, the new version of the app will automatically be transferred to your device the next time it goes online.
MVC-Couch instructional video application
Woodchuck Dunk HTML-5 Game
This HTML-5 game app was created as a Proof-of-Concept project in order to evaluate Construct 2, an HTML-5 game development IDE. The game is inspired by “Gorillas”, a 2 player PC game of the 1980’s. The object of this game is to “dunk” your opponent’s woodchuck by removing the ground underneath its feet using dynamite. Use the left mouse button to move your woodchuck in position. Use the right mouse button to aim your throw. After you aim, use the “Light” button to light your dynamite stick. You then have 4 seconds to click the “Throw” button before the dynamite explodes. Time it right. Have fun!
3D Saddle Pad Viewer Application
Interactive Learning Application
This jQuery app was created for Sapling Learning as a demonstration of competency. Sapling Learning provides content to online schools for their home schooling curriculum. This app allows a student to adjust the tangential velocity of an orbiting satellite and then play the animation to see the results. Special thanks to Neil Elusien for providing his original “orbit” jQuery plugin, which we modified and re-factored in order to create this app.
Interactive Lab Apps
Using the drop-down boxes and clicking the colored segments of the pie and bar charts will filter the data grid below the graphs. Interaction with the data grid will not effect the charts, but will filter data extensively using additive filtering, sorting, and column hide/show features. The app is provided for demonstration purposes only.