Whitepapers

Whitepapers

Time Library: A Great Tool to Manage Time and DatePDF file
Time and date calculation is essential to application development. Even though it sounds simple, it can often be quite complex. This article explores a set of APIs (Application Programming Interface) offered by Recursion’s Time Toolkit that greatly reduces the complexity of handling issues such as time zones and daylight saving time. This can be especially valuable for businesses that have multiple customer bases, operational bases, or suppliers around the world and that need an accurate and efficient way to handle date and time.
Author
Katherine Ye, Senior Software Engineer, Recursion Software, Inc.
Published
September, 2011
Recursion C++ DSP Toolkit LibrariesPDF file
Developing complex applications, such as video, and keeping them adaptive is a real problem in the Digital Signal Processing area. Easy to use, high performance tools can alleviate this problem to a large extent. Recursion C++ Toolkit is a commercial off-the-shelf product that provides a wide range of features for application developers using the Texas Instruments DM6437 and other similar processors. These features provide both easy abstractions to the complex OS layer APIs and are also a high performance enhancement to the native compilers in the TI Code Composer Studio. This white paper provides a brief description of the Recursion C++ Toolkit, its advantages, and coding samples.
Published
August, 2009
Next-Generation Strategies for DSP and ARM DevelopmentPDF file
Programming for DSP and ARM devices presents a common set of challenges for software engineers. Business managers will choose chipsets based on specific requirements, such as price, performance, history, and business relationships among other factors. Yet, it is software engineers that are burdened with compatibility and testing issues and ultimately will have to write code to multiple processors, likely with highly varied code bases. While the future dominance of the DSP and ARM processor market can be debated, devices built with either processor will likely remain in the market for many years to come. This paper offers cross-platform software solutions and a vision for next-generation software development.
Published
January, 2009
Database Toolkit: Portable and Cost Effective SoftwarePDF file
Database programming is no easy task, with expectations constantly running high. This paper explores the benefit of using the Database Toolkit in a client server environment, and covers examples of basic database operations using the Database Toolkit.
Author
Katherine Ye, Software Engineer, Recursion Software, Inc.
Published
November, 2008
Real-time Robot Animation: Building the Skeleton of a Software Brain using Massive, Maya and a Real-Time C++ FrameworkPDF file
Adjusting to continually changing requirements is a real problem developers face. This challenge can be overcome by careful planning, which includes finding the right tools that provide flexibility and extensibility. Read this case study to learn how Hanson Robotics delivers cutting edge robots by leveraging software tools to develop a real-time C++ robot control framework and successfully respond to changes along the way. Lessons learned include how to deal with changing requirements due to legacy code, integration issues, performance problems, and dependencies on 3rd party code.
Author
Bob Hauser, Director of Software, Hanson Robotics
Published
June, 2008
STL in Action: Helper AlgorithmsPDF file
This article introduces a new column called “STL in Action.” Each installment will describe a way to either utilize or extend the C++ Standard Template Library (STL). This article considers several approaches for making the STL algorithms easier to use and less prone to programmer error.
Author
Graham Glass, Chief Architect, Recursion Software, Inc.
Published
2004
STL in Action: A Universal Streaming ServicePDF file
Now that STL is becoming an established part of every C++ toolkit, programmers are eager to add nonstandard extensions to STL that make it more powerful. In my last column, I described the concept of helper algorithms, which are a nonintrusive way to make STL algorithms easier to use. In this column, I describe a universal streaming service (USS) that allows STL containers and other classes to be stored into a file or sent across an interprocess communication mechanism. USS is a lightweight mechanism that allows processes to make objects persistent and transportable without incurring the expense and overhead of a full object database or object communication system such as CORBA.
Author
Graham Glass, Chief Architect, Recursion Software, Inc.
Published
2004
Asynchronous Programming with Futures, Future Threads, and TrapsPDF file
Often processes execute in parallel by enabling applications to be multi-threaded, allowing system resources of multi-processor machines to process more efficiently and reduce computing time. Sometimes it is necessary to use a thread to process information and return its result. This can be done by passing an object, which will hold the result, to the constructor of the thread during thread creation. However, there is a danger of using the result too early, when the thread has not yet completed. This article discusses different approaches to solving this problem by presenting iterations of a simple application using a single-threaded model; using a multi-threaded model; using conditions for synchronization; using futures and future threads for deferred blocking; and using traps to decouple completion times between threads. Finally, the advantages and disadvantages of each approach are outlined.
Author
Dong Nguyen, Recursion Software, Inc.
Published
2004
Platform Independent Client/Server Communication with Full C++ TypesPDF file
This paper outlines a solution to provide platform independent client/server communication with full C++ types, and describes how services can be written entirely in C++ without any consideration of their transport. The solution allows the exposure of services in full C++ data types and features like templates and multiple-inheritance, etc., and is independent of the platform, so that a C++ program on Windows can exchange complex data with a C++ program on Linux, in fast binary format. In this article we present an optimal solution for exposing C++ objects.
Author
Dr. Zorabi Honargohar, Senior Software Engineer, Recursion Software, Inc.