Centurion Web Service

Web Development

Custom Web Application and Software Development

Web Development and Design

Centurion Web Services has been developing complex custom web applications since 2004. We have experience with all popular web technologies and are fully capable of developing tailored solutions when needed. If you have a need for web application development solutions, please contact us.



Do you need help with a Python development project?Python is a dynamically (but strongly) typed, general-purpose, high-level programming language, with a particular utility for web-based and scientific programming. It emphasizes readability, clarity, and extensibility. It often allows complex constructs to be expressed in a relatively small number of lines of extremely readable code. While Python provides tools for imperative, functional, and object-oriented programming, it does not dogmatically require any of them be used in inappropriate situations. As a result, it is a powerful toolset for nearly any program.

Python’s emphasis on extensibility and its philosophy of “batteries included” means that much of the functionality needed by an application is available, either in the standard Python library itself, or via many of the numerous packages in the Python Package Index (PyPI). As a result, when a desired functionality is needed there’s often already a library or routine available for the purpose.

Python is suitable for most general-purpose programming needs. Exceptions would be where there is either a need to interface directly with hardware or substantial real-time performance requirements. In many cases, the latter can be overcome through judicious use of just-in-time compilers (such as PyPy) or by moving time-critical components to native code (using a C/Python extension library).

CWS has used Python extensively; it’s one of our top choices for web application development, and it underlies many of our preferred frameworks and libraries such as Django, TurboGears, Twisted, and Pyramid. We’ve also used it successfully for desktop and utility applications.

Do you need help with a Python development project? Contact us for a free consultation.


Ruby on Rails

Do you need help with a Ruby on Rails development project?Ruby on Rails has been a darling of the web development community since 2005, when it was extracted out of a popular project management application called Basecamp. Its popularity is due in part to the speed with which a web application prototype can be created, allowing project managers to quickly show off a working example of their site to gather feedback. The Rails philosophy advocates “convention over configuration” in order to make common application features low-cost. In addition, Rails is part of a vast ecosystem of “gems” (libraries), open source projects on GitHub, and web hosting services such as Heroku and Amazon EC2.


Ruby on Rails is a reasonable choice for most web applications and web APIs but is most useful in environments that favor an agile approach and follow common web conventions. In those cases, the Rails framework and third-party gems provide reusable components so that developers can focus on the custom business logic of their applications. The Rails philosophy and the Ruby language itself reduce maintenance costs by keeping the code line count low.

Rails has received negative publicity in the past due to performance problems on sites like Twitter that have massive amounts of traffic. The Rails development team has addressed a number of these problems via optimizations, caching strategies, and integration with high performance systems.

CWS has deployed a number of successful Ruby on Rails systems, including an educational auction site and a procurement exchange for clothing tag products. We’ve found it to be an easy-to-iterate platform that’s useful for evolving systems.

Do you need help with a Ruby development project? Contact us for a free consultation.



Need help with a PHP development project?PHP is one of the most widely used scripting languages in existence today. Its prevalence on both Windows and Unix-based hosts makes it also one of the most accessible languages, for both beginner and seasoned developers. PHP stands for “PHP: Hypertext Preprocessor” (a recursive acronym) and was introduced in 1994.


PHP has an extremely low barrier of entry, allowing the creation of a simple dynamic web page using nothing but a standard text editor. It also supports most modern programming constructs and approaches, including object oriented programming, making it a viable choice for enterprise level web applications. Some of the world’s most popular CMS software is written in PHP, including WordPress, Drupal, Joomla, parts of Facebook, and Digg.

PHP often draws the scorn of experienced developers, mostly due to its lack of structure, relative bloat, and security vulnerabilities. Given proper adherence to best practices, however, most of these drawbacks can be avoided. Especially within the context of a well-supported framework such as Zend, Yii, or CodeIgnitor, PHP can be an extremely useful and efficient language for building applications of all shapes and sizes. CWS has used PHP, often with Yii, in dozens of successful web projects.

Do you need help with a PHP development project? Contact us for a free consultation.


.NET is a powerful1432062111590_logo_net, versatile, compiled memory-managed software platform, that supports a large number of languages, including C++, Visual Basic .NET, and C#. There are also .NET implementations for many other popular languages, such as Python, Ruby and Scala. .NET’s uses are many: Windows applications, web applications, smart phone applications, and more.

Microsoft created .NET from the ashes of COM in response to Sun’s Java platform. A predominant goal in .NET is interoperability. Each .NET language produces interoperable byte code, so utilities written in C# can be used from Visual Basic .NET, for example. Programs may also expose COM interfaces to facilitate communication between components.

Windows is the most common platform on which to execute .NET programs, and .NET has access to deeply powerful multithreading and concurrent job processing utilities there. .NET applications can however be ported to run in Unix environments, using the Mono framework. Visual Studio is the most popular, powerful, and efficient tool for developing .NET applications and supports a wide variety of end products.

While .NET has always had web development offerings, the more recent ASP.NET MVC framework allows web development closer to the true spirit of the web. The previous generation ASP.NET WebForms presented a drag-and-drop metaphor, often ignorant of prevailing web standards.

There are many strong opinions for and against web development with a complete Microsoft stack vs. a selection of open source components. There can be a higher up-front cost with the Microsoft approach, for example, and less flexibility around the technology choices. At CWS we hold a more neutral position. We’ve done extensive and successful development on both desktop and web applications, with .NET and without, and are happy to evaluate and discuss the relative merits, on a project-by-project basis.

Do you need help with a .NET development project? Contact us for a free consultation.


1432062111594_logo_nodejsJavaScript is a lightweight, interpreted language, that runs client-side (within the browser) and is responsible on some level for the dynamic nature of most of today’s websites. In the mid 90s, Netscape and Microsoft each introduced a server-side implementation of JavaScript. These were comparatively obscure, suffering as they did from competition from many fronts: C (and variants), Java, PHP, Ruby, and Python, among others.

Node.js is a contemporary server-side implementation of JavaScript, one which is in fact seeing widespread usage. There are compelling reasons for its success. Google greatly enhanced the efficiency of JavaScript in its open source V8 engine, upon which Node.js has been built. Additionally, its event-driven nature and non-blocking I/O offer it significant scalability, an area in which many other server-side solutions have struggled.

As JavaScript has matured and become increasingly powerful in the browser, the advantages of sharing code between the server and client-side of a web application have grown. There’s now a large and enthusiastic developer community, and they’ve contributed hundreds of freely available libraries (modules). These can be quickly and easily incorporated into a project through the built-in node package manager, greatly extending functionality and speeding up development.

CWS’s expertise with multiple server-side languages enables us to determine which solution is the best fit for your project. With many of our developers having long familiarity with the JavaScript language, Node.js is often an attractive choice. We’ve used it to great advantage, particularly on smaller web applications, finding that it provides quick iterations and an efficient path to visible results.

Do you need help with a Node.js development project? Contact us for a free consultation.


In its 1432062111595_logo_html5infancy, pages on the world wide web were just that – static pages, with fixed content that had to be updated by hand. Browsers were responsible for rendering the HyperText Markup Language which comprised the page into the appropriate graphical output – and nothing more. The original HTML specification contained only 18 elements.

In early 1994, the IETF created an HTML Working Group to further develop the expired HTML and HTML+ draft specifications. This work resulted in “HTML 2.0,” the first widely-recognized specification, which introduced now-common elements like tables and form-based file uploads, among others. As Mozilla (with their Netscape browser) and Microsoft (with Internet Explorer) competed, they began to introduce other non-standard elements and new functionality. Among these was Mozilla’s invention of JavaScript, which allowed for dynamic behavior on an already-rendered page.

The HTML specification has continued to evolve under the auspices of the World Wide Web Consortium (W3C). Each iteration has refined the standard – removing unused or disruptive elements (such as the infamous blink) and adding new ones, separating content and presentation (with the invention of Cascading Style Sheets), and adding additional functionality to the browser.

It is especially this last category of change that is intended when one considers HTML5. Still technically a ‘working draft’, HTML5 has been contributed to, and widely adopted by all major browser vendors – Mozilla, Google, Apple and Microsoft, among others. New semantic elements have been introduced, such as the header and footer elements, refinements to form elements, etc. The new and powerful JavaScript APIs defined in the standard, however, present the most exciting possibilities.

CWS has been working with HTML5 throughout its transition from an early draft, to its current state of wide adoption. We have leveraged the new functionality offered by new elements and APIs in numerous modern applications – including the canvas, a 2D & 3D target for scriptable graphics, the media API which allows for native playback and compositing of audio and video, drag-and-drop functionality, Offline Application Caching, and many others. HTML5 is at the heart of the most interactive, powerful and, by extension, popular web applications.

Powerful is often the opposite of simple, however – there are numerous issues with employing HTML5, especially in a cross-browser compatible way. Browser-specific prefixes, small or large differences in API implementation, lack of broad support for certain media codecs, and many other small but critical details can easily derail your application’s development. CWS’s experience with HTML5 ensures that all the details, big or small, will be in place, to ensure powerful functionality across the increasingly wide range of internet-capable devices.

Do you need help with an HTML5 development project? Contact us for a free consultation.


AngularJS is a JavaSc1432062111600_logo_angularjsript framework for building complete single-page dynamic web applications. As a framework, as opposed to a library, Angular dictates a particular application structure, based on AngularJS concepts. It’s less suitable for simple websites made up of mostly static HTML and a few JavaScript-based enhancements, than say jQuery would be.

Where AngularJS really shines is in highly-interactive, data-driven applications that need to do everything through a single page and behave like a desktop applications. Angular does require a bit of a paradigm shift, however. With jQuery the developer can progressively enhance the user experience, starting from plain HTML and adding dynamic JavaScript. With Angular one designs with JavaScript from the start. The developer starts with a controllers hierarchy; decides on namespaces and modules; and implements directives, filters, and data services. AngularJS feels very much like a full application stack, while remaining entirely on the client side. The overhead in complexity is generally compensated for by improved clarity of code and ease of maintenance. Angular application source speaks its intent very distinctly.

We’ve built a large CRM product using AngularJS and Google App Engine. Angular has made it extremely convenient to deal with the data. Data binding, RESTful data access, form validation, templating based on data received from server – these are the things Angular makes easy. Modules, namespaces and scopes are other areas where Angular offers powerful tools for structuring an application.

Do you need help with an AngularJS development project? Contact us for a free consultation.


Yii is an 1432062111613_logo_yiiopen source framework for PHP, based on the MVC design pattern. Like most web application frameworks Yii adds common functionality that is needed by almost all web applications. This includes adherence to the MVC design pattern, internationalization and localization, caching, logging, error handling, security measures, unit testing, view templating, and more. Rather than coding these functions for every application, building on top of a framework that automatically provides them improves efficiency and reduces redundancy.

Unlike some of the other PHP MVC framework choices out there, Yii is an extremely flexible and streamlined framework. It has an extensive developer community that contributes reusable extensions for enhancing Yii’s base functionality. It has also been designed specifically to run other third-party libraries such as PEAR and Zend, which adds an extra element of flexibility not common to other frameworks.

PHP is an unstructured scripting language; adding an application framework greatly improves code maintainability and speed of new feature development. A framework also eliminates the need to program the same components over and over for different applications. We’ve also seen it help to keep development teams in sync by enforcing design and implementation standards. Yii’s power and flexibility is why it is currently our PHP framework of choice.

Do you need help with a Yii development project? Contact us for a free consultation.


Dja1432062111617_logo_djangongo is a “full stack” Python web framework, containing templating, object-relational database access, authentication and authorization, and internationalization (among other things) in a single framework with a unified philosophy.

Django comes with a great deal of functionality built-in; features like automatic administrative views for data models make it easy to get a prototype up and running quickly.

Django is a strong choice for applications whose intended functionality is well-supported by Django’s default libraries; also where speed of prototyping and use by non-technical users are high on the list of criteria. It’s a good fit for basic content-driven websites that require intuitive and fairly simple content updating. Systems that involve heavy data crunching, complex filtering, or advanced display logic may benefit from an alternative approach.

Do you need help with a Django development project? Contact us for a free consultation.

Google App Engine

1432062111622_logo_googleappGoogle App Engine is designed to allow web applications, written in Python, Java, Go, or PHP, to be hosted directly on Google’s infrastructure. This removes the need to purchase and maintain costly server hardware and even permits applications to scale as large as they need to be without any additional attention. If an application suddenly has an unexpected spike in activity, App Engine will automatically spin up additional servers to transparently meet that demand. Application data can be stored in Google’s datastore, or using Google Cloud Storage for objects/files that can be as large as several terabytes each. All that data is automatically replicated to multiple Google data centers. Low traffic applications (up to five million pageviews per month) can be hosted for free. This is very useful during development, and applications can be configured to incur billing for actual resource usage above the free quota.

These capabilities come with a few restrictions:

  • All applications run in a ‘sandbox’ that restricts access to the underlying operating system. Potentially useful things like writing to the local filesystem or installing additional binaries are prohibited.
  • Some standard library features typically available in a language (for example, opening TCP sockets or spawning subprocesses) are not available under App Engine.

CWS has delivered several App Engine-based solutions, including large, complex Customer Relationship Management systems for large multi-national corporations.

Do you need help with a Google App Engine development project? Contact us for a free consultation.


1432062111628_logo_pyramidPyramid is a Python web meta-framework. It has a minimalist approach, requiring the inclusion of only the pieces specifically relevant to a given project. The result is more of an “assemble your own” feel than with other Python web frameworks, such as TurboGears or Django. While Pyramid is based on proven technologies from Zope, it is a newer framework and has learned lessons from its predecessors.

Pyramid is a flexible custom web framework: developers assemble whichever libraries and tools are the most suitable for the specific project together into a single framework that fits like a glove for the project’s demands. Pyramid is an appropriate choice for web applications that would benefit from a fine-grained approach to customization. We’ve used it successfully on some large and demanding systems, where its flexibility was well-suited to a very ambitious feature-set.

Do you need help with a Pyramid development project? Contact us for a free consultation.


Turbo1432062111632_logo_turbogearsGears is a Python web framework that consists of an integrated set of individual best-of-breed components, coupled with an integration layer to make everything work together smoothly. It was initially released in 2005 and is a mature platform under active development. The constituent libraries in TurboGears have been chosen to be the best libraries available in their respective classes, and so TurboGears contains powerful tools, such as SQLAlchemy and Babel, built in from the start.

TurboGears is a nice middle ground between the “full stack” approach of Django and the “assemble your own” approach of Pyramid; while it does come with a whole stack of components already slotted in, any or all of these can be removed and replaced with something else, should the need for customization demand it. This ability to fine-tune the technology to the unique needs of a project is compelling for custom software development. So much so, in fact, that CWS has chosen TurboGears for our internal systems development and has often recommended it as a strong choice for our clients.

Do you need help with a TurboGears development project? Contact us for a free consultation.


Twisted is an event-1432062111639_logo_twisteddriven library and application framework for the Python programming language. It includes a number of standardized event loops, known as “reactors,” abstractions for arbitrary networking transports and protocols, implementations of a number of common network protocols, and a large number of useful utilities. It was initially released in 2002, making it a very mature library. It’s used for a number of high-reliability applications by companies such as LucasFilm, ITA Software, Apple, and Canonical. The developers of Twisted provide unusually strong backwards-compatibility guarantees. It’s uncommon for APIs to change much between releases, making version upgrades relatively painless and affordable.

Twisted’s strong suit is in creating event-driven (also known as “asynchronous”) networking servers. This makes Twisted a great foundation for building networked applications that require a large number of simultaneous connections or which need to speak multiple protocols within the same process.

There is a varied ecosystem of add-on libraries for Twisted, mostly in the form of additional protocols. If the protocol you need isn’t available in Twisted itself, there’s a good chance that you can find it in a separate library.

Although we’ve found Twisted an exciting and useful resource, it can pose some challenges. It’s a very large codebase, and can present a bit of a learning curve. Additionally, because Twisted assumes that an application will operate in an event-driven fashion, it’s sometimes difficult to integrate with other libraries that assume a thread-based approach.

We’ve used Twisted successfully in a couple of large-scale projects. In one of them, Twisted and the Autobahn Twisted library allowed us to set up real-time communications between a web browser and a server process, using Web Sockets, in perhaps a quarter of the time historically required by other approaches. On another project we have several separate server processes communicating over a message queue. One of these was built with Twisted, and we’ve seen it require substantially less attention than the other thread-based processes.

Do you need help with a Twisted development project? Contact us for a free consultation.


The mode1432062111647_logo_jqueryrn web is a complicated place, with the simple, static pages of the past replaced with fully interactive applications, capable of replicating and replacing the functionality that used to be available only from large installed programs. Indeed, the modern web excels at tasks that desktop-bound applications struggle or fail to achieve – multi-user cooperative content contribution and editing, live streaming of information and updates, and cross-platform availability. In order to achieve the high degree of interactivity expected from a modern application, CWS developers employ a variety of libraries for tasks such as DOM manipulation, event handling, animation, and asynchronous communication, analogous to libraries employed in desktop application development for similar purposes. One of these is the extremely popular jQuery.

True to its tagline, jQuery allows developers to ‘write less, do more’. Offering a cross-browser compatible API that enhances and extends native JavaScript functionality, it enables a competent programmer to perform many common operations easily and makes coding complex operations more time-effective. It is also highly extensible, with a thriving ‘plugin’ ecosystem, with each plugin encapsulating a complex operation in a reusable form. CWS developers are old hands with jQuery, using it regularly as the underpinning in many of the web applications we develop. We have created numerous plugins for it and have an in-depth knowledge of its intricacies and powerful API. We are also well aware of the occasional cross-platform problems encountered in any complex project – caching issues, inconsistent events, rendering engine quirks – and are well-equipped to quickly resolve them.

Do you need help with a jQuery development project? Contact us for a free consultation.


Whi1432062111651_logo_marionettele the Backbone.js framework is an excellent foundation for a contemporary dynamic website, many developers find its view support limited. If a site needs to present its underlying data via a reasonably complex set of UI elements, Marionette can be an excellent addition. Marionette is a library, created by a group of Backbone developers to capture the most common patterns they were encountering in real-world development. It provides several view components that cover the most common situations for rendering the front-end of an application, and developers are able to pick and choose only the most appropriate building blocks for their purposes. Marionette has served us well on a large system rewrite, and we’ve blogged extensively about it.

Do you need help with a Marionette development project? Contact us for a free consultation.

Responsive Design

Today’s computing environment is nothing like it was a decade ago. And it is hard to believe that Apple introduced the first iPhone such a short time ago… in 2007. Since then the number of mobile computing devices has exploded. Users spend their days using a bewildering variety of different types of devices with screen sizes that vary from giant to tiny.1432062111605_responsive

Software developers were suddenly confronted with a big problem. How do you develop a web application that works well on a desktop computer and also is usable on a smart phone? And what could be done to address the many different screen sizes coming from the many hardware vendors? And what about the “in-between” screens that suddenly became popular when the iPad became such a large success?

The software industry responded by developing tools to allow web designers to produce pages that appear differently when users move between types of machines. This is the principle of Responsive Design, the crafting of websites that alter appearance and UI controls depending on what type of device a user happens to have.

Responsive web designers don’t lay pages out on fixed grids. They don’t think in terms of pixels or point size. Instead their work is organized more flexibly. Grids are fluid, images flexible, and style rules are defined that take maximum advantage of whatever screen real estate is available.

The bottom line is that user experience is enhanced without requiring web designers to know each and every screen type that might appear on the market.

Do you need help with a project that requires responsive design? Contact us for a free consultation.