Domain: bfast.com
Stories and comments across the archive that link to bfast.com.
Stories · 774
-
Extending and Embedding PHP
Sebastian Bergmann writes "PHP is a widely-used general-purpose scripting language that is especially suited for Web development. The interpreter that executes programs written in the PHP programming language has been designed from the ground up to be easily embeddable (for instance into the Apache Web Server) and extendable. This extensibility is one of the reasons why PHP became the favourite "glue" of the Web: functionality from existing third-party libraries (database clients or image manipulation toolkits, for instance) can be made available through PHP with the ease of use you expect from a scripting language." Read the rest of Sebastian's review. Extending and Embedding PHP author Sara Golemon pages 448 publisher SAMS rating 9 reviewer Sebastian Bergmann ISBN 067232704X summary The new standard work on extending and embedding PHP.
"Extending and Embedding PHP" by Sara Golemon, a long-time contributor to the PHP project, remedies the fact that the internals of PHP are far from being as well documented as the rest of PHP. It brings writing extensions for PHP "to the masses", so to speak.
After a short introduction that makes the reader familiar with terms like PHP Extension, Zend Extension, Userland, and Internals that are used throughout the book, Chapter 1 ("The PHP Life Cycle") opens with an overview of how the PHP Interpreter works and what parts (TSRM, Zend Engine, SAPI, "PHP") it comprises.
Chapter 2 ("Variables from the Inside Out") shows how PHP handles and stores variables internally. The reader learns how to distinguish types, set and retrieve values, as well as how to work with symbol tables. It is in this chapter that the fundamental unit of data storage in PHP, the so-called zval (short for Zend Value) is discussed.
Chapter 3 ("Memory Management") builds upon the previous chapter and discusses more advanced operations on zvals, for instance creating and dealing with copies of a zval or the destruction of a zval when it is no longer needed. To this extent, the Zend Memory Manager is discussed as well as underlying principles such as Reference Counting and Copy-on-Write, for instance.
Chapter 4 ("Setting Up a Build Environment") guides the reader through setting up an environment, either on *NIX or on Microsoft Windows, for the development and debugging of PHP and PHP extensions.
After these first four chapters, the reader is ready to go about writing his or her first PHP extension. Chapter 5 ("Your First Extension") takes the reader through the steps necessary to write and build a simple working PHP extension. The following chapters build upon the knowledge gained here, so that the reader can ultimately implement or change any type of PHP feature.
Chapter 6 ("Returning Values") explains how to pass values (by value, by reference, and through their parameter stack using references) from internal (C-level) functions or methods to userland (PHP-level).
Chapter 7 ("Accepting Parameters") deals with the mechanisms involved in accepting parameters from userland calls to an internal function or method. This includes the discussion of the zend_parse_parameters() API which makes the parameters that are passed to the internal function or method as indirect zval references usable in your C-code. The handling of optional and arbitrary numbers of parameters is explained as well as the usage of type hinting and its arg_info API.
Chapter 8 ("Working with Arrays and Hash Tables") explains the Zend Engine's HashTable API, which is used to store any piece of data of any size, in detail. Its different data storage mechanisms supported are introduced and compared. To quote from the book, "A HashTable is a specialized form of a doubly linked list that adds the speed and efficiency of vectors in the form of lookup indices". Since these structures are used heavily throughout the Zend Engine and PHP and its extensions, a good understanding of this API is vital for any aspiring PHP extension developer.
Chapter 9 ("The Resource Data Type") introduces the reader to the first complex data type (excluding the Array data type that was discussed in the previous chapter, which is just a collection containing primitive data types like strings or numbers). A resource can be, for instance, a connection to a database. It allows the PHP extension developer to "connect abstract concepts like opaque pointers from third-party libraries to the easy-to-use userspace scripting language that makes PHP so powerful".
Chapters 10 ("PHP 4 Objects") and Chapter 11 ("PHP 5 Objects") delve into the last data type supported by the Zend Engine: objects. Sara Golemon dedicates one chapter each to the respective APIs of PHP 4 and PHP 5 because of the huge advancements that were introduced in PHP 5 and that totally changed the APIs.
After the previous chapter, all data types supported by the Zend Engine have been discussed and the book revisits a topic discussed earlier in the book: that of the PHP Interpreter's life cycle. Chapter 12 ("Startup, Shutdown, and a Few Places in Between") explains how to add state to a PHP extension by using thread-safe globals. Along the way, concepts such as internal and external (super) globals as well as thread safety are discussed.
Chapter 13 ("INI Settings") shows how a PHP extension can be made ready for runtime configuration through php.ini settings.
The next three chapters ("Accessing Streams", "Implementing Streams", and "Diverting the Stream") make the reader familiar with yet another important API of PHP: the Streams API. All file input/output in PHP userspace is processed through PHP's Streams Layer. This layer, that was introduced in PHP 4.3, is what makes working with files, compressed files, and remote files, for instance, seamlessly in PHP. The reader learns how to work with streams as well as how to expose streamable resources, whether remote network input/output or local data sources, using the Streams API, thus avoiding the need to reimplement all the tedious bits and pieces that are normally associated with this.
Chapter 17 ("Configuration and Linking") builds upon the tools and techniques introduced in Chapter 4 and adds the GNU autotools (autoconf, automake, and friends) to the reader's set of tools. These tools, if used correctly, allow the extension to be built in environments that the extension author does not know or has no access to.
Chapter 18 ("Extension Generators") takes a look at ext_skel (which comes with the source distribution of PHP) and PECL_Gen (which can be obtained, as the name suggests, from PECL, the PHP Extension Community Library). These two tools automate most of the steps described in the previous chapter and take a lot of tedious work out of the extension writer's hands.
Starting with simple embedding examples, the reader learns in Chapter 19 ("Setting Up a Host Environment") and Chapter 20 ("Advanced Embedding") how the PHP Interpreter can be embedded into almost any other application.
The book concludes with the "Zend API Reference", "PHP API Reference", "Extending and Embedding Cookbook", and "Additional Resources" appendixes. The first two are a great resource for both novice and experienced PHP extension writers (even for people working on PHP and the Zend Engine itself). The third features a collection of common use code snippets while the last one points the reader into the direction of PECL by suggesting a couple of existing extensions to look at and learn from.
Since the topic of this book is to extend the PHP Interpreter using extensions written in the C programming language (or to embed it into an application that is written in C), a good understanding of C syntax, its datatypes, and pointer management is important to get the most out of this book.
Being a contributor to the PHP project for about six years now, I have been looking forward to this book. True, there is always the source code of the PHP Interpreter as a source of information on how "things work". But although being the ultimate reference, reading the source code cannot replace a thoughtfully structured and well written guide that gets you started. If you are looking for such a guide, look no further: you will find it in this excellent book.
Although it deals with a very technical topic, "Extending and Embedding PHP" is readable and the many code examples are easy to follow. The reader profits from the knowledge of the author, who has been involved in the PHP project as a core developer for over four years now and is also the author and maintainer of a dozen PHP extensions that are available through PECL. The book covers both major versions of PHP that are currently used, PHP 4 and PHP 5, and it will continue to serve its purpose when PHP 6 comes out next year.
Sebastian Bergmann spends his free time with the development of Free Software, is a member of the PHP and Gentoo Linux development teams and author of a variety of PHP software projects such as PHPUnit."
You can purchase Extending and Embedding PHP from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Building Scalable Web Sites
briandon writes "It's not a step-by-step guide (and doesn't claim to be one), but Building Scalable Web Sites is the closest thing available to a nuts-and-bolts look at managing the technical aspects of doing a Web-based startup. There's lots of code inside, but the book isn't built around a single, extremely contrived, case study like an online wine store. Instead, most of the chapters follow a general pattern: a topic (like bottlenecks in your application and platform, scaling, or monitoring) is addressed and some rules of thumb that describe the way that the author feels things should be done are set forth and explained, with lots of very specific hints and factoids mixed in along the way. Tools for other languages (in most cases, Perl) are mentioned in passing, nearly all of the code snippets are in PHP. MySQL 4.1 is the basis for most of the database-centered material." Read the rest of Brian's review. Building Scalable Web Sites : Building, Scaling, and Optimizing the Next Generation of Web Applications author Cal Henderson pages 330 publisher O'Reilly Media, Inc. rating 9/10 reviewer Brian Donovan ISBN 0596102356 summary If you've been kicking around the idea of doing a Web startup, then you should definitely give this book a read.
Henderson's resume, which can be found on his personal website, indicates that he joined Ludicorp about a year before they shut down GNE, their Web-based roleplaying game, to focus on Flickr (which had originally begun as an ofshoot of the game) and it's his role as web development lead at Ludicorp that led to the inclusion of the "The Flickr Way" sub-subtitle that runs diagonally across the upper right corner of the book's front cover.
The five-page-long first chapter sets the stage for the rest of the book with section headings that are all questions: "What is a Web application?", "How do you build Web applications?", "What is architecture?", and "How do I get started?".
Chapter two, "Web Application Architecture", begins with Henderson drawing an analogy between a web app and a type of multi-tiered dessert known as a trifle - the sponge cake at the bottom of the dish is the database, the next layer up, jell-o, is the business logic, and so on. The black and white image in the text is identical to the color image included in a slide from an eight-hour workshop that the author gave in San Francisco titled "How We Built Flickr". Having read the book and some reviews of his workshops and looked at the list of talks on Henderson's site (some with Powerpoint decks for download), it seems likely that a lot of the ideas expressed in the book were developed over an extended period of time through repeated presentations.
Next up are the considerations around development environments, beginning with a 3-point list of guidelines for building small-scale web apps up into big ones: use source control, have a one-step build process (literally, if possible, a single button), and track bugs (as well as non-bug items like features and support requests). Readers get to feast their eyes on a cropped screenshot of Flickr's build control panel (two buttons, "perform staging" and "perform deployment", to match the last two steps in the release sequence in an HTML form). For small teams, the author is in favor of allowing multiple developers to trigger releases and he suggests several ways of trying to keep that workable. In version control, Subversion gets the nod and, though no bugtracking tool is singled out as the best, FogBugz garners the highest praise ("extremely effective") and has the shortest list of "cons". The author never comes out and says what the Flickr / Flickr-Yahoo team uses in either area, however.
Chapter four is the most readable introduction to internationalization, localization, and Unicode that I've seen up to this point. MySQL's currently incomplete implementation of UTF-8, sarcastically referred to by some as "UTF-7½" (Google for it), is mentioned in enough detail that a reader can decide whether or not it's likely to be an issue for their app. The book as a whole is packed with little nuggets of information like that - things you might not have otherwise been even peripherally aware of until they bit you.
Input filtering and strategies for avoiding building cross-site-scripting and SQL injection vulnerabilities into your app are addressed in a chapter on data integrity and security that shows the same attention to detail as the rest of the book. The section on UTF-8 filtering, for example, features a three-way benchmark of UTF-8 validation techniques (using regular expressions, iconv, and ord()) and the merits of each approach are considered.
The coverage of handling emails programmatically in chapter six is also quite good. Henderson does the basics and then delves into a number of possible pitfalls in considerable detail. The salient aspects of the TNEF (media type application/ms-tnef) format, used by MS Outlook for attachments and metadata, for instance, are explained and pointers are given to open source TNEF parser implementations. I also got a lot out of the section on dealing with email from wireless devices like mobile phones, titled "Wireless Carriers Hate You" (there's that dry British wit again).
The second half of the book (chapters seven through eleven) focuses more on scalability. It's also where you'll find the most material on using MySQL, including but not limited to query profiling and optimization, a discussion of the merits of denormalizing once you begin to reach a certain scale, and a comparison of the different MySQL backends. There's an entire chapter devoted to finding and dealing with bottlenecks - how to determine whether your app is CPU-bound, I/O-bound, or context-switching-bound and what to do about it. The chapter on scaling begins by debunking the "scaling myth" (but he actually tackles several misconceptions at once - namely that scalability is synonymous with speed, that scalability is a byproduct of having written your app in Java, etc.) before getting into vertical vs. horizontal scaling (buying more powerful and expensive servers vs. adding more cheap cheap servers), load balancing, and more. Monitoring (both of web stats and your application itself) and APIs (RSS/RDF/Atom feeds, mobile content delivery formats like WAP and XHTML mobile, and REST/XML-RPC, and SOAP Web services) both get chapters of their own.
Henderson's sense of humor is evident throughout the book, but not in the annoying overly cutesey way that made me want to toss "Extreme Programming Installed" into the circular filing drawer. In the section on software interface design (where he means the interfaces between the layers of the trifle), for example, there's a "Web Application Scale of Stupidity" that places "sanity" in the center and OGF (one giant function) and OOP at the extremes. The process of separating web app logic from presentation is broken down into 3 steps: separating logic code from markup, splitting the markup into per-page files, and moving to a templating system. He closes out the chapter with a breakdown of the hosting, hardware, and networking issues involved in serving up web apps.
Technically, I think that Building Scalable Web Sites is 100%. There were just a few niggling flaws. Two dates given (both on page 155), 1990 for the creation of libxml and 1995 for the design of XML-RPC, are incorrect and I spotted a handful of grammatical mistakes (probably proportionately fewer than in this review) that I've already submitted, along with the date mistakes, as errata through the form linked from the O'Reilly catalog page for the book.
Additionally, though the cover does say "The Flickr Way", you won't find many sentences that begin "At Flickr, we [...]". Aside from the "Rolling Your Own" section in chapter seven describing some custom middleware and a protocol that they whipped up for moving files around within their system, there aren't a lot of explicit details about the way that Flickr operates in the book. You'll actually get more insider info from Tim O'Reilly's "Database War Stories" entry regarding Flickr, which is based on Henderson's answers to questions posed by O'Reilly, than from this book.
If you'd like to get a feel for Henderson's style, chapter five ("Data Integrity and Security") is available as a PDF on the O'Reilly catalog page for the book and Henderson has also put some articles online (all PDFs, not much overlap with the material in BSWS) at his website.
You can purchase Building Scalable Web Sites : Building, Scaling, and Optimizing the Next Generation of Web Applications from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Learning SQL on SQL Server 2005
khorner writes "I joined a local XP User Group in May of this year. As the IT Manager of Application Development for a 90+ year old agricultural cooperative, I'm introducing the concepts of agile development and need the support. Right off the bat, we've acquired some review copies of books and I volunteered for the O'Reilly book: Learning SQL on SQL Server 2005. I have been working with various versions of Microsoft SQL Server since 1999, so I figured I could give it a go." Read the rest of Kevin's review. Learning SQL on SQL Server 2005 author Sikha Saha Bagui & Richard Walsh Earp pages 325 publisher O'Reilly rating 4 reviewer Kevin Horner ISBN 0596102151 summary The organization and inconsistencies take away from the value of the book as a whole
Historically, I've found the O'Reilly books to be great references for professional programmers. I began with David Flanagan's Javascript: The Definitive Guide -- I think it was the 3rd edition. I enjoyed them for their reference value as well as business-oriented examples. Learning SQL on SQL Server 2005 does not, in my opinion, follow the mold I have become accustomed to from O'Reilly.
Learning SQL on SQL Server 2005 covers many of the topics necessary to introduce relational databases to the beginner. It is based on the authors' university course curriculum and it is evident with the review questions including with each chapter.
The authors cover important topics at an adequate depth for its target audience; however the organization needs some work. The first six chapters flip-flop across what I consider to be logical boundaries in a discussion on database development: schema versus data. Tools are a platform dependent subject necessary to discuss implementation.
The database provided could use some refactoring to get to a more cohesive and production level design. Not to be nitpicking, but as an example, equivalent domain level attributes for example, student number, are represented across tables as different column names. This is the attention to detail that drives me nuts on the professional level.
Chapter 1 sets the tone by touching multiple concepts and incorporates a smothering of screenshots. Over the first 25 pages (half being images and query result tables) we load the demo database, modify it, select from it, and cover to the Management Studio's syntax color coding and customization. Quite a lot to start off with for a novice, all with the assumption MS SQL 2005 is installed and ready to go.
Chapter 2 jumps into simple data selection of a single table and briefly hits the new MS SQL 2005 concept of synonyms.
Chapter 3 tries to focus on the schema oriented topic of table creation but falls short when jumping over to data topics like INSERT, UPDATE and DELETE. There is good coverage of data types, but we don't cover any design concepts of why we create tables and considerations for doing so. To the authors' defense, they state this is not a book on theory, but I think some level of theory is an important aspect to learn SQL.
Chapter 4 introduces the data selection concept of table joins and to do so, introduces the schema concept of keys.
Chapter 5 provides good coverage on internal functions for strings and dates and sets the foundation for more advanced queries.
Chapter 6 takes the reader through a logical process of developing a complex query. This is a good example process of taking a simple query and developing it further to satisfy a business need. Unfortunately, we experience some more inconsistency when we develop a join query using the WHERE clause - an inefficient and undesirable method the authors' discussed in chapter 4. Again, we jump from data concepts to schemas when we hit views and temp tables.
Chapter 7 through 10 present set operations, sub queries, and aggregate functions in a progressively logical manner. It would have been nice to have this progression prior to Chapter 6 and incorporate the concepts in the query development.
Chapter 11 throws in a thin coat of an introduction to table indexes and constraints: the final jump across topics.
Overall, the book provides an introduction to SQL topics. In my opinion, the organization and inconsistencies take away from the value of the book as a whole. If SQL is your profession (or you want it to be), with a list price of $44.99, Celko's SQL for Smarties is the better investment.
You can purchase Learning SQL on SQL Server 2005 from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Pro PHP Security
Michael J. Ross writes "The global accessibility of Web sites is a double-edged sword: At the same time that your online e-commerce site is open for business to anyone with an Internet connection, it is also open to malicious attack. Web sites based upon the popular language PHP, are no exception. Thus, it is both astonishing and worrisome that there are currently so few books devoted to PHP security — particularly ones that go beyond the handful of typical security countermeasures discussed in articles. Fortunately, Pro PHP Security, written by Chris Snyder and Michael Southwell, is intended to fill this critical need." Read the rest of Michael's review. Pro PHP Security author Chris Snyder and Michael Southwell pages 528 publisher Apress rating 9 reviewer Michael J. Ross ISBN 1590595084 summary A comprehensive guide to developing secure PHP-based Web sites.
Pro PHP Security spans 528 pages, consisting of 24 chapters organized into four major parts. The first part, comprising only one chapter, explains the nature and significance of computer security, and reasons as to why absolute security is an unattainable goal. Nonetheless, it is worthwhile to take all appropriate and reasonable security measures, and the authors provide a brief overview of the different types of attacks to which Web applications are vulnerable.
On their Web site, Apress has a page devoted to the book, where they offer the book's source code (in a Zip archive file), the table of contents, corrections to the book (i.e., errata), and a sample chapter (Chapter 12 - Preventing SQL Injection) in PDF format. In addition, there is a link for any reader who would like to purchase this title as an e-book.
One of the most laudable aspects of Pro PHP Security, is that the authors — both experienced software and Web site developers — go far beyond the standard PHP security advice of validating and escaping user input, etc. Those topics are covered in depth, but they are provided in the context of thorough discussions as to how to set up a secure environment in which to use those techniques. In addition, the authors present best practices that have evolved over time, as Web masters and system administrators have learned — often the hard way — the general types of attacks to which their Web sites and computer networks have been subjected.
In fact, Snyder and Southwell hold off on presenting the aforesaid specific PHP security techniques, until the third part of the book. Prior to that, they explain the characteristics of a secure online computing environment, such as using encryption, securing network connections via SSL and SSH, controlling access via authentication and permissions, and other important topics. Their coverage of the subject matter is complete, without being overwhelming. For instance, the material on encryption is helpfully divided into two separate chapters — devoted to theory and practice, respectively. Consequently, a PHP application developer or system administrator can immediately dive into the authors' recommended practices for encoding sensitive data, without getting bogged down in the theoretical underpinnings, if the reader is in a hurry to implement encryption on their own systems, or simply has no interest in the theory behind the methods.
As noted earlier, Part 3 of this monograph explains all of the well-known techniques that crackers use for attacking PHP-based Web sites, as well as the countermeasures that should be adopted by the developer or maintainer of the site. First up is validation of user input, which — though being essential to basic security — is still neglected on far too many Web sites. The attention to detail seen in this discussion is also reflected in the subsequent chapters, which cover SQL injection, cross-site scripting, remote execution, temporary files, and session hijacking. For each topic, the authors explain how the typical attack is attempted, and what needs to be done to prevent such attacks.
The fourth and last major part of the book covers vitally important topics that are usually glossed over in most PHP security books, or neglected altogether. Snyder and Southwell explain methods of limiting access to your Web site to humans (thus minimizing attacks that employ scripts), verifying the identities of those users, authorizing what those users can do on your system, and tracking their actions once they have logged in. The authors also explain how to reduce the chances of data loss, and how to execute system commands and make remote procedure calls without exposing your site to vulnerabilities. The last chapter covers the benefits to be gained from opening up your site and its source code to a review by your technical peers.
This book has much to recommend it: The discussions of security issues are more complete and thorough than in any other book that I have seen. The information chosen by the authors is detailed enough to be understandable and usable, but not so excessive as to prove daunting or discouraging to the reader who needs answers to their security questions, and does not have the time or inclination to slog through academic or pointless discussion. The information is well-organized, and presented in context, so the reader is not simply given a laundry list of security techniques, but instead better understands the rationale behind them. Lastly, because no technical topic can be covered in full in a single book, the authors provide a generous number of references to outside resources.
The content of this book appears to have only one noticeable weakness, and that is the poor quality of the comments in the sample source code. Not only are they few in number and lacking in detail, but they are written in all lowercase letters, with little to no punctuation. This coding style results in the comments visually blending in with the code itself, and makes reading both to be more difficult than is justifiable.
The physical book itself also has only one weakness, and that may only apply to a portion of the copies produced and distributed by the publisher. Specifically, the bottom and side edges of the book are cut cleanly, while the top edge is quite rough. As I was unable to find any mention within the book as to a possible reason or advantage for having the rough edging on top of the pages, I can only conclude that it was not intended on the part of Apress, and represents an error in production. I hope that the copy that I received — kindly given to me by the publisher — is not representative of all the copies produced and sold.
In spite of these minor complaints, I was quite pleased with this book. Pro PHP Security is arguably the most comprehensive PHP security book available, and is highly recommended to any developer or administrator of a PHP-based Web site.
Michael J. Ross is a freelance writer, computer consultant, and the editor of the free newsletter of PristinePlanet.com."
You can purchase Pro PHP Security from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Beginning GIMP
Ravi writes "Any one who has had the opportunity to manipulate images would be aware of Adobe's Photoshop - considered to be the market leader in image manipulation software. But with its high price tag, buying Photoshop is akin to putting strain on your bank balance. What is interesting is that there is a very popular free alternative to Photoshop in GIMP. For those in the dark, GIMP is a state of the art image manipulation software which runs on multiple architectures and OSes and which is released under the GNU free License (GPL). I have been using GIMP exclusively for touching up images for many years now and it has met all my graphics manipulation needs." Read the rest of Ravi's review Beginning GIMP - From Novice to Professional author Akkana Peck pages 550 publisher APress rating 9 reviewer Ravi ISBN 1-59059-587-4 summary A great book to learn Gimp
Unfortunately, for a beginner who is taking his first baby steps in GIMP, the interface might feel a bit kludgy and he/she might need some hand holding. This is where a book related to Gimp gains prominence. I recently came across this book called "Beginning GIMP - From Novice to Professional" authored by Akkana Peck. Divided into 12 chapters and 6 appendices, this book aims to cover the whole gamut of features found in Gimp.
In the first chapter, the author takes the reader through an in-depth tour of Gimp interface. This chapter introduces various dialogs,windows and configuration options that play an important part while working on ones images in Gimp. Even though I was conversant with most of the features of Gimp, I found this chapter impart a very good understanding of Gimp interface which is imperative for putting this software to productive use.
But it is not enough if one jumps right into editing images. It is important to have a good understanding of the various image formats used, their pros and cons as well as situations where different formats are ideal to use. The second chapter of this book titled "Improving Digital Photos" explains just that. The author further shows the image settings in Gimp which helps one to optimize the image while saving to disk as well as tips which could be very useful for photography buffs such as color correction, viewing the histogram to aid in bringing clarity to an image, rotating the image, fixing red eye and so on.
One of the most useful features of any graphics suite worth its name is its support for Layers. In Gimp, it is possible to save different images in layers. The third chapter of this book deals exclusively in giving an introduction to the concept of Layers and how it can be put to use in Gimp. At the end of the chapter, the author also explains how to create simple Gif animations.
Gimp has a great collection of tools at par with any other graphics suite in the market. These tools form the life line of any graphics artist in aiding his creations. In the subsequent three chapters , the author provides a detailed explanation of all these tools and how they could be put to use. Almost all the tools are covered in these three chapters and the author even provides the steps in creating images using these tools which gives it a practical touch to the whole narration.
In the seventh chapter titled Filters and Effects, one gets to know about the rich set of filters and scripts which are bundled with Gimp. There are hundreds of filters and effects categorized into three sections of Filters, Python-Fu and Script-Fu and most of them are described in this chapter with the aid of relevant examples.
From the 8th chapter onwards, the author turns to explain the more advanced concepts which pertain to graphics editing, knowing which, differentiates an expert from a beginner. Concepts such as color manipulation, compositing, masking and the different layer modes are described in detail with the aid of examples.
One of the biggest advantages a Gimp user has is the capability to create his own scripts in Gimp which allow him to accomplish complex tasks with the click of a button. Gimp scripts and plug-ins can be created using various languages like python, perl or C. But it also has its own scripting language called Script-Fu which also simplifies the process of creating scripts. And not surprisingly, there are hundreds of scripts bundled with the default installation of Gimp which makes it a viable option for creating complex graphical effects with ease. The 11th chapter of this book titled "Plug-ins and Scripting" gives an introduction to creating ones own scripts using different languages including script-fu. But I found this chapter to be more useful for a person who is interested in creating plug-ins than the normal users.
The final chapter of this well illustrated book deals with topics which couldn't fit in any other chapters such as tips on configuring Gimp to use the scanner and printer. There is a section which gives details of various resources found on the web which could be used to further enrich ones knowledge on using Gimp.
All along, the author gives interesting tit-bits on various aspects of image creation and modification which would be eye openers for most people who are getting introduced to the art of graphics manipulation. Reading the book, I was able to get valuable insights into different aspects of image editing such as antialiazing, hinting text and such, which plays an important part in creating good graphics.
In relevant sections, the author has provided important details which are highlighted in a bright vibrant color which makes reading this book a pleasant experience.
Many might wonder why some one would take time and efforts to write a book on Gimp when Adobe's Photoshop is considered the dominant leader in the graphics market. But the truth is Gimp enjoys a wider user base than all the other non-free graphics manipulation products combined as it is bundled by default on all Linux/Unix distributions worth their name. Considering that Gimp has also been ported to Windows and Mac OSX coupled with its hard to beat price (it is a free software released under GPL) and excellent features at par with any other professional graphics suite, this software has become a viable option for any one interested in developing graphics for the Web. And I found this book to contain relevant information which could be invaluable in ones journey into the fascinating world of image manipulation using GIMP.
You can purchase Beginning GIMP - From Novice to Professional from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Ruby For Rails
Simon P. Chappell writes "This may not be the book that you think it is, if you don't read the title carefully, but it is the book you need, if you are developing applications for Ruby On Rails (often known as just Rails, or RoR, to its friends). When learning any new development platform, there are many idioms and approaches, best practices if you will, that can benefit your development efforts. This book sets out to bring you that understanding of the best way to write the Ruby side of your Rails application." Read the rest of Simon's review. Ruby For Rails author David A. Black pages 493 (17 page index) publisher Manning rating 10/10 reviewer Simon P. Chappell ISBN 1932394699 summary A stunningly well written explanation of real-world Ruby skills for Rails development.
I see two main audiences for this book. The first group would be those who are learning to develop Rails applications and need some help with their Ruby skills. The second group would be those who already have good Ruby chops, but who want to learn the primary Rails idioms and techniques. Naturally, there is always the curious geek crowd who might find the twofer of an introduction to writing real-world Ruby and a hype-free description of what Rails actually brings to web development, to be quite attractive. I place myself firmly in the third group, but after reading this book, I'm ready to move to the first group.
To quote it's own website, "Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern." The first thing this tells us is that like any framework worth it's salt, it is fully buzzword compliant. The second thing it tells us is that it really does try to help with every layer of your application, from providing a full controller to automatically mapping your data objects to their respective backend database tables. Oh, and with the bare minimum of configuration files to boot! For those of us who have developed web applications with Java, this is a welcome break.
The first part describes "The Ruby/Rails Landscape" and has three chapters that describe how Ruby works, how Rails works and then shows a very simple example of Ruby-enhanced Rails development.
The second part describes "Ruby Building Blocks" spanning five chapters, four through eight. This part is a very good tutorial style introduction to Ruby. Chapter four introduces objects and variables with chapter five showing how to organize those objects with the concept of classes. Chapter six introduces us to modules and program organization in general. Chapter seven talks about the default object, self, and scope. Chapter eight covers control flow techniques. This is more than just a fancy way of saying conditionals and loops, because it includes one of the better explanations of closures that I've read to date.
The third part describes "Built-in Classes and Modules", in chapters nine through thirteen. Chapter nine covers some of the Ruby language essentials for Ruby development in the trenches. These include useful syntactic sugar, the family of methods that change data "in place" rather than returning a modified copy, some of the tricky aspects of the Boolean objects and the proper ways to compare two objects so that you get a comparison on their contents, which is likely to be what you want, rather than their memory location. Chapter ten looks at scalar objects: strings, symbols, numbers, times and dates. Chapter eleven examines the Ruby collections: arrays and hashes and discusses when you would use each one, based on their relative strengths. Chapter twelve looks at the regular-expression facilities within Ruby and chapter thirteen wraps up our tour of Ruby with some of the dynamic aspects of the language, including the "eval" family of methods that allow a Ruby program to run arbitrary code.
The fourth and final part describes "Rails Through Ruby and Ruby Through Rails". To quote the book, the purpose of the fourth part is "helping you get more out of Rails by knowing more about Ruby." To this end the simple application created in the first part of the book is revisited and revised. Chapter fourteen starts us out with remodeling the application written back in chapter three. Chapter fifteen looks at programmatically enhancing ActiveRecord models. Chapter sixteen covers the options available for enhancing the controllers and views. Finally, the part wraps up with chapter seventeen where techniques (and much encouragement) for exploring the Rails source code are shared.
The writing is excellent and the style is very engaging. Every concept is stunning well explained. Much as I liked and enjoyed "Programming Ruby" (the "pickaxe book" to it's friends) by Thomas, Fowler and Hunt, this book takes the state of Ruby writing to a new level.
The progression of the book is very well thought out. The first part introduces us to both Ruby and Rails. You can create basic Rails applications with very little Ruby and that's exactly what this first part walks you through. Then parts two and three teach Ruby skills and idioms that are directly applicable to Rail application creation. Part four takes these new skills and shows them being applied to the second Rails application of the book. I found this to be a very good sequence for progressing through the material.
The examples in the book are excellent and many of them are geared towards Rails-style situations. This not only helps to teach Ruby skills, but also keeps the Rails context firmly front and center during the process.
The index on this book is a magnificent 17 pages. That's not something you see too often.. The art of a good index seems to be somewhat lacking these days, but this book helps to redress the balance.
If Ruby on Rails is of no interest, then this book is most likely not the one you want. Also, if you were looking for something with an exhaustive, reference-style, coverage of Ruby, perhaps you'd be better off considering something like the "Programming Ruby" book.
This is a great book, that's very easy and enjoyable to read. It's a stunningly well written explanation of real-world Ruby skills for Rails development."
You can purchase Ruby For Rails from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page -
WxPython in Action
aceydacey writes ""WxPython in Action" is a new and definitive guide to the popular wxPython GUI framework. WxPython has been growing in popularity by leaps and bounds in recent years but has been hampered by a comparative lack of good, comprehensive documentation, so much so that many people have turned to studying the documentation for the underlying wxWidgets framework, that is written in C++. "WxPython in Action" fills the void by combining a good introduction to the framework with a comprehensive and accessible reference document. At 552 pages, Manning Publications has produced a definitive book." Read the rest of Ron's review. WxPython in Action author Robin Dunn and Noel Rappin pages 552 publisher Manning rating 10 reviewer Ron Stephens ISBN 1-932394-62-1 summary An introduction to the WxPython GUI Framework
WxPython is one of the best cross-platform GUI toolkits for the open source Python programming language. It excels in matching the native look and feel of programs on Windows, Linux, and Mac OS X. It is a mature project, being a well-developed wrapper of the underlying wxWidgets C++ toolkit. Another reason for its growing popularity is its very extensive number of widgets, making it a capable and modern tool for making professional-looking GUIs for applications in almost any field of endeavor. It has endured a reputation for having a steep learning curve, and for sometimes being difficult to install and easy to break during upgrades; both of which downsides should be lessened by the publishing of this book.
Written by Robin Dunn, the creator and moving force behind wxPython, and ably assisted by Noel Rappin, this book is definitive, authoritative and well-written. Part 1 fills the role of a good introduction to the toolkit, and Parts 2 and 3 are a thorough reference to the widgets, behavior and usage of the framework.
in Part 1, we learn the inside story behind the beginnings and the history of wxPython's development. We are walked through the creation of simple examples of the core functionality of the framework illustrating how to create and use the basic controls and event loops. Then, we get a more detailed explanation of the wxPython event loop, an introduction to PyCrust (a useful tool for wxPython programmers, essentially an interactive interpreter session, wrapped as a wx widget) a whole chapter on the Model-View-Controller paradigm, and a discourse on good factoring techniques for GUI programs. This is rather general programming knowledge, not necessarily specific to wxPython, and truly expert programmers will probably skip much of this material, but for many, like me, it is very useful, and for many others, it will be a good review of previously known material. The writing style is excellent but one weakness is that the authors return again and again to wxPython evangelism and boosterism, which is regrettable; but this is the only section of the book to suffer from this flaw.
Part 2 gives detailed coverage of each widget, control, frame, dialog, and menu in the toolkit, and this is the meat of the book and will be used and reused as core reference material by many a programmer. This is good stuff, thorough, well researched, and definitive. Next, the authors give an equally good explanation of how to use sizers and grids to layout and control your GUI application. Part 2 fills the previously missing gap in core wxPython documentation and, to folks who need it, is worth its weight in gold.
Part 3, called Advanced wxPython, gives welcome coverage to advanced layout and control issues. This subject of advanced layout is, in my opinion, where the rubber really hits the road in GUI design, and it is appropriate that this is where the authors spend the most time and effort, and with good result. The final chapter breaks new ground by walking the reader through the creation of a multithreaded wxPython application. This is great stuff, and the advanced readers will be left pining for even more on this timely topic of such growing importance. Fortunately, the authors are available online to communicate with users who truly master the material in the book and want to to pursue more advanced usage.
The book is at its best in documenting the core API for expert programmers who are new to wxPython. It is also a good introduction to wxPython for advanced programmers. For moderately experienced programmers, the book is excellent but will be a tough read; probably not to be mastered in a straight read thorough, the book will adequately reward this kind of reader who is dedicated and persistent. For novice programmers, especially those who have little to no previous experience in GUI programming, I believe the book may be beyond their grasp.
So, if you are a serious programmer who wants or needs to use the wxPython GUI toolkit, "wxPython in Action" is a must-have reference book. It is perfect for this kind of reader and will become a well-worn book that will be useful for at least the next five years. It is unlikely that any other book about wxPython will be published that could do a better job, given the authors' unparalleled understanding of the toolkit and the obvious patience, time and care they took in researching, writing, and editing this book. It is not a casual read, but to a serious student of the subject, that is a positive statement. The book is strong meat, a weighty and substantive technical tome.
The book really shines in the many pages devoted to User Interface design and implementation. This is where many programmers need help, and it is gratifying that this book goes into the most detail on this subject. This is very detailed coverage and one is left with a satisfaction that, while not easy reading, it is well worth while. I feel this is the book's strongest point.
I know that it sometimes seems there has been an inflation in the scoring of books, with reviewers giving so many high ratings that one wonders how meaningful those ratings are. This book is not for everybody, and it is not a work of great literature, but given the obvious need for such a work, and the careful and accurate fulfillment of this need by these authors, I feel justified in giving it a rating of ten stars. For the people who really need this book, it is about as good as it could get, and will be a most welcome addition to their technical library.
More material for those learning and using Python can found at my web site Python Learning Resources.
You can purchase WxPython in Action from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
PHP Hacks
Michael J. Ross writes "Given the current popularity of the Web development language PHP, it makes sense that newcomers to the language have a large number of introductory and reference volumes from which to choose. But for the more advanced PHP programmer, there are far fewer titles that explain how to make the most of the language, by applying it to solve relatively substantial problems. One such book is PHP Hacks: Tips & Tools for Creating Dynamic Websites, by Jack D. Herrington. Read the rest of Michael's review. PHP Hacks author Jack D. Herrington pages 468 publisher O'Reilly Media rating 8 reviewer Michael J. Ross ISBN 0596101392 summary Practical techniques and source code for improving PHP-based Web sites and applications.
The book was published by O'Reilly Media in December of 2005. Despite its title, PHP Hacks: Tips & Tools for Creating Dynamic Websites is clearly intended to show how PHP's capabilities can be extended beyond its most common usage for creating dynamic and database-driven Web pages, and can be employed in such areas as graphics, reporting, Web site testing, code generation, and even fun purposes (for those few programmers who find the former topics less than entertaining). The author, assisted by six contributors listed in the Credits section, manages to pack an impressive number of general programming ideas and PHP-specific topics within this title's 468 pages. The material is grouped into 10 chapters, each of which contains a generous number of "hacks," each in its own section.
As with most if not all of the other titles published by O'Reilly, this book has a Web page that offers an overview of the book, its table of contents, all of the book's code (in both Zip and tar file format), and a list of confirmed and unconfirmed errata. In addition, the site hosts five sample hacks (in PDF format): accessing iPhoto pictures, generating Excel spreadsheets, avoiding the "double submit" problem, reading RSS feeds on your PSP, and creating custom Google Maps. Perusing these hacks would give the prospective buyer a clear sense as to the style of the book's other 95 hacks, as well as the (low) level of PHP expertise needed to understand them.
The book begins with a preface that describes the organization, conventions, and icons chosen for the book. Also, it covers the legality of the code samples, lists contact information, and mentions O'Reilly's Safari online book service, which contains this title among many other PHP resources. What is perhaps most unique about this book's preface is that the author identifies over half a dozen weaknesses commonly seen in PHP applications, and explains how his book addresses those problems. In addition, he makes explicit how some of the hacks can be used for jazzing up one's Web site or Web-based application.
The first chapter discusses how to install PHP on Windows, Mac OS X, and Linux, and then verify that the installation was done properly. Herrington then briefly explains how to install MySQL and perform some basic database management. The chapter concludes with coverage of installing the PEAR library on your local machine and on your Web host's server (which is incorrectly identified as your "ISP machine," apparently assuming that most developers choose their Internet service providers for hosting their sites, when in fact the opposite is true). Since the typical reader of a non-beginning book such as this no doubt has one or more introductory and/or reference PHP books at hand, it would seem superfluous to waste time and space explaining how to install these components. But few pages are taken up by the material.
The next chapter is devoted to hacks that help to jazz up the design of one's Web sites, including how to create a skinnable interface, build a breadcrumb trail, create HTML boxes, add tabs to your interface, and other valuable techniques. Subsequent chapters offer hacks in the areas of dynamic HTML (DHTML), graphics and digital pictures, databases and XML, application and e-commerce design, patterns and PHP object orientation, testing and documentation generation, and building alternative user interfaces. The 10th and final chapter covers some "fun stuff," such as creating dynamic playlists, developing a media upload/download center, and even putting Wikipedia on a Sony PlayStation Portable.
Rather than try to explain in detail all of the many topics covered in the book, I instead encourage the interested reader to visit the publisher's Web page, and scan through the table of contents provided, to get a better idea as to how much of the book would be of interest to the individual. Also, the five sample hacks listed on the site, would be well worth examining and trying out. Overall, the topics chosen reflect favorably upon the judgment of the lead author and the other contributors to the book. The typical PHP veteran would likely be interested in most of the applications covered, and would probably learn some new tricks, especially in the areas of patterns and code testing, regardless of their level of experience.
Like all books, this one is not perfect. As with the first printing of most technical books; particularly those chock-full of source code; the book contains a fair number of errata, likely even greater in number than those reported and listed on the publisher's Web site, as mentioned earlier. Consequently, any reader who chooses to test the sample code and he or she would be encouraged to do so; should keep one browser window or editor buffer open and devoted to those errata, so as to minimize the time spent trying to figure out why some sample code is not working as advertised.
Some readers posting in forums have complained that the sample code has evidently not been fully tested on all platforms, nor in all Web browsers. Since few if any reviewers would have the time, resources, or inclination to verify these claims, it should suffice to simply bear in mind that the script output and other behavior detailed in the book might not exactly match those experienced during one's own usage of the code.
The fact that there were several cooks in the kitchen brewing up this particular book, is obvious from the way that the code formatting is not consistent throughout the book, as well as the variety of problem-solving styles. Fortunately, neither weakness is of much consequence, and the latter might even be considered a "feature," as it allows the reader to see how a number of veteran PHP developers approach solving a problem.
Most technical works written by a team of authors, end up as excessive "doorstops" that are often frustrating to read as a result of the wildly inconsistent writing and coding styles, to say nothing of the material often being out of date as a result of the long production time needed by the publisher. The opposite case can be even worse, when a publisher releases a book that was clearly thrown together as quickly as possible to capitalize upon a hot new trend in technology. Thankfully, PHP Hacks keeps the style differences to a minimum, and benefits from having a lead author responsible for the book as a whole.
Some programming purists may take issue with the use of the term "hack" used as a synonym for a small PHP application or the use of such for solving a problem, since the majority of the PHP scripts in the book do not involve any programming or problem-solving that would be considered notably clever or elegant. Yet the misuse of the term seems to be spreading, and is not limited to this particular book ; another example of marketing overpowering stability of language. In the preface of PHP Hacks, the author explains that he uses the term in the positive sense of creative participation, to help reclaim it from its popular usage in place of the more traditional term "cracking," i.e., breaking into systems.
Yet aside from these complaints, PHP Hacks is a worthy title that offers explanations and source code for many valuable site-enhancing applications, testing and code generation techniques, and critical e-commerce safeguards. I recommend this book to any PHP developer who would like to add to their Web sites' capabilities, as well as their knowledge of what PHP can do.
Michael J. Ross is a freelance writer, computer consultant, and the editor of the free newsletter of PristinePlanet.com."
You can purchase PHP Hacks: Tips & Tools for Creating Dynamic Websites from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
The Information Revolution
Aeonite writes "The Information Revolution subtitled, The Not-For-Dummies Guide to the History, Technology and Use of the World Wide Web, is the second in a trilogy by J.R. Okin. The first book, The Internet Revolution, covering the Internet in general and the third, The Technology Revolution being a guide to The Impact, Perils and Promise of the Internet. I have not read either of those two books, but I believe that each can be read independently, and this review should be viewed in that light." Read the rest of Aeonite's review. The Information Revolution: The Not-For-Dummies Guide to the History, Technology and Use of the World Wide Web author J.R. Okin pages 352 publisher Ironbound Press rating 5 reviewer Aeonite ISBN 0-9763857-3-2 summary A guide to the World Wide Web that strays into shadowy territory
The author's goal in writing this particular book is, first, to create a somewhat comprehensive overview of the World Wide Web. This is not to say that this book is an Internet Yellow Pages, like the myriad website guides that came out during the Web's early days. Rather, the book approaches the concept of the Web from the perspective of a total Web "newbie", discussing its precursors, its creation, its evolution and, to an extent, its future. For total newbies, this may seem a bit too thick (hence the book's subtitle), but for others much of the material will seem too basic; at one point, the author states that it's a surprise to most people that the web was created for the purpose of publishing as well as reading content. Such a fact is hardly a surprise to the average Slashdot reader, and certainly not to the masses currently posting on MySpace, YouTube, LiveJournal, and other MixedCaps websites which encourage self-publishing.
Overall, the book succeeds fairly well as a history and an overview. The stickier issues occur when the author occasionally drifts away from "unbiased history" and closer to "hopeful prophecy." One goal of this book, in the author's words, is to "to help others recognize and appreciate how the Web empowers individuals and why the egalitarian composition of the Web is so important and revolutionary." Later, he states that "no one individual or organization can argue that they have a larger or more prominent location on the Web because the Web does not include any type of hierarchy that makes such distinctions possible." This is true on a basic structural level, but anyone who knows about Google Page Rankings, the limitations of "free web page" providers and other issues (such as the net neutrality battle brewing in Congress) knows very well that there's a definite hierarchical structure to the Web. Joe Bagadonutz' Geocities Tribute to Donuts is certainly less prominent than the Tim Hortons home page when it comes to donuts; even if on a theoretical level they're both equal under the eyes of the Web, in the real world all websites are not created equal.
The book is divided into nine chapters (numbered 0 through 8), each covering a different facet of the Web in roughly chronological order. The first three chapters cover the creation and structure of the Web, and are presented in terms of what people did to get the Web to where it is today. The next three discuss the Web in terms of Information, Multimedia and Business, and discuss where the Web is today in terms of what it provides to you, the consumer. The final three chapters cover more personal matters, including home pages, Internet security and privacy, and the Web's Semantic future.
Chapter 0, "The Pre-Web Internet and Information Management," covers about 5 decades of time, from the 1940s through the creation of Mosaic in 1993. It discusses the gradual creation of what we now know as the Web, including both specific technologies such as Archie, Gopher, WAIS, etc., as well as more basic functions such as searchability and the notion of hyperlinks.
Chapter 1, "The Web is Born," spends a lot of time with Tim Berners-Lee, dwelling in the 1990s. It covers topics such as the first website (at info.cern.ch, which no longer exists), the multi-platform Mosaic browser, the Web being declared public domain, the browser wars of 1994, and the ultimate triumph of Internet Explorer. Though comprehensive, the chapter has a tendency to skip around in time, sometimes going back and forth from 1995 to 1994, then forward to 1999 and back to 1995; a purely chronological structure might have proven more readable. The material here also tends to dwell a bit too much in the realm of what could have been, sacrificing some relevant detail about what actually was. For example, some amount of time is given over to discussing "the Web that was lost," the NeXT computer and browsers with self-publishing tools built right in. However, Internet Explorer is acknowledged only in terms of its original Mosaic-based version (described as "weak" and "slow"), and its ultimate victory in the "Browser wars" is mentioned only in passing in a sentence that mentions Netscape being bypassed in 1999. Whether or not Microsoft is the "bad guy" is irrelevant; more equitable coverage of their victory would seem to be in order here.
Chapter 2, "The Mechanics of the Web," is a bit crunchier, discussing everything from DNS to HTML in some detail. It is perhaps the most illustrative example of the book's difficulty in appealing to a single audience, because much of the material here is not technical enough for geeks, while simultaneously being a bit too thick for total amateurs. There are also several minor details that will have geeks groaning: previous chapters referred to the triad of HTTP, HTML and URI (as on page 82), but here it's suddenly HTTP, HTML and URL (on page 110), and a sample of HTML code on page 139 is missing a tag.
Chapter 3, "The Information Web," discusses means of sharing and searching for information on the Web. Much of the coverage is fairly broad in scope, such as the concepts of information filtering and "push vs pull," but specific technologies such as cookies, bots, spiders and proxy servers are also given a few pages each. Some of the author's conclusions here will seem a bit odd to those more familiar with the Web. For example, on page 151 he directs readers to research various search engines to determine HOW they search, in order to pick the best one for a particular search; such a direction seems well-meaning but impractical at best for most people. A few pages later, he says that "many companies have found that unrestricted access to the Web leads to a significant amount of lost work time...". Not backed up with specific stats or a citation, it's questionable why such a statement is presented here in this format. This is nitpicking, however.
Chapter 4, "The Multimedia Web," takes us back into the crunch, covering specific technologies such as various audio types (mp3, midi, RealAudio), video types (quicktime, Real, mpeg) and true multimedia (java, flash, vrml). As elsewhere, what's most notable is what's absent, with no mention of Windows Media; love it or hate it, it's arguably the predominant format on the Web, and it seems disingenuous to simply omit it, for whatever reason, particularly when lesser technologies (QTVR, and even Yahoo's Fish Cam) are covered.
Such "errors by omission" become more apparent in Chapter 5, "The Business Web," which, as the title suggests, covers businesses that have succeeded and failed on the World Wide Web. Failures covered include WebVan, Kozmo, Pets.com, eToys and GovWorks, and successes include Netscape, Amazon, Ebay, Yahoo and Google. The coverage of Google and Netscape, in particular, represents the most serious issues I have with the chapter, and the book as a whole. Google is covered mostly as a search engine, and while Froogle, Answers and Groups are mentioned, the author goes so far as to say that "individuals do not have the same kind of incentive to return to Google that they have elsewhere," a statement that obviously does not take into account Gmail or Google Talk.
More egregious is the coverage here of Netscape as a success story. In the three pages devoted to the company, we learn about its 1995 IPO, SSL, SuiteSpot, Communicator, and its becoming a subsidiary of AOL in 1999. However, there is not a single mention of AOL's shirking Netscape in favor of IE, the buggy (and late) Netscape 6, or, in fact, anything to indicate that Netscape had a rough patch. We all know this particular emperor lost his clothing; why not mention it? Search Google for "Netscape downfall" and you get over 100,000 hits; here, you don't even get an inkling that anything is wrong. Perhaps it's merely an oversight. Later, on page 237, Netscape Communicator is mentioned along with IE as one form of free Web software, with no mention of Firefox, Opera or Safari, all of which (according to my own web stats) have a far greater share of the market than Netscape at this point.
In Chapter 6, "The People Web," the author's intended audience becomes a bit more clear, as he asks "Do you have a home page? How about your son or daughter, or perhaps your grandmother?" In short, he is speaking to moms and dads, not geeks or grandmothers or even teens. On page 247, a recitation of the things websites can be used for includes baseball card collections, health issues and music, but not porn or shareware. Turn the page, and the author prompts you to "pick your favorite celebrity, go to a search engine such as Google, and enter his name. Unless you have chosen someone relatively obscure, you will be amazed at the number of sites that are found. What is truly impressive, however, is the quality of many of these sites." Even more impressive, and yet not mentioned here at all, is the plethora of websites given over to celebrity nudes. Yet later, ample space is given to discussion of job hunting, web dating, and genealogy, but blogging is discussed with nary a mention of either LiveJournal or MySpace, making it feel as if this particular chapter was written a few years ago. This is not a discussion of what's on the Web; it's a discussion of what you want your mom to think is on the Web.
With that in mind, Chapter 7, "The Shadow Web," is all about how to scare your mom by telling her about how scary the Web can be. This is the chapter she's going to ask you about the next time you're over for dinner. In the author's words: "The shadow Web captures and tracks our movements as we browse and click our way across the Web. It knows which browser we use, which operating system is on our computer, and roughly, if not exactly, where we and our computer are located." While true on some level, the deeper implication here is that the Shadow Web is like something out of a movie starring Will Smith and Sandra Bullock, in which the bad guys are always watching you, everywhere. To be sure, there are concerns (NSA monitoring, wiretapping, etc.) but here even mundane things like Cookies and Web bugs are made out to be spookier than they are.
On Banners: "The amount of data generated by these banners is enormous; it is all about us and our use of the Web; and it is accumulating at an exponential rate."
On Web logs: "So every time you load a Web page, at least one Web server, and often more than one, adds a series of lines to its log files with information about you, the date and time, and the requested information."
On Web bugs: "...it could just as easily be recording that YOU loaded the page..."
You, you, you. The Web is tracking YOU personally. This is at the very least misleading. Certainly, these technologies track and record information about our computers, our IP addresses, our Internet connections. And certainly, they can track more if we log in or give them permission. Nothing that the author says in this regard is untrue. But here, the discussion of these technologies intentionally takes a personal tack, and the only comparison I can draw is to those websites that pop up and warn you that "Your IP address has been recorded." Of course it has. That's how it works.
Certainly, it's useful to understand what other people know about you, but it doesn't seem helpful to incite this level of distrust, particularly when the author doesn't provide any solution to the problem. About all he can do is provide this little bit of snark to close the chapter: "Read all the privacy statements you want. The one thing they all have in common is an acknowledgment that information about us and our use of the Web is being routinely recorded." Go ahead, read whatever you want. Throw your hands in the air. There's nothing you can do. It's bad enough that some of our parents don't want to buy things online with her credit card; if they read this, they might not even want to turn their computers on any more.
An anti-commercial, pro-open source bias is also clear in this chapter. The author mentions that his shadow Web first appeared "when commercial Web sites started to appear on the Web," and calls banner affiliates "Organizations that Live Off Our Movements." Why he didn't just use the word "parasites" is not clear, since it's obvious that's what he meant.
Chapter 8, "The Semantic Web," plays Paradiso to chapter 7's Inferno, providing "a vision for the Web of tomorrow" which has as its foundation better classification of links via tagging, with the wider use of XML as the framework for documents and RDF (Resource Description Framework) as the, well, framework for supporting the exchange of knowledge. Some of what's discussed here comes across as a bit hypocritical, especially compared to the previous chapter. For example, page 310 discusses an "agent" knowing your street address and zip code and using it to find stores within a radius of X, but although this involves the Web knowing something about YOU it's presented as less intrusive than the "Shadow Web" knowing your IP address. Even in heaven, it appears we must be tracked.
Later, the chapter discusses the need for a Web of trust, with digital signatures and a web of interconnected, trusted relationships, somewhat akin to what's happening nowadays on social networking communities like Friendster, Facebook, LinkedIn and MySpace, none of which are mentioned here. The ultimate result, the author hopes, is as follows: "If the Semantic Web can establish a global knowledge space out of today's information space, a great many changes in our world and in ourselves will surely follow." Change seems easy to predict; I would have preferred that the author be a bit more bold in his vision of the future of the Web.
The book's Appendix leads off with three pages of timeline through the year 2000 and a chart of the number of sites on the Web from 1993 to 2002, both indications of the book's necessarily limited scope when dealing with a moving target like the World Wide Web. This is followed by 14 pages of Internet Jargon, Netiquette and Emoticons, some of which appear to have been lifted from Dilbert comics, and many of which (e.g., Monkey Bath) have no relevance whatsoever to the book's subject matter. The Index is decent, although the equivalent of one full page is given over to a list of the aforementioned jargon terms, which shouldn't be in the book at all, in my opinion.
Overall, the book provides a good history of the Web and a solid understanding of its fundamentals without straying into the realm of jargon, and it is worth purchasing in that regard for those interested in such material. The problems come later in the book when the author strays into squishier areas, and any "net vet" who's been around since Mosaic will likely question what he has to say.
The author's Open Source bias is also clearly evident in some places (Mr. Okin has among his clients the Open Software Foundation), and for some readers his "blue sky/gray sky" view of things might be somewhat of a turn-off, especially for more jaded readers who are more familiar with the status quo on the Web. At one point, he states that "just beyond the e-commerce portal sites and storefronts and the mass-media newspapers and magazines exists a corporate-free and commerce-free Web of amazing richness and diversity that millions of people have already discovered and that more people are discovering every day."
As with other things, this may be true on a very basic level, but not in any practical sense. Almost every web comic runs banner ads and/or Google Adwords ads. Just about every author (amateur or pro) has got Amazon links and search boxes on his or her homepage. Even Maddox, author of "The Best Page in the Universe" (and one of the most anti-commercial, anti-corporate personalities on the Internet) has a book coming out through Citadel Press; the book briefly hit #1 on Amazon.com as a pre-order only item.
Certainly, such things are a clear sign of the web's empowering, egalitarian nature, which the author rightly lauds. But is that same Web truly, mostly commerce-free? Hardly. The World Wide Web of the future may indeed be Semantic, but that doesn't mean it won't have price tags and bar codes all over it."
You can purchase The Information Revolution: The Not-For-Dummies Guide to the History, Technology and Use of the World Wide Web from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Wicked Cool Perl Scripts
Michael J. Ross writes "Of all the popular programming languages now in use, Perl is perhaps the best suited for writing utilities — for several reasons, such as its text-processing capabilities, ease of addressing system resources, and minimal language overhead for input, output, list processing. It was designed to blend the rapid solution development of shell scripting with the powerful control constructs of third-generation languages. Consequently, Perl quickly became a favorite language for developing programs ranging from system administration utilities to CGI scripts that power Web sites. In fact, Perl has been called the glue that holds the Internet together. The tremendous flexibility and power of Perl is seen in Steve Oualline's book Wicked Cool Perl Scripts: Useful Perl Scripts That Solve Difficult Problems." Read the rest of Michael's review Wicked Cool Perl Scripts author Steve Oualline pages 336 publisher No Starch Press rating 8 reviewer Michael J. Ross ISBN 1593270623 summary 47 useful Perl scripts for Web site management or CGI, Linux or Unix system administration, managing pictures, etc.
Published by the cleverly named No Starch Press, Wicked Cool Perl Scripts comprises 336 pages, spanning 11 chapters, with a brief introduction, as well as an index. The book appeared in February 2006, and was published under the ISBN of 1593270623. No Starch Press maintains a Web page for the book, where readers can find a sample chapter (the third one, covering CGI debugging), in PDF format. There is a link for downloading all of the source code.
The book presents 47 scripts, grouped into 11 categories: general-purpose utilities, Web site management, CGI debugging, CGI programs, Internet data mining, Unix system administration, picture utilities, games and learning tools, development tools, mapping, and regular expression graphing. The scripts perform such functions as finding duplicate files on your PC, converting currencies, processing error logs, generating jokes randomly, getting stock quotes, and managing photos and other images. Some of the scripts play games, while others would be invaluable to any Linux or Unix system administrator. For readers with their own Web sites, the book offers scripts for verifying links, locating orphan files, detecting hackers, and locking them out. In addition, there is a script for counting the number of visitors to your site, and even one for presenting a guest book. Software developers will find the material valuable, as there are Perl scripts for generating code, locating dead code, and handling regular expressions — parsing and graphing them.
The scripts themselves are fairly wide ranging in complexity and size, with a few fitting on a single page of the book, while others require more than ten pages. Fortunately, the scripts generally contain enough comments to be clear in how they work to any programmer comfortable with the language. Nonetheless, the author explains how to run each script, what sort of results the reader should see, how the script works, and what modifications one might want to make to it ("hacking the script"). In addition, every one of the scripts contains a POD (Plain Old Documentation) section, though only in the downloadable version — not the version seen in the book, to save space.
It is doubtful that any beginning Perl programmer might mistake this book for a Perl primer or reference. The title alone makes clear that the focus is on the offered scripts themselves, and their ability to help the reader solve common problems. On the other hand, Perl programmers of any level of fluency with the language would benefit from reading through the scripts, as well as the author's explanation of how they address and solve each problem. I myself have been programming in Perl for ages, and yet I spotted CPAN modules that I can use in my own Perl scripts in the future.
The value of the scripts themselves to each individual reader, naturally depends upon what sort of tasks the reader would like to accomplish with Perl. The 11 categories of scripts are varied enough so as likely to be of use to just about anyone who would like to use the "Swiss Army knife of languages" for getting the job done on their computer, or that of their employer (as a system administrator). Personally I found most useful the scripts for detecting changed files, scanning Web sites for dead links, and parsing regular expressions.
There are other aspects to like about this book. It has a RepKover binding, to lay flat when open. The illustrations are clear and not excessive in number. Unlike some technical authors, whose weak attempts at humor simply make their obtuse material more annoying, Oualline is more subtle, such as his reference to the cost of Microsoft Windows CDs in a Hong Kong shop, or "Ingesting a Cheerio nasally." Well, perhaps not always subtle, but invariably welcome in what could otherwise be an extremely dry subject.
Like any book, there are some areas for improvement, perhaps in future editions: In the illustrations that employ rays pointing from one node to the next, some of the curved rays are remarkably jagged, as if they were not computer-generated. Far more importantly, some of the scripts could benefit from more internal comments, as well as having the code broken up into smaller functions, which improves clarity and maintainability. Also, some of the variables and functions could use more descriptive names. For instance, using two examples from a randomly chosen page: $file_name would be more clear than $cur_file (is it the file's name, full path, or contents?). print_file_cell() would be better than do_file() (do what to the file?).
But aside from those weaknesses, Wicked Cool Perl Scripts is a fine book that would be of interest to any Perl programmer, regardless of their expertise. In fact, the administrator of a Web site or a Linux/Unix server, would not even have to know the language in order to download these Perl scripts, and use them to solve problems on the job.
Michael J. Ross is a freelance writer, computer consultant, and the editor of the free newsletter of PristinePlanet.com.
You can purchase Wicked Cool Perl Scripts from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
PGP & GPG
Ben Rothke writes "PGP (Pretty Good Privacy), as most Slashdot readers know, is one of the most popular software encryption programs ever. It is so good and so effective that in the early 1990s the FBI launched a multi-year investigation against Phil Zimmerman, the creator of PGP, for possible violation of federal export laws, especially ITAR (International Traffic in Arms Regulation). After many years of investigation, the FBI ultimately dropped its case against Zimmerman. Even though PGP is synonymous with end-user encryption, there have only been a few books written on the subject. Jump to 2006, and PGP & GPG: Email for the Practical Paranoid is a welcome title." Read the rest of Ben's review. PGP & GPG: Email for the Practical Paranoid author Michael Lucas pages 216 publisher No Starch Press rating 8 reviewer Ben Rothke ISBN 1593270712 summary Pretty good overview of PGP & GPG
On page 167 in Appendix A of the book, the author candidly writes that PGP "comes with a very good and complete manual at over 300 pages". With that, one may question why one would spend $24.95 on a book which covers much of the same information as the bundled documentation.
The reality is that there is a large class of people that will simply not read any form of documentation. Rather, they prefer something with an ISBN number. Such people are a boon to authors (of which I am one) and publishers. For that group, PGP & GPG: Email for the Practical Paranoid provides a pretty good overview of how to use PGP.
The book is written for an end-user who, while comfortable with the workings of technology, is new to the sometimes strange world of public key cryptography. The author writes in an easy-to-read style and, through repetition, inculcates the principal ideas of encryption and cryptography to the reader.
The introduction and first chapter provide a good presentation of the concepts of encryption, cryptography and public-key cryptography. The idea of public-key cryptography, on which PGP is based, is not so intuitive, and many people struggle with the basic concepts. The first chapter, appropriately titled 'Cryptography Kindergarten' is a good read for those who are public-key cryptography challenged.
On a side note, the notion that even smart end-users can be intimidated by public key cryptography was detailed in a now seminal research paper 'Why Johnny Can't Encrypt: A Usability Evaluation of PGP 5.0.'
The premise of the paper is that user errors cause or contribute to most computer security failures, yet user interfaces for security still tend to be clumsy, confusing, or near-nonexistent. The authors argue that effective security requires a different usability standard, and that it will not be achieved through the user interface design techniques appropriate to other types of consumer software. The authors conclude that PGP 5.0 is not usable enough to provide effective security for most computer users despite its attractive graphical user interface. Even though PGP is in version 9.x, it still suffers from usability flaws.
Cryptography purists may recoil when the author repeatedly uses the term 'military-grade encryption.' Military-grade encryption and military-grade cryptography are overused terms, most often by marketing departments, but there is no real definition of 'military-grade encryption' -- and even if there were, it would be classified. Most people use 'military-grade encryption' to mean really strong crypto, much like those who use the term 'Olympic-size swimming pool' to refer to a really large pool. But the term 'military-grade encryption' is so misused by so many people that it is a lost cause to try to fight it.
In the rest of the book, chapters 2 - 11, the author details the varied usages of PGP & GPG. The book also details the differences between OpenPGP, PGP and GPG.
The difference between them is that PGP is a commercial piece of software, GPG (Gnu Privacy Guard) is open source, and OpenPGP is a protocol that defines a standard format for encrypted messages, signatures, and certificates for exchanging public keys.
The author astutely writes that while PGP provides really strong security, this is only if, and this is a huge if, it is implemented correctly. Chapter 11 notes that although OpenPGP provides a reliable method of authentication and encryption, it is also not unbreakable. OpenPGP can be vulnerable to many different types of attacks and weaknesses, including poor implementation, hardware or software compromise, fake keys and more. It is important to realize that OpenPGP provides significant, but not unbreakable security.
At 180 pages and priced at $24.95, PGP & GPG: Email for the Practical Paranoid is an excellent book that shows the end-user in an easy to read and often entertaining style just about everything they need to know to effectively and properly use PGP and OpenPGP.
For those that want to save money and perhaps save a few trees, the free documentation that comes along with the product is similarly worth reading.
You can purchase PGP & GPG: Email for the Practical Paranoid from bn.com.
Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Ubuntu Hacks
Ravi writes "I recently got hold of a very nice book on Ubuntu called Ubuntu Hacks co-authored by three authors - Kyle Rankin, Jonathan Oxer and Bill Childers. This is the latest of the hack series of books published by O'Reilly. They have made available a rough cut version of the book online ahead of schedule which was how I got hold of the book but as of now you can also buy the book in print. Put in a nutshell, this book is a collection of around 100 tips and tricks which the authors choose to call hacks, which explain how to accomplish various tasks in Ubuntu Linux. The so called hacks range from down right ordinary to the other end of the spectrum of doing specialised things." Read on for the rest of Ravi's review. Ubuntu Hacks - Tips and Tools for Exploring, Using and Tuning Linux author Jonathan Oxer, Kyle Rankin and Bill Childers pages 447 publisher O'Reilly rating 9 reviewer Ravi ISBN 0-596-52720-9 summary This book contains around a 100 hacks in configuring various aspects of Ubuntu.
The book is divided into 10 chapters each containing a collection of hacks on a particular topic.
In the first chapter titled - Getting Started, the authors explains how to install Ubuntu on a Mac and Windows PC, moving data like mail from windows Outlook express to Ubuntu, setting up a printer and more. This chapter contains a total of 14 hacks. And my favorite hack is the one where the authors explains how to create a customized version of Ubuntu Live CD containing ones favourite applications.
The second chapter dwells on the topics related to customizing the Ubuntu desktop. Here the authors give tips to install Java, customize Ubuntu desktop, install additional window managers, synchronizing ones PDA and Pocket PC, just to name a few. This chapter contains around 27 tips. My favourite one here would be how to create PDF files by using the print command from any application in Ubuntu.
Ubuntu like other main stream GNU/Linux distributions is encumbered by the patent restrictions related to various popular multimedia file formats. The net result is one cannot play multimedia files like mp3, wmv or quick time in a default Ubuntu installation. In the chapter titled "Multimedia", one gets to know how to enable audio and video applications bundled with Ubuntu to play these restricted media files.Topics like CD ripping, playing encrypted DVDs and playing any media formats using the all time popular mplayer are also explained in simple detail. But the one hack which takes the prize is that which explains how to buy songs at the iTunes music store and download the music on Linux.
Laptop users have some advantages as well as disadvantages over people using the desktop. And considering that the number of laptop users are ever increasing, there is a need to explain how to configure and take care of ones laptop running Ubuntu - like prolonging the battery life, configuring the wireless card on the laptop, hibernating, setting up bluetooth connection and so on. The 4th chapter contains around 8 detailed tips which deals with these interesting topics related to a laptop. I really liked the tip explaining how to make ones laptop settings roam with ones network which could be quite useful for people who are always on the move.
Chapter five of this well structured book deals exclusively with configuring and fine tuning X11 - the X Windows System. Here one gets to know how to configure ones mouse the old fashioned way by editing the requisite section in the X configuration file.As an example, the authors elaborate on a special case of configuring a seven button mouse with a tilted scroll wheel to work properly in Ubuntu. This chapter additionally contain a slew of tips to configure different difficult to configure hardware like the touch pad, setting up dual head displays, installing and configuring Nvidia, ATI and Matrox proprietary graphics drivers to work in Ubuntu and more.
The next chapter titled "Package Management" has a collection of tips in managing packages. Over and above explaining how to install, remove and update packages using apt-get, synaptic and Adept, this chapter also contain tips on creating ones own Ubuntu package from source, cache packages locally from source and more. I especially found the hack where the authors explain how to create ones own Ubuntu package repository really informative.
The seventh chapter dwells exclusively on Security. Usually Ubuntu for the desktop comes with all the ports closed by default which makes it relatively secure. But in these times of cheap high speed Internet access when a home network is connected to the Internet at all times, it is always prudent to run a firewall on ones machine. In this chapter, the authors explain how to setup a robust firewall using iptables and firewallbuilder and then manage it from the Ubuntu desktop. But that is not all, there are tips on configuring SUDO to limit permissions to different users where one gets to know how to do it the command line way. But my favourite tip in this chapter is the one which explains how to encrypt the file system to protect important data. This chapter contains a total of six in-depth hacks all related to enhancing the security of the machine running Ubuntu.
Ubuntu developers have always persevered in providing easy to use front-ends for conducting the most common system administration tasks - be it creating additional user accounts or managing the services running on ones machine. But at times the user is forced to do system administration tasks the command line way. In this chapter titled "Administration", the authors explain for instance how to compile a kernel from source the Ubuntu way and also ways of installing multiple copies of one kernel version on the same machine which could be useful for testing purpose. There are tips for taking backups as well as restoring them. I found the hack titled "Rescuing an unbootable system" really useful. This hack is in fact a collection of tips where common rescue scenarios are elaborated. I found this chapter full of very useful tips as varied as ways of synchronizing files between different machines, mounting a remote filesystem and even a tip on creating videos by capturing what is done on the desktop which could be really useful when shared with others while seeking help on a particular error.
A virtual machine is a simulated computer-inside-another-computer, allowing one to boot an extra operating system inside the primary environment. The next chapter titled "Virtualization and Emulation" explains the different virtualization and emulation technologies available which allow one to run windows/Dos applications and games in Ubuntu, running Ubuntu inside Windows and so on. Here the authors gives in-depth step-by-step walkthroughs in configuring and running virtualization and emulation technologies such as Xen, VMWare server and Wine which imparts a lot of importance to this chapter.
The final chapter of this excellent book which is also the 10th chapter deals with setting up a small home/office server. Here one gets to know how to install and configure a Ubuntu server from scratch. All the topics like setting up quotas to control disk space usage among users, setting up an SSH server, configuring Apache web server, building an email server, DHCP server, DNS server and so on which are a part and parcel of an office server setup have been given due importance in this chapter.
All the ten chapters combined, there are a total of 100 tips (Oops! hacks) in this unique book which are based on the latest version of Ubuntu - Dapper Drake. What is worth noting is that one is not expected to read the book from cover-to-cover rather, you can flip to the hack you are interested in and carry on from there which makes this book a very good reference for setting up and configuring all things related to Ubuntu. At this point, one might have questions in ones mind whether many of the solutions listed in this book aren't already available on the net in popular Linux/Ubuntu forums. True, with some searching one might be able to get what one is looking for. But if you ask me, it is always nice to have something tangible in ones hands while reading instead of having to stare at the monitor for hours on end. More over, each and every tip in this book has been tested by the authors on the latest version of Ubuntu (Dapper Drake) and is guaranteed to work. In writing this book, it is clear that the authors have put in a lot of hard work in covering all facets of configuring this popular Linux distribution which makes this book a worth while buy.
You can purchase Ubuntu Hacks - Tips and Tools for Exploring, Using and Tuning Linux from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Linux Annoyances For Geeks
Taran Rampersad writes "Every now and then, someone comes up with a fun title. 'Linux Annoyances for Geeks' is a definitely fun - and accurate - title for this book. While some people have been fiddling with Linux since it first came out, the majority of Linux users haven't been. I started using Linux in the late 90s, and my work schedule didn't allow me to go to meetings, or track down people who knew things. And the first time you do an install on a machine, you may be disconnected from the very information that gets you connected. Been there, done that. So this book attracted me because despite being an advocate of Free Software and Open Source, there are times when I still type very naughty things on the command line. Read the rest of Taran's review. Linux Annoyances For Geeks author Michael Jang pages 484 publisher O'Reilly rating 8/10 reviewer Taran Rampersad ISBN 0-596-00801-5 summary Answers to intermediate questions for Linux users.
Most of the time, I had fiddled with a previous install and gotten it the way I wanted it to work — when I had to do it again with a different install, I'd forgotten how I did it in the first place. There have been times, honestly, where I didn't even know. Fortunately, life has become better. There are books now. Some even come with Linux distributions, and there's plenty of documentation online that you can print out in advance when you go install things on your only connection to the Internet.
But there aren't that many books that really deal with the things that are annoyances, because the annoyances usually come from the late phone calls or the unanswered emails on a list. That's what this book is supposed to be for.
In reading this book, I caught myself nodding a lot. Not to sleep, mind you, but the, "I've seen that before" nod. The descriptions of the desktop environments, GNOME and KDE, started me nodding. Here's an idea of what the book covers:
Configuring a Desktop Environment: There's a great section on KDE and GNOME in here that starts the book off with a bang. Custom login menus, configuring standard backgrounds, desktop icons, oversized desktops and undersized monitors, Naughty mouse syndrome, Naughty users mess up the desktops, the infamous 'broken CD/DVD' problem, No GUI Syndrome, user downloads causing problems and ... sound. This chapter isn't one that I really had personal use for, but when people start asking questions — this is where they start. Great reference material here for desktop-finicky users.
Configuring User Workstations: Backing up data with rsynch and cron explained (where was this in 1999?), 'lost' files, 'lost' data... this chapter is one of my favorites, because people keep asking me about stuff like this. And dealing with Windows folks who complain that there's no ZIP — well, I wish I heard more of that.
Optimizing Internet Applications: I think that optimizing Internet applications is probably one of the largest problems out there, but I haven't really heard anyone ask about any of this. It's very strange. I think the world would be a better place if people read this chapter — from getting Firefox to work properly, sorting email into folders (yes, you can do that...), this covers a lot of ground in a very short space. My personal favorite was converting data from Outlook, which I have never done. Hidden in there are some tips on dealing with Microsoft Exchange Servers.
Setting Up Local Applications: This chapter focuses a lot on getting that irate I-am-new-to-Linux-and-I-want-my-toys person happy. It's filled with converting goodness, PDF inoculations and points you at the cure. And for those users who want movie players, there's something in here for them as well.
Installation Annoyances: This is probably the part of the book that will see the most use. There's a quote in here that I love: "Any A+ certified technician can list the hardware components on a computer. A Linux geek can cite the compatible components, such as the chipsets associated with a specific wireless card. He can use this information to compile the most efficient kernel for his system." So true. This chapter points you at the right resources and walks you through planning an installation. Which is priceless, even as a reminder for geeks.
Basic Start Configuration: Long boot times, bootloader issues, the ever-present dual-booting problems, the 'boot reboot repeat' problem, and my personal favorites, "I lost the password for Root!" and "My Server is So Secure that I can't log in as root". This chapter is pure gold.
Kernel Itches and Other Configuration Annoyances: Kernel upgrades, recompiles, kernel panic, 'file not found' boot error, NFS and Samba directory walkthroughs, and the infamous 'regular users can't mount the CD/DVD. Let's not forget dealing with Microsoft formatted partitions.
System Maintenance: Corrupted Partitions, emergency backups when the hard drive is knocking, small /home directories, slow hard drives, Update Repositories (not to be confused with User Suppositories), Dependency Hell solutions with yum and apt... platinum chapter for the troubleshooters out there.
Servicing Servers: Service Options, enabling downloading of files and , email issues when it is down, 'lost-printer syndrome', the BIND and growing network issue and the 'Windows Computers aren't on the network' issue. All rolled up here in Chapter 9.
User Management: Just about everything you would need to know about administering users, from special groups to keeping former employees from accessing the server, to securing the user (without duct tape).
Administration Tips: A lot of good things here for administrators; my personal favorite being configuring the Linux Gateway. Lots of great stuff in here.
For the life of me, I don't know why Chapter 5, Installation Annoyances, isn't Chapter 1. That seems to be where I've spent the most time helping other people out. The good news is that because it is where it is, the book stays open by itself here. Still, I think that might scare someone walking in while you're troubleshooting an installation. They might wonder what the 173 pages before installation problems was about. In fact, that could be funny... That's about the only thing that I could say I think is a bit off about the book, but perhaps that's by design. It's not a bug, it's a feature!
One of the things I liked most about this book was the fact that the chapters aren't named for the solutions; they are named by the problems. So when you're having a problem, you can find the solution.
Overall, this book meets the criteria for being next to my monitor, for quick reference in helping people out (including the worst one, me!). I haven't had the opportunity to use it's contents yet for Ubuntu, but since the book's solutions include Debian, they should work fine. As the author says in the preface, "The solutions are designed for three of the more prominent Linux distributions: Fedora Core, SUSE, and Debian." It would be interesting to see how it does with the Mandriva distribution.
In the Linux world, there are those that read and there are those that bleed. Those that bleed write what others read. This book was written in blood. It allows the leaders, the bleeders and the readers a means of finding their way around some of the annoyances that crop up. It does so in a well written manner which is well thought out, and amusing when you'll need to be amused.
( Original review on KnowProSE.com.)
You can purchase Linux Annoyances For Geeks from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Tricks of the Podcasting Masters
aceydacey writes "Tricks of the Podcasting Masters is a good read if you want to find out the who, what, when, why and where of the podcasting phenomenon. It is not a technical re-hash of the hardware and software tools of podcasting, but rather a discussion of the creative side of podcasting, its history, personalities, techniques, tricks and motivations. It is a good read for anyone interested in creating and promoting a podcast, and also for anyone who is interested in the inside scoop on what makes podcasters do what they do." Read on for the rest of Ron's review. Tricks of the Podcasting Masters author Rob Walch and Mur Lafferty pages 362 publisher Que rating 8 reviewer Ron Stephens ISBN 0-7897-3574-1 summary An inside look at the world of podcasting.
The authors are both well known pioneers of the podcasting genre. Rob Walch is the host of the popular Podcast411 show, and during the year a half this show has run, he has interviewed over 150 podcasters, including Adam Curry and almost every other luminary in and around podcasting. Mur Lafferty is the host of the Geek Fu Action Grip podcast, famous in Science Fiction circles, and the I Should be Writing Podcast, for aspiring authors.
The book excels in offering detailed advice to podcasters on how to improve and market their shows. Many of the big names in podcasting are quoted at length giving their advice, and the authors give candid, sober counsel that is not sugar coated with what the aspiring podcaster wants to hear. The theme is that doing a great podcast is hard work, and if one is willing to invest the time and effort, the book has plenty of helpful hints. This advice is of a practical nature including time management, how to stay motivated, and how to talk in front of a microphone and not sound like a robot. Podcasters will appreciate the pragmatic advice on how to script and edit a show, and how to relate to an audience effectively.
There is a lot of material on how to market and promote a podcast, and some of this advice is surprising, including innovative ideas on how to reach out beyond the podcasting community to the wider society, local media and unrelated internet activities. For some podcasters, this will be the most valuable part of the book.
The authors have both succeeded in turning their podcasting into at least part time careers, but their advice on monetizing podcasts is among the most sober and straight shooting I have ever seen or heard. They very carefully share all the revenue generating methods and ideas they have come across, and how to best exploit them; but they nevertheless give the grim statistics about how few podcasts will ever actually turn a profit, much less allow a podcaster to quit his or her day job.
There is a large section of the book devoted to detailing sixteen different genres of podcasting, such as audioblogs, comedy casts, educational, gaming, religious and spiritual, interview casts, music, news, politics, radio dramas, Q-Podders (alternative lifestyles), science fiction, sex, tech, sports and the written word. Four to six podcasts of each genre are highlighted including quotes from the shows' hosts. There is also coverage of the legal and ethical issues involved in podcasting , such as music licensing and laws concerning wire tapping that might come into play when conducting interviews by phone.
Utilizing the authors actual experience as consultants, the book is also a good resource for corporate podcasters who are using podcasting to market, promote or enhance existing businesses or information media. This is material not found in any other podcasting book I have read.
Much of the allure of the book is in the feeling of being on the inside, seeing what it is really like to be a pioneer in a hot new internet phenomenon. As such, this book will not age as quickly as other podcasting books that focus mostly on how to pick and use specific software and hardware podcasting tools. On the other hand, if you need detailed help on using such tools, this book is not the one for you.
On balance, I really enjoyed this book. If you have an interest in podcasting, either as a listener or a podcaster, you probably will enjoy it also. If you are not already interested in podcasting, this book might or might not stimulate you to look into it further, but at least you will find out what all the fuss is about.
As an exercise in full disclosure, I should confess to hosting two podcast series of my own, the AwareTek philosophical podcast, and the Python411 podcast about the Python programming language."
You can purchase Tricks of the Podcasting Masters from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
The Art of SQL
Graeme Williams writes "One difference between SQL and a conventional procedural programming language is that for SQL there's a bigger gap between what the code says and what the code does. The Art of SQL is the opposite of a cookbook – or rather it's about cooking rather than recipes. It's not a reference manual, although there's plenty to refer back to. It's an intermediate level book which assumes you know how to read and write SQL, and analyzes what SQL does and how it does it." Read on for Graeme's review. The Art of SQL author Stéphane Faroult with Peter Robson pages xvi + 349 publisher O'Reilly Media rating 9 reviewer Graeme Williams ISBN 0-596-00894-5 summary An excellent way to improve your approach to SQL
I guess it's normal for an intermediate text to present a number of serious examples, the idea being that the code from an example can be applied to roughly similar problems with roughly similar solutions. I think Faroult's goal is both more abstract and more ambitious. He wants to expand your ability to navigate among and analyze alternative SQL statements with more confidence and over a larger range. This isn't so much a book about SQL as it is about thinking about SQL.
There's almost no chance that the SQL examples in the book will be directly applied to a real problem. The examples are relevant at one remove: What does thinking about this example tell me about thinking about my current problem? So the book doesn't come with downloadable samples. There's no point.
The first few chapters of the book lay a foundation for the rest. As each brick in this foundation is placed, it sometimes feels as though it's placed firmly on your head. Think about indexes ... whack! Think about join conditions ... whack! These chapters have very few examples – the goal is to force you to think through queries from first principles. It's more effective (and less painful) than it sounds.
These introductory chapters cover how a query is constructed and executed, including how a query optimizer uses the information which is available to it. Faroult discusses the costs and benefits of indexes, and the interaction of physical layout with indexes, grouping, row ordering and partitioning. He also explains the difference between a purely relational query and one with non-relational parts, and how such a query can be analyzed in layers. Chapter 4 is available on the book's web page. It will give you a good idea of the style of the book, but not of the level of SQL discussed – the longest example in the chapter is just 15 lines.
Chapter 6 presents and analyzes nine SQL patterns, from small result sets taken from a few tables, to large result sets taken from many tables. The chapter falls roughly in the middle of the book, and feels like its heart. Prior chapters have built up to this one, and subsequent chapters are elaborations on particular topics. The theme of the book, to the extent that it has one, is that details matter. Different SQL statements can be used to produce the same result, but their performance will be different depending on details of the data and database. A change to the database structure, such as adding an index, might improve performance in one set of circumstances, but make it worse in another. The case analysis in this chapter will make you more sensitive to details in query design and execution.
The authors almost never mention particular database products. Their justification is that any absolute statement would be invalidated by the next release, or even a different hardware configuration, and anyway, that's not the business they're in. But sometimes this can go too far. The phrase "A clever optimizer ... will be able to" is too hypothetical by half. Is this an existing hypothetical query optimizer, or a vision of a future optimizer? Or the optimizer of one hypothetical database product and not of another? I suspect that Faroult knows and is simply being coy. It's just unhelpful not to tell us what existing databases will do, even if depends on the release or the hardware.
Faroult does this because he's not much interested in telling you what actually happens when a particular SQL statement is executed by a particular database. If the authors wanted a cute title for the book, I'm surprised they passed over The Zen of SQL Maintenance. When you look at an SQL statement, Faroult wants you to see what other SQL statements would do under other circumstances. He literally wants you to see the possibilities.
The second half of the book continues the analysis of chapter 6 into special cases, such as OLAP and large volumes of data, monitoring and resolving performance issues, and debugging problematic SQL.
Chapter 7 discusses tree-structured data, like an employee table with a column for the employee's manager. Faroult likes his own solution best, but presents an alternative approach by Joe Celko clearly enough for you to explore that as well.
Chapter 8 includes a series of examples of SQL and PHP. For anyone like me who spends more time in various programming languages than in SQL, this chapter is a small gem. It nicely illuminates the care needed in deciding what happens in code and what happens in SQL.
Chapter 9 addresses locking and concurrency, as it applies to both physical and logical parallelism. Transactions are included, but the discussion is just one part of a 20-page chapter and seems thin.
The Art of SQL is very clearly written. Whether it is "easy" will depend on how comfortable you are with SQL. This book is targeted at (page xi) "developers with significant (one year or, preferably, more) experience of development with an SQL database", their managers and software architects. I have months of experience spread over a decade or more, so I'm nominally outside the target audience. I found the SQL examples and discussion clear once I had a chance to let them sink in. If you're working with SQL regularly, they'll be perfectly clear.
The graphs let down the otherwise high quality of the book. For example, Figure 5-3 shows a rate (higher is better) but the legend says "Relative cost" (higher is worse). Figures 9-1 through 9-3 on facing pages 228 and 229 show response time histograms for three different query rates but don't show what the rates are. The x-axis of Figure 10-1 seems to be calendar time, but it's decorated with a stop watch icon. And as a representative of rapidly aging boomers with rapidly deteriorating eyesight, could I beg book designers not to put figure legends in a smaller font than the text of the book? Diagrams should be simple and clear, not something to puzzle over.
This is a book to conjure with, but it's not a book for everyone. Some people may find it too abstract, with too much discussion of too few examples. If you're completely new to SQL, the book will be hard going. If you have very many years of experience with SQL, it's just possible that you won't find anything new in the book, although I expect you'll find a lot to think about. For anyone in between, The Art of SQL is a excellent way to improve the way you attack problems in database and query design.
You can purchase The Art of SQL from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
User Mode Linux
Ravi writes "There is commercial grade software like VMware (which does full virtualization) as opposed to open source approaches like Xen which do partial virtualization. But besides these two, there is a very interesting piece of software called User Mode Linux (UML), which can be used to create virtual Linux machines within a Linux computer. Unique to UML is that support for it has been incorporated into the mainstream Linux kernel tree and it is now a fully supported part of the official Linux kernel. On this note, UML gains a lot of significance. UML has been created and maintained by Jeff Dike, who is known throughout the Linux technical community. And when someone who has created a popular software decides to author a book on the subject, then that book is sure to hold a lot of promise. So when I came across the book titled User Mode Linux, authored by Dike under Bruce Perens' Open Source Series, I just couldn't resist getting my hands on it." Read on for the rest of Ravi's review. User Mode Linux author Jeff Dike pages 330 publisher Prentice Hall rating 9 reviewer Ravi ISBN 0131865056 summary Guidance from UML's creator on setting up and putting to work your own instances of User Mode Linux virtual machines.
In the first chapter, Dike compares UML and various other virtualization technologies, lists several ways in which UML can be put to use, and provides a brief history of UML in which he shares with the reader the trials and tribulations he faced in getting the UML patch incorporated in the official Linux kernel tree.
In the next chapter, "A quick look at UML," Dike walks the reader through setting up UML to work in one's Linux distribution, which includes downloading the UML-enabled Linux kernel binary and the file system, and then booting into UML. Here we get a taste of the utilities which are used to modify in real time the configuration parameters of UML from the host OS. This chapter gives a sound introduction to what goes on behind the booting of UML and how it differs from the host OS in which it is running. For instance, the author aptly explains with the aid of examples that UML is at the same time a process and a kernel.
Chapter 3, "Exploring UML," dissects a UML instance in more detail. Here the author explains how one can connect devices to the running UML instance using the uml_mconsole utility. Common tasks like adding swap space, attaching and detaching devices as well as setting up networking are essentially the same in UML as in any normal Linux distribution, there are a couple of extra steps needed in setting these up in a UML instance. This chapter gives a taste of accomplishing these tasks.
But is it possible to access the same UML file system simultaneously by different users? Normally, this could corrupt the file system. So what is the workaround? The solution is in the use of COW ("Copy on write") files. Dike shows how multiple users can access the same UML instance (each user having full root access) without corrupting the underlying file system using COW files. And this forms the basis for the 4th chapter of this book, "A second UML instance." In this chapter, one also gets a peep into setting up networking between two UML instances but all the advanced networking concepts are explained in a separate chapter of their own.
The next chapter, "Playing with a UML Instance," takes the reader through a variety of things one can do with UML. For example, the author shows how one can just plug in a tar file to a block device and then access it in the UML instance. He also demonstrates how to run X inside UML.
Next, the book goes into a detailed analysis of the various file systems that could be used in UML. Here the author explains the various ways of mounting a directory on the host as a UML directory. In fact you can easily mount your home directory into a UML instance and access your files from inside the UML.
One cannot enable networking in UML quite the same way as in a normal Linux distribution. This is because the UML runs as a process within another Linux distribution. So for networking to work properly between the UML instance and the host system or between different UML instances, a device called TUN/TAP has to be configured first. Also one has to configure the host system to allow the UML instance access to the outside world; this could include tasks like enabling IP forwarding, routing packets to and from the UML, and bridging the host side of the virtual interface to the physical ethernet device. Chapter 7, "UML Networking in Depth," takes a broad look into these networking aspects of UML. I especially liked this chapter because this opens up avenues for people who are interested in learning more about networking. For example, following what has been covered in this chapter, one can -- given enough memory -- set up a network lab on one's machine consisting of a series of UML virtual machines and practice things like switching and bridging. At the end of this chapter, the author gives a step-by-step explanation of setting up a multicast network consisting of three UMLs and three two-node networks, and another UML acting as a switch.
In running UML virtual machines on a host system, at some point of time, it becomes inevitable that one has to manage these virtual systems from within the host. Tasks such as increasing or decreasing the memory allocation to a particular UML instance, hot-plugging a block device, starting or stopping the UML, and so on will have to be carried out on a regular basis especially if the host is a production system. One can install the uml utilities package on one's Linux server to take care of all these tasks from outside the UML. Chapter 8, "Managing UML Instances from the Host," takes a broad look at just that. This chapter covers configuring the different aspects of UML using the UML management console.
The next two chapters cover the nitty-gritty details of configuring UML in a small and large server setup, respectively. When UML is run in production environments, the security of the system takes precedence, and these chapters focus not just on the configuration details, but also on explaining how to run UML securely.
A look around the web will throw up lots of UML file systems and UML-enabled Linux kernels. But the best way (also the most secure way) of getting a UML kernel is to download the official Linux kernel source and compile it yourself. Chapter 11, "Compiling UML from Source," takes a detailed look at compiling the official Linux kernel from source. Here the author explains each and every UML specific option which could be enabled in the configuration file of the kernel prior to compiling it.
In "Specialized UML configurations," Dike demonstrates how to set up a small UML cluster using Oracle's ocfs2. The interesting thing is that the shared storage device which is common for all clusters and which consists of expensive hardware is just a file when implementing a UML cluster. Through this chapter, the author displays the true power of UML and explains how a UML could be used in stimulating hardware which is difficult or expensive to acquire.
The last chapter of the book gives a road map of UML and lists the enhancements that might take place in UML in the future. More specifically, he talks about the externfs filesystem, whose purpose is to allow any reasonable external data to be imported as a UML filesystem, about captive UML, putting a UML instance inside Apache, and so on.
The book also contain two short appendices which list the command line options while booting a UML instance, as well as a short reference on the UML utilities which could make it easier to manage the UML instances on ones machine.
With the continuing increase in processor speeds and availability of cheap memory, it has become feasible to use virtualization technology in production machines. UML can be put to use in diverse situations such as server consolidation where multiple UML instances running on a single machine accomplish the tasks of multiple physical server machines; in education, where each student can be assigned a complete virtual Linux lab setup with root access; in application development; and in disaster recovery practice.
User Mode Linux is a result-oriented book with stress given to accomplishing tasks rather than concentrating on theory alone. That said, this book has enough details to give a broad idea about UML and its implementation. That it was written by Jeff Dike gives this book a lot of credibility over books written on the same subject by others. UML being a niche area, anyone who is interested in this subject will gain a lot from this book.
Ravi Kumar is passionate about GNU/Linux. And likes to share his thoughts through his blog on GNU/Linux. You can purchase User Mode Linux from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Who Controls the Internet?
Graeme Williams writes " Who Controls the Internet? Illusions of a Borderless World is a frustrating book. You'll stumble across something on every second page which will infuriate you, but it's also true that almost every page discusses an important legal case, raises an interesting question, or presents an important problem. By describing recent Internet cases and the international legal environment in which they have been resolved, Goldsmith and Wu have illuminated an area which deserves clear and systematic analysis. But the Internet is not a unitary thing to be controlled, and the authors don't clearly distinguish its various protocols and services." Read the rest of Graeme's review. Who Controls the Internet? Illusions of a Borderless World author Jack Goldsmith and Tim Wu pages xii + 226 publisher Oxford University Press rating 4 reviewer Graeme Williams ISBN 0195152662 summary An excellent question with an imperfect answer
Disclaimer: This is a book about the law. I'm not a lawyer, although I am an Australian living in the United States who has sent email from China, all of which are relevant to this book.
Goldsmith and Wu's focus and principal conclusion is (p 180): "What we have seen, time and time again, is that physical coercion by government — the hallmark of a traditional legal system — remains far more important than anyone expected.". The situations and cases in Who Controls the Internet? clearly prove their point. They demonstrate that national laws are important to large companies like Yahoo!, but I don't think they prove their case with respect to individuals on the Internet.
The first part of the book, "The Internet Revolution", does an excellent job summarizing the early development of the Internet, including the extravagant claims of the early Internet and the Internet boom. People said some crazy things. Did John Perry Barlow really write (p 20), "I come from Cyberspace, the new home of Mind". Ouch!
The authors put a lot of emphasis on the importance of control of the root authority, but I'm not convinced. It's true that the the right to register domain names within a particular top-level domain (like .com or .tv) means that one company rather than another will make a lot of money, and it's certainly important to countries like Burindi how much of the revenue from its .bi domain they keep, but what about this from later in the book (p 168):For the Net to work — for computers all over the world to be able to communicate with one another — the root authority must reliably correlate IP addresses with domain names and uniquely match up both with a particular computer.
It seems to me that Goldsmith and Wu are confusing the legal authority with the technical mechanism behind the domain name system. Computers all over the world communicate using IP addresses. Domain names are an important convenience, but only a convenience. Also, I'm not sure the authors appreciate the role of local (ISP) DNS resolvers as a cut-out between the user and the root. If the United States government turned off the root server, Comcast has a big financial incentive to make sure that my service isn't interrupted.
As lawyers, Goldsmith and Wu do an excellent job summarizing some important legal cases. On October 20, 2000, Barron's published, on a web site in New Jersey, an article accusing an Australian billionaire, Joseph Gutnick, of tax evasion and money laundering. Gutnick sued Barron's in Australian court and won. Comparing the libel laws of the US and Australia, Goldsmith and Wu say (pp151 - 152):It reflects deeper disagreements between the United States and Australia about the processes that best secure truth, and about the relative value of robust speech versus reputation and uninhibited debate versus order.
When did uninhibited debate become the polar opposite of "order"? In the US, the libel laws are limited by the First Amendment. In Australia, the libel laws are limited by what the people in power think they can get away with. It's perfectly reasonable to compare the libels laws of the United States with those in Australia, but it doesn't make sense to assume that the differences reflect something intrinsic about the preferences of the people in each country.
On page 158, Goldsmith and Wu summarize their agreement with the outcome of Gutnick:Since Barron's chose to continue to do business in Australia, its consumers in the United States and Japan cannot legitimately expect to receive news from Barron's that runs afoul of Australian law.
But earlier in the book (p 1!), they discuss a suit in French court against Yahoo's auction site for selling Nazi memorabilia. There they argue that Internet companies should apply the laws of each country only to users in that country, through the magic of geo-coding. So which is it? Can a US web site avoid being subject to Australian courts by tailoring content to Australian subscribers versus others? What if its geocoding algorithm isn't perfect? What if a US subscriber visits Australia? What if an Australian subscriber visits the United States?
Another theme of the book is that governments are not just necessary and effective, but also legitimate (p 153):Even acknowledging that in places that in places like China the laws will often not reflect the wishes of people who live there, differences among laws in the many democratic governments in the world ... are presumptively legitimate.
Arguably, there are more "places like China" than there are "many democratic governments". And it's common for laws not to reflect the wishes of the majority. But the biggest problem is with the presumption that laws can achieve legitimacy through democratic government. I prefer the presumption that individuals have rights, and that the legitimacy of the law flows from those rights
Goldsmith and Wu convincingly lose the argument about legitimacy when they discuss music copyright (pp 105ff). My issue with their point of view is that copyright is (or should be) a balance between the rights of the user and the copyright owner. If I buy a music CD, I believe I own it, and I should be able to transfer it to my PC or my iPod without the interference of a legally arbitrary DRM mechanism. Goldsmith and Wu mention only one side of this equation, the rights of the copyright holder. Whatever the legal analysis, Goldsmith and Wu are surely wrong about the popularity of pirated music (p 123): "A minority, the Slashdotters, with all the time and expertise in the world, have disappeared into darknets, and won't pay for music."
So why bother with this book it all (and why give it a four and not a zero)? Lawrence Lessig, who knows a smidgen more than I do about Internet Law, says this:It is time that America learn an important lesson about the Internet — that however cyber the space is, it is also real, and subject to real space governments. This is the very best work to make this fundamental point. Goldsmith and Wu have made understandable and accessible an argument political culture should have realized a decade ago.
The book describes an important period, and arguably an important phase change, in Internet history. It raises important questions. I just don't necessarily like the answers.
You can purchase Who Controls the Internet? Illusions of a Borderless World from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Open Source Game Development
Boudewijn Rempt writes "Amazon's recommendation system recommended me "Open Source Game Development: Qt Games for KDE, PDA's and Windows" when I was looking for an introduction to OpenGL. While it does contain two chapters on OpenGL, there's much, much more. It's not just an introduction to writing open source games, it's a complete introduction to participating in open source projects like KDE." Read the rest of Boudewijn's review. Open Source Game Development: Qt Games for KDE, PDAs and Windows author Martin Heni, Andreas Beckermann pages 554 publisher Charles River Media rating 8 reviewer Boudewijn Rempt ISBN 1-58450-406-4 summary Complete guide on writing small to medium games for Linux, Windows and PDA's using Qt.
As maintainer of Krita, the KOffice paint application, I need to know about graphics. Unfortunately, the four months of retraining from sinologist to Oracle Forms developer that launched me into a life of coding didn't include anything on graphics, and certainly not on OpenGL. Which is very much where Krita 2.0 is going.
So... I was looking for an easy introduction to OpenGL to kind of ease my way into the Red and Orange books. And Amazon's weird recommendations system recommended Open Source Game Development: Qt Games for KDE, PDAs, and Windows by Martin Heni and Andreas Beckermann to me. Intrigued, I ordered the volume forthwith. Turns out that that was a good move: this is an excellent book.
In the first place, the text is very clear and concise, but never dry. Forget about the ho-ho-I'm-funny chatty style that's prevalent in many technical books. This book comes to the point immediately. Then, the information is carefully ordered and the presentation very neat and clear. Those would be good points for any book.
But what makes Open Source Game Development: Qt Games for KDE, PDAs, and Windows even more interesting is that it's much more than its title indicates. It is squarely intended at the hobby coder who wants to work on what the book calls "desktop games" -- not the multi-million dollar multimedia productions that demand a new graphics card every half year, but the games that you play while thinking out a knotty problem or that have some educational value for your kids. The kind of project a single coder, or a small team can complete and maintain while still staying sane. And, of course, that kind of game, defender or zaxxon-type games, maze games or tetris-style games work are perfectly suited for pda's and mobile phones, too,
Actually, this book is the perfect introduction to joining a big Open Source project I've seen. Of course, the focus is on Qt and KDE, which means that if you always had this itch to join KDE development but didn't have the necessary skills, this book will help you get there in a very pleasant way.
One way this is done, is by always first giving a general introduction to a topic, and then more detailed discussion in the next chapter. So, first we've got a very good "Qt Primer", and three chapters "KDE Game Development", "Qt Game Development Using Microsoft Windows" and "Game Development and PDA's". And there's a chapter on "OpenGL" in general, and then a chapter on "OpenGL with Qt".
The first part of the book deals with this type of introductory material. The second part discusses "Artificial Intelligence", "Pathfinding" (this chapter was a revelation to me -- I never understood how that worked. If only I had this information while trying to write games for my ZX Spectrum!), "Particle Effects" and "Math and Physics in Desktop Games". The material in these chapters is foreshadowed by the very first chapter "Introduction to Desktop Gaming", which deals with game balancing, architecture and the ins and outs of developing free software. Armed with these chapters, you can add enough game play to your games to make them satisfying to play.
The next three chapters discussion the Qt network classes and how to use them in your games, the KGame library (free software, of course), that contains a lot of boring groundwork that's the same for most games -- players, input devices, network stuff. For me personally, the "XML" chapter wasn't that useful, but then, I'm a corporate cubby-hole programmer by day, and XML is my bread and butter. It's amazing how many billable hours XML can add to a business application project.
A very important chapter, "Open Source and Intellectual Property Rights" makes it very clear what's allowed and what not. The summary chapter, "A Practical Summary" is a novel idea -- at least, I hadn't come across something like this before -- and it works quite well, tying all strands together. There are plenty of references to earlier chapters, so if works like a kind of hands-on index. Not that the actual index isn't top-notch, too.
I should make clear that this book is not just about coding for KDE. That's what most interesting to me, but if you want to code a game for Windows, for a Qtopia or Qt/Embedded environment, then this is the right book. After all, with the release of Qt4 under GPL for Windows (Qt was already released under GPL for X11 and OS X, as was Qtopia), Qt is a good choice for Windows hobby programmers. You get a high quality toolkit that really helps with the boring ground work, and excellent documentation. Coupled with the clear text in this book, there's nothing to hold you back.
Andreas Beckermann is the author of Boson, an OpenGL real-time strategy game based on Qt and KDE. His experience in working on Boson really is apparent in this book. Martin Heni has written a couple of games that that are in KDE's games pack, and has won a prize for his QTopia game Zauralign.
Oh, and the chapters on OpenGL and OpenGL with Qt were enough to make me understand the OpenGL Krita already has and did prepare me quite adequately for the big Red and Orange books. And I've got the itch to write a little game now..."
You can purchase Open Source Game Development: Qt Games for KDE, PDAs and Windows from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
The Business of Software
pankaj_kumar writes "The business of software usually gets tons of footage by the tech media covering its various facets: products, people, organizations, its economics, business models, technology trends and myriad other related things. So one would think that it would be difficult, if not impossible, to say something original. However, this collection of blog entries by noted blogger Eric Sink, founder of SourceGear, a vendor of source code control system, and developer of a Web browser at Spyglass that later came to become Internet Explorer, manages to do just that. He does so by focusing on workings of a lesser known niche in software business, that of privately held small ISVs, relating to his own personal experiences in a very engaging manner." Read the rest of Pankaj's review. Eric Sink on the Business of Software author Eric Sink pages 320 publisher Apress rating 8 reviewer Pankaj Kumar ISBN 1590596234 summary compilation of essays on founding and running a small ISV
If you are like me and rely mostly on news reports, either in print or online, to track your industry then you mostly read about VC backed startups or large publicly traded companies. It is too easy to forget or not realize that software started as a cottage industry and there still are a lot of mature, privately held small companies building and selling profitable products literally from a cottage. Their workings, forces driving key decisions and a lot of other things differ from the younger VC backed startups or bigger publicly held ones in significant ways. Eric's essays talk about this difference and the realities, both good and bad, of being small.
If you are looking at starting your own software company or just interested in gaining deeper insight into this segment of the industry then go, buy this book. In fact you don't even have to do that -- most of the essays are freely available on Eric's blog. But I must mention that even though I had read some of the essays online, reading them in the book, away from the computer and thousands other exciting things just a click away on the net, was a a much more positive experience.
Although most of the essays are original, informative and highly readable, some stand out from the crowd: Whining By a Barrel of Rocks talks about opportunities for small ISVs with the analogy of a barrel filled with large stones (ie; big apps) but still capable of holding many more small pebbles; Starting Your Own Business contains nuggets of street-smart advice for wannabe software entrepreneurs; Make More Mistakes recounts Eric's decisions and actions in his career as an entrepreneur that didn't work out the way he had hoped; Great Hacker != Great Hire critiques the famous piece by Paul Graham points out the considerations of developing software and doing business in a real world.
Actually, there are more than the above four that stand out, but I will leave it here. In fact, one of the quotes that I like most appears in The Game is Afoot: "This issue is not a check box; it's a slider." Although the comment was made in context of being conservative or bold, I think it applies to most issues we encounter. Very few things in life are either black or white. They need careful deliberation within a given context and a balanced response. In fact, Eric manages to illustrate this very seemingly obvious but difficult to practice idea in the domain of small ISV with help of a number of analogies with popular games in The Game is Afoot essay.
As much I liked the book, this review will not be fair without a discussion of its shortcomings or boundaries, at least the way I see. Keep in mind that the book is a compilation of blog entries based on personal experience and beliefs, not a work of research. So do not expect official or industry analyst numbers or survey results to back up the claims. Want to know about the approximate number of small ISVs in US and total revenue generated by them have changed over last 5 years, 10 years?. No luck. In fact, the book doesn't even mention these numbers for any year.
Also, I found the essays to be too heavily leaning towards desktop software. Given the emergence of the Web, its potential to disrupt established players and its friendliness to individuals and smaller organizations, it is indeed surprising that Eric doesn't talk much about Web based software opportunities. In fact, lately there have been many success stories where services built and operated by single individuals or very small teams have become very popular and bought by bigger companies.
Another inescapable idea in the world of software that finds scant mention in these essays is open source software and its famed development process. And I don't necessarily mean the launching a business based on open source software, but rather how to reconcile with the fact that open source software exists and all businesses, especially the smaller ones, have to survive and thrive in the same world. This is perhaps explained by author's own experience as recounted in Making More Mistakes essay where he talks about his lone effort to create an Open source software AbiWord and how it failed, at least from financial perspective. Perhaps therein lies his message!
Overall, I would sum up my review of this book as a nice and balanced work by an articulate software guy with deep technical expertise and keen business sense."
You can purchase Eric Sink on the Business of Software from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Beginning PHP and MySQL 5.0
Ravi Kumar writes "PHP and MySQL use is so prevalent that nowadays it is hard to miss seeing a website on the net which has been built using these technologies. The beauty of PHP is in its open nature and the rich set of libraries and modules which imparts a lot of power and flexibility to the programmer. Similarly MySQL is a free database which is ideal for use as a backend for any website. And not surprisingly there are a plethora of books in the market which explains these two topics. One such book is Beginning PHP and MySQL 5 from Novice to Professional authored by W.Jason Gilmore published by Apress." Read the rest of Ravi's review. Beginning PHP and MySQL 5.0 - From Novice to Professional author W.Jason Gilmore pages 860 publisher Apress rating 9 reviewer Ravi Kumar ISBN 978-1-59059-552-7 summary The beauty of PHP is in its open nature and the rich set of libraries and modules which imparts a lot of power and flexibility to the programmer. Similarly MySQL is a free database which is ideal for use as a backend for any website.
Spread over 860 pages and divided into a whooping 37 chapters, this book covers the PHP Language and MySQL database in detail. As the name indicates, the book endeavors to hand hold a newbie in the various aspects of PHP programming like the language constructs and progressively brings him to the level of a professional. The first 21 chapters of the book solely concentrates on PHP where the author explains with the aid of examples how to write good programs in PHP.
The author starts the narration by giving a brief history of PHP and then moves on to explain all the syntax constructs of this language in great detail. Arrays, functions and classes have each been provided separate chapters of their own. Usually I have found many books related to programming jumping straight into describing the language syntax and about writing code. But this book has a dedicated chapter each covering how to setup and configure PHP and MySQL on ones machine irrespective of the OS being used which breathes some fresh air to this subject. PHP language has a very good similarity with C/C++ at-least in the syntax. And in the sixth chapter, the author explains the Object Oriented Concepts like object cloning, inheritance and polymorphism of this language with clarity.
The maturity of any programming language is gauged by the type of traps that it has developed to check the errors and exceptions that might be generated dynamically when a program is run. PHP has a rich set of features for handling errors. Earlier versions of PHP already took care of notifying errors through configuration directives and support for logging. But one thing this robust language lacked was support for exception handling. And from PHP ver 5.0 onwards, this feature has also been included in it. The 8th chapter in this book titled Errors and Exception Handling explains all these important concepts in detail. The fact that the author has provided snippets of code to illustrate each concept that is explained goes a long way in understanding this topic.
Another of PHPs strengths is in its support of a rich set of regular expressions and string manipulation functions. Using regular expressions, one can match just about any string or a sub-set of it and even do manipulations to the matched string on the fly. The string matching functions form the backbone of many user input validations. In the 9th chapter titled "String and Regular Expressions", the author explains with the aid of code how to use the rich set of string manipulation functions available in PHP to get the desired results.
The 10th chapter is solely dedicated to working with files and operating systems where the author explains in his inimitable style different ways of reading from and writing to files. All the frequently used file manipulation functions are explained in this chapter with the aid of examples.
The first 12 chapters of the book solely concentrates on explaining the PHP language to the readers. In the next 4 chapters, the author moves into practical aspects like explaining how to mix PHP with HTML elements, user authentication , handling file uploads, sending and receiving email using PHP code and so on. I found the section where the author explains how to build specialized programs such as a port scanner, subnet converter and bandwidth tester all with the aid of PHP code really fascinating. The author introduces the reader to some of the MySQL concepts in this part of the book like connecting to a database and reading data from database but the more detailed aspects of database manipulation are left for later chapters which deals with MySQL in more depth.
The 21st chapter titled Secure PHP programming throws light on topics related to enhancing security while coding in PHP such as enabling safe mode for people who run PHP in a shared-server environment, PHP's encryption capabilities, securely configuring PHP via its configuration parameters and so on.
From the 22nd chapter onwards, the book takes an all together different turn and moves into explaining the database concepts which plays an important part in any dynamically generated website. More specifically, the succeeding chapters concentrate on explaining the configuration and use of MySQL 5.0 and how one can use PHP to interact with the MySQL database. The chapter titled Introducing PDO throws light on the abstraction layer used between PHP and MySQL. I especially liked the 26th chapter where the author lists the different MySQL clients which are available to the user like mysql, mysqladmin, mysqlshow and so on. In fact, each and every tool which comes bundled with the mysql server is explained thoroughly with the aid of examples. But that is not all, this chapter also explains how to configure a mysql database using third party clients like PHPMyAdmin, MySQL Query Browser, MySQL Administrator and Navicat. In the section on securing MySQL, the author goes into the finer nuances of the topic. For example, with the aid of commands, the author explains how to make sure that the user connects with the database over secure sockets layer (SSL) or ways of encrypting the MySQL database traffic which is an eye opener.
But I would say the 29th chapter titled PHP's MySQL Extension is the most important chapter in the entire book just because it is in this chapter that the author explains in detail the variety of ways in which one can connect to MySQL database and retrieve or manipulate the data using PHP code.
In the 30th chapter titled PHP's MySQLi Extension, one gets to know how to use the enhanced MySQLi extension to connect to the database. The MySQLi extension contains more enhancements over its predecessor in that it is object oriented, supports prepared statements, provides transactional support, has better debugging capabilities among other things. But the down side as the author puts it is that it requires PHP 5.0 for it to work.
The last six chapters deal with special features of MySQL and how one can write PHP code to use those features. The features like stored routines, MySQL triggers and Views have been provided with a dedicated chapter of their own. And yes, from MySQL ver 5.0, support for views have also been incorporated in the database. And the fact that this book covers these new topics in detail makes this a truly useful book not only for budding programmers but also for the gurus among us.
I really liked the layout of the book. Each section is accompanied by PHP code snippet which shows how it is done. Just because one gets two books at the price of one does not mean that the book is short on detail. In fact the opposite is true and the 860 pages contain all that is needed for coming upto date with the latest version of PHP and MySQL. Of course the inclusion of a couple of pages giving a complete project such as a shopping cart application at the end of the book would have imparted a nice touch especially since this book is targeted at beginners too. But that is a minor detail and I guess there are limits to which a books of even this size can cram information. All in all an informative book which gives good value for money.
The author of this book W.Jason Gilmore has developed countless PHP and MySQL applications over the past seven years, and has dozens of articles to his credit on this and other topics pertinent to Internet application development. He has had articles featured in, among others, Linux Magazine and Developer.com, and adopted for use within United Nations and Ford Foundation educational programs. Jason is the author of three books, including most recently the best-selling Beginning PHP and MySQL: From Novice to Professional, and, with coauthor Robert Treat, Beginning PHP and PostgreSQL 8: From Novice to Professional. These days Jason splits his time between running Apress's Open Source program, experimenting with spatially enabled Web applications, and starting more home remodeling projects than he could possibly complete.
Ravi Kumar is passionate about all things related to GPL and open source and likes to share his thoughts through his blog."
You can purchase Beginning PHP and MySQL 5.0 - From Novice to Professional from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Google: The Missing Manual, Second Edition
Graeme Williams writes "In thinking about Google: The Missing Manual, Second Edition it occurred to me that the Google search box is like the Tardis -- there's a lot more inside that little box than you expect. Writing a manual for Google must have felt a little bit like writing a Manual of Everything, and I'm not sure I'm qualified to review Everything. However, I did read the book, and found a lot I didn't know about Google and using it. You will too." Read the rest of Graeme's review. Google: The Missing Manual, Second Edition author Sarah Milstein, J.D. Biersdorfer, Matthew MacDonald pages xv + 446 publisher O'Reilly Media rating 9 reviewer Graeme Williams ISBN 0-596-10019-1 summary An excellent overview, although understandably going out of date in real time
Google: The Missing Manual, Second Edition adds two new authors, 151 pages and two chapters, Google Analytics and Gmail, to the first edition. One comment about the authors: Rael Dornfest, one of the two authors of the first edition, is included as an author in the online O'Reilly catalog entry but not in the actual paper book.
The first part of the book presents two related topics: searching and the search box. Because it's cumbersome to distinguish between searching for "blah blah blah" and "blah blah blah" (no quotes), I'll use slashes to delimit the text that goes into the search box: /"blah blah blah"/ versus /blah blah blah/.
The authors mention that a long time ago other search engines had pages that were slow to load, then Google introduced a fast loading search page with almost nothing on it, and partly because of that, it became popular. They single out Yahoo! as having a slow and bloated front page. But now Google has an alternative front page with more content, and Yahoo! has an alternative search page with less content. The comparison wouldn't be fair even if this was a book comparing Google and Yahoo!, and it isn't.
The book covers searching clearly and thoroughly, I'd be flabbergasted if you didn't discover something you didn't know. The book also presents nine other things you can type into the search box, such as /define:syzygy/, or /phonebook:white house washington dc/. You can find a list on the Google Web Search Features page. I think it's great that the authors included this section, although some of the "features" seem more robust than others.
The book explained one thing about searching I should have realized: the order of search terms matters. /red frog/ will give you slightly different results than /frog red/. For that example, the difference is small, but it's greater the more complicated the search. The authors would like more people to use the Search within Results feature: "Google has a great feature for helping you narrow down your results to find the really relevant pages, although almost nobody uses it". Almost nobody uses it because it's not all that useful. All it does is add the new term(s) to the end of your previous search. But to the extent that the order of search terms matters, maybe you want the new search term added to the beginning of the search. Or if you're searching for a phrase, perhaps the additional words should be part of the phrase, inside the quotes.
Here's one hack that's missing from the manual. Instead of enclosing a phrase in quotes, /"to be or not to be"/, you can replace the spaces with periods, /to.be.or.not.to.be/. This example turns out to fail, because Google thinks you're looking for a web site in Belgium, but it works most of the time. As a typing-impaired person I like it because it saves having to find the shift key.
The second part of Google: The Missing Manual is the largest part of the book, and the hardest to categorize. It's almost 200 pages long, and covers all the user features other than GMail and the basic search box. Depending on how you count them, there are over a dozen different services described, including desktop, image, news, and print search, shopping with Froogle, Google Local (which has absorbed maps), Groups, Answers, and the wireless and SMS interfaces. Browser features include searching from the sidebar, address bar, toolbar, Googlebar, buttons and bookmarklets.
When the book was written, the Google Deskbar was a search tool for the web with some useful specialized searches such as UPS and USPS, as well as the data indexed by desktop search. It had a miniviewer which I quite liked for looking at search results without opening a full browser window. The miniviewer has since disappeared, and the deskbar has morphed into the Google Desktop, which can appear either as a deskbar or a sidebar, and in the latter incarnation can be configured with multiple pop-out panes. There are other, less significant changes as well. If you have a Google account, your choices for personalized news are stored in your account, and news alerts is out of beta, and they're stored in your account as well. These changes affect the screenshots in the book more than the explanatory text.
Overall, the material in part two is very useful, even as it goes out of date. Just like other parts of the book, I'm sure you'll learn things you never knew, or have forgotten. During an excellent introduction to Froogle, Google's search-powered shopping service, the book reminded me of Google Catalogs, the service for searching catalogs.
The third part of the book is for webmasters, starting with a good introduction to the legitimate ways to structure your site to improve its ranking, as well as using a robots.txt file to hide some or all of your site from Google's spiders. Google: The Missing Manual also explains the two complementary programs for Google ads: Adsense is the service where Google provides ads for your site; Adwords is the service where you can advertise your site on Google, or on sites that have subscribed to Adsense. Finally, Analytics is a service for tracking visitors to your site. It integrates with Adsense but doesn't require it. At the moment, it's available only by invitation. Obviously, these services are of less general interest than the other parts of the book – you can't put Adwords on your MySpace or MSDN Spaces page.
The fourth part of Google: The Missing Manual describes Gmail. As with other parts of Google, there are new features that just don't appear in the book, like mailing lists or the built-in chat, as well as features that have moved around, like the new button for "Delete". Also, you used to need an invitation to sign up for GMail, but now you can sign up if you have a cell phone that can receive a text message from Google with a code in it.
The book mentions the fact that GMail includes a "standard HTML" mode for older browsers, but implies that this mode has limited functionality. I suspect that Google has improved the interface since the book was written, since I couldn't find any significant difference between the two modes, although the book does mention one difference: the lack of a spell checker in standard HTML.
The book confuses new messages, which Google doesn't keep track of, and unread messages, which are counted and displayed in bold.
The authors acknowledge (p 8) that between the time the book was written and the time it was published, Google will have introduced new services, such as Google Finance or Google Pages, as well as changes in existing services. Since it's not realistic to expect the book to describe the features Google put in yesterday, it might have made sense for the authors to mention when the contents of the book were frozen. It's sort of unfair, but a lot of this book will be ancient history in another year.
Despite the fact that some of the material in the book is out-of-date, I think everyone will find this book useful. When we get into a rut using programs and services in the same old way every time, we need a hard push to explore new features, and Google: The Missing Manual is just the thing to help learn more about Google. If you don't use Google, you should read it to find out all the neat features you're missing out on. If you DO use Google, you should read it to find out all the neat features you're not taking advantage of."
You can purchase Google: The Missing Manual, Second Edition from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Computer Network Time Synchronization
Ben Rothke writes "For most people, having their clocks accurate to within a few millionths of a second is excessive. Yet there are plenty of reasons to ensure that clocks on networks and production systems are that accurate. In fact, the need for synchronized time is a practical business and technology decision that is an integral part of an effective network and security architecture. The reality is that an organizations network and security infrastructure is highly dependent on accurate, synchronized time." Read the rest of Ben's review. Computer Network Time Synchronization author David L. Mills pages 304 publisher CRC rating 10 reviewer Ben Rothke ISBN 0849358051 summary Definitive reference on how to deploy and use NTP
From a practical perspective, nearly every activity requires synchronized time to operate at peak levels, from plane departures and sporting events, to industrial processes, IP telephony, GPS and much more. Within information technology, technologies from directory services, collaboration, to authentication, SIM and VoIP all require accurate and synchronized time to work effectively.
Computer Network Time Synchronization: The Network Time Protocol is a valuable book for those that are serious about network time synchronization. David Mills, the author of the book, is one of the pillars of the network time synchronization community, and an original developer of the IETF-based network time protocol (NTP). The book is the summation of his decades of experience and a detailed look at how to use NTP to achieve highly accurate time on your network.
While network time synchronization is indeed crucial to corporate networks, this is only the second book on the topic. Last year saw Expert Network Time Protocol: An Experience in Time with NTP, which is a most capable title. But this book is clearly the indisputable reference on the subject, given its extraordinary depth and breadth. While Expert Network Time Protocol gets into the metaphysics of time, Mills's book takes a much more rationalist and pragmatic approach, which explains the myriad mathematical equations.
Mills is an electrical engineer by training and a significant part of the books 15 chapters involve advanced mathematics. But even for those who can't manage such equations, there is enough relevant material to make the book most rewarding.
Chapters 1 and 2 provide an excellent overview of the basics of network timekeeping and an overview of how NTP works. We often take for granted that network computers have the capabilities to set their internal clock. But while the capabilities are there, the reality is that these clocks are rarely accurate and subjected to many externalities that affect their ability to provide accurate time. The book shows how highly accurate time is easily achievable; often without the need for additional hardware. The goal of book is to show the reader how they can use NTP to synchronize the time on their network hosts to within a few milliseconds.
Chapters 3 - 11 detail the internals of NTP and time synchronization. Topics such as clock discipline algorithms, clock drivers and more are detailed. For many readers, the information may be overkill, but remember that this is not a For Dummies book.
Chapters 13 - 15 ease up on the abstract mathematics and are much more readable to newbie to the world of time synchronization. Chapter 13 is quite readable and details the metrology and chronometry of how NTP measures time as opposed to other time scales.
One of the key differences is the notion of absolute vs. relative time. Relative or astronomic time is based on the earth's rotation. Since the earth's rotation is not absolute, leap seconds are added to keep UTC (Universal Coordinated Time) synchronized with the astronomical timescale.
So what exactly is this legendary thing called the second? In 1967, the 13th General Conference on Weights and Measures defined the International System unit of time, the second, in terms of atomic time rather than the motion of the Earth. Specifically, a second was defined as the duration of 9,192,631,770 cycles of microwave light absorbed or emitted by the hyperfine transition of cesium-133 atoms in their ground state undisturbed by external fields.
Since the 17th century, time has for the most part been measured astronomically via the solar day. But in the 1940s, it was established that the earth's rotation is not constant, as the earth is spinning slower than it did years ago.
Part of what NTP provides is coordination to UTC. UTC provides operating systems and applications with a common index to synchronize events and prove that events happened when timestamps state they did. UTC is a 24-hour clock system and that any given moment, UTC is the same no matter where you are located.
For the purist, UTC really stands for Coordinated Universal Time, but both terms are used. Mills somewhat humorously notes that we follow the politically correct convention of expressing international terms in English, and their abbreviations in French.
Chapter 15 concludes the book with a fascinating look at the technical history of NTP. As of mid-2006, NTP has been in use for over 25 years and remains one of the longest, if not longest running, continuously operating application protocols in use on the Internet. Currently in version 4.2.1, NTP is a well-developed, stable protocol.
For those that are simply interested in how time synchronization works, or are responsible for time synchronization in their organization, Computer Network Time Synchronization: The Network Time Protocol is the most comprehensive guide available to using NTP.
For those that need an exhaustive tome on all of the minutiae related to NTP and synchronization, this is the source. Short of a vendor and product analysis, the book covers every detail within NTP and is the definitive title on the subject.
Two new books on the subject in a year demonstrate the importance of time synchronization. While this is not likely indicative of a flood of new books on time synchronization, this book should be considered the last word on the topic."
You can purchase Computer Network Time Synchronization from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
SQL Cookbook
Simon P. Chappell writes "One of the staples of corporate I.S. development is processing data, and increasingly these days that data lives in a relational database. The lingua franca of relational database programming is the Structured Query Language (SQL), often pronounced "sequel". Many programmers find that the basics of SQL are easy to learn, but after that, it tends to get complicated. Enter the SQL Cookbook from O'Reilly." Read the rest of Simon's review. SQL Cookbook author Anthony Molinaro pages 595 (9 page index) publisher O'Reilly rating 8/10 reviewer Simon P. Chappell ISBN 0596009763 summary If you need help working with a database, this is the book for you.
The book is not for beginners and makes no efforts to teach any SQL. It concentrates purely on building on the base level of SQL knowledge that most programmers have. If you know the basics: Create, Read, Update and Delete (an unfortunate, yet memorable acronym) but rarely go beyond that, this book is for you. I know that I fall into this target market.
The point of the cookbook is that you need to get something done and you need to get it done sooner rather than later. Now, most of us can figure out most things given enough time, but in the real world, we rarely have enough time. The cookbooks objective is to save you time by giving you a successful approach that you could have figured out eventually anyway.
If you've previously read any other technology cookbook from O'Reilly, then you already know the structure of the recipes. For those new to the O'Reilly cookbook format, it's actually fairly straightforward. Each recipe starts out with a problem statement. Recipe one in chapter one, titled "Retrieving all Rows and Columns from a Table" has the problem statement "You have a table and want to see all of the data in it." Nice and clear. Then comes the solution. Naturally, for this problem statement we end up with a SELECT that looks like this:
select * from emp
Then the recipe has a discussion section where the solution is explained in more detail and the reasoning behind it is provided. For recipe one, the discussion explores the trade-offs between using the "*" to signify all columns versus naming each column explicitly.
The chapter structure through the book is very much one of building on the previous material. The first chapter starts with the fundamentals, the retrieving of records and then chapter two takes over with sorting the results of your query, while chapter three looks at using multiple tables.
Chapter four covers inserting, updating and deleting records. After that it's back into the world of queries, with chapter five exploring metadata queries for those times when you need to know just a little more about what's going on under the covers. Chapter six looks at working with Strings, a much harder topic than it would seem at first thought. Chapter seven addresses working with numbers and chapter eight does the same for date arithmetic with chapter nine bringing more understanding to general date manipulation. Chapter ten looks at working with ranges.
Chapter eleven dives into advanced searching in preparation for chapter twelve's information on reporting and (data) warehousing. Hierarchical queries are always challenging, so they're reserved for chapter thirteen. Finally, chapter fourteen is titled "Odds 'n' Ends" and is a general catch-all for some pretty advanced, but very infrequent problems.
I guess you either like the recipe approach or not. I love it, so I'm listing it as something to like about this book. The recipes are very well explained and while each one presents only one approach, where there are obviously multiple options, the discussion takes care to explain the reasoning behind the selection.
The writing is clear and the explanations are well laid out. Both the SQL code and the query results are presented well and are easy to read.
A very important part of the book is that it covers SQL variations for Oracle, IBM's DB2, Microsoft SQL Server and the open-source databases PostgresSQL and MySQL. Each of the recipes includes solutions for each of the five databases. While SQL is a standard, there seems to be some very relaxed definitions of full adherence to that standard; hence the book has to present up to five solutions for each problem.
Many of the recipes are advanced. While the front of the book has the entry level material, it ramps up in complexity pretty quickly. For some of us with very straightforward SQL knowledge, some of the recipes are going to take a while to fully understand and be able to use.
Many of the recipes are obviously oriented towards corporate reporting. If this is a big need for you, then this book goes along way to meeting your needs. If you have no need for corporate reporting, it's wasted paper.
This is an excellent book; it does exactly what it sets out to do and fully equips you to handle the most sophisticated database transactions.
You can purchase SQL Cookbook from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Head Rush Ajax
barryhawkins writes " Programmers are flooded with choices about which technologies to pursue in order to maintain a marketable skillset. Even in a particular area of programming like web applications, one must choose carefully where to invest time. Ajax, to the regret of some and delight of others, has emerged as a means of providing rich, responsive web applications that are highly cross-platform. However, when arriving home after a 10-hour day at the office programming, who has the energy to plow through yet another new facet of emerging technology? If a developer is going to invest their free time in self-driven career development, should it not be at least remotely enjoyable? Judging from the content of O'Reilly's new release Head Rush Ajax, their answer is yes." Read the rest of Barry's review. Head Rush Ajax author Brett McLaughlin pages 413 publisher O'Reilly Associates rating 9 reviewer Barry Hawkins ISBN 0-596-10225-9 summary A learner's introduction to Ajax, Asynchronous JavaScript and XML for web application programming
Like its forerunner the Head First series, the Head Rush line approaches learning a given technical topic with the principles derived from studies in cognitive science, neurobiology, and educational psychology. It comes as no surprise that the classic approach of turgid, monotonous, visually-fatiguing tomes is not the ideal way to have someone learn a topic. Learning is aided by having variation in the way content is presented. This book moves between presentation of information, application through interactive exercises, and review questions that stimulate the reader and invite them to continue in the book's journey through Ajax. Each exercise is also tied to a storyline, where the reader has a person with an application that needs to be enhanced by the application of the skills being learned.
Head Rush Ajax scales well. Ready-to-run scripts for the more technical components of the sample applications are provided so that a reader with only a background in HTML and CSS will not experience barriers to participation early in the book. This facility does not come at the expense of the experienced web developer; anyone who knows their way around a PHP script and databases is free to write the server-side code on their own. Some readers may look upon the choice of PHP for the back-end scripts as regrettable, particularly those with Java and .Net backgrounds. However, the focus is on Ajax itself, and not the particular back-end platform providing the HTTP responses. Those who look upon that sort of thing with scorn typically view Ajax as a novelty itself, so the number of complaints about using PHP should be relatively low; the dissenting voices will have probably passed over Ajax for the time being anyway.
The author never takes himself too seriously; the informal tone of the book is comfortable, like having a conversation with one's colleagues at the office. The balance of levity and solid technical content is refreshing, making this volume of some 400 pages reach its end surprisingly soon. Retro cartoon graphics and narrative comments like "Now, everyone hates you. You're an idiot, and all this Ajax stuff was a waste of time" when a URL caching error is uncovered make for a genuinely enjoyable read.
The Document Object Model, or DOM, has long had a reputation for being an unwieldy and problematic interface to manipulate. The tree metaphor used in this book along with the series of progressive exercises present the DOM in a refreshingly approachable manner. By the end of the DOM-specific coverage, an entire application has been created that is highly dynamic yet involves no Ajax-specific coding. The critical role of the DOM in effective use of Ajax is driven home without being heavy-handed.
The choice between using XML and JavaScript Object Notation (JSON) for receiving data via HTTP responses is another entertaining treatment of a topic that is often grounds for argument between practitioners of web development. The author comes across with a pragmatic viewpoint, preferring JSON as the simpler choice that is most often adequate and does not bear the high ceremony that accompanies proper handling of XML via the DOM. Two of the sample applications choose opposite means of receiving their data, once again fleshing out a topic in a concrete manner rather than pontificating about the virtues of either approach.
The progression of the book is masterful. The types of issues that typically plague web applications are addressed in the order they tend surface during the lifecycle of a real-world application. Proper functionality is the first stage, followed by enhanced functionality, then onto issues with synchronicity, security, and more complex domain model requirements. A reader can pass through an encapsulated representation of application lifecycles by working through the book from start to finish.
The goal of Head Rush Ajax is to have the reader learn Ajax, not master it. At the conclusion, the author appropriately offers topics for further exploration in the form of two appendices. The first appendix covers Ajax toolkits, user interface libraries, DOM utilities (most of which are built plugins for the browsers in use on desktops every day), and JSON libraries. Links to the project sites provide easy access to pick up where the book's coverage leaves off. The second appendix provides deeper insight on the internals of two JavaScript utilities provided for use in the exercises throughout the book. One is an Ajax-specific set of common infrastructure for typical Ajax applications, while the other provides convenient methods for DOM manipulation. Head Rush Ajax is a most enjoyable launchpad into the world of Ajax web applications, well worth the investment in time and money."
You can purchase Head Rush Ajax from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Retro Gaming Hacks
Craig Maloney writes "It's hard to imagine that over 35 years ago, video games were relegated to large computer rooms with a small dedicated computer following. With the explosion of the video game industry, characters like Pac Man, Donkey Kong, and Mario have achieved a cultural celebrity status. There has been a lot of interest lately in Classic Games and the Classic Gaming era. From the efforts of books like Supercade and Leonard Herman's "Rolenta Press" offerings, to sites such as Digital Press, AtariAge, and Good Deal Games, classic games are once again capturing the hearts and minds of those who experienced classic games first hand, and those experiencing classic games for the first time. Retro Gaming Hacks is a treat for both retro gaming enthusiasts and the retro-curious wondering what all the fuss was about." Read the rest of Craig's review. Retro Gaming Hacks author Chris Kohler pages 472 publisher O'Reilly rating 10/10 reviewer Craig Maloney ISBN 0-596-00917-8 summary An excellent guide to all forms of Retro Gaming
Retro Gaming Hacks is another entry in O' Reilly's "Hacks" Series, The "Hacks" Series is an ever-growing set of books with focused attention on a particular topic, like Astronomy, Mental Improvement, or even Halo 2. Each book contains article-length "hacks" of varying difficulty. Some of these hacks may even involve taking the cover off of some electronic device and voiding the warranty on the device. The format allows for quick reference to a particular topic, and the authors present a casual, expert discussion about the topic.
Retro Gaming Hacks begins with a chapter on acquiring actual classic gaming hardware. No matter how good emulators get, there is no experience like playing a classic game on the hardware it was designed to be played on. The author describes the places one can go to pick up hardware, and gives good advice for potential consumers on what to look for and what to avoid when making the final purchase. Next the book discusses a few classic console systems in detail, starting with the grand-daddy of them all: the Magnavox Odyssey, and continuing with the myriad of Pong clones available. After the Odyssey, the book features the game system that defined classic gaming for a generation: the Atari 2600. The author is a bit critical of the system and the games, preferring the Colecovision instead, but the overview of the Atari 2600 is a good introduction to the hardware and some notable games for the system (although I would have omitted mentioning Coleco's dreadful port of Donkey Kong in favor of Pitfall or the incredible Solaris). Other "Golden Era" systems are briefly mentioned, including the Mattel Intellivision, Coleco's Colecovision, the Atari 5200 and 7800, and GCE's Vectrex. The author continues the hardware discussion with several pages on the Nintendo Entertainment System, with several pages on the NES and it's Japanese counterpart: the Famicom. Hack #6 describes the process for repairing the "toaster" NES systems, while the latter part of Hack #5 includes a description of the interesting Neo-Fami adapter for the Game Boy Advance. Also included in the chapter are tips for buying full arcade games as well as JAMMA cabinets. The chapter rounds out with a description of the Holy Grails of classic gaming. (If you find any of these, please send them my way. Thanks!)
The next chapter describes the cheaper way of playing lots of classic games in one location. Many manufacturers have introduced "X in one" TV game systems, which contain one or more controllers, that hooks up to a standard television. The author provides a very comprehensive list of the currently available "X in one" game collections, pointing out the pluses and minuses of each in great detail. Similarly, the synopsis of the classic gaming collections for modern consoles is very thorough (although I'm uncertain if the issue the author raises about the Pac Man patterns relates to a conscious reprogramming of the games, or the differences between the Midway released versions of Pac Man versus the original Namco versions). Ending the chapter is a series of tips for finding hidden classics in current console games (easter eggs), like the arcade Star Wars games in Rebel Assault III, or the hidden NES titles in Animal Crossing. There were several games I wasn't unaware were hidden, and the author helps the search by providing details of how to find each one.
The mid-section of Retro Gaming Hacks darts back and forth between classic game and computer emulation on modern hardware, and restoring classic computers to functioning status. Chapter 3 discusses MAME, and the various interfaces for running MAME. Installing MAME under Windows, Macintosh, and Linux is covered in depth, as are several graphical interfaces for using MAME under each platform. There are also pointers for running MAME on the x box, as well as creating a self-booting MAME CD. There's even mention of the rather odd project known as LASER-MAME (think vector-based games like Asteroids played using LASERs). Lest we think of MAME as just a way to play semi-legal arcade games, the book has pointers to several legal arcade ROMs, such as Gridlee, Robby Roto, Poly Play, and several homebrew arcade games. There are also tips for purchasing legal ROMs, as well as tips for caring for your ROM collection. No section on MAME could be complete without discussing arcade controllers, and Retro Gaming Hacks includes pointers to the Hot Rod, X-Arcade and Slik Stik, as well as a how-to for creating your own controllers from scratch. Chapter four continues with emulations for many classic console game systems using MESS. Also covered in this chapter are several methods for copying games to actual hardware, as well as several emulators for PDAs and Smart Phones. Chapter five continues with classic computers, both in getting the actual hardware running optimally, and in emulating the hardware on modern machines. (There's even a section on getting the Atari 8bit computers running on a Dreamcast). Chapter 6 tackles text adventures, with a healthy section on the INFORM engine from Infocom (with a hack on how to write your own INFORM games. Too cool!) Chapter 7 deals with everyone's favorite gaming operating system DOS, from getting FreeDOS running on actual hardware, to using the "why waste a whole system on DOS" alternative, DOSBox. (And just in case you wanted to develop some games in DOS, there's several hacks for doing just that, too). There's an incredible amount of information in these chapters, with just about every game system imaginable covered. (Yes, even the incredibly crappy RCA Studio II).
Rounding out the book are sections covering creating your own games. There's a brief bit of information on creating retro-style games in Flash and SDL, as well as sections for developing on the Atari 2600 and the Game boy Advance. While this section could easily be covered in separate books, the authors do an admirable job of creating a good introduction to the tools required to start developing your own games.
Lest a book on retro gaming concludes without some game hints, Retro Gaming Hacks finishes off with the pattern from Pac Man, the minus world from Super Mario, and some tricks for Leisure Suit Larry. The Pac Man pattern is only for the first half of the first level, but it does work. (All in the name of research. :) )
Retro Gaming Hacks is a book that I can't say enough about. I'm one of the co-organizers for CinciClassic, and am relatively active in the classic gaming community. I can heartily recommend this book for anyone from the casual newbie to the classic gaming junkie. The resources mentioned in the book are the same resources I would recommend to anyone to satiate their classic gaming curiosity. While some may scoff and say there's plenty of gaming resources available online, Retro Gaming Hacks provides a great resource for finding things you weren't even looking for. (I know I would never have thought to emulate an Atari 800 on my Dreamcast, nor would I have ever thought that I didn't need to gut a keyboard in order to make my own MAME controller). There's something for every gamer, whether you were weaned on the Coleco Telstar arcade, or began your journey with Ultima IV. Retro Gaming Hacks is a fun book and I highly recommend to anyone who has even a remote interest in classic gaming.
(This review was written before CinciClassic 2006 occurred. I was so impressed with the book that I asked O' Reilly if they'd send a few copies for CinciClassic 2006. Their sponsorship of CinciClassic in no way swayed the reviewer or the review.)"
You can purchase Retro Gaming Hacks from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Beginning SQL Server 2005 Express
Graeme Williams writes "Beginning SQL Server 2005 Express Database Applications with Visual Basic Express and Visual Web Developer Express from Novice to Professional is in two parts, "Working with SQL Server Express" and "Working with Visual Basic Express and Visual Web Developer Express". The first part of the book is quite a bit larger (368pp vs. 204pp), so the title, as long as it is, isn't all that accurate. How about, "An introduction to SQL Server 2005 Express, including desktop and web applications in Visual Basic"? The book asks to be judged against a high standard: Can it turn a SQL and Visual Basic novice into a professional? The first part of the book is an excellent introduction to SQL Server in its several manifestations, and essential for anyone who is new to SQL Server 2005 Express. The second part doesn't provide as much help for the complete beginner, but still provides a good introduction to developing database applications." Read the rest of Graeme's review. Beginning SQL Server 2005 Express Database Applications author Rick Dobson pages xxi + 596 publisher Apress rating 8 reviewer Graeme Williams ISBN 1-59059-523-8 summary An excellent introduction to SQL Server 2005 Express and a
The first part of Beginning SQL Server 2005 Express, on SQL Server Express, covers a large amount of material. Starting with a basic introduction to SQL, the book builds in two directions, covering more complicated SQL as well as SQL Server Express administration. In 368 pages, you'd naturally expect a fair amount of information, but it's also thorough and well-organized. One test of how well an introductory book is organized is whether you can usefully keep it on your shelf to refer to later, and I think Beginning SQL Server 2005 Express passes that test very well. You can verify the breadth of topics covered by looking at the online table of contents and the author's web site for the book, which is detailed enough to be a very clear summary of what the book covers.
The generous amount of material downloadable from the web site includes all the SQL scripts from part one – these samples alone represent an excellent introduction to SQL (or T-SQL, as Microsoft insists on calling it). There's also a 60-page bonus chapter, not included in the book, on ASP .NET.
The explanation of SQL Server administration is a big bonus for the book, and it clearly lays out the difference between SQL Server 2005 and its smaller brother, the Express Edition, as well as the changes from SQL 2000. While I was reading this book, I had to do some simple database administration on a couple of SQL 2000 databases, one a production server, and the book gave me a very useful head start. If you found yourself upgrading from SQL Server Express to a larger and more complicated SQL Server configuration, Beginning SQL Server 2005 Express wouldn't give you everything you needed to know, but it would provide a good introduction.
Beginning SQL Server 2005 Express was published in December 2005, after the release of Microsoft's SQL Server 2005 Express but while SQL Server Management Studio Express was (and still is) only available as a "Community Technology Preview". I took the risk and installed it, and it seems fine, connecting both to a local instance of SQL Server 2005 Express and a remote SQL Server 2000.
It's inevitable in an introduction that some material be covered too hastily. For example, Dobson suggests that a database constraint could be used to ensure that a purchase amount is less than a particular dollar limit unless an approver name is also present in the database record. But that's a business rule that shouldn't be included in the database schema. At a minimum, the book might have mentioned the distinction. There's a good discussion of data types, which is somewhat weakened by not being prescriptive enough. Should I use the bit data type because they're small and will squeeze into tight spaces, or avoid them because of the unpacking overhead, if any? The book doesn't say.
There's one omission from the book that may trip you up when you try to run some of the Visual Basic examples, specifically code that attempts to attach a database file to the Server. The access privileges for the database server naturally depend on the user id it's running under, and the default installation uses a special Windows account which doesn't have access to your whole system. For running the examples, the simplest (and least secure) solution is to change the user id to your own account, which you can do using the SQL Server Configuration Manager, shown in Figure 1-4 on page 18. I guess the most secure solution is to create a new account whose privileges are limited to a specific directory, but I'm certainly not an expert in this area. Beginning SQL Server 2005 Express doesn't discuss it at all.
The second part of Beginning SQL Server 2005 Express, "Working with Visual Basic Express and Visual Web Developer Express", begins with a superficial introduction to Visual Basic. The problem is that it won't be enough for people who are new to Visual Basic, and it's not necessary for people who are familiar with it. The examples are solid but not outstanding.
Example 5 in Chapter 9, "Introduction to Visual Basic Express and Windows Forms", provides a nice example of a landmine Microsoft has laid in our path: In a Windows application, Console.WriteLine() writes to the Output->Debug window, but Debug.WriteLine() writes to the Immediate window. The example would have been easier to follow if that gem had been explained. But like the rest of the book, there's a lot of useful information in the chapter. I guess my only quibble is that in using "Novice" in the title, the book promises more than it delivers, at least in this area. This isn't suitable for a beginner to Visual Basic.
Like many other books about Visual Basic Express, Beginning SQL Server 2005 Express has a couple of chapters about building web sites using ASP .NET. It seems to me that Microsoft wants Visual Basic Express and SQL Server Express (both of which are free) to be gateway drugs to ASP .NET and IIS. The book repeats the canard that IIS is a free web server for Windows 2000, Windows XP and Windows 2003, but that's not true. IIS is included in Windows XP Professional but not Windows XP Home. In any case, Microsoft would love to get you hooked on IIS.
The other problem with ASP .NET is that so much of the action is behind the curtain. So, any example is going to have a sequence of steps in the web page designer, and perhaps a small amount of code or HTML, followed by magic, followed a web page being generated. I have nothing against magic, but it means that any narrative or explanation of examples is going to jump from "what you do at design time" to "what happens at run time" with a greater or lesser gap in the middle. Here's an example (page 565):Normally, a False setting for the AutoPostBack property of a server-based control, such as TextBox1, does not let the control operate automatically after you commit a value to it. However, a special setting on a Define Parameters wizard screen causes TextBox1 to return its value to the server immediately after a user presses the Enter key on the keyboard. The Define Parameters wizard screen is one of series that you can pass through when you reconfigure a data source with a wizard.
Dobson actually does a great job of navigating this particular example, in the sense that he makes it clear what incantations will produce the desired effect – submitting a single value to the server for use in a database query(!).
The rest of part two deals with Visual Basic and ADO .NET, starting with a good introduction to the ADO .NET architecture As in the first part of the book, Dobson does a very good job of presenting a great deal of very useful information. ADO .NET includes two different APIs, an untyped API where column names and types can be determined at runtime by querying the database, and a strongly typed API constructed by the Visual Studio IDE at design time. The IDE reads column names and types from the database and builds an XML description it uses to build and type an API specific to each table. Dobson presents the more complicated untyped API first, which I think is the right approach, since it then makes clear what the IDE and runtime libraries are doing under the covers to manage the typed API.
The Visual Basic examples include connecting to both SQL Server and Access, parsing data out of a text file or Excel, handling concurrency errors, and a very thorough walk-through of the usual suspects: creating and deleting tables and inserting, updating and deleting rows, from a single table or multiple tables. The examples are great at making clear how ADO and related parts of .NET work, but they didn't strike me as brilliant code – not necessarily the sort of thing you want to keep to cut and paste into your next project.
In my opinion, Beginning SQL Server 2005 Express is stronger in the area of SQL Server than it is for application development. If, like me, you're comfortable with Visual Basic but new to SQL Server, run to the bookstore – for you, this book is a 9. If you're familiar with SQL Server 2000 administration but looking to start implementing applications in the latest version of Visual Basic, check out the table of contents online. You'll find a lot to like, even if the book doesn't match your needs perfectly."
You can purchase Beginning SQL Server 2005 Express Database Applications from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Beginning Ubuntu Linux
Ravi writes "Anybody who have heard about Linux would be aware of Ubuntu which is a very popular flavor of Linux created by the South African firm Canonical founded by the space tourist Mark Shuttleworth. In fact, they set the precedent of supplying free CDs of this very popular OS to any one interested in installing and trying out Linux on their machine. Recently, I got hold of this wonderful book named "Beginning Ubuntu Linux - From Novice to Professional" authored by Kier Thomas. Being a Ubuntu user myself, I was pleased to see a Linux book specifically concentrating on Ubuntu, finding its way to the book stores. This book is aimed at people who are new to Linux and who wish to start their Linux journey by installing Ubuntu on their machines. Read the rest of Ravi's review. Beginning Ubuntu Linux - From Novice to Professional author Keir Thomas pages 600 publisher APress rating 9/10 reviewer Ravi Kumar ISBN 978-1-59059-627-2 summary A good book targeted at neophytes in Linux who wish to install and use Ubuntu on their machines
The book's 600 pages are divided into 7 parts each concentrating on a particular topic. And there are in total, 34 chapters and 4 appendices.
The first part of the book concentrates on giving a firm foundation to the readers as to what Linux is all about, its history and the benefits of using Linux over any other operating system.
From here, the author moves into explaining how to install Ubuntu on ones machine which forms the basis for the second part of this book. This part is divided into 3 chapters, one each dealing in pre-installation steps like partitioning ones hard disk, the actual installation steps and the equally important part of the most common issues faced by users before, during and after the installation and their solutions. In fact, the author lists over 18 problems that any user could encounter and gives their possible solutions.
The third part of the book which contains 6 chapters focuses on giving a fly-by tour of different aspects of Ubuntu Desktop, its various elements like menus, panels, virtual desktops and applets. I especially liked the section which listed the Microsoft Windows desktop functions and their equivalents found in Ubuntu. There is a special chapter titled "Ubuntu replacements for Windows programs" which could be an eye opener for any one interested in embracing Linux. In fact, the whole book is geared towards neophytes who are hoping to take their first steps in Linux.
Part 4 aptly named - "The Shell and Beyond" - contains 5 chapters where the author gives a sound introduction to the shell in Linux as well as takes the reader through the most useful and commonly used commands which would help a user save time. This part of the book contains a chapter on the Bash shell where the author explains the uses of the command line and how one can benefit from it. I really liked the table giving the DOS commands and their equivalents in Linux and also the section on how to disable the graphical desktop and boot into the console. And surprisingly the author explains how to do it the command line way which I found really interesting. This section is full of useful tips for people who have an affinity for the command line - like creating aliases, getting more help on the command usage, the file hierarchy in Ubuntu, file permissions and much more. The icing on the cake is the chapter named - "Cool Shell Tricks" - which contains many command line gymnastics that showcase the true power of the console in Linux. But what is amazing is that the author explains all these topics in a very simple and lucid manner which makes it easy for even a lay person to understand.
The fifth part of the book deals entirely with the topic of digital music, movies and image editing and is spread over 3 chapters. Here one gets to know the various software used to play different media formats as well as an introduction to the fine art of image manipulation using Gimp. One of the biggest drawbacks for Linux users is the lack of out-of-the-box support for popular media formats due to license restrictions. The author explains how one can enable the media players bundled with Ubuntu to play most of these media files including the ever popular mp3. By going through the chapters in this section, one gets to know more about the different audio and video formats which could be an eye opener for any tech neophyte.
What is the use of a desktop if it does not suit an office setup right? The next section comprising of 8 chapters cover how one can use Ubuntu at one's work place. The author takes the users on a trip of using OpenOffice.org office suite to create documents, spreadsheets, presentations as well as configuring an email client to send and receive emails. The last chapter in this section is exclusively dedicated to installing and running Microsoft Office in Ubuntu using Wine.
Till now if the book was dedicated more or less to new users of Linux, then in the seventh and final part of this book, the experts among us have something to look forward too. This part of the book covers the finer nuances of maintaining the Ubuntu system which includes installing and updating software, managing users and groups, ways of backing up data, and most interesting of all, steps to make the system more responsive which includes disabling unnecessary services, optimizing the hard disk, the concept of prelinking and much more.
The inclusion of 4 appendices which contain among others a glossary of Linux terms, the bash shell command index, information on getting further help online as well as a synopsis of the different flavors of Ubuntu makes this book a perfect guide for new users in Linux.
Having said that, even though at first glance, a person who is well versed in Linux might be tempted to pass it on as a book for newbies; on close scrutiny, one will find interesting nuggets and tips which even an expert would not have known. One example of this is the part where the author explains how one can configure Ubuntu to communicate and transfer data with one's bluetooth enabled cell phone. And it is to the authors credit that all these technical topics are explained in clear and simple language. The book is interspersed with images and screen shots making it easier to visualize the steps being explained. All in all a good book which is both informative and entertaining at the same time, and which would appeal to anybody interested in installing and using Ubuntu Linux on ones machine.
The author, Keir Thomas has been writing about computers, operating systems,and software for a decade. He has edited several best-selling computer magazines, including LinuxUser & Developer, PC Utilities, and PC Extreme, and worked as part of the editorial staff on a range of other titles. He was formerly Technical Group Editor at Live Publishing. Throughout Keir's career, his aim has been to explain advanced and confusing technology in ways that the average person can understand. Keir works as a freelance editor and writer. He lives on the side of a mountain in England, and his pastimes include hiking and playing musical instruments.
Ravi Kumar is passionate about all things related to Linux and likes to share his experiences through his blog on Linux."
You can purchase Beginning Ubuntu Linux - From Novice to Professional from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Micro-ISV: From Vision to Reality
prostoalex writes "When you read a news item about a company buyout or a two-person research project hitting big, how many times have you thought "I wonder if I could run a software company." Apparently, quite a few of software developers are discovering the entrepreneur within, which explains the ever-increasing number of threads on the Business of Software, Software CEO and other similar forums. However, most of the software entrepreneurs are coders, and not business majors. For them the business side of running a company constitutes that grey area that people with suits, expensive glasses and knowledge of word "synergy" learn in business schools. What will be the market for your product? What should you charge for a software app? Should you go freeware, ad-ware, shareware, trialware or open source? How will you accept payments? What are the laws for incorporating a company in the state of Nebraska, and will the IRS go after you, if you don't hire an accountant, and incorporate in Moms basement, which is zoned for residential area? How about marketing - will you be able to reach all the left-handed accountants in the Eastern United States, or should you buy a highway billboard advertising your image editing application?" Read the rest of Alex's review. Micro-ISV: from Vision to Reality author Bob Walsh pages 376 publisher Apress rating 8/10 reviewer Alex Moskalyuk ISBN 1590596013 summary Step-by-step guide to building a software empire
The questions are all valid and so are the suspicions. As young entrepreneur travels around the Web forums and self-help sites, he, perhaps, becomes discouraged, overwhelmed by the amount of information and by the obvious risk factor of the software business. There are just so many things involved in running a software company, that someone ought to write a book. A book that wouldn't talk about C++ vs. Java, or object-oriented vs. procedural languages. But a book about running a small, one-person software company. Bob Walsh's Micro-ISV: from Vision to Reality introduces an aspiring software enthusiast to all aspects of running a software company. Whats a micro-ISV, you ask? The term ISV or independent software vendor, was coined by Microsoft to describe the set of software companies that were- not yet killed by Microsoft
- not yet bought by Microsoft
- too small and insignificant to present any interest to Microsoft, except for selling them developer tools and MSDN subscriptions
The term micro-ISV was coined by SourceGears Eric Sink, who was writing a "Business of Software" series of columns for Microsoft Developer Network, and relates to one- (seldom, two- or more-) person software development company.
Micro-ISV: from Vision to Reality is a handbook for independent software developers interested in generating a side or main income on their own. A quick glance at the table of contents will be a bit deceptive, as there are only 7 chapters. But they are surely packed with lots of useful information and references. Bob Walsh takes the reader from coming up with a good idea for a software product (Chapter 1) to establishing a development environment for a successful software startup (Chapter 2), where the reader learns that CVS servers are not optional. Chapter 3 - "Presenting the Product", is 60 pages long, and talks about appealing presentation and promotion of the product mainly through the product or company Web site. A spoiler: Bob Walsh chose BlogJet Web site as an ideal candidate for a case study on how to design customer-friendly and at the same time income-generating Web sites for a software product.
Chapter 4 - "Business is Business", focuses on what a developer from US, UK or Australia need to know about their local incorporation laws, and what should be done come April 15th. Throughout the book the author assumes that the reader is on a very tight budget (sorry, venture-funded startups), and thus prefers to do most of the stuff himself or get the best quality for the money. "Focusing on the customer" (Chapter 5) deals with marketing (and offers some practical advice instead of general sentences about "solving the customers problem") and establishing support business. Chapter 6 - "Welcome to the industry", discusses potential promotions and partnerships that are useful for software developers and their companies, and finally Chapter 7 - "What Happens Next?", offers some perspective on micro-ISVs who made it big.
The book is sprinkled with illustrations, references to existing micro-ISV practices, and interviews with owners and managers of successful software companies. Interviews are essential part of the book, and they help the reader to gain the perspective on the software industry from someone else than the author.
Throughout the book Bob Walsh recommends numerous services, but at the same time they never feel like a plug. His suggestions include glyfx for icons, GoDaddy for domain names, 2checkout and PayPal for payment processing, InvisionPower for customer support message boards, DemoCharge for producing those walk-through tutorial movies, and are generally motivated by personal experience or recommendations from the others in the industry. He also pays a great deal of attention into available free sources, if the software developer is on a really tight budget.
The book itself is Windows-centric, which is hardly authors fault - this is the single largest market for independent software vendors, defined by hundreds of millions of users who are online, and thus marketable via Download.com, Google AdWords, Yahoo! Search Marketing or Windows Marketplace. Mac OS market is never really discussed in the book, although some chapters, which are not market-specific, might be interesting to independent software vendors for Mac OS. Commercial market for Linux software applications is close to non-existent, unless answering telephone support calls or selling service contracts excites you.
The language of the book is approachable and makes the title an easy read. I found it a bit over-packed with Web site screenshots - after all, do we really need a screenshot of www.businesslink.gov.uk to get the point that this site offers entrepreneurial advice for those in the UK?
The appendix includes all the referenced URLs, books and articles for each chapter, which makes it a useful resource. Its also available online on the companion site for the book, that also contains authors blog. The question of whether to blog or not to blog is also discussed in Chapter 3, together with a review of available blogging platforms and downloadable packages that might be suitable for a software company. The interviews in the last chapter also seem to be presented in a haphazard manner, as if the author collected some content, did not find an appropriate place in the book for a sidebar, and then decided to dump everything left over into a single chapter. However, for someone starting a software company some of the interviews might be invaluable.
Bob Walsh's book is not a good material when your next startup involves creating a social bookmarking Web site, a highly popular blog, Linux consultancy or a scientific application that would be interesting to 5 big clients on this planet. However, for the use case when you think you can write a usable and popular Windows application and also sell it online to hundreds, thousands and (hopefully) millions of users, this book will be indispensable. If you're just thinking on whether or not you should start a software company, perhaps you should familiarize yourself with the writings of Paul Graham first. If you think, however, that the software industry is dominated by major players like Microsoft, Adobe, Google or Symantec, consider the top downloads list on Download.com and then see how many of popular products in that list are made by the companies that you might have never heard of.
In his spare time Alex likes to read good technical books."
You can purchase Micro-ISV: from Vision to Reality from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
No Nonsense XML Web Development with PHP
Alex Moskalyuk writes "PHP and XML seems like a marriage made in heaven. Powerful manipulation functions and support on the core language level in PHP5 combined with universal extensibility of XML make it a technology of choice for quite a few Web enthusiasts and companies out there. However, anyone inspired by PHP's ease of use can probably find a good cure from insomnia when facing with XML specs. With all the DTD's, XML Schemas, XSLT and XPath queries one can easily get the impression that the world is changing on them, and perhaps sticking to hard-coded HTML with PHP statements combined with SQL statements for data retrieval would be within the zone of comfort." Read the rest of Alex's review. No Nonsense XML Web Development with PHP author Thomas Myer pages 354 publisher SitePoint rating 9/10 reviewer Alex Moskalyuk ISBN 097524020X summary XML, XSLT, XPath and DOM primer for PHP developers
Thomas Myer's No Nonsense XML Web Development with PHP is an XML primer for those who have been exposed to PHP, but are yet waiting to appreciate the elegance of PHP+XML solutions. Throughout 10 chapters and 2 appendices Myer is introducing the reader to different aspects of XML, their best-practice implementations in LAMP (where last P stands for PHP) environment, and their relevance to the real world. For the real-world example Myer decides to guide the reader through writing a custom content management system - complete with publishing/admin interface, templating/presentation layer, search engine, RSS feeds and other commonly expected features.
The book is not an introduction to PHP, but it does assume that the Web developer knows what XML is, but has never dealt with it. So the first chapter just talks about properly parsing XML with IE and Firefox, validating an XML document, differences between a well-formed and a valid XML document. Overall, it provides a very good introduction to XML for someone who has never dealt with it, and could probably be skipped by developers with XML exposure.
Chapter 2, XML in Practice, goes into nitty-gritty details of XML, and 26 pages later the reader knows how to create an XML file to display in the browser, declare proper namespaces, attach a CSS file to existing XML file and display the proper XML+CSS file (look, Ma, no <html>!) in the browser. The author earns instant geek credibility by displaying Firefox screenshots, with the exception of IE screenshot whenever IE is discussed. At the end of the chapter the author takes us through the basic XSLT.
DTD's, XSLT and writing a practical PHP app take up the next three chapters, followed by XML manipulation chapters. JavaScript enthusiasts will probably find Chapter 6 pretty useful, as it discusses manipulating XML on the client side, working with XSLT, and creating dynamic site navigation based on the XML source. Chapter 7 is what one would expect from the book that has the words PHP and XML in the title - discussion of SAX, DOM and SimpleXML parsers, examples of their implementation, discussion of proper use cases for each one of the technologies. The SimpleXML subchapter also contains a good primer on XPath - a query language that allows the developer to provide the parser with a query to navigate down the XML document.
Chapter 8 takes the reader through RDF and RSS, discusses the ways the syndication feeds are used on the Web nowadays. Since throughout all these chapters we're building a content management system, this is the right time to add the RSS headlines functionality to the site. The next chapter discusses another practical implementation of XML on the Web - XML-RPC calls between the sites and proper ways of exchanging data via XML Web services. The chapter discusses SOAP, although not a whole lot, and just mentions REST as another way to implement Web Services. As a practical exercise, the author takes readers on a tour of building an XML-RPC client, server and connecting those two together.
The last chapter talks about using XML with databases. Native XML databases are discussed, but let's face it - most of the PHP development is done with relational databases anyway. Myer talks about exporting MySQL database contents into XML with phpMyAdmin and mysqldump. The first appendix includes function reference for SAX, DOM and SimpleXML parsing in PHP, while the second one completes the CMS project by providing the rest of the necessary files.
I found the author's style very easy to follow and approachable. The code samples are succinct and to the point, there are also no generic discussions, such as "Why PHP?" The project chosen for the practical implementation is a bit boring, but at the same time quite real-world. The screenshots are clear, and code examples are nicely highlighted. The errata is provided on the book Web site. Code archive is available as a single file download as well. The book site also provides 100% money back guarantee (less shipping and handling fees) to anyone who bought the title, and didn't feel like they were getting their money's worth.
However, there are a few drawbacks that I noticed as well. With topics like XSLT and XPath broken into several chapters and discussed in smaller chunks, it's hard to use the book as a reference later on. Appendix A with PHP function reference for XML parsing hardly seems like a worthy addition, since PHP manual page on the subject contains equivalent information with more real-life examples contributed by users.
With all that, the book is quite informative, educational and useful. The author manages to tackle quite a few difficult topics in 260 pages provided to him (the count excludes preface and appendices). However, kudos to the author for writing chapters on XML without sounding boring, redundant or too academic. I would highly recommend this book to anyone interested in developing PHP-driven Web sites that provide or consume Web services, work with XML data or generate XML for others to use."
You can purchase No Nonsense XML Web Development with PHP from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
The Definitive Guide to ImageMagick
Michael J. Ross writes "To modify a digital image, most computer users turn to a GUI-based image processing application, such as Photoshop. However, while Photoshop and many other similar programs can process multiple images in batch mode, they still require manual usage, and thus typically are unable to process images via a command line or within a second application. Those capabilities call for a programmatic digital image manipulation tool such as ImageMagick, which is explored in a relatively new book, The Definitive Guide to ImageMagick." Read the rest of Michael's review. The Definitive Guide to ImageMagick author Michael Still pages 335 publisher Apress rating 7 reviewer Michael J. Ross ISBN 1590595904 summary An introduction to using ImageMagick for digital image manipulation.
The author of this title is Michael Still, a programmer who gained experience with ImageMagick during his eight years of working on imaging applications, as well as writing articles on ImageMagick for IBM DeveloperWorks. Apress maintains a Web page for the title, where a visitor can purchase the electronic version of the book, read its table of contents, or download its source code or a sample chapter (Chapter 4 — Using Other ImageMagick Tools) in PDF format. They also have a link where readers can submit errata — and apparently be the first to do so, as there are no existing errata listed on the Web page.
The book's 335 pages are organized into a dozen chapters, following an introduction and a few other standard sections, including a forward written by ImageMagick's principal architect, Christy, who briefly explains the product's 20 years of history, development, and lack of decent documentation. That is where this book is intended to fill the gap, and Christy notes that most future questions about ImageMagick will be answered by pointing people to this book, as is also noted on ImageMagick's homepage.
The first chapter of the book explains how to install and configure ImageMagick, for several Linux distros, as well as Microsoft Windows — using the precompiled versions, or by compiling from ImageMagick's source code. The chapter is wrapped up with a brief description of ImageMagick's online help, debug output, verbose output, and version information. The next ten chapters fall into two categories: ImageMagick usage as a standalone, and from within other applications. The first category of chapters covers basic image manipulation, compression, other metadata, ImageMagick tools, artistic transformations, other image transformations, and drawing commands. The second category discusses how to utilize ImageMagick from within programs written in Perl, C, Ruby, and PHP. The 12th and final chapter is quite brief, and describes where to find online help (Web sites, blogs, mailing lists, and forums) and where to report any apparent bug in ImageMagick.
For Windows users, the first chapter may begin badly, as the author fails to explain which precompiled version the reader should select if they wish to install ImageMagick on a Windows PC. For each version, there are four flavors to choose from. But which one is right for the reader? "static" vs. "dll?" "Q16" vs. "Q8?" What are the differences? The ImageMagick Web site and FTP file listings appear to have no README file or installation help file to explain which flavor you should download. The book should provide some assistance here, but does not. The former topic, static versus DLL, is mentioned only in reference to compiling ImageMagick from source — information which the reader will probably never see, should they choose to install the precompiled binaries and get started on ImageMagick as quickly as possible.
The latter topic is not covered at all — not even in the index, where a "quantum depth" entry would be useful. For those readers who are interested, "Q8" indicates 8 bits-per-pixel components, and "Q16" means 16 bits-per-pixel. The latter allows one to read or write 16-bit images without losing precision, but requires twice as much resources as Q8. Apparently Q16 is the best choice for medical or scientific images, or those with limited contrast. Otherwise, Q8 should be sufficient, and offers greater performance.
The material most likely to be read, referenced, and valued in this book, is the chapters devoted to explaining how to use ImageMagick for resizing, compressing, transforming, and drawing digital images. Most of these first-category chapters begin with a concise summary of the theory put into practice throughout the rest of the respective chapter — a wise inclusion in each case, since even the most experienced computer programmers and other users have had no instruction or experience in image theory. All of these chapters do a competent job of explaining what each ImageMagick command is used for, and then illustrating it with a straightforward example.
The most glaring deficiency in these chapters, and the book as a whole, is that far too many of the book's figures (digital images, naturally) fail to reflect what is intended to be conveyed by each figure. This is primarily because they are all in black-and-white, and in many cases do not offer the size and resolution necessary. In other words, there are many cases where the "before" and "after" images look almost identical. In the cases of color manipulation, most of those black-and-white images are of little value — occasionally laughably so.
The second-category chapters, covering ImageMagick usage with Perl, C, Ruby, and PHP, proved disappointing, primarily due to their narrow focus, and lack of tips, recommendations, and coverage of the APIs' capabilities. The details are presented in the form of a single example for each language. For instance, the Perl chapter devotes too many pages to source code listings of a Perl program written by the author, that few readers would probably download from the publisher's Web site, much less read.
Nonetheless, this book should be useful to any programmer interested in making the most of ImageMagick's capabilities, and that is not just because it is the only ImageMagick book on the market. Michael Still certainly had his work cut out for him when he agreed to document the bulk of what ImageMagick can do. It is unfortunate that the color images that he created for the book cannot be seen by the reader, and that the Windows binary versions and ImageMagick APIs, were given short shrift. We can hope that future editions of this book will be significantly strengthened, such as including color and higher resolution images where needed — even if it requires grouping them together within the book, if that reduces production costs.
Lastly, it should be mentioned that, as a smaller technical publisher, Apress is not resting on its laurels, and is not only scheduled to release an impressive variety of programming books this year, but their customer support — at least in my experience — was outstanding, as there was a problem with the shipping of this title, and they bent over backwards to make it right.
Michael J. Ross is a freelance writer, computer consultant, and the editor of the free newsletter of PristinePlanet.com."
You can purchase The Definitive Guide to ImageMagick from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
The Science of Secrecy
Matthew Sparkes writes "Ever since the first codes and ciphers were developed, there has been a battle between those who want to keep their information secret, and those who want to read that information. It has been a purely intellectual war, but one that is often driven by motives from above that are far more violent. This book chronicles that battle, from it's inception, to the modern day, and outlines the techniques used to obfuscate information, and the fascinating history of the application of those techniques." Read the rest of Matthew's review. The Science of Secrecy - The History of Codes and Codebreaking author Simon Singh pages 224 publisher Fourth Estate, London rating 7 reviewer Matthew Sparkes ISBN 1841154350 summary An historical look into cryptography and crypt-analysis, with a significant amount of technical knowledge to impart also.
Cryptography has been a tool largely used by governments to avoid their communications being read by the enemy or other unfriendly states, but historically it has also been utilized by individuals to protect their more questionable or taboo activities from discovery.
This battle is presented in the book as a rather bipolar trend; cryptographers trying to protect data and crypt-analysts trying to discover the meaning of that data. I found this to be slightly misleading. The representation of the history of the field as a constant struggle between two distinct parties does make for a more entertaining read, and adds an element of conflict by conjuring images of an ancient and continual intellectual game, but in reality these two groups are often one and the same.
Whilst I admit that the race to develop stronger codes and ciphers was in many ways separate from the race to break them, they were also inextricably linked, and undertaken by the same people. One has to allow a certain amount of poetic license in popular science books, especially in this case, as it has lightened what could have been a dry topic.
The way in which the book is structured allows a complete novice access. Starting from the first discoveries in cryptography and working forward chronologically, whilst explaining the method behind the discoveries, educates the reader in basic technique without effort. One reads a fascinating historical account, and later realizes that they now have a good understanding of the mathematical concepts behind these approaches they've been reading of.
The book places these techniques into context, giving historical examples of their use. Often they are revealed to have played large and important parts in famous events, ranging from wars and political plots, to events which are not even strictly related to cryptography.
For example it is shown how crypt-analytic approaches were utilized in the deciphering of ancient languages such as hieroglyphics. These languages are dead, in that there are no living individuals who have the ability to read them, and no information was available to help in their deciphering. By studying the frequency of letters or symbols in the text, as when attempting to break a cipher, it was possible to slowly read meaning into the text, and map the alphabet.
Many of these scripts were decrypted by amateur crypt-analysts, rather than academics. One point the author makes is that there are still many that remain a mystery, such as the Etruscan and Indus scripts. One has to wonder whether a book like this, combined with the current national fixation with puzzles such as Soduko, would create a resurgence in interest, and lead to some of these being broken.
One interesting point that the book makes is that the vast majority of work performed by cryptographers is done in secret, largely for security agencies all over the world, and that this has been true for some time. Therefore it is not uncommon for crypt-analysts to receive no recognition for their work, or to have a discovery attributed to them long after their death. These organizations must classify the work in the interest of national security, so in a way this book stands as an anonymous tribute to their cunning and multidisciplinary talent.
Examples from the book of such discoveries include Charles Babbage breaking the Vigenere cipher in 1854, which only came to light in the 1970s. The author suggests that the work was kept secret to aid the Royal Navy, as it occurred just after the Crimean War started. The credit for the discovery instead fell to a retired Prussian army officer who independently discovered it in 1863.
This is shown to be one of the enduring themes of the story of cryptography, leading right through to the 1970s where credit for developing the RSA cryptographic technique went to Diffie, Hellman and Merkle in 1975, despite being developed in 1969 at GCHQ, a fact that was only publicly admitted in 1997.
A section of the book that will be of particular appeal to computer scientists is where cryptography is shown to have given birth to computing. Born from the desire for a method to perform simple operations on numbers very quickly. Computers now dominate the field of cryptography and crypt-analysis, and their ability to perform a task millions of times with no errors has transformed the science. It is also noted how much we rely on cryptography daily, in areas such as e-commerce, where our details are encrypted without us even being aware of the fact.
The final chapter is an examination into the politics of cryptography, and a balanced look into the ethical implications of governmental snooping on communication, versus the possible benefits of reducing serious crime and terrorism. This is clearly a very pertinent point in todays political climate, and a balanced look at this issue is a very valuable thing. With the heightened risk of terrorist attack, or at least the public perception of such, the government are intercepting more and more communications for analysis, and encryption by criminals is becoming more and more popular.
The book covers the topic well; from governmental use, to anecdotes about lovers exchanging secret messages. Throughout this the reader is constantly being eased into the mathematical technique behind, in a manner that does not require a background in mathematics. There is an appendix to the book, in the form of 5 cipher challenges for the reader to attempt to crack. The knowledge gleaned from the book should be preparation enough to do so, and will fascinate the curious nature of the books audience.
Matthew Sparkes' is a journalist and programmer, his homepage is Non-Tech City."
You can purchase The Science of Secrecy from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Netroots Politics
Michael Gracie writes "I picked up "Crashing The Gate - Netroots, Grassroots, and the Rise of People-Powered Politics" from the DailyKos website, albeit apprehensively. The Kos community has a "reputation," and some would suspect that any printed material associated with the site would parallel what is said there. Nevertheless, I was curious to hear what Jerome Armstrong and Markos Moulitsas Zuniga would say, knowing they wouldn't have to deal with the instant (and often aggressive) feedback the "Kossacks" dispense. For the most part, I was pleasantly surprised." Read the rest of Michael's review. Crashing The Gate: Netroots, Grassroots, and the Rise of People-Powered Politics author Jerome Armstrong and Markos Moulitsas Zuniga pages 196 publisher Chelsea Green rating 8 reviewer Michael Gracie ISBN 1931498997 summary A must read for constituents on both sides of the fence
As background, the authors are no strangers to the Internet or its political enablement. Armstrong is a household name in the arena, having started one of the first political weblogs, MyDD.com, and assisting with the Howard Dean campaign's blogging efforts. Zuniga is just as well known, if not more so. He founded DailyKos, which is likely the most popular political group weblog site in existence. In other words, these guys should know their stuff, and for the most part they seem to.
As pure reading material goes, the book ("Progressive Partner Special Limited Edition") is precisely 196 pages of 100% post-consumer waste recycled, old-growth forest-free paper, including 14 pages of reference notes and indices. The type is large, well spaced, and generally easy on the eyes. I knocked this puppy off over three afternoons, including note taking.
While I didn't fact check every line of the book, what I received was a pretty thorough, analysis-driven opinion of what has gone wrong with Democratic Party politics. It starts with a definition of "the enemy," the "cons" of the Republican political thought process. Corporate insiders, right-wing think tank graduates, religious leaders, and old-school mindsets are overstuffed in a barrel. What pops out is the realization that the Republican Party is less a tank mowing over everything in its path than a loosely bound, fragile coalition that has succeeded not by Borg-like assimilation, but through sheer patience and will.
Onward to the "failing" side, in which Armstrong and Moulitsas slice and dice their political party in what can only be described as a semi-hostile, scathing rebuke of the disorganization, the infighting, and the selfishness which has kept it divided. The authors are, however, quick to point at two examples of success (in Colorado and Montana during 2004). In those cases, campaigns took decidedly different approaches, but one thing seemed certain - anything BUT the status quo could work.
Diving deeper into the situation, "Crashing The Gate" now hits the hot button that is going to piss a lot of Progressives off - the wholesale pilfering of campaign dollars by political/media consultants, who enrich themselves fabulously while using worn out techniques that lead to failure after failure. The D.C. power base, showing no inclination to stop the madness, is not forgotten either. If any one point becomes perfectly clear to readers, it will be that big money has and is wasted in extraordinary magnitudes.
At this point, J & M point to McCain-Feingold campaign finance reform, as the tipping in the power struggle over Progressive direction. McCain-Feingold redirected high-dollar contributions from direct-to-politicians pockets into 527 organizations that cannot "explicitly advocate the election or defeat of any candidate for federal office." What it really did, according the authors, is force Democrats to look to "the people." Numbers no longer followed dollar signs - they had to follow individual support roll counts. Then Howard Dean captured the Internet's imagination.
The authors give Howard Dean a lot of credit for initiating the "grassroots movement," something I found unsurprising considering they were in the middle of it. By engaging a myriad of internet tools managed by foot soldiers, Dean quickly proved McCain-Feingold naysayers wrong. The Democratic stronghold eventually trounced Dean - they took it upon themselves to define him as "unelectable," and turn Dean's overzealousness into perceived nuttiness. It was a concerted attack, and not without casualties. First and foremost, John Kerry lost the Presidential election, and that is where I inferred that the tables really turned. While "wounds were being licked" offline, Internet activists maintained engagement as thought the battle wasn't over. As described, after Terry McAuliffe (Chairman of the DNC) departed, the bloggers made their presence hard to ignore, uncovering dirt on hand-selected McAuliffe successors, one after the other. Howard Dean maintained his loyalty to those folks, and the end result...he is now Chair of the Party.
The last chapter, entitled "Inside The Gate," follows up on some successes for the Democratic Party in places like Montana and Virginia, and infers that "grassroots" campaigning, not "netroots" organization, was the primary motivating factor. In many campaigns, however, "netroots" did play a role, and even when losses were incurred, the efforts succeeded in draining opposing candidates of funds and energy while giving good reason for progressives to relish in their newfound power. Fair warning - the net was not to be ignored.
No review of a political reference would be complete without some conclusion for those so inclined. Rather than air my personal views, I will provide some perspective-based alternatives:
A) If you are anything close to Progressive (which I suspect many readers will be), you may at first feel a bit betrayed by your leaders, and certainly enraged by the pilfering of contributions that came from your pocketbook. Your suspicion that what is being suggested is emulation of the long-term strategies of the enemy is not unfounded. Crashing The Gates sometimes infers just that, albeit with a bit of a "net twist." Be patient until the end - you may wind up wanting to blog for your favorite local candidates - but it won't be an easy road. I'd say I concur with the authors that there is no short-path to election success, no matter the effort - the authors are making no promises, and that is refreshing from any set of written words deemed political. And be forewarned - what led to victory in a particular place and particular situation, might not work the next time. I interpreted that by reading between the lines.
B) If you lean right you will feel warm (and smug) over your Party's triumphs, and a little confused as to why someone would so openly lay out a potential roadmap for defeating you. You may be inclined to read the book again, just to make sure you have a game plan to thwart any such attempts. Alternatively, you might brush off any thoughts of a grassroots movement ever having a chance of taking your team to the mat. You have a "big machine" on your side, one constructed over decades - how could any grassroots effort put a dent in it? This reader, having a meager understanding of how "new media" communications spreads, says the latter take might not be a wise one. Conservatives have their pundits, but they should ask themselves whether they could engage armies of them.
C) If you sit in the middle, a most likely social liberal and fiscal conservative, I'd say you may still feel a bit lost. You have choices: go the route of the ultra-organized "idea generators," but risk more betrayal on the fiscal end while you turn blue over the social fanaticism; or, you can bet on those who still haven't gotten their act together, but have a lot of momentum, gained recently, in the new media realm. Yes, the progressives have a "new machine," but can they effectively control it as it grows? The conservatives have certainly proven they can steer theirs, and it is anything but small. Either way, you'll solidify your previous view that politics is about big money, intensive recruitment, and, ultimately, some form of indoctrination. You might not exactly get the "warm-fuzzies" if you fancy yourself an independent thinker.
I said my satisfaction with the read contained some caveats. It did, and they affect my rating of the book as such.
1) I found the historical elements of the book the very compelling - again, while I didn't check facts, I didn't feel I needed to. The first couple of chapters were relatively unbiased - at times I almost felt like the authors were glorifying Republican efforts. Then, wham, they actually say Republican strategies are "brilliant," while describing their party's entitlement participation philosophy (meaning, one should be happy to have a job on a Democratic campaign, even if you electricity just got shut off) in comparison to the well paid, constant grooming and care that Republican "students" usually received.
2) I was hoping for a complete separation between the web diatribe the authors are associated with, and their view to initiate change through hardcopy publication. Unfortunately, I found at least one element of major distraction, on pages 114 through 118, which referenced events regarding politically motivated compensation for both old and new media input. It hinted, unnecessarily, of some bitterness, while I would rather have heard a token "Oh well, that is how the game is played." The section in question was hard to shake - it followed me for the last sixty or so pages. Additional anecdotes describing "normal, sane" candidates having the ability to win elections left me chuckling a few times as well, meaning I had some difficulty disassociating the authors with some of what I have read at DailyKos.
3) The title conflicted with some of the nuances within. For someone sitting on the fence (as described above), I thought the authors would have tried to harder to convince that the supposed "progressive revolution" isn't just more of the same. The dollar signs strewn throughout made me think more about all the money that politics engulfs (even if it is raised by citizen journalists) than the power any individuals have to instigate real change. I sometimes felt that the subtitle could have included "people-powered fundraising."
4) As the authors point out (as excuse or not), the manuscript was scrapped late in the process. They started from scratch, under considerable time pressure, and I can respect that. In my eyes (assuming it is true), they scored some points here for admitting the need to start over, and re-working on the fly.
I know Slashdot readers have their opinion of bloggers in general, and it is not always the most favorable. However, as a consistent reader of both Slashdot and several major political blogs I have to say "Crashing The Gate" is a heck of a job from a couple of "bloggers." I am now intensely curious to see if Glenn Reynolds's "An Army of Davids" paints a different (and/or alternative) picture of the "netroots" phenomena.
As a final offering, Armstrong and Zuniga note that the world of progressive bloggers could already be four to five million strong, with extraordinary growth predicted for the future. In addition, they offered that anyone, anywhere could contribute. But, a democratic system requires mutual acceptance, healthy debate, and a willingness to accept a role alongside, not hands above, the rest. The online world already seems to be straying from those core tenets, with clubby recruitment gatherings, A-list bloggers and too much crosstalk. Without some correction, I wonder whether the growing political force the authors portray can sustain itself long term, or whether new media will turn out like old media - sensationalist, untrustworthy, and begging to be ignored."
You can purchase Crashing The Gate: Netroots, Grassroots, and the Rise of People-Powered Politics from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Visual Basic 2005 Jumpstart
Graeme Williams writes "The tag line for Visual Basic Jumpstart is, 'Make Your Move Now from VB 6 to VB 2005', but the book also includes introductory and summary material rather than staying focused on VB 6 users. The book has a few good examples and some useful information about Visual Basic 2005, but the information, including links to the Internet, doesn't seem complete or up-to-date. This book isn't the help you need." Read the rest of Graeme's review. Visual Basic 2005 Jumpstart author Wei-Meng Lee pages xiv + 197 publisher O'Reilly Media rating 5 reviewer Graeme Williams ISBN 0-596-10071-X summary A useful but flawed snapshot of Visual Basic 2005 without a clear audience
My current (small) applications are in Access and Visual Basic for Applications rather than VB 6, but with that caveat I'm part of the audience for this book, since I'm actively considering moving them to Visual Basic 2005. I want to like this book more than I do. Part of my confusion is that all of the chapters are useful, but I don't think they're useful to the same people.
I have no idea who the audience is for Chapter 2, "Programming with Visual Basic". Some of the information is useful and relevant, with specifics on differences between VB6 and VB2005, but some of it just seems plain silly: "Just as in VB 6, in VB 2005, you make decisions using the If-Then-Else construct". The wording is sometimes odd, too. The fact that parentheses in function calls are now mandatory in VB 2005 is explained backwards: "VB 6 Tip: In VB 6, you can call the PrintMessage subroutine without using parentheses to enclose the parameter list." The chapter could have been collapsed into a very clear and not very large table giving the differences between VB 6 and VB 2005.
In VB 2005, Microsoft has introduced a new bag of functions under the My. namespace. It's not a very big bag – it feels like the product manager wrote down the first four or five functions he thought of. For example, My.Computer.Network contains just five elements: IsAvailable, DownloadFile, UploadFile, Ping, and the NetworkAvailabilityChanged event. Jumpstart describes it as " ... one of the most useful and unique additions to VB 2005 ... The aim of the My namespace is to provide direct access to commonly used libraries in the .NET framework that were previously difficult to access." I'm sorry, that just sounds too much like a press release.
If you're really interested in the status of a network interface, for example, you need to look in the 30+ classes in the System.Net.NetworkInformation namespace. But this is not included in the list of "some other useful namespaces in the .NET framework" (p61). Also, Example 4-3 (p117) uses the System.Net.HttpWebRequest and System.Net.HttpWebResponse classes to download an image, not any of the classes mentioned in Chapter 3.
On the face of it, Chapter 3, "Putting Object-Oriented Programming to Work", provides a very clear and thorough introduction to the object-oriented programming constructs in VB 2005. Unfortunately, it's not complete. Microsoft has a summary of "Object-Oriented Programming for Visual Basic 6.0 Users" which points out that the Binary Compatibility option from VB6 is no longer supported in VB 2005, but this is not mentioned in Jumpstart.
If you're moving from VB6 to VB2005, you're also moving to NET 2.0, but the book has only the most cursory introduction to NET 2.0. Part of the problem is that the book needs to be either more or less reliant on online information. If it was less reliant on online information, it would be more useful as a stand-alone resource. If it was more thoroughly linked to the estimable resources at Microsoft.com, it would be more complete and up-to-date.
Jumpstart mentions two MSDN Help Topics: "Programming Element Support Changes Summary" and "Help for Visual Basic 6.0 Users". The former is very useful, perhaps more useful than found in this book, although it's organized in MSDN's one fact per page style. The latter can only be found via Google, since it is now part of MSDN2, the "new MSDN" for Visual Studio 2005 and SQL Server 2005. MSDN2 is not mentioned in the book, nor is VBRun, the Visual Basic 6.0 Resource Center, which has a boatload of information on moving to VB 2005.
The database application in Chapter 4, "Developing a Windows Application" is useful and clearly presented. It's a nice example of the new SplitContainer control. But it's no better than examples in other introductions to Visual Basic, and it's a little hard to see how it's suited to the stated purpose of this book – of introducing developers with an existing Visual Basic 6 code base to Visual Basic 2005.
The term "jumpstart" cuts both ways. The goal of the book is to give VB6 programmers a rapid introduction to Visual Basic 2005. But the book itself was published rapidly – before Visual Basic 2005 was released – and some of that speed shows. On page 126, Jumpstart instructs you how to configure Windows XP to run IIS, but on page 139 points out that this isn't possible in XP Home.
Chapter 5, "Building Web Applications", explains that Visual Studio includes its own web server, so you don't need to run IIS, but the fact that Visual Basic 2005 Express doesn't include this feature is mentioned only in the preface (page xi). To provide IIS, you need either Windows XP Professional, or Visual Studio Standard or above, or Visual Web Developer 2005 Express. Wouldn't it make sense to explain the various combinations of operating systems and Visual Studio editions in one place, at the beginning of the chapter where they're relevant?
I'm not an ASP programmer, but I feel as though the 35 pages devoted to ASP probably aren't enough to give the topic a decent introduction, which perhaps deserves a separate book. For example, authentication is covered in just three short paragraphs. The 35 pages could have been devoted to something more central to the topic, such as more details on .NET 2.0. Obviously, there are other books on .NET 2.0, but while you can use Visual Basic 2005 without ASP, you can't use it without .NET 2.0.
If we take the book's tagline seriously, Chapter 6, "Moving from VB 6 to to VB 2005", should be the core of book, but it seems like more of an afterthought. Much of the content is from Artinsoft. Rather than reading about about it third-hand in this book, or second-hand on MSDN, I recommend you go to the the Artinsoft web site, where they have plenty of information for download.
It's hard to put a numerical rating on a book like this, which doesn't seem focused or particularly thorough, but still contains a lot of useful information. The book could have been better if it had been linked more systematically to Microsoft's online resources. It might have seemed better if the audience had been clearer. A rating of 5 ("Neither terrible nor terribly good") seems about right. By all means buy the book if you think it will be worth the money to have the information and examples in book form. Just don't expect too much."
You can purchase Visual Basic 2005 Jumpstart from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page -
Building Online Stores with osCommerce
Stephanie Brain writes "Have you ever considered building your own online store and entering into the booming e-commerce arena? If you have, you may have come across some of the many open-source software available for downloading from the Internet. One of the most popular of these is OsCommerce which has been developed since March 2000 and has a full team of staff dedicated to its development. It is overseen by the founder, Harald Ponce de Leon and today there are around 6000 live, registered OsCommerce sites and 70000 registered community members, many of whom are active on the OSC forum you can log on to. This forum can provide a wealth of information when you come up against any obstacle when developing your own OsCommerce website." Read the rest of Stephanie's review. Building Online Stores with osCommerce: Professional Edition author David Mercer pages 372 publisher Packt Publishing rating 9 reviewer Stephanie Brain ISBN 1-904811-14-0 summary Practical guide to building online stores with osCommerce
Back in October I started working with someone who had already downloaded the OSC software and had the basis of an online store installed. I will be running the store, however my first task was to change the whole look of the site and make improvements to it before launching NetTechShop properly. Having read the OsCommerce blurb which promotes the simplicity of using OSC, I felt sure that I could quickly get to grips with the "simple" programming language of PhP and HTML and have the site ready in a month or two. I was sadly disappointed! By the end of November last year I was getting desperate, having spent hours making modifications to the coding on the database only to either break the site completely or find it had not made one jot of difference to the look of the site. I searched in vain for OsCommerce For Dummies.
My pain was somewhat relieved when I discovered that a book was going to be published on OsCommerce by Packt Publishing and I put my order in immediately and breathed a great sigh of relief.
Strangely such a book has been lacking until now. You can find plenty of books about Php programming and MySQL or HTML, but try to find a book which is easy to understand for someone with less than a University or College IT qualification background and about OsCommerce in particular and you will search long and hard.
David Mercer's book is the book you have been looking for and is available in either a beginner's or professional edition. It is written in a straightforward, easy to understand manner, yet does not compromise on technical knowledge and provides all the essentials of getting your website up and running with OsCommerce.
The book covers: installing MySQL, PHP, Apache and OsCommerce and testing them, configuration and customization of your store, working with data, taxes, payment and shipping, securing your store, installing more advanced feature using contributions from the OsCommerce website and deployment and maintenance of your site.
Before going onto the technical aspects and explanation of OsCommerce, Mercer explores the whole area of e-Commerce, what is required of a website store to make it a success, the arguments for using an open-source solution such as OsCommerce and the decision making issues any business faces when deciding if OsCommerce is right for them.
This manual was everything I hoped it would be and with its many illustrations, including screenshots of the files you will be changing on an OsC website, I found that anyone with even the most basic understanding of website design, would be able to get to grips with designing a website store using OsCommerce. I had the professional edition and found it really easy to just dip into when I needed to know some aspect of the design process. The book's content is well laid out, in manageable chunks with bold headings, which are clear about the content and the index is comprehensive.
One of the things I really liked about the book was that it addressed the problems, error messages and frustrations you are likely to come up against in the process of building your OsCommerce site. Those were the things that made my head spin the most before I got the book and although you should be able to find out about many of your error messages and problems on the OsCommerce forums, it can take quite a time to search and plough through all the replies. It is much better to find the most common problems in one place with practical solutions.
Another important chapter which is covered in depth is the installation and testing of a payment module. The most popular of these, Paypal is covered in the book and detailed instructions are given on how to get it working correctly, again something which sounds easy on paper, but can cause endless problems if you do it wrong. There are other payment providers and gateways which can be integrated onto your OsCommerce site by installing other so-called "contributions" from the OsCommerce website and Mercer explains fully how to download these contributions and get them functioning correctly.
I am sure that this book will prove to be an essential resource for anyone contemplating starting an online business with open-source OsCommerce software and hopefully will avoid them spending wasted energy in the initial stages just trying to figure it all out. After I received my book, the only wasted energy I spent was wondering why the front cover was emblazoned with juicy oranges!"
You can purchase Building Online Stores with osCommerce from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Foundations of Ajax
Craig Maloney writes "You've no doubt heard about Ajax. Practically every new and exciting application on the web uses some form of Ajax. Google's suite of applications (GMail, Google Maps, etc.), Amazon's A9 search engine, and Netflix use Ajax interfaces to give the user a better browsing experience. By using some pretty basic innovations to current technology, browsers can now deliver content in ways unimaginable only a few short years ago. Foundations of Ajax provides developers who haven't taken the time to look into Ajax a hands-on guide for quickly leveraging these technologies in their own applications." Read on for Craig's review. Foundations of Ajax author Ryan Asleson and Nathaniel T. Schutta pages 273 publisher Apress rating 8/10 reviewer Craig Maloney ISBN summary A good first-look at Ajax and client-side development using JavaScript, HTML, and CSS.
Foundations of Ajax starts with a brief history of interactive web-applications, starting from the crudest CGI and Java Applets, and chronicling various interactive technologies (Javascript, Servelets, ASP, PHP, Flash, DHTML, and the various XML browser languages like XUL, XAMJ, etc.). Ajax seems like another acronym in a sea of acronyms, but the authors quickly point out why Ajax can help with the development cycle. Ajax allows the server to validate the user's input, without creating ugly and messy JavaScript validation rules, and it allows the server to use the same rules for input validation on both the client and the server. Unfortunately, Ajax does break some of the conventions users have grown accustomed to in using traditional web applications. XMLHTTPRequest requests aren't stored in the browser history, and it can be confusing to the user to determine what changed on the page after refresh. Issues aside, the book is very encouraging on the prospects of using Ajax in web applications, and invites the reader to use Ajax where it makes sense.
Chapter 2 talks about the request method that makes Ajax possible: XMLHTTPRequest (XHR). The XHR methods are explained with several examples that detail the fundamentals occurring with the request. The examples are very clear, and the entire process is laid out in careful detail, although the Dynamic Object Model (DOM) is mentioned, but not explained until the end of the chapter.
Chapter 3 delves into server communication. It's interesting to note that the authors haven't instantiated a server yet for their Ajax communication, and for the balance of chapter 3, the server is replaced by text files. It's not until the GET/POST examples that the authors start using Servelets. While it may seem strange for the authors to be talking about client/server programming without instantiating a server, it does allow the developer to get their proverbial feet wet without battling server configuration issues. The chapter starts by introducing innerHTML, but then moves to using XML DOM for data transfer from the client. From there, the authors demonstrate a few examples of the server sending XML to the client, and the client sending XML to the server. Happily, the authors weren't content to leave us parsing XML using JavaScript, instead they finish up the chapter by introducing the JSON framework with a few examples.
Chapter 4 is really where the book starts doing very interesting examples with Ajax. It's also, coincidentally, the largest chapter in the book, and the chapter readers will find the most useful reference examples. The book steps through the creation of examples of Simple date validation, Reading response headers for a simple ping application, Dynamically Loading List Boxes, Automatically Refreshing Pages, Progress bar (a personal favorite), Tool tips, Accessing Web Services using REST, and Auto complete. Each example is introduced with a real-world working application as an example (such as the auto complete feature of the Google search engine), and could easily be implemented in a developer's application. I found myself thinking of ways to enhance my code using these techniques.
Following chapter 4's examples, the chapters on creating a developer toolbox, testing scripts using JsUnit, and debugging Javascript seem a bit of a let-down. Chapter 5 outlines various packages for helping JavaScript coders to better spot errors in their code, and create documentation using the JavaDoc-like application JSDoc. There is also a mention of an application for crunching and compressing JavaScript code, as well as the excellent Web Developer Extension. Rounding out the chapter is a brief history of JavaScript, and some advanced JavaScript techniques. Chapter 6 introduces JsUnit and Unit Testing. Chapter 7 talks about JavaScript debuggers, such as Microsoft's Script Debugger, and the very powerful Venkman. The Venkman tutorial is very good, and would be a great starting point for anyone wanting more information on how to use this great tool.
Chapter 8 rounds out the book with the typical "for more information" sites to visit. However, in true Steve Jobs "One more thing" fashion, the authors not only plug their Ajax Framework, but also create a browser-based, Macintosh-like Dashboard application with four widgets. I was all set to finish the book, but the authors quietly slipped the best for last in the final pages of the book, bringing out a complete Mac OSX-like "Dashboard" windowed-environment in a browser complete with the drag-and-drop elements I've most associated with Ajax sites. This is by far the most complicated project in the book, and it make for an excellent ending to an already fine book.
Foundations of Ajax is a great starting point for developers wondering how they can incorporate Ajax into their own web-based projects. One minor gripe I had with this book was the examples looked pale in comparison with their real-world models, but design is hardly the focus of the book. Where Foundations of Ajax shines is it's no-nonsense introduction, implementation, and expansion of the basics of Ajax programming, leaving the reader confidently ready to utilize the concepts within. The authors have seen the potential of Ajax, and competently convey their expertise and enthusiasm for this technology."
You can purchase Foundations of Ajax from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Patterns in Game Design
Aeonite writes "The quote on the cover of Patterns in Game Design proclaims that this book is "that rare sort" that is actually "useful." It is perhaps somewhat presumptuous to disagree with someone like Greg Costikyan, but nevertheless I have my doubts as to the book's overall utility. While this book certainly seems like the sort of be-all, end-all of game design theory, what it amounts to is little more than a list, each item on the list referring to the other items like bloggers hawking each others' hyperlinks. What could have been a sort of cookbook for gaming turns out to be less a book of recipes, and more a list of ingredients: "a loaf of bread, a container of milk, and a stick of butter." Read the rest of Michael's review. Patterns in Game Design author Staffan Björk & Jussi Holopainen pages 448 publisher Charles River Media rating 4 reviewer Michael Fiegel ISBN 1584503548 summary A comprehensive compendium of game design "patterns"
The book is broken into two Parts and 15 Chapters. Part I, "Background," explains the overall approach that the authors took in creating the rest of the book, exploring four different categories of gameplay (holistic, boundary, temporal, and structural), explaining the template used for the game design patterns that follow, and suggesting means for identifying patterns and applying them to the design of a game.
Part II, the bulk of the book, is where the Pattern Collection itself lies. The collection is broken into eleven chapters, each covering a grouping of patterns that share a common element. Chapter 5, for example, covers "Game Design Patterns for Game Elements," which includes Game Worlds, Objects, Abstract Objects and Locations. Each of those categories is further broken down into the Patterns themselves; for example, "Abstract Objects" includes Patterns such as Score, High Score Lists, and Lives.
Each Pattern is laid out in the same fashion. First, there is a one-sentence summary of the Pattern, followed by a more detailed description, and any relevant examples. This is followed in turn by examples of Using the Pattern, Consequences of its use, and its Relations to other Patterns. Relations include a list of other Patterns that fall into five categories: "Instantiates" (causes other Patterns to be present), "Modulates" (affects other Patterns and thus gameplay), "Instantiated by" (is caused to appear based on other Patterns being present), "Modulated by" (is affected by other Patterns), and "Potentially Conflicting with" (can cause other Patterns to be impossible within gameplay).
This all sounds a bit scholarly, and it is, but once you get the hang of it, it's not all that hard to slog through. However, it is indeed a slog -- each Pattern is in great part made up of references to other Patterns, which means that for a full understanding of any one Pattern, you must consume many other portions of the book. In their introduction, the authors do point out that this was their intent, and that you can "read the patterns in any order, similar to how a dictionary or encyclopedia is used." Indeed, reading through the book in any fashion is about as entertaining as reading those books. Which is to say, it's occasionally enlightening, but not really easy to do for any length of time. Here's an example from the "Surprises" Pattern, where any italicized word is a reference to another Pattern:
"One requirement for Surprises is the absence of Game State Overview or the presence of Imperfect Information or Limited Foresight. Because of this, Surprises are most often achieved by having Dedicated Game Facilitators such as Game Masters. Never Ending Stories are a way of overcoming the problems of Narrative Structures by combining Surprises with Replayability, thus making the narrative continue and change forever."
At the end of many subcategories are references to "Additional Patterns," which are only explored on the CD-ROM that accompanies the book, apparently having been left out for lack of space. Their omission (they do not even appear in the book's Table of Contents or Index) makes the book itself somewhat less useful than it otherwise could have been, since the Patterns within the book so often refer to Relations with Patterns that are not actually found in the book itself. The net result is that if (for example) you are reading about Surprises, and you want to learn about Never Ending Stories, you have to put the book down and pop the CD-ROM in. Not only is this disruptive, but it's impractical at best.
Were the CD-ROM itself more easily and logically laid out, it might have overcome some of the problems within the book. Containing everything within the book, plus the many additional Patterns not found in print, the bare-bones HTML allows you to browse either alphabetically by Pattern name, or "by chapters." This latter is somewhat misleading, for the list of Patterns within each Chapter is alphabetical on the CD-ROM, and not so within the book. On the CD-ROM, Chapter 5 starts with the following Patterns: Alarm, Alternative Reality, Avatars... In the book, however, Chapter 5 contains the category Game Worlds, and then Patterns such as Game World, Reconfigurable Game World, Levels, etc., in that order. The lack of consistency can make for some maddening moments trying to toggle back and forth between book and CD-ROM, like reading a dictionary that's in part alphabetical, and in part organized by, "nouns," "verbs," "adjectives," etc.
The CD-ROM is also inconsistent when it comes to the book's two Appendices. Appendix A, "Further Reading," contains a list of over fifty articles and books referenced elsewhere in the text, and appears only in the book. Appendix B, "About the CD ROM," appears in both the book and on the CD, where for some curious reason it's in Word DOC format. There are also an assortment of images, including colorized versions of those found in the book, as well as a set of PowerPoint presentations.
Overall, the book does succeed in compiling an impressive list of Game Design Patterns. Whether the list can ever amount to anything more than scholarly masturbation is another question. The thick language, combined with the definition of Patterns by reference to other Patterns, means that overall this book is probably about as useful in the realm of Game Design as a Dictionary is in the teaching of the English language. Which is to say, it's undoubtedly a useful tool as part of a much, much broader toolset, but in and of itself it leaves quite a lot to be desired."
You can purchase Patterns in Game Design from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Inescapable Data
jsuda writes "The authors of Inescapable Data share their excitement about what they see as a rapidly-developing convergence of digital technologies having enormous significance for business and culture. This convergence, in their view, is inescapable, life-altering for both good and bad, and presents a frame-shattering paradigm-shift which is mostly unrecognized, and much less examined critically. Inescapable Data is a thought-provoking book meant to describe the new technologies and to examine the special values which arguably will emerge from the convergence." Read the rest of John's review. Inescapable Data: Harnessing the Power of Convergence author Chris Stakutis and John Webster pages 278 publisher IBM Press Pearson Education rating 7 reviewer John Suda ISBN 0-13-185215-9 summary A practical perspective on developing technologies
This book illuminates the practical perspective of these developments. Others who pay attention to developments in culture of this sort believe that this convergence presents the most important and consequential development in human history, far vaster in its scope and effects than the Great Wars, and the Industrial Revolution. The developments have been so rapid and the effects so many and complex that is hard at this point to grasp all of the significances, although the dynamics, as noted in the book, are fairly clear.
Nicholas Negroponte in his 1995 book Being Digital first popularized the idea of the power and force of Digital. But this book emphasizes that Digital itself is not nearly the force that Convergence is and will become. Yes, the impetus certainly comes from the specific digital technologies but the combination of four major separate technology spheres has catalyzed into a much greater force. This is the Convergence.
As detailed in the book, these technologies are: 1) data-everywhere devices, like cellphones, biosensors, miniaturized video cameras, and GPS transmitters; 2) asynchronous-yet-immediate transmission technologies, like instant messaging; 3) intelligent wireless networks; and 4) advanced information processing software. Embedded chips will be everywhere, including in your dog or cat, your clothes, every product you own or consume or use, and your own body. What links everything together context-wise are XML files and protocols. The synergy of all of these components create a whole system which is much greater than the sum of its parts.
In 13 chapters and an index comprising 268 pages, the authors explain the basic vision of the practical dynamics of inescapable data. Chapters 4-12 contain section by section descriptions of the implementation of the component technologies and show how traditional and historical ways of doing things are being quickly altered, primarily now in manufacturing, distribution, and retailing.
The writing is mostly in the form of serial presentations of anecdotes, statistics, specific examples, and commentary. It is geared to the technologically-interested person focused on practical matters. This is not an academic work; it is full of practical and real-world examples but short on critique, theory, and analysis.
Chapter Four starts the discussion of existing and developing applications of inescapable data, and is about digital convergence in military and government spheres. Instant messaging, GPS transmitters, ubiquitous cellular communication, and advanced software applications have radically altered traditional command and control operations. With immediate, field-based information, the way battles are waged is now different. Commanders have instantaneous information about realtime happenings, aggregated and realtime updated information about equipment and materials including logistical supply chains and more, through wireless devices held or embedded in all elements of the military operation, including individual troops.
Governments, using wireless video camera transmitters, biosensors, and GPS transmitters can now utilize realtime broad-scale, relatively inexpensive surveillance for crime control and other purposes. In the home, wireless and digital technologies acting to provide surveillance and remote control of heating and electrical systems are in use now, and many more applications will be utilized very soon. The technology and cost factors are available now. In the field of medicine, everyday worklife, manufacturing, retail and entertainment, data collection is coming widespread as miniature sensors, radio frequency identification devices (RFID), wireless connectivity, XML content headers, and information processing software facilitate the recording of much of social, business, and cultural life. This then allows the widespread, immediate, real-time processing of relevant information by businesses, marketers, government (think Homeland Security), and, of course, miscreants of various types.
The important part to understand is not just that new technology is available now and at relatively low cost. What makes all of this interesting is that the connections among individual components of this technological matrix are increasing and developing. So, your new refrigerator is linked to the manufacturer's array of servers and to your grocery store's servers, and to your bank. Your medical records are stored in your doctor's server, connected to insurance company and government computers, as well as wide-scale medical-related organizations. Each of these linked nodes is further linked, or will be to other nodes, so that an immense matrix of relationships is now being furthered.
Chapters 7 and 10 on manufacturing and retail show how old-fashioned practices involving a company networking its departments and units internally, has now evolved into a process where the company computers and particularly its databases are now linked to all of its component suppliers, distributors, advertisers, regulatory entities, and more. The authors detail through each of the chapters the available technology, the specific uses, and the immediately perceivable effects, via interviews with a large handful of corporate, university, and business people involved in the technology. Examples of use, both awesome and mundane, are noted.
The alleged benefits of the convergence are vastly new efficiencies, flexibilities, customization opportunities, adaptability, and other values, many of which remain to be determined. One thing is absolutely certain- there will be plenty of data generated. Almost certainly, there will be plenty of people and organizations trying to make sense and meaning of this data, filtering and analyzing with new, capable, processing applications.
Whole new industries will form to manage this data. Where linked computers once vastly facilitated digital development, including the Internet, there will now be linked databases which will stand out as the chief component of the convergence. There will be systematic, continuous connectivity in a matrix of networked relationships represented by linked databases.
This convergence concept is highly reminiscent of Big Brother of 1984 fame. Obviously, there are serious issues about the quality of life in the convergence era. The good is in enormous increases in efficiency, in customized processes and products, in immediacy, and in flexibility and individual freedoms. The downsides are discussed here in a mere four pages in Chapter 13 on Perspectives. The authors itemize them as: discriminatory insurance underwriting effecting those unlucky enough to have reported genetic or medical issues; rampant identity theft, increased marketing pressures, a conflation of work and home life which some may feel as threatening, the alteration of sports and entertainment, and the exposure of formerly personal information. Another issue is the likelihood that some people will not be connected, for whatever reason. This group will comprise an underclass missing out on the benefits of convergence.
The book ends with a list of suggestions to the reader on how to exploit the developments - use an email PDA, avail of work-at-home opportunities, equip your kids with cell devices, convince your medical provider to send SMS and email appointment reminders, and set up home surveillance. For businesses, they suggest broad use of IM, groupware, and work-at-home concepts. Predictions include global calendars, singular devices, single key authentication, cashless economic transactions, and flexible matrix workers.
These suggestions and predictions seem fairly lame in respect to a process compared by some to the Great Wars and the Industrial Revolution. However, the perspective here is a practical, pragmatic one. More weighty suggestions, conclusions, and predictions are for higher-level academic writers."
You can purchase Inescapable Data: Harnessing the Power of Convergence from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
OpenGL Shading Language 2nd Edition
Martin Ecker writes "The Orange Book is back in its second edition. Randi J. Rost's "OpenGL Shading Language" (also called the Orange Book because of its orange cover) published by Addison-Wesley returns with 4 new chapters, roughly 140 new pages and quite a few new sample shaders. Like the first edition, the second edition of the book is one of the best introductions to GLSL - the OpenGL Shading Language - that also explains in-depth how to develop shaders in GLSL for lighting, shadows, animation, and other topics. The book targets an audience that is already familiar with computer graphics and with OpenGL. Knowledge of the C programming language is also advantageous for the reader. Since I've reviewed the first edition previously, I will focus on the new chapters of the book in this review." Read the rest of Martin's review. OpenGL Shading Language (Second Edition) author Randi J. Rost pages 740 publisher Addison-Wesley Publishing rating 9/10 reviewer Martin Ecker ISBN 0-321-33489-2 summary A solid introduction to developing shaders in the OpenGL Shading Language GLSL.
GLSL is now officially a part of OpenGL 2.0, whereas it was only an extension to core OpenGL at the time of release of the book's first edition. Naturally, the Orange Book has been updated to reflect all the changes. Not much has changed in the shading language itself, though. However, there were some minor modifications to the C shader API used to create and upload shaders to the graphics hardware from the program running on the CPU. In order to make the transition easier for old-timers like me who have worked with the old API, the book contains an appendix that details all the changes that the shader API has undergone with the promotion to core OpenGL.
The most notable additions to the book in its second edition are the new chapters on lighting, shadows, surface characteristics, and RealWorldz, a demo that uses shaders exclusively for all rendering and that generates even the rendered models purely procedurally via shaders.
The new chapter on lighting goes into the details of developing lighting shaders that differ from traditional fixed-function lighting offered by the OpenGL fixed-function pipeline. In particular, shaders for hemi-sphere lighting, image-based lighting using environment maps as light probes, and spherical harmonics lighting are developed in this chapter. Note that the theory behind spherical harmonics lighting is not presented in the book. So if you want to fully understand the presented shaders, you will have to read up on the theory in the references given in the book. The chapter on lighting is concluded by a discussion of the ÜberLight shader, a shader for a very versatile lighting model initially presented as RenderMan shader by Pixar Animation Studios.
An important topic in computer graphics now has its own chapter in the Orange Book: Shadows. The new chapter on shadows presents ambient occlusion, shadow maps, and an interesting technique for rendering shadow volumes using deferred shading. The latter technique can be used to render soft shadows convincingly.
Another new chapter in the second edition of the book is on surface characteristics. This chapter discusses and develops shaders to render surface materials that exhibit complex light interaction. The chapter starts out with a discussion of refraction and presents shaders to archive the classic Fresnel reflection/refraction and chromatic aberration effects. Then diffraction, i.e. light bending around sharp edges, is discussed and a shader is developed that renders a vinyl record realistically. Finally, the chapter focuses on BRDF-based lighting and develops various material shaders using the BRDF model.
The final new chapter in the second edition is on RealWorldz. RealWorldz is a demo that renders planets with fractal terrain, oceans, sky, and other effects. Everything in the demo is generated procedurally through GLSL shaders and the chapter describes the techniques used in implementing the demo. At the end of the chapter it says that the demo is available upon request from 3Dlabs, which I find ab it disappointing. Let's hope that the authors put up a downloadable version of the demo, or at least a video of the demo, on the book's webpage.
As in the previous edition, all images and diagrams in the book are in black and white, except for a few pages that contain 38 color plates in the middle of the book. In addition to the images from the first edition, the book now has some very impressive images from the RealWorldz demo. A nice addition to the book is the detachable cheat sheet at the end of the book, which contains a quick reference of GLSL and the shader API entry points - very handy to have on your desk in the heat of a late-night coding session.
The book's accompanying website at http://www.3dshaders.com/ offers the source code to all the shaders presented in the book for download. Also available are other shaders not mentioned in the book and a demo application including source code, which nicely demonstrates the shaders in action. The demo application and most of the shaders are available under a very liberal BSD-style open source license.
The book "OpenGL Shading Language (Second Edition)" remains an excellent introduction to shader programming with GLSL. It provides a profound discussion of the shading language itself as well as the C shader API used to create and manage shaders in the host program. The book also has numerous chapters on developing shaders for various applications, such as lighting, shadows, animation, and other areas of real-time computer graphics. The newly added chapters in the second edition nicely complement an already good book. If you're interested in learning GLSL and shader programming in OpenGL, this is the book to get.
About the review author:
The author has been involved in real-time graphics programming for more than 10 years and works as a games developer for arcade games. In his rare spare time he works on a graphics-related open source project called XEngine http://xengine.sourceforge.net./"
You can purchase OpenGL Shading Language from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
DOM Scripting
Simon P. Chappell writes "This is an unusual book in a good way. It covers a subject normally the preserve of geeks while being targeted at designers. Not a common approach, but one that Jeremy Keith pulls off rather handily. Mr. Keith is an active member of the Web Standards Project's Scripting Task Force; he not only knows how to script web pages, but he knows how to use that scripting to enhance the page's conformance to standards and even increase a site's accessibility. If you are like me, and have put off working with JavaScript because of the standards issues, then this book is our notification that those days are behind us. If you are a web designer who is interested in using dynamic techniques to enhance your site, but had feared the wrath of the standards police, this book is for you." Read the rest of Simon's review. DOM Scripting author Jeremy Keith pages 341 (12 page index) publisher Apress rating 10/10 reviewer Simon P. Chappell ISBN 1590595335 summary A tour de force that is destined to be called a classic.
I think that it's important to note that this is not a book about Ajax. For those of us feeling overly bombarded with Ajax this and Ajax that, this book is a delightful and refreshing read. Mr. Keith goes beyond the hype and brings us a strong explanation on one of the fundamental pillars of Ajax: working with the Document Object Model (the DOM of the title) using JavaScript. Without DOM Scripting there could be no Ajax, so this is an important addition to the library of any Web Developer who plans to create dynamic Web Applications. Who's it for?
According to the introduction: "This book deals with a programming language, but it isn't intended for programmers. This is a book for web designers. Specifically, this book is intended for standards-aware designers who are comfortable using CSS and XHTML." Mr. Keith is good to his word and his book is wholly targeted at web designers. That being said, I also found that the book was very suitable for programmers, myself included, who have been putting off using JavaScript in any depth. The Structure
The book's structure is fairly standard (no pun intended) and each chapter builds upon the proceeding one. The exceptions to this are the first and last chapters where the history of JavaScript and the future of DOM scripting are discussed, respectively.
Chapter two introduces JavaScript syntax and does a pretty good job considering that it is only 26 pages long. Chapter three then covers the Document Object Model. With the basic concepts of JavaScript and the DOM covered, the rest of the book proceeds to show us how to use them together.
Chapter four works through a basic JavaScript driven image gallery. This gallery is then revisited in chapter six where the JavaScript is upgraded to allow it to degrade gracefully according to the level of JavaScript functionality available in the browser and to ensure that the JavaScript is as unobtrusive as possible. Our final visit to the gallery example is in chapter seven where we learn to create markup on the fly and see how it can be usefully applied to enhance the gallery even further.
Chapter five looks at best practices for web design and how JavaScript and DOM scripting fit into that. Chapter eight takes a break from image galleries and looks at how DOM Scripting can help enhance our existing text content. Enhancement is also the focus of chapter nine, where the intersection and interaction of CSS and the DOM is explored.
Chapter ten is a little bit of fun, taking a look at animation through DOM Scripting. Chapter eleven, called "Putting It All Together" is a case study where a website is created for an imaginary band called "Jay Skript and the Domsters". The name may be corny, but the example is a wonderful display of starting with plain content and enhancing it using only standard compatible techniques. The book wraps up with an appendix of reference information of the JavaScript used in the book. What's to Like?
For a book that is not aimed at programmers, it is a great introduction to programming in JavaScript. Every concept is introduced clearly and the reasoning behind each approach is explained and the justification for it provided.
The book is very comfortable to read. The physical size, the typography, the design and the layout are all excellent. This is not surprising considering the target audience; excellent design is the minimum price of admission to the library of those in the design industry. What's to Consider?
There is very little that I did not like in this book. Although, I think that that it would be useful to point out again, that this isn't specifically written for programmers. If you know JavaScript well, this may not be the book for you. If you have extensive browser scripting experience this may also not be for you. And lastly, if you have no need, desire or interest in standards based scripting, this is absolutely not the book for you.
This is not a reference book. It will teach you a solid core of JavaScript suitable for working with the DOM, but do not think that it will teach you everything that there is to know about JavaScript. While the back of the book does have a small reference section, it is only for the concepts taught in the book. Website
Of course, the book has a website, available at domscripting.com. The site has an active blog and the finished version of the example site for "Jay Skript and the Domsters". Conclusion
This book deserves to be promoted to classic status immediately. It is written clearly, it uses only good principles of programming and adheres strictly to the appropriate standards. What a combination."
You can purchase DOM Scripting from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Linux Multimedia Hacks
MikeD writes "I just got my copy of the latest release in the O'Reilly's 'Hacks' series, "Linux Multimedia Hacks" by Kyle Rankin. If you are familiar with the other books in the 'Hack' series, this one will seem familiar." Read the rest of Mike's review. Linux Multimedia Hacks author Kyle Rankin pages 330 publisher O'Reilly rating 8 reviewer MikeD ISBN 0-596-10076-0 summary Tips & Tools for Taming Images, Audio, and Video
There are 5 'Chapters', each focusing on a specific multimedia topic starting from the most basic/common and moving up the multimedia food chain. The chapters cover (in order) Images, Audio, Video, Broadcast media, and the Web. The hacks in each section are similarly arranged, usually starting with the simplest and moving to more complex issues. They helpfully put a little rating symbol by each hack indicating if it is for beginners, intermediate or advanced users. While that is a little simplistic, it does give you some hint at the complexity of that particular 'hack'.
Because this is a 'hack' book, it is really designed so you can look up the topic you want. For example in Chapter 3: Video, there is a "hack" explaining how to convert from one video format to another. If that is what you need to do, turn to hack 63 and follow along and you are done.
But they put a little extra effort into the layout and topics covered here and you *could* use this as a great introduction to a particular multimedia area as well.
Lets look at Chapter2: Audio for example. The first 'hack', number 13, is titled "Mix Your Audio for Perfect Sound. This hack begins by exploring the audio systems in your system, the hardware, the sources and such then finishes by introducing a couple of common tools for controlling your audio, aumix and alsamixer. The next 'hack', "Surround Yourself with Sound" goes into details on how to get sound out of your system. It discusses speakers, 5.1 surround sound and how to use the tools alsmixer, aplay and others to set up, test and ultimately enjoy the cool audio available while watching movies.
Together those two 'hacks' make a pretty basic introduction to PC audio under Linux. From there the audio hacks include format changing, ripping, burning CDs music management and much more. You really could start at the 13 and work your way through to hack 46 and have a very good understanding of audio, PC audio and how to get the most out of it on your Linux PC.
So it really is more than just a collection of hacks. It can lead you from the basics of screen capture ('hack' number 1), to image manipulation, animation, then move on to audio and video. In Chapter 4 they get into TV tuner cards, Myth TV, streaming audio and video, ripping to broadcasting.
Chapter 5, Web hacks is sort of the odd man out in this book. In some ways it is separate from the other four in that it is directed more towards the web, which is something that would require several whole books in itself to cover well. But they included a few ideas, like "Star in Your Own Reality TV Show (hack #97), that do relate to some of the prior material.
Over all this will be a very useful book to anyone who is new to multimedia, but even some more advanced users will find some interesting and useful ideas, I think. Well worth checking out."
You can purchase Linux Multimedia Hacks from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Hacking Digital Cameras
whawk640 writes "I came across this book via the author's website www.camerahacker.com. I was interested in making a pinhole lens at the time so I picked up the book. Disclaimer: I'm NOT a hacker by nature. I only did a hack on a lens cover. Most of the hacks in here are for those with a better relationship with screwdrivers, drills and soldering irons than I have. I don't think this book was intended for me, so keep that in mind when reading my review." Read the rest of Daniel's review. Hacking Digital Cameras author Chieh Cheng, Auri Rahimzadeh pages 519 publisher Wiley rating 8/10 reviewer Daniel LaFuze ISBN 978-0-7645-9651-3 summary Interesting and Fun
A quick list of the types of hacks in the book are as follows.
1: Hacking Cameras -- (triggers, tripods, raw data, power, remote control and updated firmware)
2: Hacking Lenses -- (accessory adapters, changing magnification, pinhole, lens extension, macro adapters)
3: Creative Photography Hacks -- (filters, infrared, and removing infrared blocking)
4: Building Fun Camera Tools -- (car mount, headrest mount, bicycle spy cam, stabilizer, flash bracket, monopod, and studio light)
5: Flash Memory Hacks -- (CF Type I to PC Card Type II, removing microdrives)
6: Appendices -- (Soldering Basics, Circuit Symbols, Glass Cutting Basics, Photographer's Glossary, Index)
This book has quite a few hacks and if you're interested in hacking, the step by step instructions presented in the book will be useful and interesting. Quite honestly, I've only performed one of the hacks myself. I followed the step by step instructions for making a pinhole lens and it worked just perfectly. My wife will tell you I'm no Bob Vila. About all I know about a drill is that one end is pointy and spins.
Anyway, if you want to tinker with digital cameras, pick up the book and read through the contents. If the specific hack you want to do is not in the contents, look for something close. If it's not there or the book doesn't give you any ideas on anything to do, then it may not be for you. Read one more paragraph to find out.
In addition to the hacks, this book covers quite a bit of introductory concepts in photography in general and the math behind it. I found it easy to read as a beginner and it gave me an appreciation for why there are professional photographers and 'the rest of us'. Concepts covered in the book include focal length, magnification, filters, softness, ambient light, field of view, white balance, infrared, ultraviolet, depth of field and many more. These sections are brief and provide only an introduction though. If you're an experienced photographer, you probably won't find anything new in these sections. One down side about this is that since an introduction to photography is not the focus of the book, these introductions are scattered throughout the book whenever they tie in with a specific hack. On the upside, it gives you the information when you need it to decide if a hack is right for you.
Now, the hacks in the book are step by step with loads of pictures, schematics where necessary and tips. What you need to perform each hack is identified clearly before you start. Additional ideas about how the hack could be modified in function or in fit are available after each hack.
In my opinion, the disclaimer telling you not to take apart your $400.00 brand new camera is not quite strong enough. People like me are rightly afraid of that sort of thing. From what I hear, your average hacker though is much more adept and less fearful.
This is not the type of book most people would pick up and read cover to cover. It is more like a reference you would want to have handy if you spend a lot of time taking creative pictures or messing with your camera.
Negatives: Hacks seem to apply to specific cameras, if you want to apply them to other cameras, the author's experience may not help you... be careful! I found section 3 very interesting and would have liked to see more chapters on fun camera hacks. Unfortunately, it was the smallest section in the book.
Are you a propeller head who loves to take things apart?
Are you a techno-junkie who has 9 or 10 digital cameras lying around because you always buy the newest one?
Are you an amateur or professional photographer who just can't quite get all the features you want in a single camera?
Do you have a specific need for a hack that the book covers?
Do you have an interest in this sort of hack and a desire to learn some photography basics?"
If you answered yes to any of the previous questions, then this book is for you.
You can purchase Hacking Digital Cameras from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Essential PHP Security
Michael J. Ross writes "Given the remarkable popularity of PHP for developing dynamic Web sites, as well as the ever-increasing need for security on those same sites, one would think that there would be great demand for — and comparable supply of — books that explain how to create secure sites using PHP. However, such is not the case, and even the most extensive general purpose PHP books may only devote a single chapter to this critical topic, if that much. Essential PHP Security, written by PHP expert Chris Shiflett, aims to fill the gap." Read the rest of Michael's review. Essential PHP Security author Chris Shiflett pages 109 publisher O'Reilly Media rating 7 reviewer Michael J. Ross ISBN 059600656X summary A concise introduction to PHP security principles and practices.
O'Reilly has a Web page for the book, where they offer a sample chapter (Chapter 4: Sessions and Cookies), in PDF format, as well as the book's table of contents, index, errata, and links to the online version of the book, in O'Reilly's Safari service. As of the writing of this review, the confirmed errata is reassuringly sparse, and the unconfirmed errata is nonexistent, which speaks well of the author keeping on top of reader feedback — a worthy quality not shared by all technical writers. The author also has his own Web site dedicated to the book, where he has posted a table of contents, brief reader reviews, and two free chapters in PDF format: Chapters 2 (Forms and URLs) and 4.
In the book's forward, Andi Gutmans briefly explains how increasing Internet usage has resulted in a corresponding increase in security risks, for individuals and businesses operating online. He also notes that most of the security problems related to PHP-based applications, are not the result of weaknesses in the language itself, but rather in the way that developers have used the language in creating those applications. The intent of the book is to bring together the guidelines and lessons learned for writing secure PHP code, into a single volume. He concludes by noting that most of the principles presented in the book apply equally well to other Web development languages.
The bulk of the book's material is organized into seven chapters, focusing on the following topics: forms and URLs, databases and SQL, sessions and cookies, includes, files and commands, authentication and authorization, and shared hosting. These are preceded by an introduction, which oddly is labeled as a chapter. The true chapters are succeeded by three appendices, which cover the topics of configuration directives, functions, and cryptography. A short index rounds out the volume.
In the introduction, Shiflett presents the security-related PHP features, principles, and best practices that he uses as a foundation throughout the rest of the book, when focusing on the specific PHP topics covered by all of the subsequent chapters. The two features of PHP discussed are: register globals, of which most experienced PHP developers know the dangers, and PHP's error reporting capabilities. The four principles espoused by the author for writing secure PHP systems are: safeguard redundancy, minimum privileges, clarity through simplicity, and minimizing data exposure. The heart of the book appears to be his four recommended practices: tempering usability with security, tracking input and output data, filtering all input, and escaping or encoding output to preserve its meaning.
The seven topic chapters that follow the introduction provide fairly terse coverage of how those principles and practices are put to use, when designing and implementing forms, URLs, SQL commands, sessions, cookies, etc. Each subtopic within them is discussed briefly, and illustrated with code snippets.
If anyone is well-suited to writing such a work, it is Chris Shiflett, a well-known authority on PHP security, a respected contributor to the PHP community, founder and spokesman of the PHP Security Consortium, and founder and President of Brain Bulb, a PHP consulting firm.
In light of the author's expertise, one would presume that he would make every effort to write the definitive volume on PHP security — covering every conceivable topic, including: execution of system commands, verification of user IDs and authorization, e-mail spamming via Web forms, (the related topic of) exclusion of bots, and remote procedure calls. However, Essential PHP Security does not discuss those critical matters specifically. Moreover, the topics chosen are discussed in a rather cursory manner. The code samples throughout the book are generally quite minimal, with little to no explanation as to how they work. In addition, many of the techniques presented are but variations on the theme of "filter user input." These weaknesses may be why the book clocks in at only 109 pages. In fact, the seven core chapters comprise only 71 pages, leaving the reader to wonder how PHP security could possibly be adequately plumbed by such a short treatment.
On the other hand, there is something to be said for terse writing, as wizened fans of Kernighan and Richie's C language classic can attest. In agreement would be any developer who has purchased one of the many 700+ page technical tomes that turn out to be padded with excessive margins, poorly-tested code, and pointless appendices lifted from the respective products' documentation. Perhaps Shiflett intended his book to be more a primer on PHP security, rather than a comprehensive coverage — and hence the title of the book. As such, it would primarily be of value to PHP developers unfamiliar with basic security pitfalls and defenses. Regardless, any PHP developer would be wise to begin with this book as a first step towards PHP security mastery, but even wiser if they were to follow it up with more substantial works, as well as keeping current by reading security-focused Web sites and other current publications.
Michael J. Ross is a freelance writer, computer consultant, and the editor of PristinePlanet.com's free newsletter."
You can purchase Essential PHP Security from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Time Management for System Administrators
genehack writes "System administrators have a stereotypical reputation for grumpiness and irritability. Sometimes this misanthropy is a cultivated pose, designed to deter casual or trivial requests that would take time away from more important activities like playing nethack and reading netnews. More often, however, sysadmins are disgruntled simply because they can't seem to make any headway on the dozens of items clogging up their todo lists. If you're an example of the latter case, you may find some help in Time Management for System Administrators, the new book from Thomas Limoncelli (who you may recognize as one of the co-authors of the classic The Practice of System and Network Administration). Read the rest of genehack's review. Time Management for System Administrators author Thomas A. Limoncelli pages 226 publisher ORA rating 8/10 reviewer genehack ISBN 0-596-00783-3 summary Time management tips for sysdadmins
This slim book (only 226pp) packs a large amount of helpful information about making better use of your time at work, so that you can make some headway on at least some of those tasks that have piled up around you, while still managing to have a life outside of work. One of Limoncelli's main points is that sysadmins have to develop some way of effectively dealing with the constant stream of interruptions in their life if they're going to accomplish anything. The other point is that they also need a good tracking system to make sure they don't lose track of new, incoming requests in the process of dealing with existing ones. The book continually reinforces these two points, and presents several alternative, complementary ways to accomplish them.
The first three chapters deal with high-level, generic issues: principles of time management, managing interruptions, and developing checklists and routines to help deal with the chaos of day-to-day system administration. The middle third of the book details how to use "the cycle system", Limoncelli's task management plan for sysadmins. Basically, it's a hybrid between Franklin-Covey A-B-C prioritization and day planning and David Allen GTD-style todo lists, with a few sysadmin-specific tweaks thrown in. The final chapters of the book address a grab-bag of issues: task prioritization, stress management, dealing with the flood of email that all admins seem to get, identifying and eliminating the time sinks in your environment, and documenting and automating your work-flow.
In general, I think this is a great book for sysadmins that are looking to begin addressing time management problems. People that have already done some investigation of time management techniques (like the aforementioned Franklin-Covey and GTD systems) may find less value here -- but I still think the book will be interesting, especially the chapters detailing the workings of "the cycle system". Personally, after reading this book, I don't see any reason to move away from my modified GTD system, but I have gone back to using some daily checklists, which are helping me keep on top of my repeating tasks a lot better. I suspect that any working sysadmin will take away at least two or three productivity-enhancing tips from this book."
You can purchase Time management tips for sysdadmins from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Building Intelligent .NET Applications
Scott Forsyth writes "'Building Intelligent .NET Applications' is an excellent primer book into the world of Artificial Intelligence (AI) in the business world, specifically related to Microsoft technologies. It is an introduction to the world of Artificial Intelligence (AI) for .NET programmers. It is the first book I have seen that shows professional .NET developers how to incorporate AI into their daily programming. In this accessible guide, developers learn how to enhance new and existing .NET applications with intelligent agents, data mining, rule-based systems, and speech processing." Read the rest of Scott's review. Building Intelligent .NET Applications author Sara Morgan Rea pages 269 publisher Addison Wesley rating reviewer Scott Forsyth ISBN 0-321-24626-8 summary An excellent primer book into the world of Artificial Intelligence (AI) in the business world, specifically related to Microsoft technologies.
Sara dives quite deep into four different branches of the vast world of AI with a great balance of conceptual theory, code samples and real world scenarios. She leads the reader though the complete process of obtaining the technologies to full implication with complete code. Both Visual Basic.Net and C# can be downloaded online while the book gives all examples in Visual Basic.Net.
Sara explores four of the most popular AI technologies by building real-world sample applications that readers can use as the basis for their own applications. Some of the more interesting portions include; Applications that talk-critical for companies seeking to automate their call centers, Speech-enabled mobile applications, Multimodal speech applications, Data-mining predictions, which uncover trends and patterns in large quantities of data, Rule-based programming for applications that can be more reactive to their environments, Multiple software agents that are able to keep remote users up to date and sample applications for Windows and the Web.
The book starts out with a one chapter overview called "Instruction" which is exactly that. It introduces the reader to Business Artificial Intelligence and lays the groundwork for the rest of the book. Immediately in chapter two the book dives into Microsoft Speech Server which is the first of four main technologies that are covered in this book. Microsoft Speech Server is covered until Chapter 5 when the book dives into Data-Mining predictions. Chapter 7 gets into Rule-based systems and Chapter 8 into building Agents.
Chapter 9 finishes off the book with an excellent overview of Artificial Intelligence. In fact, for an overview of AI and Microsoft's investment into it now and in the near future, the final chapter of the book was my favorite. Sara painted an exciting picture of what is in store, as well as opening my eyes to things that exist already. AI isn't a thing of the distant future; in fact there is an exciting array of mature technologies in use and available today.
Personally I felt that Chapter 9 would have made a better introduction chapter. I didn't feel that Artificial Intelligent or Business AI was covered in much depth in the first chapter of the book. By the time chapter 2 dove in deep into the first branch of the four topics, I still had some unanswered overview questions in my mind. After reading Chapter 9 though, the need I felt for more general information was met.
Now with Microsoft Speech server, applications that can talk and interact intelligently with a user is not only possible, it's relatively easy and affordable, even for the small business. Developers can create powerful, intelligent applications that are specific to their business. You can create fully database-driven talking applications that understand speech, talk back (not like a rebellious 15-year-old) and respond differently to each unique situation. This can be used for a telephone application, someone sitting in front of a dumb terminal with audio capability or for a fully configured computer application. Dream big, the options are endless, the solutions are within reach.
Running reports against data has been common for decades, but consider intelligent agents that will dig, analyze, determine a new direction to dig by itself, and return relevant patterns and trends in the data that were never discovered before. Sara covers this very topic with theory, code examples, scenarios and clear and precise explanations.
Agents that self perpetuate, learn their new environment and respond accordingly are the way of the future. The most obvious and painfully in-your-face examples are malicious worms and spyware applications. Worms lodge themselves in an environment, take advantage of their new home by finding important information like a list of emails addresses, and then they spread automatically, continuing this vicious cycle. Spyware agents also install themselves in an environment and start interacting with it to get information to send back to their creator. Now, consider the endless possibilities where Agents can be used for good, and are in use today. The author covers this very topic.
I wouldn't say this book is a general overview of Business Intelligent Design, but rather a specific look at four major technologies and a few minor technologies. The Microsoft products covered are Microsoft Visual Studio.Net, Microsoft Speech Server and SASDK, Microsoft SQL Server, Online Analytical Processing (OLAP), BizTalk Server, Microsoft Agent, Background Intelligent Transfer Service (BITS) and I'm sure a couple other smaller technologies that I didn't list. In addition to these, Sara briefly covers SQL Server 2005, Analysis Services 2005, and Longhorn with Avalon, Indigo, and WinFS.
One of the characteristics of a good technical book is making the complex subjects sound simple. The author has done a tremendous job of that in this book. The range of topics that she covers at first glance seems complex, but at no point does she leave the reader overwhelmed. At the same time she doesn't over explain or drag on needlessly.
This book is about the IA (Intelligent Applications) part of AI (Artificial Intelligence). It focuses on Microsoft solutions for Speech solutions, Agents, Data Mining and Rule-Based Systems, and does a great job of it."
You can purchase Building Intelligent .NET Applications from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Linux Patch Management
Ravi writes "Any system or network administrator will know the importance of applying patches to the various softwares running on their servers be it the numerous bug fixes or vulnerability checks. Now when you are maintaining just a single machine, this is really a simple affair of downloading the patches and applying them on your machine. But what happens when you are managing multiple servers and hundreds of client machines? How do you keep all these machines under your control up to date with the latest bug fixes? Obviously, it is a waste of time and bandwidth to individually download all the patches and security fixes for each machine. This is where this book named "Linux Patch Management - Keeping Linux systems up to date" authored by Michael Jang gains significance. This book released under the Bruce Perens' open source series aims to address the topic of patch management in detail." Read the rest of Ravi's review Linux Patch Management - Keeping Linux Systems Up To Date author Michael Jang pages 270 publisher Prentice Hall rating 8 reviewer Ravi ISBN 0-13-236675-4 summary This book offers Linux professionals start-to-finish solutions, and examples for every environment, from single computers to enterprise-class networks.
The book is divided into seven detailed chapters, each covering a specific topic related to patch management. In the first chapter, the author starts the narration by giving an introduction to the basic patch concepts, the various distribution specific tools available for the user including Red Hat up2date agent, SUSE YaST online update, Debian apt-get and also community based sources like those in Fedora. What I found interesting was instead of just listing the various avenues that the user has regarding patching his system, the author goes the extra mile to stress the need for maintaining a local patch management server and also the need to support multiple repositories on it.
The second chapter deals exclusively with patch management on Red Hat and Fedora based Linux machines. Here the author walks the readers through creating a local Fedora repository. Maintaining a repository locally is not about just downloading all the packages to a directory on your local machine and hosting that directory on the network. You have to deal with a lot of issues here, like the hardware requirements, the kind of partition arrangement to make, what space to allocate to each partition, whether you need a proxy server and more. In this chapter, the author throws light on all these aspects in the process of creating the repositories. I really liked the section where the author describes in detail the steps needed to configure a Red Hat network proxy server.
The third chapter of this book namely SUSE's Update Systems and rsync mirrors describes in detail how one can manage patches with YaST. What is up2date for Red Hat is YaST for SuSE. And around 34 pages have been exclusively allocated for explaining each and every aspect of updating SuSE Linux using various methods like YaST Online Update and using rsync to configure a YaST patch management mirror for your LAN. But the highlight of this chapter is the explanation of Novell's unique way of managing the life cycle of Linux systems which goes by the name ZENworks Linux Management (ZLM). Even though the author does not go into the details of ZLM, he gives a fair idea about this new topic including accomplishing such basic tasks as installing the ZLM server, configuring the web interface, adding clients ... so on and so forth.
Ask any Debian user what he feels is the most important and useful feature of this OS, then in 90 percent of the cases, you will get the answer that it is Debian's contribution to a superior package management. The fourth chapter takes an in depth look into the working of apt. Usually a Debian user is exposed to just a few of the apt tools. In this chapter though, the author explains all the tools bundled with apt which makes this chapter a ready reference for any person managing Debian based system(s).
If the fourth chapter concentrated on apt for Debian systems, the next chapter explores how the same apt package management utility could be used to maintain Red Hat based Linux distributions.
One of the biggest complaints of users of Red Hat based Linux distributions a few years back was a lack of a robust package management tool in the same league as apt. To address this need, a group of developers created an alternative called YUM. The last two chapters of this book explores how one can use YUM to keep the system upto date as well as hosting ones own YUM repository on the LAN.
Each chapter of the book explores a particular tool to achieve patch management in Linux and the author gives in depth explanation of the usage of the tool. All Linux users irrespective of which Linux distribution they use will find this book very useful to host their own local repositories because the author covers all distribution specific tools in this book. The book is peppered with lots of examples and walk throughs which makes this book an all in one reference on the subject of Linux patch management."
Michael Jang has specialized in networks and operating systems. He has written books on four Linux certifications and one of them on RHCE is very popular among students attempting to get Red Hat certified. He also holds a number of certifications such as RHCE, SAIR Linux Certified Professional, CompTIA Linux+ Professional and MCP.
You can purchase Linux Patch Management - Keeping Linux Systems Up To Date from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
Update: 02/07 14:52 GMT by J : Book rating changed from an intended 4 (of 5) stars to Slashdot-normalized 8 (of 10), by Ravi's request. -
Head First HTML with CSS & XHTML
Graeme Williams writes "In the past, I've written the sort of poorly-structured non-compliant web pages that can only be produced by a combination of laziness and confusion, so I'm an ideal test subject for Head First HTML with CSS & XHTML, an introduction to building web pages which focuses on compliance with the most recent HTML 4.01 standard and XHTML 1.0 standard. The book starts with the simplest of web pages, and builds from there to a solid foundation for writing simple well-structured web sites. It's clear and thorough, and will be effective both for the complete beginner and in bringing stale skills up to date." Read on for the rest of Graeme's review. Head First HTML with CSS & XHTML author Elisabeth Freeman & Eric Freeman pages xxxv + 658 publisher O'Reilly Media rating 10 reviewer Graeme Williams ISBN 0-596-10197-X summary A clear, effective and readable explanation of standards-compliant HTML, XHTML and CSS
This is one of those cases where you can judge a book by its cover. In addition to the title and author, the cover of Head First HTML with CSS & HTML has seven tag lines, four photos and two drawings. One of the nuggets is, "A learner's guide to creating standards-based Web pages", which is a pretty good summary of the book and its intended audience.
Head First HTML is full of the sort of distractions that would normally make my skin crawl: people talking at me from the margins, mock conversations between inanimate objects (or in this case HTML tags), crosswords, quizzes and enough cute graphics to supply the kindergartens of a fair-sized city. It's clear that the authors realize that there might be some resistance to this style because they devote five pages of the introduction to explaining why they wrote the book this way – the summary of the summary is that novelty helps your brain learn. The example chapter you can download from the web site for the book is more than 50 pages, which might be enough for you to make up your own mind whether this works for you. My experience was that the method is so effective and the material so clearly presented that the issue disappeared for me after a chapter or two.
In the introduction, the authors also mention another goal: "a clean separation between the structure of your pages and the presentation of your pages". HTML or XHTML is used to provide the structure and content of a web page, and CSS (Cascading Style Sheets) are used to provide the style and layout. This means that the book doesn't include many HTML elements which are now discouraged or "deprecated", such as <B> for bold, <CENTER> for centered text, or <FONT> for specifying fonts within the web page. I guess the choice between frames and CSS might be classified as a religious one. In any case, this book is about CSS and doesn't mention frames except to note their omission in the appendix.
Most of the examples are based on a fictional coffee company called Starbuzz, and their trendy competitor, the Head First Lounge. It's a great framework for building up a web site from a few linked pages to a complete CSS layout. If you've never written a web page before, the book starts at the beginning, with the simplest web page followed by links from one page to another. If, like me, you've written a handful of web pages, reviewing the material will help focus on the essentials for a clean, compliant web page. All of the example HTML, CSS and accompanying images can be downloaded from the web site for the book, which also has the completed examples online, so you can quickly review them in your browser. If you're considering buying Head First HTML, the online examples are also a great way to see the scope of the book, from the simplest example to the most sophisticated.
There are a few prerequisites for getting the most out of Head First HTML. Adobe Photoshop Elements is used to show you how to prepare images for the web. As the book says, if you don't have it, you can download a free trial from Adobe, with the small quibble that this won't work if you've already run through your free trial before starting the book.
Understandably, Head First HTML doesn't tell you everything you might ever need to know about CSS. On the other hand, you learn a whole lot about using CSS both for appearance (such as colors and borders) and layout (positioning different parts of the page such as headers and sidebars). The book is particularly good at explaining at least some of the limitations of CSS, such as the different compromises of liquid, jello and frozen layouts. It's easily enough for you to be able to continue learning or experimentation on your own. With forgivable cuteness, the book also frequently mentions the availability of other O'Reilly publications with more information, such as HTML Pocket Reference and CSS Pocket Reference.
Similarly, the book gives a clear presentation of the different ways of setting text size, but doesn't provide the last word. If you're looking for Javascript to automatically size text based on screen resolution and browser width, you'll have to look elsewhere. In fact, Javascript is one of the ten things mentioned in the appendix, "The Top Ten Topics We Didn't Cover", leaving room for Head First Javascript to be published in 2006.
The last chapter provides a brief introduction to forms, including example designs both with and without tables. The goal of the chapter is to show you how to use CSS to style and layout forms, but you can't try out a form without something on a web server to process it, so the book's web site includes a simple-back end which will "process" (really just echo) the forms which are submitted to it.
Head First HTML deserves its score of 10, but that doesn't mean every word is perfect. I wasn't comfortable with the description of CSS borders, margin and padding until I'd gone back and re-read it. And it wasn't obvious to me that the background of a margin (such as a dashed margin) is the same as that of the content area it surrounds until I'd worked through some examples on my own. But that just underlines the fact that the book is so readable that I could tell when my understanding was slipping.
While Head First HTML never claims to be a reference, information is presented very clearly. If you forget the differences between HTML and XHTML, the book's excellent summary is easy to find, and includes a discussion of the W3C HTML and XHTML validator. That said, the index is short and idiosyncratic: there is a list of page references for the Q&A sections (under T for "There are no dumb questions") but transitional HTML is indexed only under "HTML, transitional", and jello, the layout, is found under "Design" but not "J" or "Layout".
I've said that I was initially very skeptical about the graphics-heavy Head First Labs house style. I'm pretty sure I've been thinking in prose all my life, but apparently verbal and graphical perception can be safely intermingled. I can't explain why, but this garden salad of words, pictures and diagrams of all kinds provides a easy-to-read and very effective introduction to a large amount of material."
You can purchase Head First HTML with CSS & XHTML from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Beyond Java
Anml4ixoye writes "I recently got sent a copy of Bruce Tate's newest book Beyond Java - A Glimpse at the Future of Programming Languages. Having read Bruce's Bitter Java and Better, Faster, Lighter Java, I was intrigued to see what he would have to say about moving beyond Java. In short: If you're a hard-core Java (or to a lesser extent, C#) developer who thinks Ruby is something that goes on a ring, Pythons will bite you, and Smalltalk is something you have to do at parties, you are in for a rude awakening." Read the rest of Cory's review. Beyond Java: A Glimpse at the Future of Programming Languages author Bruce A. Tate pages 185 publisher O'Reilly rating 9 reviewer Cory Foy ISBN 0-596-10094-9 summary Excellent book for Java developers who haven't been exploring what else is out there
Let's get down to it. For many people, Java pays the bills. For dealing with big problems, it is a wonderful language with a myriad of libraries for solving domain-specific problems. The author thinks that this focus on the larger applications is causing Java to alienate the developers who need solutions to small, real-world problems, like babysitting a database with a web site.
Bruce starts out in Chapter 1 discussing a disrupting experience he recently had when he discovered how much faster and more productive he and his team were when they switched mid-stream to Ruby on Rails. He gives some controversial numbers that discuss this improvement. This experience leads him to realize that maybe Java is dying - or at least fading in certain areas.
His next sections (Chapters 2 and 3) discusses the "Perfect Storm" that led Java to become the leader it is today. How it traded the OO purity of Smalltalk to woo C++ developers. And how the programming environment was calling out for a language like it.
But that landscape is changing, and Java is having a hard time keeping up. In chapter 4, he gives an example of servlets. Earlier servlet specs allowed you to get a Hello, World servlet, albeit ugly, up rather quickly. That same example now requires deployment descriptors, packaging into WAR files, configuration files, etc, etc. For Java developers, this is the norm, but for a developer new to Java, who wants to learn all that?
Chapter 5 is a discussion of what Bruce feels is the Rules of the Game, or what the next "Killer language" will need in order to beat out Java. This was a very good treatment, highlighting some of the good and bad of Java and languages as a whole. For example, he rates high that you will need some sort of Enterprise Integration, Internet Focus, and Interoperability. He also feels things like dynamic typing, rapid feedback loops and dynamic class models (making reflection more natural).
Most importantly, it needs a killer app to act as a catalyst to get people's mindsets changed. In Chapters 6, 7 and 8, he gives examples of some killer apps - Ruby on Rails and Smalltalk's Continuation servers (like Seaside). Chapter 6 is a kick-in-the-teeth intro to Ruby (which left me wanting to go out and pick up Dave Thomas' Programming Ruby book). Chapter 7 shows a sample Ruby on Rails application, and Chapter 8 gives a very interesting look into Continuation servers and the work being done by the Smalltalk community on it.
Finally, he closes the book with a list of Primary and Secondary contenders that could up and replace Java. Primaries include Ruby, Python, Groovy, and .NET (C# and VB.NET). Secondary contenders include Perl, Smalltalk, PHP and Lisp, which he summarizes as: "Perl's too loose and too messy, PHP is too close to the HTML, Lisp is not accessible, and Smalltalk wasn't Java". To which he adds, "...go ahead and fire up your GMail client and your thesaurus, and drop me a nasty note. Ted Neward reviewed this book, so I can take a few more euphemisms for the word sucks".
Thankfully there is nothing in this book that would cause me to write a nasty note to Mr. Tate. In fact, if you haven't begun looking at other languages and are heavy in the Java world, I would highly recommend picking up a copy of the book. It's a fast, intriguing read with great insights and the chance to save yourself from looking around 4 years from now wondering what the heck happened, and why all of these developers can afford jewels and play with snakes while chatting among themselves."
You can purchase Beyond Java: A Glimpse at the Future of Programming Languages from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Practical Mono
hisham writes "At first glance, you would think that Practical Mono is yet another introductory book about C# and Mono, but all of that drastically changes the moment you look at the book's table of contents and see the variety of topics it covers and the lengths to which the author goes to describe the more important details." Read the rest of Hisham's review. Practical Mono author Mark Mamone pages 402 publisher APRESS rating Excellent reviewer Hisham Mardam Bey ISBN 1-59059-548-3 summary Takes the readers from an introduction to .NET, Mono, and C# to their most advanced features using a real world approach.
The book gently eases the into what .NET and Mono are giving a historical background for each. What I found very interesting is the fact the author takes time to explain about .NET in the real world, and ties this to Mono to give the reader a clear idea of how any why Mono was started and what the reader can do to participate in this effort.
Since a lot of people using Mono might be coming from a traditional .NET environment, the author expects those people to be used to certain development tools. To that effect, the second chapter in the book is dedicated to introducing the reader to development tools that can be used with Mono, especially Mono Develop. This gives the reader some heads up about what can be used instead of their conventional development tools and makes sure you start off on solid grounds.
Having gotten the user all set up and ready for action, the book then moves on to introduce the author to C#. This is a subtle introduction that eases the user into what C# is and how the language works. Chapter 3 comes in very handy when you want to brush up on your C# skills or are new to C#. the author continues to give the reader more information about C# in a more detailed fashion in Chapter 4, "Learning C#: Beyond the Basics". This chapter goes into some nitty-gritty detail about C# classes, exceptions, and all round more advanced C# topics.
Chapter 5 moves into the more exotic areas of .NET that deal with the CLR, IL, assemblies, and the general assembly cache (GAC). This chapter is very helpful if the reader wishes to acquire in depth info of how the .NET environment works. Other discussed topics here are garbage collection, application domains, and the class library. This is one of those chapters that make this book an excellent recommendation for both novice and advanced users of C# and .NET.
The first 5 chapters have made sure the user is very knowledgeable about what Mono is, what .NET is, what C# is, and how all of them relate to each other. They have also explained C# and introduced the reader to its syntax and advanced features. Starting with Chapter 6, the "Practical" bit from the books title starts to kick in quite strongly. If its a book with both theoretical and real world information that you want, then the coming chapters are really going to quench your thirst.
Chapter 6 goes right into the heart of on of .NET's most desired features, Windows Forms. The author explains what Windows Forms is, what GDI+ is, how to implement a good user interface, and gives real world examples of how to do all of that introducing the reader to Windows Forms' various controls. A nice section that is mentioned in several chapters is the "Whats New in Version 2.0?" section that informs the reader about what to expect in the new version of .NET in regard to that particular topic.
Because the author knows that not all people will be using Windows Forms to design their graphical interfaces, he goes into GTK+ and Glade and takes up a complete chapter explaining what they are and how they can be used instead of Windows Forms. Chapter 7 serves as a gentle introduction to the GTK+ and Glade world, and makes sure the uses knows how to pick between Windows Forms and the GTK+ / Glade combination.
After finishing Chapter 7, the user has a very good idea about how to design a complete graphical user interface using freely available tools (Windows Forms in Mono, and GTK+ / Glade using GTK# in Mono). The author now moves on to describe ADO.NET, a heavily used feature of .NET which is also available through Mono. This chapters enlightens the reader and explains all aspects of using ADO.NET in applications to connect and utilize databases. The particular example is geared towards installing MySQL. Explanation is given both for Linux and Windows, which also shows that Mono can be used as a .NET alternative on Windows.
Since XML is constantly referred to as a "hot topic", the author does not let us down and dedicates a complete chapter to discussing XML and Mono. If the reader is new to XML, then he / she will be pleased to find out that an explanation to what XML is and its history is given at the beginning of Chapter 9: Using XML. The chapter deals with looking at XML documents and traversing them. The author shows us a real world example by applying this knowledge to create an RSS feed class library.
Chapter 10 is for those of us with enthusiasm for networking and remoting. This chapter, "Introducing Networking and Remoting", starts by explaining what networks are and their general concepts, then dives into how we can do networking related programming in .NET. We apply this knowledge later on and create an RSS feed handler.
Another heavily used feature in .NET is ASP.NET. Chapter 11: Using ASP.NET, explains what ASP.NET is, how it works internally, and how to use it. This chapter shows the reader how to set up a web server for ASP.NET (both the XSP web server and an external web server) and moves on to show the user how a web service can be written. A lot of readers will find this chapter very useful as web services seem to be an increasing and expanding field right now.
Finally in Chapter 12: Using Advanced Mono Techniques, the author dives into such topics like performance tuning, reflection, and using threads. Advanced readers will particularly like this chapter as it handles some of the "harder" more demanding features of .NET.
This book not only serves as a great learning experience that shows you how things are done in the real world, it also as a general good reference for C#, .NET, and Mono and several of their features. Definitely one you should have in your bookshelf right by your work desk.
I enjoyed reading Mark's book, and I would recommend it to people that are either getting into .NET / Mono or have some experience but would like to further it."
You can purchase Practical Mono from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Wicked Cool Java
Simon P. Chappell writes "Every now and then, as a book reviewer, you just have to take a chance. The way it works is that editors ply their wares to you, sending you lists of available books on a regular basis and tempting titles catch your eye. The problem is that until you've committed to review the book, received it and read it, you don't know whether you've found a good one or have just been a victim of drive-by marketing. This was such a book. The title sounded good and I just had to try it out. But would it live up to the name that it bore?" Read the rest of Simon's review. Wicked Cool Java author Brian D. Eubanks pages 224 (12 page index) publisher No Starch Press rating 8/10 reviewer Simon P. Chappell ISBN 1593270615 summary Programmers and technical leads will love this book.
Most of the books that I review are targeted for programmers and this is no exception to that rule. If you code Java for fun or profit, then this book is for you. That said, as one whose day job is a technical lead for Java development, I actually appreciated the book more than I expected. For a technical lead, just knowing that something is possible and seeing clear examples of how to do it, is a huge relief. When you're the guy who has to lead the efforts to fulfill I.S. management's promises, it's good to know that your team can do some of the things they said we could, using language features in conjunction with available open-source and free libraries.
The back cover calls it an "idea sourcebook" and I'm going to concur with that description. It contains a very wide range of subject matter and so each chapter addresses a portion of that spectrum. The first three chapters cover core Java skills and will be applicable to every reader of the book. The balance of the chapters are more discretionary and will appeal to different readers to differing levels. Each of the chapters brings about a dozen thoughts or tools concerning the subject area to the reader. Most of these tools are explained and short code samples are given for their use.
The first chapter covers the Java language and some of the core APIs. It looks at a few of the forgotten gems of the Java language while mostly looking at some of the fancy new features of Java 5. Chapter two addresses String utilities, primarily through the regular expression capabilities introduced in Java 1.4. String handling is a first order skill, even in these days of objects, so this chapter is very welcome. Chapter three looks at processing XML. Like string handling, XML processing is becoming a first order skill, that even if you don't like (and I don't), it is still important to be able to handle the vast quantity of the stuff that we are surrounded with.
Chapter four looks at the semantic web. This is a world that speaks RDF, RSS and Dublin Core. If you already speak that dialect of geek, this is your chapter. The fifth chapter examines scientific and mathematical applications; calculation engines, arbitrary-precision arithmetic and neural network drivers. Chapter 6 brings us graphics and data visualization; graphing and report generation are the order of the day here. Chapter seven looks at multimedia and synchronization. This is the chapter for learning to make music, having your computer talk back to you and having more fun with threads than you ever thought possible. The last chapter, number eight, is titled "Fun, Integration and Project Ideas". It's a veritable grab bag of ideas, ranging from using Java to control a LEGO robot to writing in JVM Assembly Language.
While I don't wish to steal any thunder from the book, perhaps an example or two would be appropriate at this point? The JScience API is discussed in chapter five and it's unit framework is explored from pages 109 to 111. Calculations with values of differing units can be problematic; just ask any NASA engineer. The JScience framework allows you to work in the appropriate units for a value and have all calculations with those units convert themselves correctly. There are many practical uses for this, but I enjoyed the furlongs per fortnight example that the book provides: did you know that the speed of light in a vacuum is 1,802,617,499,785.253 furlongs per fortnight? In chapter two there is a great example of generating random text. This can be useful for suggesting pronounceable passwords and just such an example is given on pages 34 to 36.
If you have the desire to explore some of the uncharted waters of the Java world, then there's a good chance that you'll like this book. If you are the kind of person who loves to hear about new and interesting things that you can do with Java and are happy to have them served up in a book where they're categorized and presented with code examples, you'll love this book. As I mentioned earlier, this book is also useful for those leading teams of Java programmers; where knowing that something is doable is of great value in and of itself.
If you are one of the large number of Java programmers still working at the 1.4.x level, or who needs to target 1.4.x JVMs, the first chapter will be the least useful of the whole book, with the majority of it's examples based on Java 1.5. If you are not really much of a one for interesting Java coding suggestions, with examples, then perhaps this is not the book that you thought you were looking for.
The book has a website, the cunningly named wickedcooljava.com that provides links to all of the libraries and code projects mentioned in the book.
This is a great book. I loved it, but then I fall into the realm of the perpetually curious and I love to explore new and interesting things to use Java for."
You can purchase Wicked Cool Java from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
The Adobe Photoshop Elements Crafts Book
Sdurham writes "Adobe Photoshop and its many siblings have long been a staple of artists, photographers, and programmers interested in doing serious image manipulation. Increasingly, Photoshop's younger sister Photoshop Elements comes prepackaged with digital cameras. Yet many of the users of these cameras lack the time or patience to tackle the steep learning curve of the Photoshop family and are left asking "How do I do ... ?". Elizabeth Bulger's The Adobe Photoshop Elements Crafts Book attempts to bridge the gap between Photoshop skill level and personal creativity by stepping the reader through 14 different craft projects. In doing so, Bulger tries to provide the basic Photoshop Elements skills necessary for readers to pursue their own projects after finishing the book." Read the rest of Sdurham's review. The Adobe Photoshop Elements Crafts Book author Elizabeth Bulger pages 156 publisher Peachpit Press rating 6 reviewer Sdurham ISBN 0321368967 summary
Crafts is a small book, and will not appear overwhelming to casual computer users. At 156 pages, its 17 chapters range from six to 15 pages each. The book can be divided into two general sections. In the first section, comprising chapters one through three, Bulger introduces Photoshop Elements and progressively works through image manipulation from opening files to selecting and editing portions of images. These chapters can be skimmed or skipped by those users familiar with the majority of tools and commands in the many flavors of Photoshop. For the uninitiated, which will probably be most of Bulger's target audience, these chapters provide an important foundation to completing the projects later in the book. In the first of these, "Photoshop Elements Basics," the author starts by discussing the Toolbox and provides a nice full-page reference that clearly labels each tool. This comes in handy for beginners later on when Bulger instructs readers to use particular tools. However, she is careful to include the Toolbox icon along with each command she uses during the projects, so readers should be able to reference this page less and less as they move through the book. In addition to the different dialogue boxes discussed here (Palettes, Options bar, Photo Bin), Bulger also spends a little time explaining different image file formats and a summary of image resolution basics. It should be noted, however, that these are BASIC explanations. She attempts to give just enough information to get an inexperienced user moving.
In "Working with Layers" the reader is introduced to what can be a frustrating subject for Adobe beginners. Bulger does a nice job of working through the process of layer manipulation by using, you guessed it, a pizza as an example. Unfortunately, what would normally be an important introduction to the topic is marred by the fact that Bulger fails to adequately explain how to obtain the sample image (no disc is included with the book). Her only mention of it is "If you want to use this pizza image to learn how to work with layers," (and if I'm a beginner following the book, I do want the image, "you can download it from www.photoshopcrafts.com Web site." But for readers only vaguely familiar with using computers to do image work (i.e. some soccer moms or grandparents) this may be too little information to get the image. Even worse, those users who do visit the site and click on the pizza image thumbnail are presented with a JPEG file. No PSD file is available, and using the JPEG file prevents readers from following the chapter because no layers are available.
The final introductory chapter tackles another challenging subject for beginners, the many selection tools found in Photoshop Elements. This chapter feels like a good refresher for someone who is only moderately familiar with the differences between the different lasso selection tools. Again, however, Bulger may confuse her target audience by using terms without explanation. When showing readers the Inverse Selection function, she uses the term "ghosting." For experienced users this does not give pause for thought, but since these first three chapters are primarily for users with little experience, readers may be confused by the term. No glossary is included, but by using the Index the term "ghosting" can be found over seventy pages later. Oddly, it is this later entry where Bulger gives a good explanation of the term. While insignificant in itself, small errors like this do prevent inexperienced users from building confidence with the software prior to beginning the projects.
Of course, The Adobe Photoshop Elements Crafts Book is not primarily an introduction to Elements in general but instead is meant to allow users of varying levels to jump right in and start being creative. This is where the book becomes interesting. Creating Gingham giftboxes, garden journals, aprons, placemats, pillows, and Parisian tiles are some of the projects covered. In this review I have worked through creating the Travel Photo CD cover (because of personal need and lack of workspace to varnish or paint...), but every project chapter follows the same format. The introductory page of each project chapter has a picture whatever the reader will create and a summary of the skills that will be used to make it. A list of "Stuff You Will Need" is given next, and then each page of the chapter is divided into two columns, the left for photos of each step and the right for explanations on how to move along. The photos are crisp, and whenever they display a menu option a red circle surrounds where to click. This works well for those more inclined to see things done rather than read them.
Working through the Travel CD cover project, a few problems cropped up. First, the book is targeted at Elements 4.0, and for users of older versions (I have 2.0) the placement of commands and general variation is different enough to cause confusion. In addition, many of the steps do not clearly articulate what should be occurring on screen. This is where the nice images really come in handy. The greatest complaint, however, is that each step does a fair enough job of telling the reader what to do, but lacks any real explanation of why to do it. A beginner will have trouble transferring the specific steps in one project to their own creations (speaking to Photoshop commands here, not generalities like creating a tile).
Ultimately, The Adobe Photoshop Elements Crafts Book is a slick, well designed book with interesting projects. It is weakened from a lack of clarity and minimal explanations of why? that would greatly increase its utility in transferring the lessons to other ventures. It is a book well-suited to someone who already has a basic understanding of the Photoshop family, but perhaps one that may be a little unclear for real beginners. It will definitely appeal to readers with an independent spirit for creating or personalizing their surroundings."
You can purchase The Adobe Photoshop Elements Crafts Book from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.