Application Design

An enterprise application is defined by its data and the core processes that operate on those data. Application architecture (Model 1 versus Model 2, web versus rich client, container-managed persistence, etc.), deployment operating system, and choice of development languages are secondary.

Therefore, my design philosophy centers primarily on flexible yet highly efficient database structural design, optimized supporting structures for querying performance, enforcement of business rules as declared data constraints, and implementation of core business logic as stored procedures for optimal performance and accessibility from a variety of platforms and interfaces.

My preferred database platform is Oracle, having been an Oracle DBA and developer since 1989.

Application Development

Of course, I provide PL/SQL development services for core data processes implemented on the database.

I also provide application server development services using Java and related technologies, including Apache Tomcat, the Spring and Struts model-view-controller frameworks, and JavaServer Pages (JSP) constructed using industry-standard JSTL. I've done a considerable amount of AJAX development as well. I've been providing Java related development services since 1999. Prior to that, I used ASP for server-side application development, and Visual Basic and Omnis 7 for client-side application development.

Performance Tuning

The demands imposed on developers by aggressive deployment schedules often leaves little time for performance tuning. However, it has been my experience that performance tuning, especially SQL statement optimization and indexing, can provide dramatic improvements. It is far easier for a well-tuned application to overcome slow hardware than it is for fast hardware to overcome a poorly-tuned application. Throwing money at the server is rarely the best solution.

Other gains can be realized by caching relatively static data within the application server, and reducing the complexity of written code and library dependencies. The whole purpose of performance tuning is to use your understanding of the application and database servers to visualize and comprehend the units of work being performed on behalf of you application, and minimize the units of work. A unit of work might be a database fetch, object instantiation, a loop within the code, etc. Ironically, some development libraries that simplify and reduce the lines of code significantly increase the units of work performed.

Server Maintenance

By definition, critical systems should achieve at maximum availability and uptime without compromising security. Throughout my career I have been personally responsible for several mission-critical, 24x7x365 systems and can apply that knowledge and experience to your systems as well.

I reject the commonly held notion that it is unavoidable and acceptable to periodically reboot servers as a preventive maintenance measure. This thought seems to be almost exclusive to Windows environments. I do not recommend the use of Windows for servers, favoring Linux and OS X instead. Your business depends on it, so use a technology that was built for, and can handle, the demand. Unix, Linux and BSD variants such as OS X are far more stable, scalable, and manageable - especially from remote locations.