This interview with James McCaffrey is the first in a series of Q&A blog posts with our Succinctly series authors.
Why were you interested in working with Syncfusion to create e-books for the Succinctly series?
As a software developer, one of my biggest challenges is keeping up with the constant stream of new technologies, programming languages, and techniques. And the problem here is not lack of information, the problem is too much information. Every developer I know spends a ton of time wading through unhelpful information – that is, information that just isn’t written for developers. When I’m trying to solve a problem, I want to see code examples that get right to the point, and have enough, but not too much, explanation. Usually this type of information is found on personal blog posts or developer question-and-answer sites, which are often great, but sometimes have serious inaccuracies. Some time ago I came across the Syncfusion Succinctly series of free e-books and was immediately impressed. I thought, “At last, someone has it right! High quality information, in a concise form, written by developers, for developers.” I felt that I could contribute to the developer community with my background in machine learning with the C# language and so I wrote Machine Learning using C# Succinctly.
Are these e-books your first technical manuals? Do you have additional titles you would like to share with our developer community?
In addition to the recent “Machine Learning using C# Succinctly e-book from Syncfusion, I’ve also written Neural Networks using C# Succinctly. Early in my career I was a university professor and wrote quite a few research articles. Later, I wrote a couple of books on software testing that have held up pretty well over time. But to be honest, I think I’m most proud of my two Syncfusion e-books. And the fact that these e-books are free is something I really like and appreciate as a developer.
Each title in the Succinctly series features a graphic of an outdated technology, what is your favorite outdated technology?
Many people I know, both software developers and normal people (just joking there), can point to one or two brief incidents when they were young that made a huge impression on them. For me, it was seeing a mechanical toy computer. The device worked sort of like an intelligent pinball machine. A program was entered by manually setting switches, then balls were released from a top hopper. As the balls rolled down they toggled switches. The final answer was displayed in binary format on some of the switches. It turns out that mechanical computers have existed since 200 B.C. For example, the ancient Greek Antikythera mechanism computed the positions of the planets, and Charles Babbage designed an Analytical Engine in 1837. I built a very large recreation of the toy mechanical computer that inspired me.
James McCaffrey with a large recreation of a gravity-powered mechanical computer
What have you learned since writing these e-books about C#? If you could share an update on any element of your e-books, what would that be?
Most of the software developers I know agree with the observation that we never, ever get a computer program written correctly the first time. After I write a program, it’s not uncommon for me to toss the whole thing away and restart from scratch, with the advantage of hindsight. Well, the same fact is true about writing a book or magazine article—there’s always room for improvement. My biggest criterion when writing code or a book or article is, “Keep it simple.” Sometimes I think authors try to impress us developers by trying to make things over-complicated. So, what I’m trying to say is, the biggest thing I learned about C# when I was writing my e-book for Syncfusion is the importance of keeping code as simple as possible.
One update I’d like to take a stab at is refactoring some of the C# code to the Python language. Python is becoming more and more common, and machine learning techniques in Python are not well explained in my opinion.
Do you have another reference that you would recommend to people interested in C#?
For C# programmers, for two specific topics, I highly recommend Syncfusion’s WPF Succinctly by Buddy James and ASP.NET Web API Succinctly by Emanuele DelBono. For general C# topics, especially data structures, I really like the website www.dotnetperls.com, which is maintained by a fellow named Sam Allen. He also uses the Succinctly approach.
James McCaffrey with a 3-bit gravity-powered mechanical binary counter module