Friday, May 11, 2007

Music Review: The Doors by The Doors

by T. Michael Testi ( , PhotographyToday, ATAEE)

In July of 1965 on Venice Beach California, two students of the UCLA film school decided to form a band after one of the studentS found out that the other was writing lyrics to songs. When Vox-Organ player Ray Manzarek asked Jim Morrison to sing one of the songs, a song called "Moonlight Drive," an ember of what would form into a group was alight. By September of that year, they formed up with guitarist Robby Kriger and drummer John Densmore and, taking the name from an Aldous Huxley book, "The Doors of Perception", where born The Doors.

The Doors were unusual in the annals of rock music in that while performing on the road they did not use a bass player. The bass lines where played by Manzarek on the newly invented Fender Rhodes Bass Keyboard. While in the studio, they often brought in studio players to perform the lines.

In January 1967, The Doors released their self-titled debut LP. This caused major commotion within the music circles of the time. Not only did it contain most of the major songs from their set, it included an 11-minute version of "The End", the band's keynote song. They recorded the album in only a few days during August and September of 1966.

This was an in-studio "live" album, in that almost all of the songs were captured in a single take. Morrison and Manzarek also directed a promotional film for their first single "Break on Through" in what turns out to be an early music video. Their second single, "Light my Fire", put them in league with The Jefferson Airplane and The Grateful Dead as one of the top counter-culture bands of their time.

While these should be songs you know by heart and the mere fact that The Doors is one of those albums that deserves ranking on everyone's top 100 albums of all time, I understand that not everyone will have heard this CD.

For those who are not familiar with the brash, soulful, bluesy rock style that was totally The Doors, the songs; "Soul Kitchen", "The Crystal Ship", "Twentieth Century Fox", "Alabama Song", "Back Door Man", "The End", "Break On Through", and "Light My Fire" are all simply brilliant, with the last three being classics worth the price of admission. "The End", the controversial eleven minute masterpiece, will wow you with how fresh it sounds even today. The remaining songs deserve at least three or four stars as well.

This release of The Doors debut album, is a complete reengineering and re-mastering of the original version. The sound quality is superb. According to the liner notes, the speed of the album has always been slower that it was intended. This has been fixed and the mix is also clearer and more dynamic.

The Doors Song Listing:
Break On Through (To the Other Side) Soul Kitchen
The Crystal Ship
Twentieth Century Fox
Alabama Song (Whisky Bar)
Light My Fire
Back Door Man
I Looked At You
End of the Night
Take It As It Comes
The End

Bonus Tracks:
Moonlight Drive
Moonlight Drive
Indian Summer

Book Review: Rails Cookbook by Rob Orsini

by T. Michael Testi ( , PhotographyToday, ATAEE)

Rob Orsini opens his book Rails Cookbook by saying that Ruby on Rails has revolutionized the process of developing web applications and has enabled web developers to become much faster and more efficient, which allows for quicker application development. It is my opinion that the O'Reilly Cookbook series has done the same for software development. The fact is that it allows developers to become faster and more efficient, which allows for quicker development by providing time tested tricks and pearls of wisdom; exactly what you need when you need it.

Rails Cookbook is meant for someone with web development skills, but who may be new to Rails. It is also for those who are trying to learn new techniques in Rails and want a clear, concise method to learn it without having to read an entire book. In this cookbook there are over 170 recipes broken into 15 chapters. Together they provide a wide range of solutions that will help you test, debug, and improve your application.

In "Getting Started" you will learn how to install, update and set up version control with Subversion. "Rails Development" will show you how to begin development in Rails by creating a rails project and introducing other add-ons to make development more efficient.

"Active Record" shows you how to set up a relational database to use with Rails as well as working with the concept of Active Record which allows you to define the logic of your domain model using Ruby. "Action Controller" teaches you how to handle the incoming requests and how they hand off each request to a particular action. "Action View" completes the triumvirate of the Model-View-Controller (MVC) pattern by showing how the data is presented to the user.

"RESTful Development" explores the Rails world of building full-featured web services within the Rails environment. "Rails Application Testing" shows how being proactive in the approach to testing comes by writing the tests before you write the code - by thinking about what the code should not do, then creating a test to make sure that it doesn't.

"JavaScript and Ajax" ensures that the power of Rails makes it easy to deal with JavaScript and Ajax as well as some of the common effects that you can achieve using them. "Action Mailer" shows you how to set up an application to send emails as well as responding to incoming emails. "Debugging Rails Applications" will help ease the pain of debugging an application. You will learn of the many powerful tools that Rails gives to you to combat bugs.

"Security" covers things like SQL injection and Cross-Site Scripting (XSS) as well as securing ports. "Performance" will help you diagnose speed problems using HTTPerf to measure your web server performance, benchmark your code, and help you figure how best to work with page caching. "Hosting and Deployment" gets you over the hump of deploying a Rails application.
"Extending Rails with Plug-ins" shows you how to extend your Rails application by installing third-party software to accomplish tasks that the Rails framework was not designed to handle. Lastly, "Graphics" will help you to upload, store and display images using a database as well as aid in generating PDF files from a variety of source data.

Rails Cookbook will guide you through the traps and pitfalls of Rails development by providing you with the building blocks of source code to make any Rails application complete. The book will be an essential addition to your programming library.

Music Review: John Mayall and the Bluesbreakers - In The Palace Of The King

by T. Michael Testi ( , PhotographyToday, ATAEE)

What can you say when a blues musician does a tribute to a legendary guitarist; in this case Freddie King, the bluesman from Texas? When they do it well, you can admire it, when it comes from the legend-maker, it becomes something to be truly treasured!

Spanning a career of five decades and creating the careers of hundreds of musicians over the last four decades, John Mayall, along with the Bluesbreakers, is putting out his 56th album this week. In The Palace Of The King is a tribute to the late Freddie King (1934-1976).

According to his first successful student, Eric Clapton, "John Mayall has actually run an incredibly great school for musicians." Some of his later pupils include Peter Green (Fleetwood Mac), John McVie (Fleetwood Mac), Mick Fleetwood (Fleetwood Mac), Harvey Mandel (Canned Heat), Kal David (Kal David Band), Aynsley Dunbar (Journey, Frank Zappa, Jefferson Starship David Bowie), Andy Fraser (Free), Larry Taylor (Canned Heat), and Mick Taylor (Rolling Stones).

It is only fitting that Mayall and company do this kind of album since they have been associated with the music of Freddie King from the beginning. According to Mayall, "So, it was a logical step for the band to record an album of songs written by him or closely associated with him". And from one of the songs on the album, "He was a big man from Texas, He played an even bigger guitar. He was the king of the Kings, born to be a superstar."

There is not a bad song in the bunch. They range from Don Nix's "Going Down"; probably the best known song, with a hefty back beat and furious bass to "Palace of the King" written by Nix, Leon Russel and Donald "Duck" Dunn, the energetic blues-rock ditty that has Mayall powering an upbeat vocal.

There are slow mercilessly powerful songs like "Help me through the Day" with its deep horns and sad emotion. And Mayall's original, "Time to Go" with smooth guitar leads playing off the sax and horn sections.

As far as a little more honky-tonk feel, you have "You know that you love me" and "I Love You More Every Day", and Mayall's other original "King of Kings". Here he provides a cacophony of piano leads trading into guitar leads which trade into sax leads.

At 73, John Mayall is still going strong with no sign of slowing down anytime soon. With the release of In The Palace Of The King, John Mayall and the Bluesbreakers will be kicking off their 2007 international tour to support the album. If you can get to one of the numerous dates, then by all means get out to see this legend and master; the godfather of British blues. If you can't, then buy In The Palace Of The King, you will be glad you did!

In The Palace Of The King song listing

You Know That You Love Me
Goin' Down
Some Other Day, Some Other Time
Palace Of The King
I'd Rather Be Blind
Time To Go
Big Legged Woman
Now I Got A Woman
I Love You More Every Day
Help Me Through The Day
Cannonball Shuffle You've Got Me Licked
King Of Kings
Living On The Highway

Book Review: Programming WCF Services by Juval Löwy

by T. Michael Testi ( , PhotographyToday, ATAEE)

Windows Communication Foundation (WCF) is a software development kit for developing and deploying services on Window. WCF, previously codenamed "Indigo," is a communication system to enable applications, in one machine or many machines connected by a network to communicate. It has been introduced as part of Microsoft's .NET Framework 3.0.

WCF is really a lot of things to a lot of people. To the Web Service developer, it is the ultimate interoperability solution. To the distributed application developer, it is the easiest way to make remote or queued calls. To the systems developer, it is the next generation of productivity-oriented features such as transactions and hosting that provide off the shelf plumbing for applications. To the Application developer, it is a declarative programming model for structuring the application. To the architect, it is how one can finally build service-oriented applications (SOA).

A WCF Service is composed of three parts: a Service class that implements the service to be provided, a host environment to host the service, and one or more endpoints to which clients will connect. All communications with the WCF service will happen via the endpoints. The endpoints specify a contract that defines which methods of the service class will be accessible via the endpoint; each endpoint may expose a different set of methods.

Programming WCF Services will teach you how to design and develop SOA-WCF-based applications. You will learn how to take advantage of built-in features such as service hosting, instance management, disconnected queue calls and security. Programming WCF Services breaks down into ten chapters and three appendixes. You will need to be an experienced developer who has a fair understanding of .NET and C# 2.0. You will need .NET 2.0 and Visual Studio 2005 as well as the .NET 3.0 SDK and .NET 3.0 extensions for VS 2005.

Chapter one, WCF Essentials, begins by explaining what WCF is, its concepts and building blocks. It then concludes with I discussion of the WCF architecture which is really the whole key to everything that is enabled through the remaining book. If you are unfamiliar with SOA, then you should read appendix A, An Introduction to Service-Orientation.

Chapter two, Service Contracts, is geared for describing how to design and work with service contracts. You will learn how to design and factor contracts that cater to reuse. Chapter three, Data Contracts, is dedicated to how the client and service can exchange data without ever actually sharing the data type itself or using the same development technology.
Chapter four, Instance Management, deals with answering which service instance handles which client's request. It provides the rationale for each of the instance management modes. Chapter five, Operations, works with the types of operations that clients can invoke on a service and the related design guidelines you will need to handle.

Chapter six, Faults, explains how services report errors and exceptions back to their clients. It also discusses the best practices of error handling and how you can extend and improve the basic error handling mechanism. Chapter seven, Transactions, covers the motivation for transactions in general as well as the many transactional services.

Chapter eight, Concurrency Management, describes the declarative way WCF offers for managing concurrency and synchronization for both client and service. Chapter nine, Queued Services, shows how your clients can queue up calls to services, thus enabling asynchronous disconnected work. Chapter ten, Security, demystifies SOA security by breaking down this multifaceted task into its basic elements.

Appendix A, Introduction to Service-Orientation, will give you the background needed to understand the overall concept of this book and to expand to a more detailed description of SOA and how to implement it. Appendix two, Publish-Subscribe Service, presents the authors framework for implementing a publish-subscribe event management solution. Appendix C, WCF Coding Standard, is a consolidated list of all the best practices along with the do's and don'ts to help you get off on the right foot.

A couple of points about Programming WCF Services, first, this isn't a beginners book; the author dives down into advanced material in spots almost without notice. If you are uncomfortable with this you may want to start with a more basic attempt first, whether from the web or from another book. That being said, if you want to become proficient using WCF, you will be buying this book eventually. You will find that this book will become both a reference as well as well as a guide.

The book is well thought out and presented. Löwy places the focus on the how and why of programming WCF without the hype of the technology. He gives you information that is not readily available anywhere else, and has given well engineered examples that will provide you the correct methods of working with WCF.

If there was one thing missing to this book is a contextual reference for existing users of previous distributed technologies. That is background on how this relates back to Web Services, Remoting, COM etc. All pretty minor overall.

If you are serious about getting on the next wave of distributed SOA and Interoperability, then Programming WCF Services will take you to the next level. The book is filled with examples and will guide you along until you are creating professional WCF services. If you want to go to the next level of WCF then Programming WCF Services is a great place to get started.

Book Review: Webbots, Spiders and Screen Scrapers by Michael Schrenk

by T. Michael Testi ( , PhotographyToday, ATAEE)

According to the Michael Schrenk, the internet is bigger and better than what a mere browser allows. Webbots, Spiders and Screen Scrapers was written to show you how to take advantage of the vast resources available on the internet. When you are regulated to the world of a browser, you are limited in what is available to you. Webbots, Spiders and Screen Scrapers goal is to open up the Web and enhance you online experience.

What is the problem with browsers? It is a manual tool that downloads and renders websites. You still need to decide if the website is relevant to you. Your browser cannot think. It cannot anticipate your actions and won't notify you when something important happens. To accomplish this, you will need the automation and intelligence only available in a webbot; also known as a web robot.

Webbots, Spiders and Screen Scrapers contains 28 chapters that break down into four sections. I will focus on the four sections highlighting the chapters as needed. What you will need to work with this book is a fundamental understanding of HTML, and how the internet works. It should be known that this book is not going to teach you how to program, or how things like TCP/IP; the protocol of the internet work. Pretty much any kind of Pentium computer running Windows, Linux or Mac operating system will do. You will also want to get PHP, cURL and MySQL, all of which are free on the internet. Again, this book will not teach you how to use these products, but rather use these products to teach you how to create webbots, spiders and screen scrapers.

Part one, "Fundamental Concepts and Techniques," introduces the concepts of web automation and explores the elementary techniques that will allow you to harness the resources of the web. It begins by explaining why it is fun to write webbots and how writing webbots can be a rewarding career. It tells where you can get ideas for webbot projects and talks about existing as well as potential webbot projects. You will learn how to download web pages, parse those pages, automatically submit forms, and how to manage large amounts of data. All of these topics will set you up for the rest of the book.

Part two, "Projects," expands on the concepts that you learned in part one. According to the author, with further development, any of these projects could be transformed in to a marketable product. The projects include; Price-monitoring webbots where you can collect and analyze online prices from any number of websites. There is an image-capturing webbots that will download all of the images from a website as well as a Email reading an email sending webbot. All in all there are eleven projects included in part two.

Part three, "Advanced Technical Considerations," explores the finer technical aspects of webbots and spider development. Here the author shares some hard learned lessons while teaching you how to write some specialized webbots and spiders. Here you will learn about spiders; a webbot that finds and follow links both within a website as well as those that crawl along the web searching out specific information. You will learn how to create snippers; webbots that automatically purchase items from places like auction sites when a specific set of criterion has been met. You will also find out how to deal with cryptography, authentication and scheduling.

Part four, "Larger Considerations," advises you on being socially responsible with your webbot development. Webbots need to coexist with not only society, but with the system administrators of the sites that you target. You will learn how to create webbots with stealth; webbots that look like normal browser traffic. You will also learn how to write fault tolerant webbots. Because the web changes constantly, your webbots will need to handle these changes. You will also learn how to create webbot friendly websites, writing pages that can be made secure from other spiders to protect sensitive data and how to keep your own webbots out of trouble.

Webbots, Spiders and Screen Scrapers is a great book for learning about webbots and spiders and how they work on the web. It will introduce you to a wide variety of topics via the projects and you will be able to understand how the different technologies work.

I have one main complaint and one warning. First the complaint, in chapter 27, "Killing Spiders," we are told about robots.txt which is meant to keep spiders from trampling sensitive pages. Then we are told that we really shouldn't use them because that the use of Robots.txt is strictly voluntary, and that it might alert others to where the sensitive material are. I felt confused. If I don't use a robots.txt, other webbots will be trampling my site and if I do use it, I leave my self open for attack.

The warning begins on page four: "You may use any of the scripts in this book for your own personal use, as long as you agree not to redistribute them... and agree not to sell or create derivative products under any circumstances." This is total contradictory to what the author says on page 75; "Any of these projects, with further development, could be transformed from a simple webbot concept into a potentially marketable product." I'll leave it to you to determine what he means.

Webbots, Spiders and Screen Scrapers, is a great book for the beginner to intermediate user of PHP and for someone who wants to get into web agents. It is a good overview and tutorial on the topics of webbots, spiders and screen scrapers and will have you understanding and programming them in no time.

Thursday, May 10, 2007

Book Review: Build Your Own Web Site The Right Way Using HTML and CSS by Ian Lloyd

by T. Michael Testi ( , PhotographyToday, ATAEE)

Trying to create a web site can be a pretty daunting task, especially if you have never done it before. When my son's swim team asked me to do theirs, I was a bit intimidated. I was a application programmer and I had worked on some website stuff, but the web is a different beast. The questions were many: what tools do I need? how do I layout my pages? do I use tables? HTML tags to directly apply formatting?

One could use FrontPage or a similar product to automatically generate the web site, but that was never my style. I would have to go old-school. I wish I would have had Build Your Own Web Site The Right Way back then.

Build Your Own Web Site The Right Way is geared for the absolute beginner to web site design. However, you should be comfortable with a computer, you should use the web a lot, have seen a lot other sites, have a good grasp on what you want for your own site. HTML stands for HyperText Markup Language and it is the language that generates web pages. CSS stands for Cascading Style Sheets and it is what is used to format those pages.

Build Your Own Web Site The Right Way is set up into eleven chapters and an appendix. Chapter 1, "Setting up Shop," explains what tools you will need to get going. While you can buy tools to use, the author shows you how you can also get them for free.

Chapter 2, "Your First Web Pages," will teach you what makes a web page. You will learn about XHTML — the latest version of HTML — and about the basic requirements for creating a properly formed web page.

Chapter 3, "Adding Some Style," will introduce you to CSS. You will learn how to apply CSS to add color, change fonts, and generally improve the appearance of your page.

Chapter 4, "Shaping up with CSS," builds on chapter three to teach you about border styles and more advanced page layouts. You will even learn how to position elements using CSS.

Chapter 5, "Picture this! Using Images on your Web Site," teaches you all about image. You will learn about inline images, background images, as well as learning how to make images accessible for your blind surfers.

Chapter 6, "Tables: Tools for Organizing Data," will show you when it is proper to use tables, and especially when they should not be used. You will learn how to use CSS to make your tables more visually appealing.

Chapter 7, "Forms: Interacting with your Audience," will teach you about the proper use of forms to collect data from your user. Lloyd also shows how to use a free service to have data emailed to you!

Chapter 8, "Getting your Web Site Online," is all about getting your site hosted, uploaded, and presenting it to the world. Here the pros and cons are examined to see what approach will be right for you.

Chapter 9, "Adding a Blog to your Web Site," will show you how to do just that: create your own blog. You probably have an idea of what a blog is; a way to interact with other people. Whatever you think about this review, you can tell me in the comments. If you think I should have said more, or didn't like something that I said, you can tell me. I can then turn around and respond. Neat stuff!

Chapter 10, "Pimp my Site: Cool Stuff you can Add for Free," will have you spicing up your site with carefully executed cosmetic touches that won't break the bank.

Chapter 11, "Where to Now? What you Can Learn Next," will summarize the skills that you have learned as well as to provide a listing of sites that can take you to the next level.
The Appendix is an XHTML Reference guide that provides information on the elements that you are likely to use.

What I like about Build Your Own Web Site The Right Way is its quick and easy pacing, subtle humor, and straightforward manner. While this may be a beginners book, even the more seasoned of us learned, or perhaps I should say un-learned, quite a number of things along the way.

Book Review - SQL Hacks by Andrew Cumming and Gordon Russell

by T. Michael Testi ( , PhotographyToday, ATAEE)
SQL Hacks works well because of the fact that it does what it says. It hacks. It gets in to SQL and shows you how to do things that you would have to, in many cases, search for hours to find out how to accomplish. This is not for the beginner, rather these books target more experienced users.

It is a collection of 100 hacks that, according to the authors, will help you to “get the job done”. They are not concerned with good database design or sticking to the rules. Their goal is to give you a better understanding of the breath of SQL and how different approaches to a solution can result in simple and elegant solutions.

This is titled SQL Hacks, because the authors have worked to make this volume and vendor/platform independent as possible. When there are differences, they take the time to reference back to SQL Server, Oracle, MySQL, PostgreSQL and MS-Access when applicable.
While it would be time-consuming to list more than a few hacks, to give you an idea of the scope of the book, I will illustrate a few. There are some simple ones such as number 15 "Search for Keywords Without LIKE". Using the keyword LIKE will give you matches where an exact match is found. But what if you wanted to search for partial matches with a resulted weighting for the matches? Hack number 15 gives it to you. Since each of the major SQL systems do it differently, the authors show you how to do it with each of them.

A more complex Hack is number 41; "Copy Web Pages into a Table". Here the authors spend almost seven pages showing you how to use XSLT processing to take a web page and extract the data you require and insert it into a SQL Database.

The book is broken in to 12 chapters as listed below.
Chapter 1, SQL Fundamentals (6 hacks)
Chapter 2, Joins, Unions, and Views (8 hacks)
Chapter 3, Text Handling (4 hacks)
Chapter 4, Date Handling (5 hacks)
Chapter 5, Number Crunching (17 hacks)
Chapter 6, Online Applications (8 hacks)
Chapter 7, Organizing Data (9 hacks)
Chapter 8, Storing Small Amounts of Data (6 hacks)
Chapter 9, Locking and Performance (13 hacks)
Chapter 10, Reporting (13 hacks)
Chapter 11, Users and Administration (7 hacks)
Chapter 12, Wider Access (4 hacks)

To me, SQL Hacks is the classic reference book that you need to keep on the shelf, close at hand for those little jobs that come up and just need to get done. It also serves the purpose of giving you new ideas for solutions that perhaps, you may have thought could not be done.

Audio Book Review - Rogue Angel: Destiny by Alex Archer

by T. Michael Testi ( , PhotographyToday, ATAEE)

When I first heard about Rogue Angel: Destiny being a graphic audio book I, was skeptical. I have been listing to audio books for over five years now. I average between 30 and 50 per year and I know what works and what doesn't. When I saw the tag line "A Movie In Your Mind", I mean really, who do these guys think they are. It’s an audio book! A movie in your mind, get real!

Boy was I ever wrong. Simply put, this was probably the best-produced audio book I have ever listened to. Period! That is after listing to well over 2-300 audio books. In some ways this is akin to listing to some of the old radio dramas from the golden age of radio. Now if you think of the old radio shows as being like "Buck Rogers in the 25th Century", well this is like "Star Wars" in comparison.

In Rogue Angel: Destiny, you have a narrator who is basically reading the main storyline. When dialog comes in you have actors filling the different voices. This much I have heard in other audio books and many times I have shied away from them because, in my opinion, it becomes a distraction. Here it really enhances the story.

The real power and effect come from the sound effects and background music that encompasses the story and gives it its movie-like quality. It is not the cheesy sound-effects that you may be use to in the old radio shows; rather these are professional quality sounds that you would hear in a movie. When someone falls, gets kicked, or is shot, it really feels like you are there. When the goat gets its neck sliced in the ritual, you hear the screams. (I do not, however, believe that any goats were injured in any way in making this book.)

Now to the actual story; Rogue Angel: Destiny is about Annja Creed, a 20-something archaeologist and explorer who works for a show called "Chasing Histories Monsters" to earn money to do more serious archaeology work. Her fascination with the myths and mysteries of the world lead her in search of the Beast of Gevaudan, a legendary wolf-like creature that killed between 60 and 100 people in the 18th century.

What she discovers is an artifact that will seal her destiny; a brotherhood of monks who are willing to murder to protect their secret; a black market occultist who wants to find millions of dollars in centuries-old blood money and a couple of shadowy figures - she is not sure if they want to help or kill her.

I try to pull myself back and separate the story from the performance, so the latter is not influencing the former. From that stance, I think that this is a good story. Obviously this is the first in a series and, to me, for a series to be good you have to have a minimum of two things; characters that you like, and a story line that both makes sense and is interesting.
Rogue Angel: Destiny has both interesting and likable characters in Annja, Roux and Garin. I assume (and hope) that they will be regulars, since their lives are intertwined together. And the story line is both interesting and informative. It contains historical data, interesting settings and cultural characteristics that give the story more realism.

A couple of minor points with the production were that two or three times when the background music and the sounds were a little louder than they should have been. You could still hear the narrator, but it took you out of the moment a little bit.

One other point, this story is rated for mature content. They make it very obvious on both the front and the back of the packaging. At least in this story, it is for all the violence and graphic gore that takes place. I commend the company for pointing this out in advance.

The quality of the story and performance are the reason that I will be coming back for the next Rogue Angel, due out in March of 2007. I will also be checking out some of their other series as well. If you want you can down load of MP3 excerpt, or purchase the GraphicAudio Book from their on-line store. The story comes three ways; standard CD, MP3 CD (the version I reviewed) and downloadable WMA with digital rights management.

Tuesday, May 08, 2007

Book Review: XQuery by Priscilla Walmsley

by T. Michael Testi ( , PhotographyToday, ATAEE)

As increasing amounts of data are stored, processed and exchanged using XML, the ability to access that data in an efficient, organized, and streamlined manner becomes ever so necessary. In the traditional data world, the standard is by using a SQL query, and as of January 2007 in the XML world, we officially have XQuery.

Written by Priscilla Walmsley, XQuery is for query writers who are familiar with XML basics, but perhaps not skilled in other XML-related technologies. It is both a tutorial as well as a reference book. It covers namespaces, schemas, built-in types and regular expressions. It also covers XQuery's support for filtering, sorting, and grouping data as well as how to use FLWOR expressions, XPath and XQuery tools for extracting and combining information.

While the book breaks out into 25 chapters and three appendixes, I will break it down in to its six functional areas. The book is approximately two-thirds's tutorial and one-third reference. It uses a running example that reflects many XML structures.

Chapters 1-2 are a high level overview of XQuery. In these chapters the author goes through what XQuery is, what it can do and lays out the example structures that will be used thought the book. She explains the design of the language as well as the data model.

Chapters 3-9 explore how to write fairly sophisticated queries with out using namespaces and schemas. Here she gets in to the building blocks that will be used to create your queries; that is, things like keywords, whitespace, function calls, and variables. You will learn to navigate input documents using paths, adding elements and attributes to results, selecting and joining using FLWOR's expressions, sorting and grouping, as well as advance queries.

Chapters 10-15 provide advanced concepts for those who want to take advantage of modularity. You will also look at XML namespaces, types, nodes and atomic values as well as learning about queries, prologs, and modules. You will get into schemas, static typing and the overall principles of query design.

Chapters 16-23 introduce advanced concepts for those who want to work with specific types of data, like numbers, strings, dates, URI's and processing instructions. There is discussion on working with other XML components such as documents, text nodes and CDATA as well as implementation -specific features such as serialization parameters.

Chapters 24-25 describe XQuery's relationship to SQL and XSLT by comparing SQL syntax with XQuery syntax and showing how to combine the two when it would be advantageous. The author also goes into XPath and XSLT and how they compare to XQuery.
There are three Appendixes; A which contains a built-in function reference, B covers the built-in types, and C provides a listing of error messages.

There is a lot of information contained in XQuery and it is obvious that Priscilla Walmsley both knows her topic, and is quite clear, concise and well versed on presenting the information in a logical style. While the book is aimed at the XQuery novice, it's usefulness as a desk reference makes it one of those books that you get to learn the topic, but keep forever.

Book Review - Linux System Administration by Tom Adelstein & Bill Lubanovic

by T. Michael Testi ( , PhotographyToday, ATAEE)

Geared for the Linux pro or UNIX administrator, Linux System Administration was written to provide advice to manage a complete range of systems and servers. The authors were amazed at how many Linux users, for example, could not write a configuration file. Thinking there were many people who might want to learn of the extensive capabilities of Linux as an application platform, they wrote this book.

Linux System Administration is divided into 11 chapters and an appendix. Each chapter is a module in and of itself so that if you want to learn how to accomplish a specific task such as administering Apache, you can jump into chapter 6 and get going without having to muddle through the first five chapters.

Chapter 1, "Requirements for a Linux System Administrator," lays out the goals for the book and what you will accomplish by reading it. You will learn where to start, who needs you, and what system managers should know about Linux. Chapter 2, "Setting up a Linux Multifunction Server," will guide you through the system requirements, installation, how to login remotely, and how to configure the network. You will also learn how to configure mail, FTP services, and set up MySQL server.

Chapter 3, "The Domain Name System," gives you all the information on setting up the DNS server. By the time you are done with this chapter, you will understand installation, configuration, as well as be able to maintain and trouble shoot a server for any domain that you register. Chapter 4, "An Initial Internet-Ready Environment," will show you how to, by using ISPConfig, build a multifunctional, working internet server from a single, downloadable application. This will allow you to manage websites, perform email and file transfers all from a graphical interface.

Chapter 5, "Mail," explores how to build an email service for small to medium sites. You will use the Postfix server as the SMTP mail transfer agent, POP and IMAP to deliver your mail, and SASL for authenticating you mail. Chapter 6, "Administering Apache," introduces the Apache web server. You will learn how to install, configure, and administer Apache, PHP, and MySql server, as well as how to manage multiple websites, test for performance, and monitor statistics.

Chapter 7, "Load-Balanced Clusters," teaches you how, by using a group of loosely coupled computers that work together closely as though they are a single computer, you can improve speed, reliability, and scalability at a reasonable price. Chapter 8, "Local Network Services," gives you the information you will need to manage a host behind a firewall or gateway of a company. This will help you fix the things critical to your organization that really matter.

Chapter 9, "Virtualization in the Modern Enterprise," addresses an explosive growth area within the Linux community. It refers to one piece of hardware running multiple kernels on top of a lower layer of software which manages the access to the hardware. Chapter 10, "Scripting," shows you the ropes around creating and running scripts. These are the little time saver programs that you will create to perfume mundane repetitive tasks for things like service and processor management.

Finally, Chapter 11 finishes up with "Backing up Data." This is all about the things that you need to do when your system crashes. It will happen, and you will be prepared by using the tools provided here.

What I personally like about this book is that it can be digested a chapter at a time. Granted you need to be somewhat versed in Linux, UNIX, or even Windows Server background; that said, Linux System Administration will give you the tools you need to become a better administrator.

Book Review - Ruby Cookbook by Lucas Carlson and Leonard Richardson

by T. Michael Testi ( , PhotographyToday, ATAEE)

In the Ruby Cookbook preface, the authors begin by saying "Life is Short." Following with, and I paraphrase, "This book is meant to save you time… but a span of time is also a piece of your life. Our lives are better spent creating new things than… trying to solve problems that have already been solved." The authors hope that by writing this book, they can save you much more of your time than they spent creating the book. As has been my experience with the Cookbook series, their hope is well founded.

Ruby Cookbook is geared toward those who have some experience with Ruby or those who have a strong general background in other programming languages and are wanting to learn Ruby. If you are familiar with a number of programming languages, studying through the first ten chapters should get you up to speed quite nicely.

Ruby is an object-oriented scripting language that originated from Japan. It takes some of the best features from some of the best languages and combines them to make a simple and easy to use yet powerful system for processing tasks. It is freely available as open source software and is available on many platforms including Windows, Mac OS X and Linux.

The Ruby Cookbook contains 23 chapters broken down into loosely six functional areas; Data Structures, Idiom and Philosophy, Storing Data, Applications, Programming Techniques, and Miscellaneous Techniques. You won't find these titles explicitly listed in the book, but for organization (and so I don't have to step through each chapter) I will present, my discussion using them. Each recipe begins with a problem statement. It then follows up with the solution so if you want, you can be done and get on with your life. There then is a discussion if you want to learn more about the solution. It ends with a "See Also" which will give you addition information if the discussion is not enough.

In data Structures (chapters 1 thru 6), the authors cover the built in data structures used by the Ruby language. They cover strings, numbers, dates and time, arrays, hashes, files and directories. These deal with strict algorithmic problems. Some are as simple as 1.10's "Changing the Case of a String", some are more complex such as 4.15's "Partitioning or Classifying a Set" in which you want to partition an array based on some attribute of its elements.

Idiom and Philosophy (chapters 7 thru 10) covers items that you may encounter when you cannot get the Ruby language to do what you want. You will learn things like iteration, blocks and callbacks. You will explore objects and classes, working with superclasses and abstract methods, modules and namespaces as well as reflection and metaprogramming.

In Storing Data (chapters 11 thru 13) you will focus on how to work with three popular forms of data storage; XML, HTML, graphics and database. You will extract data from a tree structure, convert from one encoding to another as well as convert an HTML Document to a text document. You will learn how to thumbnail images, present graphing data as well as generate PDF files. You will work with YAML, MySQL, and Berkley DB as well as learning how to prevent SQL Injection attacks.

Applications (chapters 14 thru 16) will explain how to work with internet services, web development and web services. Here you will explore sending/receiving mail, working with FTP and CGI. They explain working with Ruby on Rails development as well as interacting with sites such as Amazon and Flickr. They will show you how to creat a jukebox, a whiteboard and how to charge a credit card.

Programming Techniques (chapters 17 thru 19) tend to auxiliary tasks of programming such as testing, debugging, packaging and automating tasks. You will be shown how to create and run unit tests, how to use external resources and how to profile your application. You will learn how to package and distribute your Ruby application as well as automate tasks with Rake. Miscellaneous Techniques (chapters 20 thru 23) complete the package with items such as multitasking/multithreading, user interface, extending Ruby and system administration.

Will you have need for all 300 plus recipes in this cookbook? Probably not…today, but perhaps soon! With over 800 pages, there is something for everyone.

Music Review: James Blood Ulmer - Bad Blood In The City: The Piety Street Sessions

by T. Michael Testi ( , PhotographyToday, ATAEE)
Following up on his 2005 release Birthright, the CD that was embraced by the music world as one of the most important blues records of the year, James Blood Ulmer is releasing Bad Blood In The City on May 8th 2007. As much as I loved Birthright for its "…blues at its finest", I like this album even better.

Bad Blood In The City was made in New Orleans, about New Orleans. It's about Katrina and the after effect to the people of New Orleans; especially the disenfranchised. Why now? Katrina is almost two years past and the city is coming back, they had football back last year, basketball is coming back this next year. The city is rebuilding and growing out of the ashes.
According to producer Vernon Reid, "For me, it seems more important to record this music now than right after Katrina. With the media no longer focused on it, this is when the tragedy starts slipping to the backs of our collective memories, but we can't forget what happened down there." Ulmer did write the majority of the songs from Bad Blood In The City during the days following Hurricane Katrina; while he was still promoting Birthright.

In December 2006, Ulmer and the Memphis Blood Blues Band entered the Piety Street Studios. The band consists of Vernon Ried on guitar, Charlie Burnham on fiddle, David Barnes on harmonica, Leon Gruenbaum on keyboards, Mark Peterson on bass and Aubry Dayle on drums.

Bad Blood In The City contains eleven songs, five of which are Ulmer originals. The sessions start with "Survivors of the Hurricane" performing a complex painting of the disaster that was Katrina. With a Clavinet grove and Vernon Reid's explosive guitar work matching Ulmer's biting lyrics "..they called themselves heroes for doing their jobs." This is a masterpiece!

When I first heard "Sad Days, Lonely Nights", the Junior Kimbrough tune, I was not sure if I liked it at first. It kept calling me back to give it one more listen and one more listen until I realized it was the hypnotic quality that kept calling me back like a siren's wail. "Katrina", is a biting commentary on the fact that the "rich and able" left the poor to fend for themselves. The track was cut in the dead of night and biting edges shows its gnarly teeth.

"Let's Talk About Jesus", is a wonderful gospel blues piece that really kicks it up a notch. Adding Irene Dasher, the voices blend in an old time harmony. Then, they do a rendition of John Lee Hooker's "This Land is Nobody's Land". This he turns into a modern day social statement. This is followed by Willie Dixon's "Dead Presidents". This provides a brief respite with its jumping rhythms and playful rhymes.

We are back to business with Howlin' Wolf's, "Commit a Crime" followed by Son House's "Grinnin in Your Face". Both interpreted in Ulmer style, power and fury. "There is Power in the Blues", Ulmer, one who is known to challenge the preconceived notion that the blues is a predetermined style, "uses the concept of the blues to feel our way around" with this song.
"Backwater Blues" is Ulmer's most traditional interpration of a classical blues number on the album. The CD closes out with "Old Slave Master", an Ulmer original that brings us back to the start.

Recognized as an elder statesman of the blues, Ulmer continues to define and redefine both himself and the brand of blues that he creates. Bad Blood In The City is a pivotal piece in that definition. As good as Birthright was, I think that Bad Blood In The City exceeds those heights.

There is a recording of James Blood Ulmer and Alison Krauss performing at Radio City Music Hall which shows the power in Ulmer's renditions. This can be found at YouTube.

"Bad Blood In The City" song listing

Survivors of the Hurricane
Sad Days, Lonely Nights
Let's Talk About Jesus
This Land is Nobody's Land
Dead Presidents
Commit A Crime
Grinnin' in Your Face
There is Power in the Blues
Backwater Blues
Old Slave Master