Programming Books


Books-Under-Review-->Computers-->Education-->Programming-->16
Related Subjects: Tutorials
More Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250
Programming Books sorted by Average customer review: high to low .

Programming
Understanding UNIX/LINUX Programming: A Guide to Theory and Practice
Published in Paperback by Prentice Hall (2002-12-05)
Author: Bruce Molay
List price: $84.00
New price: $58.85
Used price: $53.94

Average review score:

question in example code, still 5 stars
Helpful Votes: 0 out of 3 total.
Review Date: 2006-04-04
I have read more than half of the book. I like the material the book covers and the way of teaching by exemples.
Most other books focus on the features of the Unix system.

However I have minor questions:
1. There are typographical errors in exemple code.
2. I do not like function tty_mode(int how) in chapter 6.
it seems trivial and unnecessry and the static variable inside
the function seems questionable style.
I wonder why these obvious things happened in such a good book.

Outstanding introduction to Unix systems programming
Helpful Votes: 1 out of 1 total.
Review Date: 2008-08-19
I bought this book as a quick introduction to the world of UNIX/Linux systems programming. Having had extensive prior experience with the C programming language and application development on other platforms (DOS, OS/2, AS/400), I read the book without actually trying out the sample code or programming exercises. My goal was to get a solid feel for the basic concepts of Unix systems programming as quickly as possible, in order to move on to more advanced Linux topics (assembly programming, kernel and device driver development, implementation of the Linux TCP/IP stack) covered in other books. I found this book to be exceptionally clear and well written and ideally suited for the purpose.

The book requires intermediate knowledge of C and some basic computing skills, but otherwise makes very few assumptions about the reader. Concepts are introduced gradually, and the exceptionally clear diagrams, analogies, case studies and sample programs make each chapter a pleasure to digest and learn from. In order to avoid overwhelming the reader, advanced details are moved out of the main flow of the text, and into the exercises at the end of each chapter.

Each chapter is structured in a similar manner. A small programming project is introduced as the goal of each chapter. Each is appropriately chosen so that the systems programming concepts that are to be the subject of the chapter are key to the solution. The author then guides the reader along the path by asking and answering the questions "What does it do?", "How does it work?", and "How can I write my own version?". The author has a knack for anticipating the types of questions that are likely to be in the reader's mind at the appropriate moments, and helps the reader along with helpful pointers and analogies. This approach is very effective, and while not as detailed and complete as that of W. Richard Stevens (Advanced Programming in the UNIX Environment), it is certainly more readable and easier to digest.

Overall, an exceptional introduction to Unix/Linux systems programming and highly recommended.

Easy to understand
Helpful Votes: 2 out of 2 total.
Review Date: 2005-09-29
It goes right to the point and it's easy too understand. One of the very few books out there that really shows what system programming is all about. Great samples too.

Beautiful Mind...
Helpful Votes: 3 out of 5 total.
Review Date: 2005-08-02
This book is beautifully written. I just got it today and read the first chapter. I bought it for a class I am taking in Unix Systems Programming. I was relieved when Molay's book arrived in the mail today. I was relieved that the book exceeded my expectations. If you can't afford Harvard, don't worry--the course is all here.

An excellent course through Unix and Linux with copious code and examples.
Helpful Votes: 5 out of 6 total.
Review Date: 2005-10-28
Unix has had the luxury of being one of the most documented operating systems in history. Many books have been dedicated to documenting the internals of Unix and Unix-like systems and some have risen to the ranks of classic texts regarded by all as necessary to understanding the inner workings of Unix. Understanding Unix®/Linux Programming would be in excellent company with these books. The book contains a copious amount of code and clear, diagramed explanations describing the processes transpiring in the machine.

Understanding Unix®/Linux Programming is designed to be used in an operating systems course with programmers fluent in C. Fortunately, though, the book can be used outside of the classroom if the reader does not mind an occasional open-ended questions with no included answers. The book may seem light on pages (530 including index), but the author should get an award for jamming so much useful explanation and helpful (and complete) code. The format of each chapter is familiar to most textbooks, with an introduction to the task at hand, explanations and examples, a summary, a list of explorations to further understand the topics presented, and a set of programming exercises. The exercises are creative and directly relate to the presented code. They're also (dare I say it?) fun. I'm not saying they'll replace crossword puzzles, but they do present creative or obvious challenges to the reader. (Like handling when a user types 'exit' from a shell, or blinking the text in an ncurses application).

The book includes topics on file I/O, device I/O, timers, process management, stream and datagram sockets, POSIX threads, file systems, the terminal driver, signals pipes, network programming and semaphores. A typical chapter will introduce an operating system concept (file systems and directories, for instance) and will briefly describe the current Unix command for working with that concept (pwd for determining the present working directory, or ls for listing the contents of a directory, and so forth). The author then proceeds to give a detailed description of what the operating system does to run the command. In the chapter on processes and programs, the author describes what processes are and how to use the ps command. Next the author describes how to fork child processes, and wait for them. This leads to the 'prompting shell', which is a simple, yet functional shell environment. Now some books would leave this exercise after creating a semi-functional shell, but the author presses on and in the next chapter creates 'small-shell' which is an interactive shell with a minimal scripting langauge and variable support. All of this in the span of 71 pages, with plenty of examples, full code listings, diagrams, and problem sets.

Understanding Unix®/Linux Programming takes advantage of the inquisitive nature of coders by presenting commands and command squences we all take for granted, and turning them into "how do they work" learning experiences. Anyone who has ever stopped to think why certain things work the way they do in Unix (or work at all) will find this book immensely helpful in sating that curiousity. Students who are assigned this textbook for a class should thank their teacher for choosing a genuinely useful text from which to read. I can't help but be jealous of students who will use this book for their classes. That jealousy is short-lived though, as anyone who wants an excellent resource for learning Unix programming will benefit from picking up this book. Kudos to the author for crafting not only an exceptionally easy to read and thourough book, but for taking the complex machinations of Unix and making them simple and accessible for all coders.

Programming
Upgrade Your Life: The Lifehacker Guide to Working Smarter, Faster, Better
Published in Paperback by Wiley (2008-03-17)
Author: Gina Trapani
List price: $29.99
New price: $15.61
Used price: $16.11

Average review score:

Best for PCs but useful for Macs
Helpful Votes: 0 out of 0 total.
Review Date: 2008-10-06
This book has some great tips as responses have noted. My one issue - at least a quarter of the book -- possibly more -- are tips that apply only to PCs. While often there will be a separate entry for PCs (usually longer) and Macs, there are a good number of suggested tools/tricks that only apply to PCs. I would have like to be able to read through only relevant ones.

A wonderful productivity tool
Helpful Votes: 0 out of 1 total.
Review Date: 2008-06-05
Upgrade Your Life is a great book. I've followed the blog for several years, but it's nice to have an analog version when you want to practice the best techniques available.

Recommended for information or technology workers who need to get more productive to survive and/or avoid insanity.

Wonderful Book
Helpful Votes: 1 out of 1 total.
Review Date: 2008-09-11
If there's one book that's provided me with value for money recently, this is it. I've had it for over a week and I look at it every day. The other reviews here do a fine job of telling you the content, so mine is a more personal review.

I have plenty of experience in computers, so I can see the advantage of many of the tips. Since buying the book I have changed my browser from IE and my e-mail from Yahoo to Thunderbird, as well as downloading some of the many freeware programs she recommends. It's improved my life immensely, and often the time spent downloading has been paid back in minutes.

I stop short at some of the suggestions for advanced users, but that's because I don't want to change things for the sake of changing them. Otherwise I have more programs that I know what to do with, but that's because there are so many of them.

What's good is that Gina has covered the recommendations down to the last detail, especially living your life with them. Too many books on software run through the features with no recommendations as to where and how to use them. So if you're a person with any level of computer experience you will be using these programs and tips more or less from when you adopt them.

So thank you Gina (and Terra) for bringing this book about. I would guess it's made me 50 percent more effective in the first week. I can't think of anyone who wouldn't do marvels after reading this.

Great book for those wanting to be a bit more efficient
Helpful Votes: 5 out of 5 total.
Review Date: 2008-05-28
This is a collection of hints, tips and hacks for the technologically inclined. Areas covered are email, organizing your data, tricks to overcome your procrastination, clearing your mind, focusing your attention, streamlining common tasks, mastering the web, honing your computer survival skills and managing multiple computers.

Not at all ironically, the people for whom this book will be most useful - real geeks - will already know some, not all, of these things. I am most definitely a geek, but I did learn many new things and happy for that.

In some ways, the book will a half-loaf for many. There's a lot of Macintosh stuff that will not be helpful to Windows users and vice-versa. There's Windows Vista material that will not be useful to those (most of us, perhaps?) who are sticking with Windows XP. But this is not a major problem: the book has so much good stuff in it, that there is plenty for everyone.

Trapani's writing style is wonderfully clear, direct and concise.

Overall, other than calling it useful, versatile, eclectic and well-done, this book is difficult to classify. It merges real life (remembering to pick up the milk) with the technical (setting up a VPN) and lots, lots more. It is definitely a fun book to browse, packed with lots of great information.

A very worthwhile addition to your library.

Jerry

The second edition is just as good as the first...
Helpful Votes: 6 out of 6 total.
Review Date: 2008-08-01
I remember reading the first edition of Gina Trapani's Upgrade Your Life: The Lifehacker Guide to Working Smarter, Faster, Better and thinking how wonderful it was. Of course, when the second edition came out, I had to get that one too. And as with the first one, I have all sorts of post-it notes scattered throughout the book for reference and "go back and try this" notes. Well worth the time and money you spend here.

Contents:
Control Your Email; Organize Your Data; Trick Yourself into Getting Done; Clear Your Mind; Firewall Your Attention; Streamline Common Tasks; Automate Repetitive Tasks; Get Your Data To Go; Master The Web; Hone Your Computer Survival Skills; Manage Multiple Computers; Index

Over the span of the chapters above, Trapani presents 116 different "hacks" that you can incorporate into your daily computer life to, well... work smarter, faster, and better. As with most books that are a compilation of different tips, some will resonate strongly with your current needs, while others are skimming material that may not be relevant. For instance, the hacks in the first chapter, Organize Your Data, hit home. I'm working towards consolidating multiple email addresses with Gmail, and I'm cutting down the number of folders I have, relying on search to find what I need. Master The Web also had some cool tricks, like having multiple home pages in Firefox and using Google Notebook for web clippings. I wasn't quite into the Managing Multiple Computers as much, as my current setup doesn't call for that. Still, it's good information to have around should you need it at a later time.

I actually found a couple different things occurring as I read through the material. There were hacks where some software was presented that did a certain task, and I'd realize I've been looking for something just like that. Similar to scratching an itch that you couldn't quite reach. Then there were the hacks that opened your eyes to whole areas you didn't even know you needed. Let's call that finding AND scratching the itch you didn't know you had five minutes prior. After going through some of the Automate Repetitive Tasks hacks, I have started to look at a lot of things I do with a view towards eliminating the manual repetitive effort that I just accepted as necessary before.

I highly recommend this book to everyone who spends most of their waking hours in front of a computer, and/or earn their living in front of one. Taking away even a small handful of nuggets can radically change the way you do things.

Programming
Admin911: SQL Server 2000
Published in Paperback by McGraw-Hill Companies (2001-05-21)
Author:
List price: $39.99
New price: $24.95
Used price: $19.40

Average review score:

A concise and friendly reference
Helpful Votes: 1 out of 1 total.
Review Date: 2002-02-27
This book is a concise and friendly guide that is great for admins. It proved itself the first time that I had a problem allowing me to quickly find the answer I needed.

Must Have for SQL Server DBA
Helpful Votes: 4 out of 4 total.
Review Date: 2002-09-03
This is one of those most have books for any SQL Server DBAs reference library.

Brian Knight covers a LOT of different items and goes into sufficient detail on all topics. Probably the best real world book on SQL Server administration out there. I've worked with SQL Server for over 5 years and have been a senior DBA over a large enterprise SQL Server farm but I still learned a great deal from this book.

Good resource
Helpful Votes: 6 out of 6 total.
Review Date: 2003-07-21
This is an excellent book. The coverage of SQL Server is very solid. However, if you plan to purchase the author's newest book, SQL Server 2000 for Experienced DBAs, DO NOT purchase this book. The newer book covers everything this book covers, in addition to the topic of high availability. Owning both books would be completly redundant, a mistake I personally made.

Great book, but not so much 911 in it really
Helpful Votes: 7 out of 7 total.
Review Date: 2002-03-25
If you're thinking of buying this book, because you've tried everything in Microsoft's online manual "Microsoft SQL Server 7.0 Performance Tuning Guide" and are still having some performance problems, then this book could be your solution.

It helped me solve some of the problems I was having with our productive server and helped me understand some basics a bit better than before. It does not contain everything you need to know, but gives you some ideas how you have to look for further information and what you have to look for.

It contains some good reference material, but not all of the hidden features. As with every book under 1000 pages this is not THE bible for the DBA but is a complementary book that will provide some invaluable information not found elsewhere. This book was well worth the price..

SQL Server 2000 Database Admin MUST HAVE !!!
Helpful Votes: 7 out of 7 total.
Review Date: 2002-03-21
SQL Server 2000 Administration headaches? ... Well if you need a rapid reference on system administrative functions that could not only save your company $$$ on downtime and system availability but improve your response to difficult situations this is a DBA must have. I have purchased more books attempting to get reliable information and tips to make my Administration of SQL Server Database systems robust, reliable, and rapid on response I have finally found the information I needed in "One" book. I would recommend this book for Mid to Senior level Database Administrators and as a guide for training Junior level DBA's to prevent bad habits and teach the proper habits of monitoring, managing and maintaining SQL Server databases overall. Oh and the nice touch is that TIPS: and CAUTION: notices throughout the book educate the creative "out of the box" approach to proper system risk management. I hope Mr. Knight considers sharing his talent with future Administrative Guides !!!

Programming
Build Your Own Web Site
Published in Paperback by McGraw-Hill Osborne Media (2003-05-01)
Author: David Karlins
List price: $24.99
New price: $3.49
Used price: $3.38

Average review score:

Best book for beginners
Helpful Votes: 0 out of 0 total.
Review Date: 2008-08-02
A few months ago I realised my two businesses need websites. I got from the professionals and promptly decided to do it myself. I reasoned that I could buy MS Frontpage, plus all the books I needed and do everything for less than 10% of what the quotes came to. I was right. And wrong.
I never realised how scared I was of Frontpage, so I compensated by buying way too many books. The good thing is that I am now in a very good position to tell you which books are worth your while and which are rubbish.

I was right in that one can publish your own website for a lot less than I expected. I was wrong in that of all the books I'd bought, I only needed one. You guessed it.

"Build your own web site" makes publishing a web site ridiculously easy. I am serious. The other books all have these clinical, corporation-type covers, so I looked at them first, and started building my site. For some reason, I was put off this book somehow. As if I thought, if the others have these professional looking covers, they must be the better books. How wrong I was.

This book is divided into three parts. The first part deals with how to prepare - how to decide what goes onto your site, how to plan, how to put everything together et cetera. How to design your site. I followed it to the letter and it worked.

Part 2 is subdivided into subsections, each dedicated to a different type of web development programme (such as Dreamweaver, Frontpage etc). I only read the Frontpage bit and that is how far I got. Because by that time I knew everything I needed to build great websites!

The money I spent on the other books is wasted money. This book helped me tremendously, and in record time. I might put a link to my site in my "About You" area, so you can see for yourself. But the point is that I was able to create a functional website, with some nice features, within the span of a day or two, on Frontpage, with absolutely no prior experience. NO other book available could do this. David Karlins is a genius.

This is without a doubt the best (beginner's) book on web designing of all the ones I've seen. In fact, nothing else comes close. The funny thing is that this book was the cheapest of the bunch!

Building your website
Helpful Votes: 5 out of 5 total.
Review Date: 2005-09-21
This book is straight to the point and does not require to be read in any particular sequence aside from the 1st chapter. After that you can bounce around to the sections you need which impact you most. Good reading and a good resource.

Simply perfect
Helpful Votes: 7 out of 7 total.
Review Date: 2006-01-19
I am an absolute beginner in the world of website design. After researching numerous books and videos on the subject I came across David Karlins absolutely brilliant book. It is written in such a manner that even a ten year old would understand. Someone who truly understands the subject and posses real knowledge is capable of presenting the same in a simple way. I highly recommend this book to all people who have gaps and holes in understanding of the process of creating web site.

How To Open A Web Site
Helpful Votes: 7 out of 9 total.
Review Date: 2005-08-03
In a rating like from 1 to 4 years of college for completion, this book covers the first two years.

Very Helpful book
Helpful Votes: 8 out of 8 total.
Review Date: 2003-12-01
Very helpful basic book for a web site builder/beginner to understand about web sites. Too often books/teachers seem to think that the problem is not understanding the how the design program works when the problem is more basic, more conceptual. I look forward now to reading his book on Dreamweaver MX.

Programming
The Cognitive Dynamics of Computer Science: Cost-Effective Large Scale Software Development
Published in Hardcover by Wiley-IEEE Computer Society Pr (2006-07-31)
Author: Szabolcs de Gyurky
List price: $90.50
New price: $54.94
Used price: $44.44

Average review score:

Be prepared to see the world differently ... a book far beyond software management!
Helpful Votes: 0 out of 0 total.
Review Date: 2007-06-21
Despite its title this book is an easy and entertaining read for a broad audience. While specifically written from the perspective of management of software projects, the book actually addresses management at large. It makes a concise case showing how dangerous and detrimental it is (to the successful outcome of large scale (software) projects that is, defined by the author as a "quality product on time and on budget") to separate technical leadership/management from personnel leadership/management, as so often mandated by many organizations. The "manager-architect," as termed by the author in his book, is key to success. Consequently not everybody can be up for this task, and only few who dare to try will succeed at it, as evidenced by the disconcerting fact that many "top level managers" manage nothing but major budgetary overruns (be they hidden or not), for which they are "held accountable" by society by being hailed as "America's Best Leaders." This book puts an end to such phoniness and provides especially the inexperienced/naive reader with a skill set to reveal/uncover such mismanagement and the individuals responsible.

The book is a true eye opener for aspiring and "want-to-be" managers alike. Also, having posters on "true leadership" pinned to the office wall does not magically inhale the ability of leadership into the office occupant. Leadership is an ability rather than a skill as clarified by the author. It is just like playing an instrument: it only gets you so far if you do not have it in you and practice every day. Chapter 12 "The Impact of Leadership on Software Development" should be read by any manager (aspiring, "want-to-be", or acting alike), and in particular by those who confuse management with suddenly having power over people. Moreover, management does not and should not mean "tenure" along the lines of "now I have made it, now I can relax" or "now I am in power." Rather the "Old Fritz" (Friedrich II, Prussian King) statement, simple yet true, comes to mind: "I am the first servant of the country" ("Ich bin der erste Diener meines Staates"), and serves as a good guide.

The author puts forth an interesting concept for true autonomy founded on the philosophical considerations of the human mind, upon which the AI-(IF-THEN-ELSE)-community will most likely have to choke. In doing so, the author outlines nicely the profound difference between automation and autonomy, two terms, which are often confused, intermixed, or misunderstood, even by so-called experts in the field.

If management is done right, as exemplified/laid out in this book and practiced by its author in an exemplary fashion, managers would rather have to be pitied because of their huge added responsibility for their people/troops and the projects they manage/lead (in that order!). Special attention should be paid throughout the book and in particular throughout Chapter 12 to the "Machiavellian Prince," as this kind of "leader" unfortunately exists (and not in small numbers!), and, while striving only for personal power and gain, causes a lot of damage to otherwise noble causes.

Dynamite Answers!
Helpful Votes: 0 out of 0 total.
Review Date: 2007-03-30
The author of this book has deep insights and wisdom for any level of interface with computer science applications. You simply cannot go wrong for putting your weight down on patterns to follow from someone who has had success in the field. The techniques in this book go beyond basic head knowledge, into the live action of software development where the rubber meets the road. Only an experienced person can give these insights. I am very impressed with the advanced mapping, made simple. This book seems to be written for people who are looking to find answers to every day problems in a rapidly moving computer world, without fear.

The Congnitive Dynamics of Computer Science..etc
Helpful Votes: 1 out of 1 total.
Review Date: 2007-03-03
Mr. deGyurky gives a great overview of his experience at JPL in organizing and developing large, complex, software systems, and delivering them on schedule, on cost. Mr. deGyurky demonstrated that the most important contribution to software management is that of leadership in life, carries over in software development also.

If you are thinking of becoming a manager of a software development project, you should check this book out, and You will be a step ahead of the game!

Software Development and the Hegelian Dialectic
Helpful Votes: 2 out of 2 total.
Review Date: 2006-11-29
The author has given us a framework for conceptualizing, organizing and developing large, complex, software systems, and delivering them on schedule, on cost.

His approach to software development emphasizes two basic ideas. Unique is his application to the development process of the cognitive philosophies of the great Nineteenth Century German cognitive philosophers, principally Schopenhauer, Kant and Hegel, which De Gyurky has studied for years (- in the original Nineteenth Century High German). De Gurky also emphasizes to an extraordinary degree the active role of personal leadership required of the successful software development manager.

Far from being a purely theoretical work, the book is richly illustrated with pungent examples from De Gyurky's near-incredibly varied experience both in the US military as a Special Forces officer commanding a detachment of Montaignards in the mountains of Vietnam, as an action officer at NATO Headquarters, and as the civilian developer of very large military flight-schedule management systems as well as spacecraft software command and control systems.

All the examples are exquisitely pertinent to the software development process. But in addition, four detailed programmatic examples are presented, together with comments, figures and schedules. The author's application of the principles he developed is wholly consistent and unfailingly pertinent, if sometimes challenging, due to the likely unfamiliarity on the part of the typical software engineering reader with the application of the philosophical concepts.

In fact, the single characteristic of the book which may challenge the typical software developer is the accessibility of some of the concepts. Some of the most powerful concepts discussed, e.g., the dialectical process by which an ill-formed idea becomes an object that reflects the meeting of the minds of the design team, are likely to be unfamiliar. However this process has profound implications for the organization of the design team, its management, team-member responsibilities, and on and on. It might have been helpful if the author had expanded on these key concepts, perhaps in context closer to their original use. It would be demanding on the reader, but probably no more so than parts of the book itself.

This unique contribution is recommended to software developers interested in on-time, on-cost development of large software systems, and willing to invest in the intellectual effort required to understand the author's unique contribution. They will be well rewarded.

The Science and Ethics of Computer System Development
Helpful Votes: 2 out of 2 total.
Review Date: 2006-11-27
I have read many books on systems and software development and management principles over the years. The ones that most influenced me were: "More Reliable Software Through Composite Design" by Glen Meyers; "Up the Organization" by Robert Townsend; and "Reengineering the Corporation" by Michael Hammer and James Champy. And of course no system developer's library would be complete without "Managing the Software Process" and other books by Watts Humphry, a giant in our industry. Mr. Szabolcs Michael deGyurky's book will occupy a place along side these on my bookshelf.

In this book, Mr. deGyurky has provided a completely different and refreshing, but no less important, viewpoint on systems development. As different as all the above mentioned books are, the one theme common to all of them is their focus on the "real" problem by differentiating between the truly important and the seemingly important - commonly referred to as separating the wheat from the chaff..

"The Cognitive Dynamics of Computer Science" focuses on strength of character as being indispensable to successful completion of complex systems development projects, which not only satisfy the "real" requirements, but ensure the system is delivered within an agreed to budget and schedule. This book draws on the philosophy of such estimable historical figures as Kant, Hegel and Schopenhauer, among others, in defining the behavioral characteristics of successful leaders and managers. Personal experiences in real world projects by Jet Propulsion Laboratory (JPL) provide a substantive backdrop for Mr. deGyurky's approach to managing systems development.

It is impossible to adequately relay the impact of such a book in so short a review, but I do come away with some points which derive more meaning because of my own experience: 1) Design from the user in, but develop from the inside out, in layers, 2) Don't implement until you have an initial design documented and understood by the development team - expect that to change, 3) Manage change through the Project Implementation Plan (PIP), which is the Project Manager's equivalent to the Software Development Folder, 4) Don't hire staff until you have their tasks well defined (control burn rate and you have controlled your budget), 5) Make sure you understand exactly what your customer wants through constant customer involvement, 6) make your customer's goal, your goal, then incentivize the entire development team to focus on that goal as the highest priority, 7) There shall be no implementation without documented, repeatable process and standards, which should be tailored to the individual project, but at no time should process and standards replace common sense in a dynamically changing development environment, 8) Employ tools and ensure the team is involved in their selection, 9) Ensure the development team is trained in methodology, process, standards, tools and system requirements, and 10) the manager should place the needs of his customer and his team ahead of his personal goals.

All of this is done in concert with the philosophical teachings of our great philosophers, who would encourage strict honesty and ethics in dealing with our customer, subordinates, colleagues, company management, even if it means being fired. Of course, one does not fit all the meaning of a 300-page book into such a short review, and one could easily list another 10 or more points of interest.

I agree with almost everything in this excellent book, but may differ on the role played by Computer Aided Software Engineering (CASE) and Computer Aided Design (CAD) in systems development. Since CASE tools became mature enough to use effectively, I personally selected my tools, then built my process and standards around them. This includes the way I modify process and standards (including DoD) to conform to streamlining development and associated documentation. The CASE tool, when used with discipline can ensure that interface errors are avoided during the design process, as provided through automatic leveling and validation as the system design progresses. Fixed price contracts caused me to gravitate to using the latest tools available and build around them each time.

I am certain that Autonomous Cognitive systems are in our future, but not without application of increasingly sophisticated CASE tools and compilers (Autonomous Cognitive Compilers), which can parse complex combinations of Boolean expressions with many operations per expression to simulate the human thought system in making decisions. Neither can these systems be built without addressing the transducers (sensors), which would connect to and provide stimuli to be interpreted and processed by any autonomous system as the 5 senses (sight, hearing, touch, smell and taste). I look forward to Mr. deGuyrky's next book, which may address this highly complex problem.

I would only close this review with one last comment, directed to JPL. Mr. deGyurky and his team were on the right track with Ada. It is unfortunate that JPL didn't adopt this very highly typed and disciplined high order language as their standard development language. I believe it would have saved more than one failed project. Based on my 40 plus years of developing computer systems, I would humbly suggest that JPL require mandatory use of Ada in all "Class A" development projects.

Programming
Competitive Engineering: A Handbook For Systems Engineering, Requirements Engineering, and Software Engineering Using Planguage
Published in Paperback by Butterworth-Heinemann (2005-08-26)
Author: Tom Gilb
List price: $45.95
New price: $36.84
Used price: $39.95

Average review score:

Packed with great info!
Helpful Votes: 0 out of 0 total.
Review Date: 2007-11-16
Planguage is a word and concept that combines Planning and LANGUAGE and is rooted in the author's experience since 1960. The core tenant of Competitive Engineering is that well structured specifications have a dramatic cost reduction over down-stream error correction. The defect prevention process (DPP) is used to clean up early stages specs, or preferably measure defects and motivate lower defect injection, in specifications and the attendant issues instead of relying solely on defect detection andcorrection once actual development has begun. Competitive Engineering provides focus and skills to dramatically increase how productive many of us have been in the past.

The centrality of quality specifications means significant gains for the broadest spectrum of stake-holders who stand to win with the System Of Interest (SOI). Take this specification as an example to clean up:

"The new system will use Foo language running on OS Bar and ensure top industry quality response time on web requests."

People in the field have seen specs like these. Hopefully you aren't writing them. There are what Gilb classifies as "Major defects" in this spec. Which web requests, the front page or all of them pulling from the various databases? Can the old system be incrementally upgraded instead of an entirely new development environment? Why use Foo and Bar if something else gets the job done better, faster, and with less resource utilization? Just how fast is "fast", anyway?

In Competitive Engineering you're told to get measureable quality requirements, record who requested that requirement, and exactly what "success" is defined as. That allows you to go back to the requester with notes such as "If we use OS Baz we'll get a 27% increase in CPU performance" and let them make a decision or escalate to the project funder. You're also encouraged to weed out "design constraints"; at least out of the mandatated and into the labelled area "Design Constraint". Wouldn't it be great if you got a specification that let you design the best you could without technical input from someone that can't use a web-browser?

See if you can understand my re-write of the above spec into Planguage.

Response Time on Front Page of Company Website.

Type: Performance Requirement
Version: 1.2
Status: Draft
Owner: F. Flintstone

Stakeholders: Marketing, Server Support, Corporate Intelligence, ,

Ambition: The front page of the corporate website should respond fast enough to keep the viewer's attention.

Description: Marketing research indicates the typical business website viewer makes an opinion on the website, and thus the company, within 20 seconds. Our corporate site pulls data from three different databases and a sizeable image library, taking an average of 26.87 seconds on a home DSL/Cable modem equivalent network. Marketing advantage can be gained if we can grab viewer attention noticibly faster than our two nearest competitors who average 23.43 and 26.09 seconds, respectively.

Vision: Enough accurate information provided quickly enough to keep the customer on our site.

Scale: Time, in Seconds, to a complete front page load on the equivalent of a 250K network connection.

Past [Front page, 1 Apr 07]: 26.87 seconds

Goal [1 November 07]: 19 seconds <- Marketing Director: BR

Stretch: 15 seconds

Wish: 9 seconds

Design Constraint: Supportability <- Server Support Manager WF Must utilize .

Design Constraint: Security <- Corporate Intelligence BB Must meet .

------------------------ end of spec example --------------------

Probably the only thing that might confuse you about that specification is the use of text within "<...>". Planguage uses that to denote a "fuzzy requirement"; something that is defined but not with the concreteness you'd like. In this example, however, it would be relatively simple to query B. Rubble for the specific guidelines her team seeks to enforce. The use of fuzzy requirements also allows for change over time; more OS versions may become supported while others are obsolete.

When I read part of an electronic copy of the text I had a problem. My antiquated home printer could not print it and if I used the work printer I view the output as a possession of my employer. The book is written as part instruction, part reference manual; I bought my own copy because I know I'm going to use it for the next few years and several employers.

Excellent Systems Engineering Book
Helpful Votes: 0 out of 0 total.
Review Date: 2007-08-28
This is one the books which has caused a great impression on me. It helps to get away from high-level, gut-feeling, fuzzy goals and descriptions to very concrete targets, unambiguous requirements and rational decisions. This strikes a chord at the heart of systems design and architecture, which consists in maximizing a set of business goals with limited resources (time, budget, personnel). I highly recommend it.

It's a very good book.
Helpful Votes: 0 out of 2 total.
Review Date: 2007-01-16
Building software systems is not easy, this book can help you to do a better job.

Thinking... further ;o)
Helpful Votes: 2 out of 2 total.
Review Date: 2006-03-12
In a period where the trend is to follow agile approaches with condensed guidance (see the 12 principles of the Agile Manifesto for instance), it could seem strange to publish a book on software development with more than 500 dense pages. You should however not be frightened by this book. Beneath the size and the structured form lies an approach based on practical experience that incorporates change and flexibility without abandoning the quest for precision and delivering value.

The main concept of Competitive Engineering is Planguage, a word created mixing plan and language. Communication is the basis for working together. This is why Tom Gilb emphasises first the creation of a common vocabulary. He states that his glossary could be considered as the best contribution of this book. Beneath the definition of a common language, for me the "hidden agenda" of the book is to help us to think... further. The common language is only a tool that helps us express our thoughts more precisely and completely.

Fortunately for us, Tom Gilb didn't only write a dictionary of system engineering. A large part of the book is devoted to the activities of system engineering and project management. Based on Planguage, Gilb gives us a framework to elicit clearer requirements. He emphasises a measurable vision ("bad numbers beat good words") and presents tools to achieve this objective. He also helps us separate requirements from design. He devotes an entire chapter to quality control. Finally, there is a presentation of the techniques of evolutionary project management that supports incremental development based on the priority and impact techniques described in previous parts of the book.

In every chapter you will find examples and case studies that help to visualise how the concepts translate into practice. There is also an "additional ideas" part that presents material for further thinking. Beneath the seriousness of the topic, Gilb also manage to place some lighter parts and you will find how to compare seriously apples with oranges.

At the end, your realise that you have a book where process is not opposed to people, structure is not opposed to flexibility, precision is not opposed to allowing change, documentation is not opposed to active refinement, Gilb's proposed solution is not opposed to customisation for your needs. It is just a book that gives you new inspiration to deliver better software solutions to your customer.

If you are interested in software process improvement, you can read this book from the beginning and find practical material to examine your current practices with a different vision. If you are a lonesome project manager or developer, you could begin by just using the index to get Gilb's view on your current activity or problem. Be cautious, because there are many chances that you will be tempted to read more material ;o)

After reading this book, I browsed again my old copy of "Principles of Software Engineering" that I bought when it was published in 1988. I saw that many ideas from "Competitive Engineering" were already presented in this book. Tom Gilb just applied to his ideas the same concepts he proposes for system engineering. He refined, expanded and structured them to get a better product. The printing industry has just prevented evolutionary delivery, but you can bet that he will find a way to include this in the future.

Best Practices in Systems Engineering and Management
Helpful Votes: 3 out of 3 total.
Review Date: 2006-04-06
My interest in the topic of competitive engineering (CE) was piqued several years ago when I heard very favorable comments about Tom Gilb's tutorial on that subject at the INCOSE 2002 Symposium in Las Vegas.

The book's subtitle is "A Handbook for Systems Engineering, Requirements Engineering, and Software Engineering Using Planguage". The term "Planguage" is central to an understanding of the book. Planguage, which is derived from a union of "plan" and "language", is the methodology for implementing CE. Much of the book is devoted to describing the generalized processes, rules, and vocabulary of Planguage. Tom notes, "Planguage should be viewed as a powerful way to develop and implement strategies that will help your projects to deliver the required competitive results." Fundamentally, the book presents a new take on best practices in systems engineering and management.

The book is useful on several levels. For organizations without a formal or documented process, tailoring of Planguage would jump start the process at a high level of maturity. For organizations that have achieved CMMI level 3 status, Planguage by itself is not as useful. However, many of the ideas of CE-the Planguage methods-are worth considering for enhancement of existing organizational processes. Tom states that CE is "about technological management, risk control, and breakthrough improvement in complex business systems, projects, and processes." CE is a believable approach for delivering complex projects on time and within budget.

The book passed my value-added test, when I realized that I was photocopying several pages for future reference, to be part of my "toolkit" of helpful tips and techniques. I particularly enjoyed reading the 10 often witty, summary principles in each chapter. Two examples are:

* The Principle of `Storage of Wisdom': "If your people are not all experienced or geniuses, You need to store their hard-earned wisdom in your defined process. Capture wisdom for reuse, Fail to write it, that's abuse!"

* The Principle of `The early bird catches the worm': "Your customers will be happier with an early long-term stream of their priority improvements, than years of promises, culminating in late disaster."

About 30% of the book is the Planguage Concept Glossary, which Tom views as a central contribution of the book. I focused my attention on the other, more interesting, parts of the book, which describe the main CE/Planguage methods of Requirement Specification (RS), Design Engineering (DE), Impact Estimation (IE), Specification Quality Control (SQC), and Evolutionary Project Management (EVO, also known as Evo). RS describes an approach for identifying all types of requirements while avoiding ambiguity and also planning for change. Functional and performance requirements are distinguished. DE deals with identifying, choosing, and prioritizing the order in which design ideas are implemented and delivered. In conjunction with Evo, DE selects the design ideas most likely to provide a significant benefit for early delivery.

SQC is an eminently practical approach for evaluating the quality of any technical document via sampling measurements. An hour of SQC early in a project can save almost 10 hours of rework. SQC also provides a means to assess the success of process improvement efforts. IE provides a realistic method for evaluating-in quantitative terms-the effectiveness of designs in meeting both the requirements, especially critical performance attributes, and the resource budgets.

Evo focuses on early, frequent delivery of project results via a series of high-value, small evolutionary steps. An ideal Evo approach would divide the project into a series of cycles. Each cycle would consume 2-5% of the total financial budget and 2-5% of the total project time-while delivering some measurable, required results to the stakeholders. The next cycle is selected to deliver the best stakeholder value for its cost (highest ratio of value to cost, or highest ratio of performance to cost). Although an ideal approach can't always be realized, Tom provides some convincing examples to argue that there is always a solution to making a project evolutionary (small steps with critical deliveries first).

Perseverance pays off with Competitive Engineering. The book is not a quick read, which Tom acknowledges. You have to carefully study some of the pages to understand the concepts being presented. The reward occurs when you glean the nuggets of wisdom from the numerous practical examples, case studies, and Planguage examples. Tom's way of presenting the CE concepts makes the book a useful addition to the systems engineer's library.

Programming
Computers and Intractability: A Guide to the Theory of NP-Completeness (Series of Books in the Mathematical Sciences)
Published in Paperback by W. H. Freeman (1979-01-15)
Authors: M. R. Garey and D. S. Johnson
List price:
New price: $45.99
Used price: $36.40

Average review score:

Definitely a classic but not good for beginners
Helpful Votes: 0 out of 0 total.
Review Date: 2007-10-24
I have to say that this is a true classic. It gives a very nice treatment of what is NP-completeness in a fashion that really defends the topic well. It gives nice illustrations to show different situations and how to deal with it. But after the first couple of chapters it does get a little out there with the proofs it does. It is still approachable, but it assumes that the reader is already familiar with the basics of combinatorial complexity, especially in reductions. I would only recommend this book to readers who has gone through such books as Introduction to Algorithms by Cormen et al. or Combinatorial Complexity by Papadimitriou and Steiglitz. Those two books are more for beginners and this book should be one to help anyone interested in NP-complete problems to get more practice and depth understanding. Overall a great book for anyone interested in the topic. The grand challenge is to reduce everything to at least something within the 150 problems listed on your own.

comprehensive book for NP-completeness
Helpful Votes: 0 out of 0 total.
Review Date: 2007-09-21
The book is excellent in explaining NP-completeness problem. Take it as a reference if you would like to do research in this field.

Published in 1979 and still the best
Helpful Votes: 0 out of 0 total.
Review Date: 2007-06-16
This is a rare example of a textbook where the authors actually go to the trouble of considering the fact that the intended reader is a non-expert. Published in 1979 and still the best.

Arrived in time, good condition
Helpful Votes: 0 out of 39 total.
Review Date: 2006-02-24
The book arrived in time, in good condition, and adequate packing.

A Beautiful Book on a Beautiful Subject
Helpful Votes: 1 out of 16 total.
Review Date: 2005-12-10
This is among the most eloquently written books that I have ever read in my life. Highly recommended.

Programming
Deconstructing the Elements with 3ds Max, Second Edition: Create natural fire, earth, air and water without plug-ins
Published in Paperback by Focal Press (2006-04-18)
Author: Pete Draper
List price: $49.95
New price: $28.80
Used price: $27.97

Average review score:

Great Book
Helpful Votes: 0 out of 0 total.
Review Date: 2008-09-24
I've been using Max for 9 yrs and this book showed me ways of using procedural textures that I would have never thought of. I could get close, but this book takes it those few steps closer to realism that I was looking for.

Makes 3DS MAX Cheaper...
Helpful Votes: 0 out of 0 total.
Review Date: 2008-04-07
There are a million expensive plugins out there, and each does only one thing. You can buy each of them, or you can invest in your ability to learn Max's subtleties. This guy has apparently been doing great work since before there was a big plugin market, so buy his book, and you'll save all kinds of money. Plus you'll have a FAR better understanding of the various methods that can be used to perform relatively complex and difficult tasks. It's an exciting read for the right kind of 3D geek. You will probably find yourself thinking "I didn't know you could do THAT with THIS!"

The best book on 3DSMax, Period.
Helpful Votes: 0 out of 0 total.
Review Date: 2008-01-02
Pete Draper knows his stuff! The tutorials are in color and quite easy to follow, except for the complex materials, but Pete explains what each one does in detail.

The author makes use of the Particles Systems a lot which you will be very good at by the end of the book. I own a bunch of books on Max, and this is by far, hands down, bar none the best book currently available.

Be warned this book does not cover everything in Max(such as Mental Ray), but after you finish this book you will have an arsenal of things you can do.

I recommend this book to beginners and experts alike, both will walk away with a lot of new ideas and knowledge about 3DS Max.

Amazing!
Helpful Votes: 0 out of 0 total.
Review Date: 2007-08-01
If you want to learn particle flow this is the book for you. Pete does things I never thought 3DS Max was capable of. The tuts in the book are great and there are a couple of bonus video tuts on the accompanying DVD. Buy this book!

#1 Max Particle Book on the Market
Helpful Votes: 1 out of 1 total.
Review Date: 2007-12-19
If you want to know how to use 3ds Max's Particle Flow...this is the book you should buy. One word of caution...make sure you brush up on your PFlow basics before digging in. The book definitely assumes that you know what you're doing when wiring up PFlow's Operators and Tests. There's screen shots to help you along, start and completed scene files, and a real nice handful of cool effects covered. More for the Intermediate and Advanced user.

Programming
Domain-Specific Application Frameworks: Frameworks Experience by Industry
Published in Hardcover by John Wiley & Sons (1999-10-18)
Author:
List price: $75.00
New price: $11.96
Used price: $11.96

Average review score:

If you want to know what's happening out there
Helpful Votes: 0 out of 0 total.
Review Date: 2003-02-28
I was mainly interested in the MES implementation part and I found those chapters quite inspiring. We are usually lead by "common practices" which form our experience and we'll use them throughout our work. But formalizing and being able to communicate a technology is always an issue (unless you're going to di it all by yourself).
Excellent.

excellent collection
Helpful Votes: 0 out of 0 total.
Review Date: 2002-02-19
"Domain Specific..." is another excellent book from the "Fraemwork collection". It is a set comprehensive reference books as well as a authoritative textbooks by experts in this growing research field.

The description of practical experiences as well as more conceptual descriptions, are usefull to understand the complexity of achieving high levels of software reusability.

Managers and academics, will find a lot of material to help them decide if this is the way to go. Our research group in Web Engineering at the University of Sydney (weg.ee.usyd.edu.au) will us it extensively to improve our development practices.

An excelent walk through framework technologies
Helpful Votes: 1 out of 1 total.
Review Date: 2002-03-01
An almost indispensable 3-volume reading to understand the success of framework technologies in today's software systems. The books include most of the top
articles on the subject, providing a thorough insight in both design and implementation issues regarding frameworks, also complemented with practical experience
about framework usage. Although the work is mainly concentrated on technical aspects, the articles are comprehensible enough to be taken as reference material by
a broad community, for example, software engineers, programmers, or technology managers. The books are useful for anybody planning to include
framework-based techniques in software development processes or planning to improve current object-oriented practices. It is also an excellent source for graduate
courses.

Volume 1 lays the fundamental concepts supporting object-oriented frameworks, and describes the problems and challenges that this
technology raises in software development. The book covers topics such as domain analysis, development concepts and approaches,
documentation, and management, among others. Of course, the compilation of articles makes some parts little redundant, but this is a minor detail compared with the
fruitful contributions made by the book. In particular, the articles on reusing hooks, hot-spot-driven development, composing modeling frameworks in Catalysis, and
composition problems, causes and solutions, are a sample of the outstanding level of this work. Each chapter adds at the end a number of related questions and
student projects aiming to reinforce concepts and promote further investigation. As a comment, novice readers should take the sections concerning hooks and
hot-spots carefully because these topics are presented in a slightly confusing way.

Volume 2 focuses on specific framework implementations, dealing with existing frameworks for different application domains, such as businesses, multi-agent
systems, languages and system software. In this book, the readers will find a level of detail much closer to specific implementations issues than in the previous
volume. Nonetheless, the writing style remains mostly clear and accessible for a quite broad audience. The case-studies and experience reports described by the
articles show an attractive industrial perspective of the framework approach, and more important, they go an step forward in the road of a more mature discipline for
software development. In addition, a
CD-Rom with concrete examples of these applications is included with the book.

Volume 3 completes this series with a number of domain-specific application frameworks developed by industry, showing how to apply the concepts and ideas of
the previous books in software products. In this line, it includes very interesting frameworks for manufacturing systems and distributed systems, among others. It also
goes through concrete software scenarios, illustrating the benefits of combining domain knowledge and object-orientation expertise. Although the level of the articles
is rather odd, the volume certainly provides the readers a realistic picture of the problems of building and adapting frameworks by learning from others' experience.
A CD-Rom is also included with this book.

Overall, these framework books collect the state-of-the-art on framework development, offering a comprehensive and
easy-to-understand guide for both academics and practitioners in the field. It is clear that framework technologies will not solve all the problems (perhaps they rise
more challenges than current approaches), however, taking advantage of the framework possibilities can make your development process more repeatable,
productive, and also less painful. The gains of this retrain are no doubt a good investment.

Great Reference and Compilation of Timely Material
Helpful Votes: 1 out of 1 total.
Review Date: 2000-01-06
A great reference and compilation of timely material. For anyone interested in frameworks targeted to specific application domains, this book surveys a broad spectrum of example systems while providing detailed in depth information concerning the particular requirements and features necessary for each domain.

Excellent guidelines to build OO Application Frameworks
Helpful Votes: 2 out of 2 total.
Review Date: 2002-02-27
This book in conjunction with the books "Building Applicaton Frameworks: Object-Oriented Foundations of Framework Design" and "Implementing Application Frameworks: Object-Oriented Frameworks at Work" are a series of three books that constitute a complete and necessary guide for the design and implementation of application frameworks. They are based on multiple academic and industrial contributors experience building a wide range of domain-specific application framework. These books are very easy to read and understand and you can learn from them not only what a framework and an application framework are, but also how to apply this technology to real world domains, like manufacturing, health care, distributed computing, real-time systems, simulation environments, ...

First book, "Building Application Frameworks: Object-Oriented Foundations of Framework Design" introduces application frameworks, their benefits and problems. It addresses all the fundamental concepts behind OO application frameworks and provides guidelines for OO application framework development. It is organized in eight parts. Part one provides a complete overview of OO application framework technology describing what is an application framework, what are the problems and benefits of application frameworks and how to use, develop and evaluate an application framework. Part Two presents some historical application frameworks and discusses some general guidelines to increase the reusability of application frameworks. Part Three describes how to build a framework analysing a concrete domain. The rest of the book provides all the necessary information to completely build an application framework. It presents all the concepts managed in framework development, which are the different development approaches, how to test the resulting frameworks, the problems derived from integration and a question sometimes forgotten but very important, the framework documentation.

This book, "Domain-Specific Application Frameworks: Frameworks Experience by Industry" is focused in the experience of industrial and academic contributors in the development of OO application framework in different domains. Each chapter covers step by step the complete development of an application framework in manufacturing, distributed systems, real-time systems, telecommunication, multimedia, chemistry and data visualization domains. It includes the motivation developers founded to choose application framework technology, the problems they had to solve and the final solutions they developed.

Third book, "Implementing Application Frameworks: Object-Oriented Frameworks at Work", shows step by step how to implement application frameworks in different domains. It is organized in six parts covering examples about i) Business Frameworks with different examples in sales and administrative domains, ii) Artificial Intelligence, iii) Agent Application Frameworks, presenting interesting frameworks for speech recognition, neural networks and agents. iv) Specialized tool frameworks, v) Language Specific Frameworks, vi) System Application Frameworks, which present and analyse the application of OO frameworks in combination with other methodologies as component-oriented programming, language constructs or constraint programming and vi) Experiences in Application Frameworks. This last section is very useful because analyse the lessons learned using the application framework technology.

Programming
Effective XML: 50 Specific Ways to Improve Your XML (Effective Software Development Series)
Published in Paperback by Addison-Wesley Professional (2003-10-02)
Author: Elliotte Rusty Harold
List price: $49.99
New price: $23.00
Used price: $22.00

Average review score:

Excellent resource for both quality control and ideas
Helpful Votes: 0 out of 0 total.
Review Date: 2007-04-03
I bought this book quite a while ago and I absolutely the format. It's a great resource to just pick up and get great ideas, verify that you are on/off the right track and generally learn how to get to the next level with XML. Highly recommended

Great gap between book knowledge and effective use...
Helpful Votes: 1 out of 3 total.
Review Date: 2004-12-06
The flexibility of XML can often mean that there's a gap between using XML and using XML effectively. Elliotte Rusty Harold's book Effective XML - 50 Specific Ways to Improve Your XML (Addison Wesley) is an excellent way to move towards the latter condition.

Chapter List: Syntax; Structure; Semantics; Implementation; Recommended Reading; Index

There are obviously a large number of books that will teach you the semantics of writing and using XML. But just because you can create an XML file doesn't mean that you've done it well or effectively. Harold's book provides a bridge to being able to create XML files that will be usable in nearly all situations. The book starts out in the introduction with explanations of terms that are often confused (element vs. tag, text vs. character data vs. markup, etc.). Then there are four parts of the book that include a total of 50 tips that will improve the quality of your XML usage. Some tips are pretty basic, like "Include an XML Declaration". Others are more complex like "Verify Documents with XML Digital Signatures". But every one is practical and useful for making sure that your XML is widely useable by all potential applications.

Excellent bridge book to read after you've learned the basics of XML. This is a book that, when taken to heart and used, will cause your coworkers to thank you.

The best XML book I've read
Helpful Votes: 11 out of 12 total.
Review Date: 2004-10-22
Effective XML is a collection of about 50 tips for working with XML. Although XML seems is simple and easy to use, it's also easy to get wrong. I've often scratched your head and wondered why things like XML Schema, for example, just doesn't feel right. But it wasn't until I read Effective XML that I understood what was really awkward with it.

Because the book is so diverse (an amazing feat considering the small page count), it is hard to single out any specific part as being a reason to read the book. The book doesn't just talk about schemas, the infoset, etc..., it digs down and really explains what is good and bad about the technologies and what the best ways to apply them are. All I can say is that I use XML day in and day out and have learned everything I know by trial an error. I've made many mistakes along the way. I've tried my best to learn from them, but Effective XML was the book that made everything click for me. The best part is that the book went well beyond just helping me see my errors. I've already applied some of the ideas to new work I've done recently and have been able to head off some of the problems I would have encountered.


Effective XML is by far the best XML book I've ever read, and quite possibly the best tech book I've read all year. I might even have to add it to my favorite tech books list. If you work with XML to any significant degree, I can't recommend this book highly enough.

How to Effectively Use XML
Helpful Votes: 4 out of 4 total.
Review Date: 2006-02-07
Elliotte Rusty Harold states in the introduction of Effective XML that the book is neither an introductory book nor an XML tutorial. Rather, it is a distillation of the author's experience using and teaching XML and how to use it effectively. The book does a great job of explaining how to use XML and its related technologies.

The book is divided into four major sections: Syntax, Structure, Semantics, and Implementation. Each of the fifty Items packs a lot of information into a few pages. The Items span topics such as why you should Include an XML Declaration (Item 1), Make Structure Explicit through Markup (Item 11), Program to Standard APIs (Item 31), and Write in Unicode (Item 38). Even the Introduction is valuable because it sets the definitions for XML-related terms used in the rest of the book that the author has found to be used interchangeably or inconsistently.

Item 24, Choose the Right Schema Language for the Job, provides a typical example of the great information contained in Effective XML. This Item discusses the strengths and weaknesses of four schema languages: W3C XML Schema Language, DTDs, RELAX NG, and Schematron. The use of programming languages to handle situations that the schema languages can't handle is also discussed. The Item ends with a set of questions to think about when selecting the schema language to use.

I found the book very readable and like that the information is presented in digestible chunks. Effective XML isn't meant to hype XML but to identify what the actual capabilities of XML and its related technologies are and how best to use them. The book does an outstanding job at this task.

Full disclosure: I received a complimentary copy of the book for review.

I wish the XML Schema working group had a copy per member
Helpful Votes: 7 out of 8 total.
Review Date: 2005-07-10
This is not a book explaining XML. This is not a book that goes into any depth on XML APIs. It is not a book explaining any one XML format like XSLT, RSS, or XSD.

Instead it is a book on how to work with XML. How to design an XML application to take full advantage of the facilties of XML: schemas, processing instructions, XSL transforms, namespaces. It is all structured to slowly introduce you into the complexities, and deserves to sit up on the bookshelf with Effective C++, Java and Enterprise Java.