Tuesday, December 16, 2014

Terminal 101: A better shell with zsh

Every Monday, we'll show you how to do something new and simple with Apple's built-in command line application. You don't need any fancy software, or a knowledge of coding to do any of these. All you need is a keyboard to type 'em out!

A shell is the software interface to the operating system and the various services it provides. When using the default Terminal interface on an install of OS X, you are using the Bash shell. While Bash is a great shell, there are better alternatives out there, and today, we’ll show you one such alternative: Zsh.

The rest of the article is available here.

Saturday, November 22, 2014

CUDA Application Design and Development

As the computer industry retools to leverage massively parallel graphics processing units (GPUs), this book is designed to meet the needs of working software developers who need to understand GPU programming with CUDA and increase efficiency in their projects. 

CUDA Application Design and Development starts with an introduction to parallel computing concepts for readers with no previous parallel experience, and focuses on issues of immediate importance to working software developers: achieving high performance, maintaining competitiveness, analyzing CUDA benefits versus costs, and determining application lifespan.

The book then details the thought behind CUDA and teaches how to create, analyze, and debug CUDA applications. Throughout, the focus is on software engineering issues: how to use CUDA in the context of existing application code, with existing compilers, languages, software tools, and industry-standard API libraries.
Using an approach refined in a series of well-received articles at Dr Dobb's Journal, author Rob Farber takes the reader step-by-step from fundamentals to implementation, moving from language theory to practical coding.

* Includes multiple examples building from simple to more complex applications in four key areas: machine learning, visualization, vision recognition, and mobile computing
* Addresses the foundational issues for CUDA development: multi-threaded programming and the different memory hierarchy
* Includes teaching chapters designed to give a full understanding of CUDA tools, techniques and structure.
* Presents CUDA techniques in the context of the hardware they are implemented on as well as other styles of programming that will help readers bridge into the new material.

Graphics Shaders: Theory and Practice

Programmable graphics shaders, programs that can be downloaded to a graphics processor (GPU) to carry out operations outside the fixed-function pipeline of earlier standards, have become a key feature of computer graphics. This book is designed to open computer graphics shader programming to the student, whether in a traditional class or on their own. It will complement texts based on fixed-function graphics APIs, specifically OpenGL. It introduces shader programming in general, and specifically the GLSL shader language. It also introduces a flexible, easy-to-use tool, glman, that helps you develop, test, and tune shaders outside an application that would use them.

API Design for C++

The design of application programming interfaces can affect the behavior, capabilities, stability, and ease of use of end-user applications. With this book, you will learn how to design a good API for large-scale long-term projects. With extensive C++ code to illustrate each concept, API Design for C++ covers all of the strategies of world-class API development. Martin Reddy draws on over fifteen years of experience in the software industry to offer in-depth discussions of interface design, documentation, testing, and the advanced topics of scripting and plug-in extensibility. Throughout, he focuses on various API styles and patterns that will allow you to produce elegant and durable libraries.

* The only book that teaches the strategies of C++ API development, including design, versioning, documentation, testing, scripting, and extensibility.
* Extensive code examples illustrate each concept, with fully functional examples and working source code for experimentation available online.
* Covers various API styles and patterns with a focus on practical and efficient designs for large-scale long-term projects.

Interactive Computer Graphics

This book is suitable for undergraduate students in computer science and engineering, for students in other disciplines who have good programming skills, and for professionals.

Computer animation and graphics–once rare, complicated, and comparatively expensive–are now prevalent in everyday life from the computer screen to the movie screen. Interactive Computer Graphics: A Top-Down Approach with Shader-Based OpenGL®, 6e, is the only introduction to computer graphics text for undergraduates that fully integrates OpenGL 3.1 and emphasizes application-based programming. Using C and C++, the top-down, programming-oriented approach allows for coverage of engaging 3D material early in the text so readers immediately begin to create their own 3D graphics. Low-level algorithms (for topics such as line drawing and filling polygons) are presented after readers learn to create graphics.

The Boost C++ Libraries

The Boost C++ Libraries introduces 38 general purpose Boost libraries. They should be of great use to C++ developers - no matter what industry they work in and no matter what software they create.
The most important goal of the book is to increase your efficiency as a C++ developer. You will learn how to use the Boost libraries to write less code with fewer bugs and finish projects faster. And you will see how the Boost libraries help you write more concise code that is more easily maintained and more easily understood by others.
Just as The Boost C++ Libraries focuses on increasing your efficiency, the author has tried hard to introduce the libraries as efficiently as possible so you can learn about the Boost libraries easily and quickly. Ideally you should be able to read the book in one or two days and understand each Boost library immediately, without having to read chapters a second time. Even if you have no experience with any of the 38 Boost libraries, once you have read the book, you should be able to decide which ones to use and know how to use them.
Although the book is not a reference, you may want to look up chapters from time to time to recall details. It does not replace the official documentation for the Boost libraries; instead it complements it.
The book comes with over 250 examples, which are short but complete - they can be built and run. The idea is to help you quickly understand what classes and functions the Boost libraries offer. Again, it's about getting you up to speed.
The author considers the book a success if you find the 38 Boost libraries introduced easy to use, and if they help you become a more productive C++ developer. He also considers it a success if you go through the book with ease and find the explanations and examples crystal-clear. This book and the Boost libraries should make your life as a C++ developer easier.
The Boost C++ Libraries introduces the following libraries from Boost 1.47.0, which was released in July 2011:

  1. Any 
  2. Array 
  3. Asio 
  4. Bimap 
  5. Bind 
  6. CircularBuffer 
  7. Conversion 
  8. DateTime 
  9. DynamicBitset 
  10. Exception 
  11. Filesystem 3 
  12. Foreach 
  13. Format 
  14. Function 
  15. Interprocess 
  16. Intrusive 
  17. Lambda 
  18. MinMax 
  19. MultiArray 
  20. MultiIndex 
  21. NumericConversion 
  22. Operators 
  23. PointerContainer 
  24. Ref 
  25. Regex 
  26. Serialization 
  27. Signals2 
  28. SmartPointers 
  29. Spirit 2.x 
  30. StringAlgorithms 
  31. System 
  32. Swap 
  33. Thread 
  34. Tokenizer 
  35. Tuple 
  36. Unordered 
  37. Utility 
  38. Variant

Physically-based Rendering

Physically Based Rendering, Second Edition describes both the mathematical theory behind a modern photorealistic rendering system as well as its practical implementation. A method known as "literate programming" combines human-readable documentation and source code into a single reference that is specifically designed to aid comprehension. Through the ideas and software in this book, you will learn to design and employ a full-featured rendering system for creating stunning imagery.
This new edition greatly refines its best-selling predecessor by adding sections on parallel rendering and system design; animating transformations; multispectral rendering; blue noise and adaptive sampling patterns and reconstruction; measured BRDFs; instant global illumination, as well as subsurface and multiple-scattering integrators. These updates reflect the current state-of-the-art technology, and along with the lucid pairing of text and code, ensure the book's leading position as a reference text for those working with images, whether it is for film, video, photography, digital design, visualization, or games.
The author team of Matt Pharr, Greg Humphreys, and Pat Hanrahan garnered a 2014 Academy Award for Scientific and Technical Achievement from the Academy of Motion Picture Arts and Sciences based on the knowledge shared in this book. The Academy called the book a "widely adopted practical roadmap for most physically based shading and lighting systems used in film production."

For further details, you can visit the official website for PBRT.