As a team, we are able to develop software applications of various types in various contexts. Learn more about the tools we use and the design principles we follow to produce software in these different categories.
- Desktop Applications: These are natively compiled programs that run on popular desktop operating systems – Windows, Macintosh, or Linux. We are able to develop apps that are required to run on any or all of these platforms.
- Mobile Applications: These are interpreted or natively compiled apps that run on various mobile devices. We are able to develop apps that are required to run on Android, iOS, Blackberry, Nokia, Symbian, Windows Mobile, or some of the newer linux mobile platforms (Maemo/Meego). HTML-5 hybrid “web apps” also fall into this category.
- Web Applications: 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 the latest web standards. Read More…
- Cloud Computing: This is a newer category of application development that extends web applications. 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. Read More…
Even though we are capable of custom development in these areas, we are not experts in every aspect. Like most developers, we have strengths and weaknesses. We are constantly learning with every new project – filling in knowledge or experience where we lack it. For specialized work that requires it, we will recruit help from other third party developers.
Desktop Application Development
Desktop applications are natively compiled programs that run on popular desktop operating systems – Windows, Macintosh, or Linux. We are able to develop apps that are required to run on any or all of these platforms.
For cross-platform development, our tools of choice are the Lazarus IDE and Free Pascal compiler for Object Pascal language development, or the QT framework for C++ language development. For strictly Windows based development, we are quite comfortable using the Delphi IDE and toolset for most desktop applications.
We prefer a modular Object Oriented approach to our desktop application development. We focus on clean code that is portable, extensible, and re-usable if at all possible. We also are keenly aware of computer resource limitations, so we attempt to economize resources when creating application code. The end result is higher performance, lower memory & power consumption, and efficient use of bandwidth.
Mobile App Development
Mobile apps are interpreted or natively compiled software applications that run on various mobile devices, whether they be smart phones or tablet PCs. We are able to develop apps that run on Android, iOS, Blackberry, Nokia, Symbian, Windows Mobile, or some of the newer linux mobile platforms (Maemo/Meego). HTML-5 and Phone-Gap (Apache Cordova) hybrid “web apps” also fall into this category.
Since mobile apps have become so popular and prolific these days, some wonder what is involved in the process. Mobile app development can be quite complex. Native mobile app development on more than one platform can be quite expensive. What will provide the best return on investment? A few considerations are:
- What platform does the app need to run on, Android, iOS, Blackbery, Windows, Symbian or all them?
- What hardware will it interface with (camera, gps, accelerometer, etc.)?
- Does it need to be a native app, or can it be an HTML 5 or “Hybrid” app?
- How important is performance, package size, power usage, and memory footpint?
- How important is compatibility – does the app need to support all versions of each platform, even at the sacrifice of newer and better features on the newest versions?
We can help answer these and other important questions when it comes to mobile app development. We are familiar with the process and have the resources and experience to create apps that are a good fit for the intended purpose. We prefer a modular Object Oriented approach to our mobile application development. We focus on clean code that is portable, extensible, and re-usable if at all possible. We also are keenly aware of the resource limitations of mobile devices, so we attempt to economize resources when creating apps. The end result is higher performance, lower memory & power consumption, and efficient use of bandwidth. For HTML 5 and/or Hybrid apps, we have found Sencha’s “Touch” framework and Phone-Gap to be adequate for most needs.
We appreciate the value of testing on actual mobile device hardware, since there is such diversity and variation on the different platforms and versions of mobile operating systems. We understand how manufacturers of some devices will tweak their version of an OS in a way that may yield unpredictable results. Therefore, we test all our apps on actual devices as we develop, to ensure we are getting real world results.
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, Sencha Touch, ExtJS, PouchDB, Zend, Spring.
- SQL/NoSQL Database Management Systems: CouchDB, Apache SOLR, MySQL.
- Coding IDEs/Editors: Eclipse, QT, Lazarus, ConTEXT.
- Hybrid Mobile App Tools: Sencha Command, Apache Cordova.
- Game Creation IDEs: Construct 2, Game Maker, Unity 3D.
JW PubSearch is a client/server application that allows readers of JW.org publications to download and search a library of PDFs offline while using their Android device. It is being developed as a native android app using Java, Lucene, Android SDK, Dalvik, and Eclipse. It is currently still in development and will be released for beta testing on Google Play when ready.
Dwila for Android
Dwila (“Don’t wait in line anymore”) is a simple customer wait-list app that notifies customers when their service is ready. The Android version runs on Android 2.2 and up. It is a hybrid native/HTML-5 app developed using Java, Sencha Touch, Phone-Gap, Eclipse, and other plug-ins. It is currently a beta release available for free download on Google Play.
Dwila for Windows
Dwila (“Don’t wait in line anymore”) is a simple app that notifies customers when their service is ready. The Windows version runs on 32/64 bit Windows from XP on up. It is a hybrid native/HTML-5 app developed using Sencha Touch, Eclipse, and the Node Webkit native application framework. The Windows installer application was created using Nullsoft installer libraries.