Product: Book - Paperback
Title: XML Step by Step, Second Edition
Publisher: Microsoft Press
Authors: Michael J. Young
This is a book for beginners. I bought the first edition and it gave me all the important information about XML before I started working with it. When I first read it, I thought it was a wonderful book and it was very easy to understand. You will now what's XML in one week and you'll be able to start using it in only two days just by looking at the examples.
Unfortunately, right now I know there's so much more out there about XML than the information contained on the book and believe me, once that you read it, you are never going to used it again because it's not a good book for reference.
I would recommend you to look for a different book with more examples, source code, advanced features or even one that can be used as a reference in your future work.
Product: Book - Paperback
Title: HTML for the World Wide Web with XHTML and CSS: Visual QuickStart Guide, Fifth Edition
Publisher: Peachpit Press
Authors: Elizabeth Castro
I bought Castro's book along with Joe Burns HTML Goodies. I prefer Castro, although both are good. Burns has a tendency to be too "cute;" he doesn't have to write a dissertation, but I felt that in trying to make his material simple and entertaining he was talking down to me, even though his content and web examples were excellent.
At first I found Castro to be dry. The material was presented in what seemed like a repetitive way, and in reading whole chapters everything seemed to run together. However, when I got used to it I realized that the consistent format made it easy to learn new topics because I had got to know where to expect things. I also liked her focus on Catalan and cats, as well as her subtle humor, because it presented her in a very human way, which to me is very important in a technical book.
The book's organization is very good and that, along with its comprehensive index, makes it an excellent reference book as well.
A technical writer who is (a) good technically and (b) a good writer is rare. Castro is both.
Product: Book - Hardcover
Title: Unix Network Programming
Publisher: Prentice Hall PTR
Authors: W. Richard Stevens
Complete and detailed book, with practical examples almost everywhere, and a particular emphasis is put on the TCP/IP internet protocol suite.
But not very nice editing and layout, and a bit confusing at some points.
Around the first 85 pages are dedicated to UNIX in general (signals, daemons, filesystem general structure), and not dedicated to networking.
But it talks about the UNIX techniques you will need in the rest of the book, so you won't really need any other and no assumptions about your networking knowledge are done.
The real book starts providing a detailed description of IPC techniques: pipes, FIFOs, streams, message queues, semaphores, shared memory. It might result confusing when to use each technique and how to combine them.
But each of them comes with comprehensive client-server examples and several file locking implementations that help to fully understand the text, and comparisions and valuable advices.
A few tables are outdated now.
But this is no problem as they are available in your UNIX kernel configuration or include files, and the book shows how to find the right values in each case.
A chapter is dedicated to explain networking terms and concepts (OSI models, byte ordering, buffering, multiplexing, routing..)
But even if it's more than enough to understand how everything presented in the book works, in my opinion its a bit short.
Several protocol suites are described (TCP/IP, XNS, SNA, NetBIOS, OSI, UUCP) so it might be hard to choose the right one for your application.
But the different characteristics and services they provide are compared making this choice easier.
Stevens makes a thorough description of the Berkeley Socket Interface and the System V TLI communication protocol APIs, providing examples and useful routines like the implementation of a reliable UDP/IDP protocol that is later used in some of the project examples in the last part of the book (tftp, lpd, rmt, rlogind, ...), each of them explained in detail.
But for some people this might be too much C source code (around 15000 lines, claims the author), and not enough real life problems or advices. A matter of taste.
There is a part dedicated to security, which explains the Kerberos authentication system and the standard .rhosts, which is applied to the rlogind example.
But the Kerberos chapter along with the one dedicated to the Apollo, Xerox Courier and Sun RPCs, even if they provide enough descriptions and examples, seem to be a bit too short.
In general, I'd say it's a complete book about network programming under UNIX which provides in-depth explanations of the main communication protocols and techniques. And since communication is often a must under UNIX, a very useful book to have near your keyboard.
No buts here, get it :)
Product: Book - Paperback
Title: About Face 2.0: The Essentials of Interaction Design
Authors: Alan Cooper, Robert M. Reimann
This book had several very good ideas inside it. The vast majority of them are common sense in hindsight. Some ideas are radical and would require massive time and money to implement. Unfortunately, his ideas tend to fall on deaf ears due to the author's use of a writing style more suited to (bad) poetry than technical persuasion, a condescending attitude towards developers, and failing to provide sufficient application examples of his ideas. Reading this was a departmental exercise for our (software) company. I got a lot out of it, but others did not. This is unfortunate, because if the author took his own advice and removed "excise" and the smugness, the rest of the team would have been more receptive.
Apparently Cooper wanted to be a poet and certainly not a technical writer. The first rule of technical writing is to get your point across. He goes on for pages without actually saying anything. He too frequently uses words that many people have never heard of. You don't change people's mind when they have to focus on the words instead of their message (doesn't he say something similar about software). Here's a sampling of his poor word choices.
Kafkaesque p440 simulacrum p265 conflated p 465 prolix p469 tessellation p324 interstice p292 appellations p331 proselytizing p334 adjudged p354 bifurcation p367 execrably p453 concomitant p478:
While there's nothing wrong with those words, he uses them when other more-recognizable words are available or he uses them when no word is needed at all! It could be removed from the sentence entirely. All this emphasizes that he's more interesting in sounded like a pompous Lit major than trying to persuade readers. He gives the feel of someone wanting to write a college book and thus makes it intentionally sound technical. Gee, didn't his book say us developers do that with software too often? Can't take his own advice.
As a developer who gets paid by customers who buy our product, my goal is help the user as much as possible. Cooper gives the impression that ALL developers are rude, lazy, and hate the user. He calls us lazy because he assumes we always take the easiest (and less intuitive) way out - totally ignoring that we have schedules and our bosses often dictate our features based on time. He imbues us with evil traits as if we're a bunch of maniacal human-haters: "Mwa ha ha! I'll put yet another error message in my program. That should make my users feel stupid and they'll kill themselves and I'll rule the world." Most of us would love to create some of the intelligent interfaces he mentions (but gives few examples). Lack of time is the main reason why we don't. This should be obvious to even beggars on the street corner. Since developers must be persuaded to make these changes, it hardly makes sense to alienate them so.
If you're not part of the solution, you're part of the problem. In the extreme majority of his issues with current software, Cooper provides no suggestions for how to solve it. At that point, you're just complaining.
The book has some good information and some very interesting ideas. However, its presentation is awful. If you feel developers hate users and intentionally make software complicated (so they in turn will lose business and thus lose their jobs), but you seldom want examples of how to fix this problem, you'll love this book!