Customer relations

We are a customer-focused company.  We listen thoroughly to our customers, assess each project idea carefully, and design a solution that provides the functionality and quality that you require.  We know our success depends on your success.

While maintaining the best engineering practices, there are many ways to solve any problem.  We don't force our ideas on the customer - we craft software that meets your goals and philosophy.  And we won't promise more than we can deliver.  If the project plans would produce unreliable or poorly performing results, we will let you know up front.

We take pride in producing high quality software.

Code elegance

With all the advancements in programming tools, it still takes an artist to write good software.  Well-written software is beautiful - from its architecture down to its coding style.  Certainly, the computer doesn't care if the source code is readable or has a consistent style.  But the next programmer to look at the code does care - many hours are saved if the code is clean and elegant.  More importantly, elegant source code goes hand-in-hand with elegant algorithms, elegant architecture and stunning results.

Transparency

A well-designed system shouldn't have a lot of magic going on inside of it.  The software design should mirror the problem to be solved, so that an end-user would have no surprises if he or she looked at the code structure.  The structures and algorithms should be obvious and simple on a conceptual level.  And the names of structures, classes and variables should be carefully chosen to better mirror the problem to be solved.

Transparent software takes more time and skill to develop, but is vastly more valuable.  It is more robust.  It is more extensible.  And it is more understandable, especially to non-technical people. 

Rapid Application Development

Being the first to market with a new technology can make or break a project.  This often results in software that is rushed to the point that design flaws or bugs find their way into release code.  While this can be an unavoidable risk we see it as an opportunity.  We don't hire entry-level programmers.  We don't use rapid application development tools.  We don't paste together widgets or code snippets from various sources. 

Instead, we give each project the analysis and planning it deserves.  Our experienced and expert engineers put the effort into creating a relevant, robust and extensible architecture for each project.  Our effort into the initial design phases results in reduced effort in later development stages and a better - and quicker - end result. 

Code bloat

Bloated software is the result of poor design.  We take extra effort to avoid repeated code or excessively complex code.  A smaller solution is usually a better solution in speed, complexity, and maintainability. 

We don't add libraries or widgets that have a lot of dead wood.  Instead we select software with an eye for compactness.  While end users may not notice an extra megabyte in their code, we find that bloat diminishes performance - and is easy to avoid. 

Software tools

Powerful new technologies are being invented constantly.  How do we choose which tools to adopt? 

Lacking a reliable crystal ball, we follow these guidelines:  Select tools that are standards based - avoiding the monopoly trap.  Choose mature tools with broad acceptance.  Choose fewer technologies and use them to their fullest extent.