Why were you interested in working with Syncfusion to create e-books for the Succinctly series?
I have a YouTube channel dedicated to programming education. It's called What's a Creel? I was asked by Syncfusion to write an e-book on x86 Assembly, which was the topic of most of my earliest videos. I'd never written an e-book before, but the opportunity seemed interesting to me, and the experience was very positive.
While studying at University, my courses mostly concentrated on Java. This seemed strange to me; there's nothing wrong with Java, but it is just one high-level, C-based language. The University was excellent, and there's no doubt that I learned a huge amount from the professors and lecturers. But I was surprised that the syllabus didn't include low-level languages like Assembly, nor did it include any courses on high performance programming or graphics programming. I'd previously learned about these topics from resources online. When Syncfusion approached me about an e-book, I saw it as an opportunity to combine some of the resources I'd learned from into a more concise format.
Are these e-books your only technical manuals? Do you have additional titles you would like to share with our developer community?
I have not written any other technical books, but the field of computer science is so vast that there is no end to the books I'd like to write. I am interested in functional languages, like Lisp and Haskell. They offer an interesting insight to problem solving from a completely different angle than C-based languages.
I find the field of probability and statistics fascinating. These topics offer some amazing tools for data mining and understanding numbers in general. There's something incredible about taking a couple of lists of a million numbers and producing information from them. No previous generations of people had this kind of power at their fingertips. Look at ANOVA, Pearson's Correlation, or Chi-Squared; they're just simple number tricks in one sense. But in another sense, these techniques represent an extraordinary power that a modern computer programmer has.
I am also interested in creating custom compiled and scripting languages for specific purposes. Programmers aren't limited to the existing languages; if we have a problem to solve, we can just make our own language!
Each title in the Succinctly series features a graphic of an outdated technology. What is your favorite outdated technology?
There is a piece of outdated technology that is very close to my heart. It is something I love dearly and work with a lot, though it is nearing 100 years old. I have the rare privilege of regularly performing alongside some of the greatest actors and actresses of all time, Buster Keaton, Clara Bow, and Charlie Chaplin. These people are silent film stars from the 1920s. The films are nearly a century old, and yet they still evoke the same reactions and emotions today. Love, jealousy, betrayal, adventure and action, these things haven't changed.
There's nothing like seeing a silent film on the big screen. You buy your ticket from the box office, enter an ornately lit theater, taking a seat amongst the murmuring crowd. The crowd quiets as the lights dim. The curtains open, and the entire building begins reverberate and sing. It's a theater pipe organ—half the building is a musical instrument! The film starts on the silver screen and the one and only Buster Keaton shows what a comic genius is capable of.
I am the organist. I have the incredibly rare privilege of watching the film, laughing and trying to keep up with Buster as I play. It's like no other job in the world!
If I had to choose a favorite piece of outdated technology, I'd definitely choose silent films!
Chris Rose plays organ to accompany silent films
What have you learned since writing these e-books?
The experience with Syncfusion made me aware of the great e-books you people produce, and also the simplicity of the editing and publishing process.
Do you have another reference that you would recommend to people interested in any of the topics you have covered in the Succinctly series, including CUDA, Direct2D, Direct3D, and Assembly?
I learned from references online. Mostly from the hardware manufacturer manuals. They're pretty dense, but the information is excellent.
For CUDA I recommend the nVidia manuals such as CUDA C Programming Guide and CUDA C Best Practices Guides. Dr. Dobb's article “Supercomputing for the Masses” has some excellent information, which is still mostly applicable, but it is a little outdated. “GTC” is a yearly GPU Technology Conference. “GTC On Demand” offers a lot of excellent presentations on the topic of CUDA and GPGPU programming in general.
For Direct2D and Direct3D, I'd recommend folks look up Microsoft's MSDN. There is a series of books, featuring articles from many programmers, called Graphics Gems. These books are full of very interesting topics closely related to graphics programming. They are often very low level, and tend to concentrate on data structures and algorithms rather than DirectX specifically. Nvidia produces a similar series of books called GPU Gems which have more up to date information, as well as more practical examples.
For Assembly, the best resources are the programmer's manuals, AMD Programmer's Manuals and Intel Software Developer's Manual. There is also a collection of e-books by a fellow called Agner Fog called Optimization Manuals. Agner's books list the exact timings in clock cycles for every instruction in x64 Assembly. This is something that Intel and AMD do not provide, and it is an indispensable resource for programmers hoping to write high performance Assembly code.
And lastly, I couldn't end without another shameless YouTube channel plug: If you want to know about programming, watch What's a Creel?