Professional Linux Programming
Authors: Neil Matthew and Richard Stones
Price: $59.99 US
Reviewer: Stephanie Black
With the increasing number of Linux programming books on the market, the new Linux coder is left in a bit of a muddle.
Information about Linux is spreading—a good thing in terms of the open-source model and the community that supports it. The influx of new Linux authors also tends to decrease the odds of finding literacy and technical expertise in the same place. Numerous would-be writers ride the popularity wave of “Penguin Power!”, resulting in increasing numbers of Linux “bibles”, most of which are just as difficult to follow as the original and not nearly as imaginative. In either case, the context is most often distorted, if presented at all. Then again, there are exceptions.
Professional Linux Programming is a huge credit to both its authors and publishers. It's clearly written, highly informative and, with the exception of one or two topics, exhaustive in scope. Its intended audience is intermediate programmers, but the book is written in sufficiently clear and plain language as to be quite easily understood by the novice programmer.
The book's main “theme” is a project designed for a DVD rental store, taking into account both general and user requirements for a design specification. These specifications are followed up in subsequent chapters, which discuss various elements. The vast majority of the chapters in the book go back to this project and approach the subject matter from that context. Occasionally, the authors sprinkle in “take a break” chapters. These are related to a variety of programming issues in general. The project, however, is the meat of the book.
This approach provides not only a context, but a flow of information from one topic to the next. As a result, the reader learns a vast quantity of subjects easily because they're all connected to each other—an approach more conducive to increasing a coder's knowledge and skill than the “bits and pieces” approach so prevalent among technical works.
The majority of programming books, even Linux programming books, are negligent about providing sane information regarding application design according to general (and user) specifications. Given that the first step of writing an application is to define its use and user-base, design is too often overlooked or, if mentioned, relegated to the back of the book. This is the first topic of discussion in Professional Linux Programming and gives the reader a taste of rationally approaching software development.
Having read several Linux programming books, all of which ignore (by intent or accident) the increasing popularity of CVS (concurrent version system), I was overjoyed to find an entire chapter detailing this marvelous tool, both in collaborative and individual contexts. Common CVS terminology (check-out, commit, repository, etc.) is delineated, as are commands and the growing number of CVS resources available on the Internet.
Databases are, for many programmers, the singularly least interesting subject and the one that is most easily overlooked. Matthew and Stones not only give a foundation in database requirements and functions, but offer an in-depth comparison of PostgreSQL and MySQL. An interesting addition was a brief contrast between libpq and ecpg as ways of calling PostgreSQL from C. Later in the book, as application construction confronts the area of connectivity, PHP is detailed as well.
In separate chapters, both debugging and testing are carefully illustrated, with particular attention paid to the varieties of software errors and the tools to intercept them prior to release. Testing tools, including different kinds of tests for different kinds of requirements, are examined in great length with particular attention paid to getting the most information from tests to ensure quality of the application.
Chapter 12 deals with secure programming (including a reference to Ken Thompson's “trojan” that appeared in every release of the UNIX compiler). This chapter does not, however, simply leave the reader with a simple alert; it details how permissions work, some useful cryptography tools and some environment variables, all of which can assist in the production of secure code. It ends with a discussion of security features/impediments that come with some of the more common programming languages.
I personally have to give an extra round of applause to anyone who can take the complexities of Beowulf clusters and turn them into very comprehensible English (I am currently scrounging a bunch of 386s with which to construct my own Beowulf cluster—or should that be Bayou-Wolf?).
|Designing Electronics with Linux||May 22, 2013|
|Dynamic DNS—an Object Lesson in Problem Solving||May 21, 2013|
|Using Salt Stack and Vagrant for Drupal Development||May 20, 2013|
|Making Linux and Android Get Along (It's Not as Hard as It Sounds)||May 16, 2013|
|Drupal Is a Framework: Why Everyone Needs to Understand This||May 15, 2013|
|Home, My Backup Data Center||May 13, 2013|
- RSS Feeds
- Dynamic DNS—an Object Lesson in Problem Solving
- Making Linux and Android Get Along (It's Not as Hard as It Sounds)
- Designing Electronics with Linux
- Using Salt Stack and Vagrant for Drupal Development
- New Products
- A Topic for Discussion - Open Source Feature-Richness?
- Drupal Is a Framework: Why Everyone Needs to Understand This
- Validate an E-Mail Address with PHP, the Right Way
- What's the tweeting protocol?
- Kernel Problem
3 hours 57 min ago
- BASH script to log IPs on public web server
8 hours 24 min ago
11 hours 59 min ago
- Reply to comment | Linux Journal
12 hours 32 min ago
- All the articles you talked
14 hours 55 min ago
- All the articles you talked
14 hours 58 min ago
- All the articles you talked
15 hours 18 sec ago
19 hours 25 min ago
- Keeping track of IP address
21 hours 16 min ago
- Roll your own dynamic dns
1 day 2 hours ago
Enter to Win an Adafruit Pi Cobbler Breakout Kit for Raspberry Pi
It's Raspberry Pi month at Linux Journal. Each week in May, Adafruit will be giving away a Pi-related prize to a lucky, randomly drawn LJ reader. Winners will be announced weekly.
Fill out the fields below to enter to win this week's prize-- a Pi Cobbler Breakout Kit for Raspberry Pi.
Congratulations to our winners so far:
- 5-8-13, Pi Starter Pack: Jack Davis
- 5-15-13, Pi Model B 512MB RAM: Patrick Dunn
- 5-21-13, Prototyping Pi Plate Kit: Philip Kirby
- Next winner announced on 5-27-13!
Free Webinar: Hadoop
How to Build an Optimal Hadoop Cluster to Store and Maintain Unlimited Amounts of Data Using Microservers
Realizing the promise of Apache® Hadoop® requires the effective deployment of compute, memory, storage and networking to achieve optimal results. With its flexibility and multitude of options, it is easy to over or under provision the server infrastructure, resulting in poor performance and high TCO. Join us for an in depth, technical discussion with industry experts from leading Hadoop and server companies who will provide insights into the key considerations for designing and deploying an optimal Hadoop cluster.
Some of key questions to be discussed are:
- What is the “typical” Hadoop cluster and what should be installed on the different machine types?
- Why should you consider the typical workload patterns when making your hardware decisions?
- Are all microservers created equal for Hadoop deployments?
- How do I plan for expansion if I require more compute, memory, storage or networking?