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.
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
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.
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 powerful, 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.
Do you need help with a Node.js development project? Contact us for a free consultation.
In its infancy, 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.
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.
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.
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 open 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.
Django 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
Google 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.
Pyramid 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.
TurboGears 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-driven 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 modern 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.
Do you need help with a jQuery development project? Contact us for a free consultation.
While 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.
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.
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.