Company history, client list, software development practices, and the languages, platforms and frameworks that GoingWare uses.
GoingWare Inc. was incorporated in March, 2000 after operating as Crawford Software Consulting since April 1998. Before starting full-time consulting operations, founder and GoingWare President Michael D. Crawford worked in the computer industry for eleven years as employee of such companies as Apple Computer, Live Picture and Working Software as well as consulting part-time.
With a Bachelor's degree in Physics from the University of California Santa Cruz, Crawford's academic background includes research work in astronomy done with the 60 and 200 inch telescopes at Palomar Mountain, and particle physics research at the accellerator facility at CERN in Geneva, Swizerland. (CERN is the birthplace of the World Wide Web - the web was originally developed to help far-flung particle physics collaborations communicate with each other.)
Typical clients for GoingWare have included embedded device manufacturers, software companies that wanted consumer and multimedia products developed from scratch or ported to a new platform, "dot-com" Internet sites that needed web applications written, and application service providers (ASPs), and financial investment firms. GoingWare is also interested in writing "in-house" software for corporate clients from any industry.
Other activities include writing for technical and trade journals, and making presentations at industry conferences such as MacHack.
Founded in Santa Cruz, California, GoingWare consults for clients world-wide. It recently relocated to Truro, Nova Scotia, in Atlantic Canada. A U.S. citizen, Michael Crawford has immigrated to Canada by virtue of his marriage to a Canadian artist.
Note that while we are happy to visit your office for meetings, code integration, and to work closely with your quality assurance staff near the end of a project, GoingWare maintains its own offices and does not typically perform day-to-day work on the client's site.
Past clients of GoingWare Inc., and Michael Crawford's previous company, Crawford Software Consulting, include:
For GoingWare to develop a product that truly serves your needs and those of your users, it is important for both of us to understand clearly what those needs are. You may only have a rough idea of what you want, or a few mocked-up screenshots, or maybe you have a detailed design in place. Perhaps you have a product for one platform and want a similar product for a different one.
Whatever existing planning has already taken place, it is important that GoingWare spend time with you to understand your needs and to hammer out a detailed requirements specification before commencing architectural and development work. It is important to understand that the product will be delivered to specification and that changing the specification after the work has begun can cause delays and additional cost due to redesign and having to backtrack in the product development.
GoingWare has experience architecting a wide variety of software products, and the design for your product will be worked out so that it can be implemented in a straightforward and coherent way. Large software problems are approached by a "divide and conquer" process, in which the large overall problem is divided into smaller subproblems until each can be reasonably comprehended by a single person.
It takes experience and expertise to do this well, as there are infinitely many ways a large problem can be divided up into solutions that could conceivably work, but there are a much smaller number favorable solutions that will be tractable and cost effective to deal with - as well as allowing for maintainability and future expansion of your product.
At the time of this writing (February 2005) GoingWare President Michael D. Crawford has been in the industry for seventeen years and has worked on dozens of products, some of them on large teams, and some of them products he has written entirely by himself. He has also performed maintainence on many programs and ported several others from one platform to another. Thus he has the experience needed to design a quality architecture for your program.
Software design is an iterative process. The complete implications of a design decision often cannot be fully understood until it is at least partially implemented. For this reason, the complete program architecture is not specified up-front but instead is arrived at iteratively, being refined as the product is developed.
If a program is well-designed, implementation should be straightforward. Modern object-oriented techniques and programming languages aid rapid and reliable software development. GoingWare uses a number of tools to enforce reliability, including dynamic (run-time) memory and performance testing tools, static source code analysis tools, extensive use of assertions in debug builds to catch bugs during testing, as well debugging memory allocators.
GoingWare aims to produce a reliable program from the very start - we strive to minimize bugs throughout the software development process, believing that the overall time to market will be reduced if defects are not allowed to accumulate.
This is to be contrasted with the practice in many development shops where the aim is to be feature complete before testing and debugging is started at all. This invariably leads to products which are riddled with defects and occassionally leads to the worst bug of all - the need to redesign and reimplement large parts of the program because the original concept for the program is discovered to be wrong after testing has begun.
By aiming for quality from the very start, the final, formal quality assurance process can be kept to a minimum, beta testing can be short and end-user satisfaction high.
GoingWare believes very strongly in the importance of rigorous quality assurance. Any product that we develop will be extensively tested before being delivered to you.
In addition, GoingWare develops products for embedded platforms such as Texas Instruments DSP/BIOS, embedded Linux distributions such as uCLinux, and various System-on-Chip (SoC) products such as the Oxford Semiconductor OXFW911 and OXFW912 FireWire/IDE and OXFW922 FireWire/USB/IDE storage bridge chips.
GoingWare is a cross-platform development company. We presently provide development on the following platforms, and are capable of providing applications that build from a single set of sources to deliver executables for all of them:
We can work with other platforms as the need arises.
Besides cross-platform development, GoingWare does porting, which typically involves converting applications written for one platform to work on a different one. This can involve implementing ported application to the native API of the new platform, or implementing it with a cross-platform application framework so the application may be built from a single set of sources on both the old and new platforms.
For most applications, it is helpful to write to an application framework rather than writing to the naked API of the platform. This saves a great deal of work and allows one to leverage the efforts of others as the framework is upgraded over time. In addition, coding to a cross-platform framework provides future flexibility - you can change your delivery platform as market conditions change. You need no longer be exposed to the problem of a platform losing market share, you just deliver for the new favorite.
Application frameworks and libraries that we presently work with include:
Working with libraries and application frameworks saves significant development time and cost. GoingWare always tries to use the available existing software resources, many of which are available in open source form.