Experience

Hyperhound has designed, built, and delivered a wide variety of software. You will see the variety reflected in the specific software systems described on our projects page. We have built applications, operating systems, multimedia systems, embedded systems, games, libraries, frameworks, clients, servers, applets, servlets, plug-ins, demos, and proofs-of-concept. Whatever you throw at us, we've probably done something like it before.

Software Architecture

Our greatest strength is our experience in software architecture and design. We pride ourselves on our success at creating lean, robust designs that meet all of your requirements and that achieve your project goals. When it comes to software architecture, complexity is the enemy. We strive for simplicity in design, with enough flexibility built in to accommodate future change. We do not believe in baroque architectures that try to address every conceivable aspect of every conceivable problem.

Libraries

We have built many custom libraries, including cross-platform libraries. We are experts at designing object-oriented or procedural APIs that are clean and coherent. Our APIs are never gold-plated. We have built kernel libraries and application libraries. We have built libraries that are heavily concurrent and libraries that are strictly sequential. We understand the special requirements placed on libraries to be free from faults, to make minimal use of system resources, to prevent data corruption, and to function in the presence of invalid inputs or stressful operating conditions. We also understand that libraries usually have to be built with an eye towards portability and future extension or reuse.

Applications

We are experienced at constructing applications with graphical user-interfaces. In the past we have built applications for the Windows, Macintosh and Palm platforms, and for proprietary platforms. We understand human-interface design and we are comfortable with interface-builders and other RAD tools. We have built applications using procedural system interfaces, and we have built applications using object-oriented frameworks.

Object-Oriented Systems

We have long, hard, practical experience in object-oriented analysis, design, and construction. Our CTO built his first object-oriented system well over a decade ago, before Java existed, and even before there were any native C++ compilers. We appreciate and believe in the advantages of object-oriented development, and we also know that it is not the appropriate development method for every project.

Internet Systems

Most of the software we build these days has a requirement to interface to the internet. We have worked with most of the standard internet building blocks (XML, HTML, HTTP, Java, JavaScript, and so on) and we have also developed libraries for both standard and proprietary network protocols.

Multimedia Systems

We have built quite a lot of multimedia software and we are practiced hands at working with digital audio, video, and images; digital compression; 3D graphics and sound; and exotic input and output devices. We have worked with a wide range of multimedia APIs, including extensive work with DirectX and OpenGL. We understand the soft real-time requirements of many multimedia systems, and we won't blanch when you start talking about cache architecture or bus bandwidth. We are not afraid of hardware.

Small Systems

Small systems are systems with limited resources, typically with slow processors, slow I/O devices, limited memory, and small displays. Small systems may also have embedded software and operate without hardware acceleration for floating-point arithmetic, sound, and graphics. We are skilled in the special resource management techniques required to build effective software for small systems. We understand real memory management, performance tuning, data compression techniques, and ROM images. And we are proficient at writing tight assembly language, when it makes sense.

Platforms

Languages

Frameworks

Development Environments