Profile for Michael Larsen > Reviews

Personal Profile

Content by Michael Larsen
Top Reviewer Ranking: 55,492
Helpful Votes: 54

Learn more about Your Profile.

Reviews Written by
Michael Larsen (San Francisco, CA United States)

Show:  
Page: 1 | 2
pixel
The Tangled Web: A Guide to Securing Modern Web Applications
The Tangled Web: A Guide to Securing Modern Web Applications
by Michal Zalewski
Edition: Paperback
Price: £32.50

3 of 3 people found the following review helpful
5.0 out of 5 stars Getting a Handle on Web Browser Security, 9 Jan 2012
Book Review: The Tangled Web: A Guide to Securing Modern Web Applications

The web came together from many points of interest, and its open and free for all nature is both a blessing and a curse. It's a blessing in that the barrier to creating software to run on the web is very low (at least in its origin). A dizzying array of products, services, browsers, and other technologies has sprung up to make the experience more entertaining, engaging, and create one of the worlds most pervasive communications mediums. It's a curse in that with all of those varied (and competing) approaches, the ability to exploit and subvert the web is also relatively easy. We all agree that we want a more secure web. The big question is "how can we make that a reality?"

Michal Zalewski's provides an answer in "The Tangled Web". As a software tester, I this book is a well-spring. It shows the vulnerabilities that browsers have, and it gives an excellent walk through of potential exploits that testers can add to their plan of attack.

Michal starts out by giving us a tour and history of how we got where we are today, as well as a walk through the basics of URL encoding, HTTP requests, cookies, HTML and CSS, Server and Browser Side Scripting (in all its various flavors). The variety of browser plug-ins that allow users to make their browsers more extensible and do things that go well beyond the traditional HTTP model of transactions is also covered (ActiveX, anyone?). This has not been a straight line of innovation, and it hasn't been done in the spirit of collegiality. In may ways, it's this lack of camaraderie that has led us to the situation we are in today; too much finger pointing and not enough mutual collaboration can be said to be the reason the web is much less secure than it potentially could be.

You could be forgiven if you think this section is just a rehash of basic Web Info 101, but you would be wrong. In each section, Michal shows some interesting inconsistencies, and ways that miscreant users can take advantage of them (Unicode manipulation to display completely logical looking URLs but be totally different due to using Cyrillic alphabet characters? I'll admit *I* never thought of that one; it's a phisher's dream!).

Part II focuses on Browser Security Features, i.e. those features in various browsers that are actually designed to help users (and developers) make sure that they are hindering the ability of rogue apps to cause mischief. Michal explores the vagaries of Content Isolation (the same origin policy being the most significant), Origin Inheritance (using URL's with data:, JavaScript: or about:), Frame Hijacking and Cross Domain Content Inclusion, following different security rules for Intranet vs. Internet usage, running services on non-standard ports, user generated content and files, and more explicit and aggressive forms of malicious use like Denial of Service attacks.

Part III focuses on some up and coming areas where web browser manufacturers are making feature distinctions with browser security as a legitimate selling point. Cross Origin Resource Sharing (CORS), Content Security Policy (CSP), HTTP Strict Transport Security (HSTS), in-Browser HTML Sanitization, and additional tweaks to modern browsers take center stage in this section. Many of these modifications are currently in play on some browsers but not others, and many are part of the HTML5 and CSS3 framework that is emerging. Michal makes the case that, while many of these schemes are somewhat effective, it would be wise to not let one's guard down and rely on these modifications on faith alone. Forewarned is forearmed. The section ends with a chapter dedicated to Common Web Vulnerabilities (and a good list of test areas for the aspiring penetration tester).

At the end of each chapter is a "Security Engineering" Cheat Sheet. Note that each of these suggestions can also be used as a "Security Deconstruction Cheat Sheet" as well. Any tester looking to expand on their penetration testing repertoire, or just expand their current Heuristic Testing models, would be well advised to look over each of these cheat sheets and see if, indeed, the sites and pages they are testing actually follow these directives, or if they don't.

Bottom Line:

This is not a book that you will be able to read in a single sitting and absorb everything that it contains, but it will make you sit up and think about aspects of web security you might never have considered before. This is in equal parts a wake-up call and a style reference. It sounds a much-needed alarm and shows us areas we take for granted way too often, and alerts us to issues we have likely never considered. If you're a developer, tester, or infrastructure implementer, you would be wise to read and then re-read The Tangled Web. In our ever-changing world and with our web sites and services becoming more complex rather than less, the advice in this book may well prove to be both timely and timeless.


A Bug Hunter's Diary: A Guided Tour Through the Wilds of Software Security
A Bug Hunter's Diary: A Guided Tour Through the Wilds of Software Security
by Tobias Klein
Edition: Paperback
Price: £23.39

5.0 out of 5 stars Software Security Made Relevant and Accessible, 5 Dec 2011
Begin Disclaimer.

While NoStarch Press gave me an early electronic copy of this book to review before the release date, I have no financial dealings with NoStarch Press or have any other financial ties to this book, it's author or any other entity. While I post reviews to numerous locations (amazon, linkedIn, etc), all reviews will originate on TESTHEAD first unless otherwise designated. Also, while I may abridge reviews for space considerations, I will not post "different" reviews in different sources. If you are curious about the total text for a review, the full review will always be on TESTHEAD.

End Disclaimer.

"A Bug Hunter's Diary" by Tobias Klein is, of course, going to pique the interest of just about any thoughtful tester who sees the title. Bug Hunting is what testers do, after all. Therefore, I feel it important to make a distinction known up front. The sub-title for A Bug Hunter's Diary is "A Guided Tour Through the Wilds of Software Security". Yep, this book is devoted to the "bugs" found related to software security exploits.

This is a fascinating sub-topic of software testing and one that doesn't get a lot of attention. Sure, we hear about the exploits. We hear about the black hat and the white hat hackers that identify them and then help determine how to close the issues (well, some do, there's others that actively "exploit the exploits"). Tobias aims to provide the tester interested in learning about how to test for security exploits; to be a "Bug Hunter" is the books focus and definition. Understanding the approaches used to help ferret out security vulnerabilities, testing the vulnerabilities, and reporting the vulnerabilities to the service provider and vendor, along with case studies for a number of bugs with interesting back stories makes up the bulk of the book.

Lots of people approach bug hunting for many reasons. Some do it for fame, some do it for fun, some do it for altruistic purposes, to help a company make a better product. Some do it for nefarious purposes, to steal information, money and sometimes both. Plain and simple, there's no one reason, but there's a common goal. Software systems are vulnerable. Even the big players with ultra tight security are vulnerable if the right attack is applied. Software testers by avocation are generally interested in this fact, an much can be learned by a tester by focusing on security vulnerabilities. There are two primary ways to find exploits in a system. One is knowing the source code and identifying it through the code paths. The other is the act of actively debugging or fuzzing the software while it runs. Static code approaches can come from reading the source code, if it's available, or through disassembly (which gets covered later in the book). The security vulnerabilities or exploits discussed in this book are mainly tied to memory errors. While there are others like SQL injection an cross server scripting, they are not the focus of this book, and thus are discussed in passing but not in depth.

The book starts out by introducing the reader to the idea of how to look for exploits in software, and that in many ways, gaining access to these exploits can give the user control of the operating system. The book then progresses to seven different case studies, ranging from media file players, system kernels and applications that run on the desktop or in a browser. There's even an iPhone exploit just to show that mobile is just as vulnerable to attacks as anyone else. Many of the methods that are described are definitely technical in nature (well, I should say that they feel technical to me, being that I'm not an active C coder), but even with that, Klein makes the process orderly and fairly easy to follow. You may not get the underlying code, but you understand the thinking process and the sequence of events that he is describing. Even if you are not an active coder or professional software developer, there is much to appreciate here and learn from.

Each chapter is formatted the same way:

The case studies each start with a "Vulnerability Discovery", which goes into the details of how Tobias was able to find the exploit, usually involving debugging code or in some cases reverse engineering objects. In each case, Tobias walks the user through the steps he took to find the issue.

The next section is "Exploitation", which describes how to demonstrate the exploit and show the process to confirm the exploit.

"Vulnerability Remediation" follows, and describes what the company dd to fix the exploit, and some tests to show if the exploit was fixed, or if there were still issues that required additional fixes.

The "Lessons Learned" section shows what software developers would need to consider when it comes to coding to avoid the issue described. It also shows users what they would need to consider when they are using these applications. This little section is a true piece of gold for testers, as it summarizes the areas that are possible issues, as well as avenues as testers we can explore.

The "Addendum" primarily shows how long it took from the discovery of the issue to the ultimate resolution of the exploit. Interestingly, many of the open source exploits were handled very quickly (within days in some examples) whereas larger corporate applications took considerably longer from initial discovery and reporting to when the issue was resolved.

Each chapter also has an extensive "Notes" section to show where to research areas discussed with each case study and URL's to tools used to discover the exploit and demonstrate it.

Appendix A walks the user through a number of different methods, in more depth than in the case studies, as to how to focus on bug hunting in the context of this book. Appendix A includes discussions of Stack Buffer Overflows, NULL Pointer Dereferencing, Type Conversion in C, and Global Offset Table (GOT) Overwrites. Appendix B discusses the various debuggers available to the user on various platforms (Windows, Linux, Mac, etc.). Appendix C discusses Mitigation. You've become more familiar with vulnerability exploits, not here's a chance to get into the various systems and understand what they do to help blunt the ability of exploits to affect your system.

Bottom Line:

A Bug Hunter's Diary is a great and focused glimpse into the world of vulnerability exploitation, and the approaches described will be of interest to a range of individuals. If you are a developer, you will learn a few new tricks as to how to harden your own coding style and applications. If you are someone interested in security, you will see the variety of ways in which software is vulnerable to attack. If you are a tester, you will gain an appreciation for the variety of techniques that can be used to find and exploit vulnerabilities (even if you are not a coder). Regardless of your background, Klein's book has something to offer anyone for whom software security has more than a passing interest.


The Book of Ruby: A Hands-On Guide for the Adventurous
The Book of Ruby: A Hands-On Guide for the Adventurous
by Huw Collingbourne
Edition: Paperback
Price: £21.23

2 of 2 people found the following review helpful
4.0 out of 5 stars A Good Reference for More Experienced Rubyists, 7 Oct 2011
Disclaimer: No Starch Press provided me a free copy for review.

First, I am a big fan of NoStarch titles. I like the way that they are organized and the way that the information is presented. In this classification, The Book of Ruby by Huw Collingbourne fits well into the publishing method NoStarch is famous for. It's a beautifully designed book, and the formatting and the prose itself is easy to follow. It's a good overall reference, and the format is helpful to find areas that are of interest quickly (this is a hallmark of pretty much all of NoStarch's books). In fact, I'd say the strongest element of the book is the NoStarch format and the ability to quickly find what interests you.

The books starts out well, with clear syntax and presentation of topics, you feel like you are on top of things. The problem comes with trying to work through the book as you go through the examples. There feels like a disconnect between chapters, and I personally felt it a little slow going, requiring resetting and rereading the chapters. I found that using it as a reference book on the given topics is the most effective, but it doesn't work as well as a continued narrative. To be fair I'm reviewing this from a perspective of being an "advanced beginner". This means I've read a few books on Ruby and have written a few programs, but don't use it enough yet to consider myself to be proficient, or for that matter even an intermediate user (though I use Cucumber fairly extensively and patch it with Ruby as needed). I think it's important to state where I am at so I can state why I'm scratching my head at some points.

While I think Huw's explanations work for most of the examples, there's just this nagging feeling that I'm missing something as I read through and work on them. I did like the "Digging Deeper" sections. These allow the author to go more in depth on a specific topic. I actually wish there were a few more of these in the book, but I appreciated the ones that were included.

Another area that I found disconcerting was that there was little emphasis on a consistent coding style. Yes, most languages allow for different stylistic approaches and indenting/not indenting isn't a huge deal, but it can be frustrating when comparing books from different sources. A consistent style would have helped me see patterns and perhaps not need to back-track and reread certain sections.

I think there are many good aspects of the book, and I think that there are many benefits. However, if a user were to pick up a single title to get started with Ruby, I'd probably steer them to "Learn to Program" from Chris Pine or "Learn Ruby the Hard Way". After reading those, I think The Book of Ruby would stand better as a supplementary text.


How to Reduce the Cost of Software Testing
How to Reduce the Cost of Software Testing
by Matthew Heusser
Edition: Hardcover
Price: £48.99

0 of 2 people found the following review helpful
5.0 out of 5 stars From the Trenches to the Boardroom, We Want To Help, 28 Sep 2011
As one of the book's authors (I wrote the chapter called "Trading Money for Time"), I had the pleasure of watching this book come together over several months and reviewing the chapters and having mine reviewed as well. I can honestly state that this book is unique in the software testing world. It is a book dedicated to reducing the costs associated with software testing, written from the perspectives of those who actually spend their time in the trenches doing the testing. Ranging from identifying the costs and their spheres, what we should do, and how we should do it, there are chapters that covers all areas of the business. This book is relevant to financial officers, executives, development managers, developers, test managers, and yes, even testers :).

Again, I have a very biased opinion here, so I will not mind if you take this review with a grain of salt. I will say that this book fills a very important place in your software development, software testing, business and finance library. We found it to be a labor of love to write this book. We hope you will read it in the same spirit in which it was written.


The Manga Guide to the Universe
The Manga Guide to the Universe
by Kenji Ishikawa
Edition: Paperback
Price: £12.99

1 of 1 people found the following review helpful
5.0 out of 5 stars A Whimsical Take on a Massive Topic, 20 Sep 2011
First and foremost, this is a fun title. It's fun because of course it's a manga, and usually manga titles are dramatic, silly, funny, poignant and ridiculous... often all at the same time. It's part o the charm of the medium. No starch Press has released their latest installment of "The Manga Guide to..." series, and this time they are taking on a whopper of a topic... The Universe!

For me personally, there is a level of fascination to this topic that goes beyond my interest in the stars and what might be "out there". This is also a great book to open one's eyes to epistemology, or the study of what we know and why we think we know it. At the beginning of the series "The Day the Universe Changed" (BBC series from the 80's), James Burke starts out and says that a student or colleague of the philosopher Wittgenstein was talking to him, and commented on the fact that previous generations were so foolish to believe that the Earth was the center of the universe, when clearly the Earth and the moon revolve around the Sun. Wittgenstein's answer was quite clever. He said "yes, I suppose so. But I wonder what it would look like if the sun really did revolve around the Earth?" His point being, from our vantage point... it would look exactly the same!

It's with these ideas in mind that The Manga Guide to the Universe begins its exploration of the Universe. It starts with our three protagonists trying to come up with a topic and a script for their drama club. If they don't, they will have to close own the club (cue stock music for tense drama ;) ). One of the stories they consider is the story of the Bamboo Cutter, and ancient folk tale within Japan and a telling story of a belief in extra-terrestrial life. It's from this area that we are introduced to the main character's brother and his Professor who teaches about astronomy and astrophysics. The first part of the book discusses the discoveries and setbacks that scientists had faced over millennia to explain their world and its lace in the cosmos. We go from Ancient Egypt an Ancient japan, through to the discoveries of the Greeks and the scientists in the Middle ages, the renaissance and beyond, to show how we grew to understand, postulate, test and finally prove that our place in the universe was not the center, with everything revolving around us, but that we were, to quote an old show from my youth, "a big blue marble in space", rotating around a sun the way the other planets in our solar system do. Like other books in The Manga Guide to..." series, each chapter is broken up into story panels like a traditional manga, but then a few pages of description, mathematics or physics will go into greater depth about the topics just covered. You wil learn a lot from just the manga panels, but you'll learn much more from reading the explanation pages, too.

The story develops with the student trying to find a way for the star of their play (a girl found inside of a stalk of bamboo by the bamboo cutter) that declares she's from another world and must return there. the search for a possible home for the girl is the development that leads the exploration through an out of our solar system, into the Milky Way galaxy, beyond our galaxy to local groups and the ultimate size and shape (we think) of our universe, and the various theories that help us measure these ideas.

What I found to be most valuable, again, goes back to epistemology, and showing what we have learned over the years, and how testing that knowledge has either reinforced ideas, or led us to new ideas. The mathematics used in this book are, well, daunting and massive. The sheer size of the universe as we perceive it is breathtaking, and it's exactly this order of magnitude thinking that makes this book refreshing and fun. Rather than drown the user in gigantic numbers, we se variations such as astronomical units (1 AU is the radius of the distance of the Earth to the Sun). From there, calculations using triangulation and other geometric means help explain how we can determine the massive distances, and also explain some thoughts about the potential of multiverses or a "curved universe' where the edge of the universe is reached when we come back to our starting point. Confused? After reading this book, you won't be (well, again, it's theory and pretty wild stuff, but you can definitely appreciate the logic behind it.

Do no think to yourself "children's book" when you see this title. This covers some intense stuff that adults might find hard to follow. Astronomy, Astrophysics, Cosmology and even Science Fiction (appreciating the structure of and the keeping a world view coherent) are covered in this title. For fans of these sciences, this is a slam dunk. The Manga Guide to the Universe is a fun and engaging title. To my fellow testers, all of the above are true, but read it for a greater appreciation of how we acquire knowledge, and how each discovery is connected to those that came before. Testers will also appreciate the fact that our forefathers, having ancient an rudimentary tools, worked out remarkable solutions for their day, and some ancient discoveries still stand the test of time; if not 100% accurate, they are really close. So if I have piqued your interest, check out this fun and engaging book. Even if manga isn't your thing, there's plenty here to keep even hardened science geeks and armchair astronomers engaged.


The Book of CSS3: A Developer's Guide to the Future of Web Design
The Book of CSS3: A Developer's Guide to the Future of Web Design
by Peter Gasston
Edition: Paperback
Price: £19.07

17 of 19 people found the following review helpful
5.0 out of 5 stars Good First Stop for CSS3, 11 May 2011
The web is changing. Every year there is a new piece of functionality that becomes part of a next "killer app" and the desire to have that information online and in the mobile space is changing the way that the web and mobile apps are developed. CSS3 is a developing standard and one that, along with HTML 5, will have the potential to transform the way that we view and interact with the web and apps via the Internet, mobile phones, and other devices that utilize the standards.

The Book of CSS3, written by Peter Gasston and published by No Starch Press, is a welcome exploration into this brave new world. Peter opens the book with the following statement in the Preface:

This book is the culmination of five years' writing about CSS3, both on the Web and in print. The browser and CSS landscape has changed a lot in that short time and continues to change today, bringing new features and implementations at a rate that's difficult to keep up with. The CSS3 specification is written in (often dense) technical language that's intended for implementers rather than end users, and my intent in writing this book was to bridge the gap between specification and web developer.

Can an emerging spec get a good treatment in a book as it's actively being developed? Will there be pieces missing? How well does Peter deliver on the promise of demystifying CSS3 for the average web designer/developer (not to mention web tester, which is more of where I fall on the continuum)? Let's find out!

Introduction

The book starts out with the premise that the person reading it is not a web neophyte (meaning they are someone who has some experience working with HTML syntax, has tackled page design by hand a time or two and already understands many of the underlying concepts related to Cascading Style Sheets (if you had to ask if Cascading Style Sheets is what makes up the acronym CSS, then this book may not be for you ;) )). Even with that proviso, Peter sets the expectation that this book isn't going to be a dense and jargon laden tome, but a practical guide to using the aspects of CSS3 as they currently stand, as well as offer suggestions as to how to implement the more fuzzy aspects of features still in transition and development. Peter also makes clear that the primary audience for this title is the user that is marking up pages for display on a computer screen. While smart phone and tablet development is also affected by CSS3, it's not his target audience. Nevertheless, there is coverage of Mobile features in places for comparison.

Chapter 1: Introducing CSS3

Peter describes the development and conversations that necessitated the changes to CSS3, and the modular process that was adopted to help streamline the method in which CSS3 standards could be created and adopted while waiting out the necessary time to be adopted as an official recommendation from the W3C. Examples include CSS3 Basic User Interface Module, Selectors Level 3, Media Queries, etc. The key is that, while CSS3 is under development still, many of the options are ready to use today, and many of the available browsers already support them, so don't be afraid to use CSS3, but you will need to know which modules can be used under which circumstances. Caveat Emptor and all that.

Chapter 2: Media Queries

The days of displaying web content on a PC only are over. Many other devices now consume web data, and being able to format the pages served for the device intended is a big jump and a benefit that CSS3 provides. Rather than have to create a one size fits all option, Media queries allow the web developer the ability to serve up pages based on the device that is accessing it. The chapter demonstrates how to create styles that will show a more extensive site on a PC screen and a more stripped down version if being displayed on a smart phone. Additionally, the demonstrations show the three ways that the Media Query is used (in a link, as an @import, or directly in the style sheet itself with the @media rule). As a side note, I find it hilarious that I run into Merlin Mann and Jon Gruber everywhere I turn, it seems. Funny that the example would be from d'Construct, and the example page would feature both of them from a design conference in the UK :) .

Chapter 3: Selectors

There are now more than twenty Selector options available to CSS3, more than doubler the number that was available in CSS2. This chapter covers the DOM selectors (meaning they act directly on elements defined in the document tree). The key value to selectors is that they can be applied to individual elements either specifically with exact matches or to multiple elements with relative matching. The Beginning Selector, as it is referred to in the book, will provide styling options if the value of the element matches the word at the beginning of the line. The Ending Substring attribute, you guessed it, matches values at the end with a particular value. Arbitrary string value matches value strings and then anything that follows after them. The key here is that a lot more flexibility as to when and where styles are applied can be defined.

Chapter 4: Pseudo-classes and Pseudo-elements

Pseudo-classes have been around since the beginning of CSS, but they have been expanded and the syntax has been modified from previous CSS versions. The example used at the beginning of the chapter is an unordered list with very specific class options. This has a drawback in that it makes the block difficult to edit and write, because it's all styled at the element level and verbosely. this chapter shows how to accomplish the same results with the .css

Chapter 5: Web Fonts

Interestingly, this was first put in, then removed, and then put back in again once the browsers got on board with supporting it. CSS fonts is a working draft, so browsers support it differently, but if the ability of having font level control of your site is important, CSS3 Fonts Module allows you to do exactly that. The @font-face option allows specific definitions for fonts to be defined, including weight, slope, etc. When applied to specific elements, the ability to define font weight, size and aspects can be set with a series of CSS statements, leaving the markup to apply the rules as defined (and not clutter up the markup language). There are additional features such as font-size-adjust and font-stretch which help to standardize and format text on certain browsers, but they are not supported in most browsers right now (none support all of them at this time), but all of the key players support @font-face.

Chapter 6: Text Effects and Typographic Styles

There are a lot of options that allow for some cool type effects using just CSS. text-shadow allows for the ability to sarcastically generate, well, text with shadows beneath it. By designating x/y coordinates, you can create exactly where the shading should occur, and then with a color palette option, the depth of the color of the shadow. You can also stack shadows for more dramatic effects (considering I used to use CorelDraw in the old days and made transparent GIF's to do stuff like this, I do find this genuinely cool :) ). a method of this is demonstrated to show a "letterpress" trick that's rather cool. text-outline and text-stroke also allows for greater control over letters being outlined and the way that they are rendered. overflow is an option that allows for text to not go beyond a boundary, instead displaying ellipsis at the end. resize allows for text areas to be defined with a pull-able border so that the text area can be resized. word-wrap allows the developer to break up long words and wrap them (nice!). text-wrap works similarly, but does so on lines of text rather than just long words. Again, check your particular browser to see if these options are available.

Chapter 7: Multiple Columns

Desktop publishing apps have used multiple column formats in documents for, well decades, mimicking what we see in newspapers and magazines. This has been a challenge to do in web browsers without serious tweaks or table columns and fine control. CSS3 now allows for the Multi-Column Layout Module, and this makes it possible to create and render multiple columns on a page. Mozilla and WebKit have already implemented this feature, and the others will likely soon follow. Columns can either be explicitly set, or columns could be sized and then based o the screen resolution, the number of columns will change with the size of the window. In addition to columns, pictures can be formatted between them (looks pretty cool, I must say :) ) One thing to be aware is that Mozilla and WebKit do these things differently, so if you want to make sure that you are covering both options, you need to either make CSS for both, or choose one and go with it. Opera and IE folks? Sorry you're out of luck on this front for now.

Chapter 8: Background Images and Other Decorative Properties

There's a lot of neat enhancements to image handling in CSS3, where instead of just putting an image in the page and then having stuff wrapped around it. With CSS3, many of the image and text options can now be blended together, where you can make large text titles with actual images used as the text background (really, this looks cool). Again, this is currently optimized for Opera, WebKit and Firefox (no browsers have all of them, and IE won't do it at all w/o IE9).

Chapter 9: Border and Box Effects

This section picks up from the last section and allows the developer to create new options for borders and boxes, such as rounded corners (regular and irregular) using "border[top-left|top-right|bottom-left|bottom-right]-radius" and then the pixel values. border-radius can also be written in a short hand form, and allows for blending of both straight and rounded corners, or regular and irregular rounded corners (which makes for some cool box effects, btw). Sounds cool huh? think that browsers implement the ideas differently? You'd be right. the latest versions of Opera and WebKit support the property fully, but Mozilla requires the moz prefix to use it. Images can also be used for borders (the book shows an example of a drawn Frame that, when sliced and applied using CSS3, very closely creates an expanding frame based on the original image. Multiple colors can be combined to make unique borders, as can shadows to create three dimensional effects (with x/y coordinate control to place the shadow where you want it and at which color depth, both outside the box and inside the box if you so choose). Again, check your browser and see if the effect wilt work with your preferred platform (as of now Firefox is the one browser that supports all of these options).

Chapter 10: Color and Opacity

HTML and CSS have basically been based around the RGB model since its inception, and most of us have used that format to get the colors we want. CSS3 now adds opacity and transparency to colors, and also adds a new color model. With opacity, the developer can designate the contrast they want to set and by using the values between 0.0 and 1.0 they can get the desired level of "blend" they are after. With the addition of the Alpha channel, we can now designate colors as values of rgba(Red Blue, Green, Alpha), or rbga(255,255,255,0.5) as an example. For browsers that don't support rgba, you'll want to use the original variants such as keyword or #RGB along with the rgba(R,G,B,A) statements. You'll be doubling up, but you'll also have a backward compatible mode as well. Note that at the time of the writing of this book, there is an issue with overlapping colors on the borders of boxes. This makes for a neat effect, but it may not be quite what you are after. Check your browser to see what happens. To add to the color soup, there is also HCL (Hue, Saturation, Lightness) which Peter gallantly goes into detail to explain (and I appreciate the challenge that it can be ;) ). HSL also allows for the Alpha channel, too, so HSL can be rendered as HSLA as well. currentColor allows the color to be a variable that can carry over to other elements.

Chapter 11: Gradients

In CSS parlance, gradient merely means the gradual transition between a range of at least two colors. Note: this is currently in flu as far as WebKit is concerned, so many of the examples may not hold up over the coming months or years. Crating simple gradients can be done with -moz-linear-gradient(point or angle, from-stop, color-stop, to-stop) in Firefox. The same approach in WebKit would use webkit-gradient(type, start-point, end-point, from(from-stop), color-stop(color-stop), to(to-stop)). Gradients can be applied left to right, right to left, top to bottom and corner to opposite corner. While the examples show two colors, more colors can be used for more dramatic effects. Radial gradients are are also possible using the -moz-radial-gradient or webkit-gradient commands (each has distinct syntax, so be aware of that). Note also that these options are currently only available for WebKit and Firefox, Opera and IE don't support them, yet.

Chapter 12: 2D Transformations

This section is pretty fun, but I'm not going to pretend that I understood all of it :). If you have wished you could display things at a jaunty angle without creating a static image to do it, Then this section is for you. ranging in complexity from the simple rotate option to more dramatic skew values, that make the image look like it is tipped forward or backwards. the scale function allows for original and copy values to be dramatically different, including mirror images if desired. Examples shown using this are a neat ribbon effect applied to a text box. the matrix function allows for a number of interesting transformation options, but it helps if yo are up to date on trigonometric functions.

Chapter 13: Transitions and Animations

The lines between content, presentation and behavior get a little blurry in this section, as Transitions and Animations are traditionally areas for JavaScript, CSS3 allows the developer to play bait with them in CSS, too. An example of a transition is where a black box, when a mouse is held over it slowly turns to silver, and then just as slowly turns back to black when the user moves the mouse off of the box. To do this, transitions use the following elements; property, duration, timing-function, and delay. There is also a shorthand for reflecting these values, which would be represented as "transition-property transition-duration transition-timing-function transition-delay;". The Animation module in CSS3 goes well beyond the transition options (and at this time, only WebKit browsers actually support these options). The animation element allows for many parameters, such as name, duration, timing-function, iteration count and direction, all of which can be rendered in shorthand as well ("animation: animation-name animation-duration animation-timing-function animation-delay animation-iteration-count animation-direction; ). By the way, as if I haven't said this enough, check your browser to see if it supports these features (if you use IE, yo are out of luck on both counts).

Chapter 14: 3D Transformations

As if CSS3 didn't have enough to brag about, now you can get all 3D with it, too! Note, this is an intensive operation, and so far, browser and system support is limited to WebKit browsers, and the newest ones at that. Peter does a good job of explaining the Cartesian coordinates in three dimensions, which is much appreciated by those of us who are not significantly mathematically geeky. 3D transformations happen at the div level and they utilize dedicated classes to create the effect. The general effects are rotate, translation and scaling. Additionally, there is a matrix option for 3D just like there is for 2D. the 3D matrix option requires 16 values to be implemented. New to the game is the perspective function, which allows the developer to control how "deep" the 3D effect will be.

Chapter 15: Flexible Box Layout

I remember full well making pages with table layouts, so the ability of styling pages with CSS is a big plus. there's cooler abilities in the works, though, and Peter takes on a few of them in the last three chapters. Here he talks about the Flexible Layout module, which has varying levels of representation on different browsers, but that has the promise of really changing things with regard to dynamo page layout (think going from standard web page to smart phone). flex and box-holder values allow the developer to set boxes that will will either remain static or dynamically resize, depending on the options provided i the CSS tags. Orientation can be modified best take advantage of the screen it is being displayed upon with minimal additional tags or interaction with the elements by using the box-orient function and the horizontal or vertical properties. Note that these implementations are currently browser specific and require browser prefix designations to be used. No support for Opera currently and IE9 is needed if you want to play with the flex box goodness.

Chapter 16: Template Layout

The Template Layout Module is currently not directly implemented, but it can be simulated by using [...] With this proposal, the rows and columns can be dynamically created, and can use varying row and column definitions (the kinds that used to take lots of lines of table markup to make possible).

Chapter 17: The Future of CSS

This chapter is a grab bag of "what-ifs". tantalizing looks at ideas that could become commonplace, but as of now have either very limited development or no development at all. Calculation is introduced by using the calc function, which can be used to help determine the appropriate layout options needed to best render the content on the respective screen. The idea of cycling is on the drawing board, and the hope that the ability to cycle values will be included in a future revision. Methods of crating dynamic grids, floating objects, and other options optimized to help bring print quality to the web. Variables and constants are starting to appear, and there's no reason to believe they will not become more common in the future. With the move from the desktop to mobile platforms, the ability to react to touch and movement are adding more impetus to having CSS3 understand dynamic motion as a command. Again, most of this is speculative. When, or if, many of these enhancements appear is anyone's guess.

Appendix A provides a breakdown of each chapter and shows which options are supported in which browser, and which version of browser is needed to see the particular options described. Appendix B is a breakdown of Online Resources related to CSS3 and the latest and greatest of specs, tools and documentation, as well as fonts that can be used and displayed for Free.

Bottom Line:

For a small book (relatively speaking) it packs a big punch (figuratively speaking) and can teach a lot of a challenging topic in an easy to understand way (literally speaking). Peter has written a book that many people involved in web development can understand, even if they are not CSS experts. The descriptions are easy to follow and are well explained, but terse enough to get the idea in a short span. Because of the sheer variety of the browser matrix and what is or isn't supported, it's unlikely that the standard reader will use everything in this book, but even with that, the amount of interesting ideas to experiment with is staggering. The format of the book takes advantage of the diagrams and illustrations without being overbearing, and a nice balance is struck between a conversational tone and a more detailed technical tone where absolutely required. Though Peter assumes his audience is other web developers, the book is written in a way that even intermediate web developers, designers and yes, even testers, can simply and directly relate to the aspects being discussed. If you have been interested in the wild world of CSS3 and wanted a one stop shop to help get your head around it, The Book of CSS3 is a great first stop.


The Manga Guide to Relativity
The Manga Guide to Relativity
by Hideo Nitta
Edition: Paperback
Price: £11.96

3 of 3 people found the following review helpful
5.0 out of 5 stars Manga Guide to Relativity Delivers!, 25 April 2011
First off, let me set the expectation here. I'm a software tester by trade. I'm fan of science (as opposed to being a scientist). I'm also a huge fan of Japanese animation, which is commonly referred to in America as "Anime" in its video format, and "manga" in its illustrated paper format. In short, yes, I'm a grown man who enjoys comic books and I have absolutely no shame in saying that whatsoever ;).

Anime and manga is used to reach many audiences in Japan; it's not just geared towards kids. Stories range from the fanciful to the dark and gritty. In between, every conceivable topic and interest is covered and illustrated in a way that grabs attention, entertains, and helps inform the readers on an emotional level.

This combination of storytelling, emotion, quirky characters and an illustration style that's both cute and engaging helps lend it to the idea that "hard topics" can be discussed using manga, and that the topic will be much more engaging for the reader. "the Manga Guide to..." series is an example of this, and covers a broad variety of interesting, difficult and sometimes downright geeky topics. In some ways, "The Manga Guide to..." series can be seen as being on par with "Standard Deviants".

The most recent title, "The Manga Guide to Relativity" (written by Hideo Nitta, Masafumi Yamamoto and Keita Takatsu) uses the classic story techniques common to most fans of manga; student body president Ruka Minagi takes on a challenge from Rase Iyaga, the sadistic and capricious school headmaster (who also has a penchant towards androgyny, but hey, for anyone with more than a passing familiarity with Manga titles, this is par for the course) to write a report about relativity, thus sparing the rest of the class from having to do it over summer break. If he succeeds, the rest of the class will be spared the assignment. If he fails, he has to agree to be Iyaga's "personal assistant" for the next school year. All is not lost, though, as Physics teacher Alisa Uraga agrees to teach Minagi about relativity so that he can complete the challenge. With that, an adventure begins.

During this process, the reader almost forgets that they are actually looking at a topic that is fairly challenging to explain, the theories of Special and General Relativity. Instead the focus is on a fun and engaging story (and not a few quirky characters... did I mention the Vice Headmaster is a dog? OK, I'll mention it).

So can a "comic book" really teach us one of the trickier scientific topics? Let's find out...

What is Relativity?

The first chapter helps us get into the mindset of our protagonist Minagi and his sensei Uraga as they discuss the differences between special and general relativity. The history of relativity from Galileo and Newton on through Einstein and the idea that the speed of light is a constant and the fact that all reality is in constant motion is explored. The illustrations are both cute and informative, and help fill in the blanks for many of the concepts that might be difficult to visualize any other way. At the end of the chapter a full breakdown of the concepts and some background information is presented again to help drill home the ideas (this also allows those who want to have a nice outline and paragraph explanation of the principles a chance to get that along with Minagi's exploits).

What Do You Mean Time Slows Down?

A Japanese fable leads off this section, the story of Urashima Taro. the legend tells about a man who rescues a turtle and brings him to the undersea palace of the dragon god. When he returns home back to land, instead of a few days having passed, several hundred years have passed. This idea is called the Urashima Effect in Japan, and is called the Rip Van Winkle effect in western countries. In both cases, the concept covered is Time Dilation.Time dilation is the situation where as an object approaches the speed of light, time slows down for the object. the manga guide uses an imaginary device called a "light clock" to help define how this idea works. this is further emphasized with a visual idea of the Twin Paradox, where a twin goes on a space voyage for a year at light speed and returns to Earth, and sees that their twin has aged by several years in their absence.

The Faster an Object Moves, the Shorter and Heavier It Becomes?

Wow, Sensei Uraga looks pretty hot in a bikini... have I piqued your attention yet ;)? Hey, it's a manga, what can I tell you? OK, back to the topic... Sensei Uraga continues the discussion with the idea that, when an object gets towards the speed of light, it contracts (and demonstrates in a breakdown the equation necessary to prove this idea, i.e. the Lorentz Contraction).Space and time are said to contract based on this theory of specific relativity (remember, thus far that's what we've been looking at, general relativity comes later) and because of this, we need to look at Space and time as not separate entities, but interlocking entities.additionally, objects get progressively heavier as they approach the speed of light (except for light, which by its very nature is assumed to have a mass of zero for it to work the way it does). Incidentally, this is why it is believed that no object of any measurable mass will ever get to break through the light barrier (science fiction story writers and Start Trek fans notwithstanding. the relationship between mass and energy are also discussed here (the famous E = mc^2 equation and what it really refers to).

What Is General Relativity?

Special relativity takes the idea that gravity and motion for an object travels in a straight line. General relativity is more mathematically complicated, because the gravity of nearby objects (such as stars) has a direct effect on the object in motion, and that gravity has to be accounted for. In addition, light "bends" as it makes its way around an object with a large gravitational pull. Time also slows down as it passes such a large gravitational pull as well.The idea is called the Equivalence Principal and states that "the inertial force accompanying accelerated motion is indistinguishable from gravity, and therefore, they are the same." This is compared to the feeling of pressure you feel in an accelerating and decelerating train, or in an elevator as it goes up and down, or on an amusement park ride like the spinning swings. A demonstration is shown where a bowling ball is placed on a tightly pulled rubber sheet. When the bowling ball is placed on the sheet, the sheet indents to make room for the ball. Put another one on the same sheet at the opposite end of the sheet, and it will make its own indentation. Gie enough time, and the balls will slowly move towards each other. This shows that gravity is really the bending and warping of space (yeah , I had to read that one a few times :) ). General relativity also takes into account that matter, space and time all have interactive relationships, and while it's a "theory" there are devices we use everyday that depend on this theory and in its actions prove it works (GPS, anyone :)?). We can really take this to the mind bending level of looking at the universe (by the theory of General Relativity, observations indicate our universe is expanding).

Bottom Line:

That's a lot of detail packed into a manga. the cool thing is that it's entertaining, fun to read, and in many ways, the ideas and theories come naturally, and it's only when you put down the book and realize "wait a minute... did we just cover what I think we covered?!" That's the great success of this book, in that you learn new ideas and concepts without really having to think about it too much. You're having too much fun to realize how much you are learning. On that level, The Manga Guide to Relativity succeeds very well. So how does Minagi do on his report? Can sensei Uraga deliver the goods? And what is it about that dog, anyway?! For answers to those riddles (and many others within the Relativity metaverse), you'll just have to pick up a copy of The Manga Guide to Relativity and find out for yourself.


The Book of Audacity: Record, Edit, Mix, and Master with the Free Audio Editor
The Book of Audacity: Record, Edit, Mix, and Master with the Free Audio Editor
by Carla Schroder
Edition: Paperback
Price: £22.50

13 of 13 people found the following review helpful
5.0 out of 5 stars The Book of Audacity - an Audio Editing Book For the Rest of Us, 18 April 2011
There are times when a book reviewer reviews a book because it's something they have a passing interest in, or it is something they know they should be doing and want to learn more. Then there are those books that relate to something so familiar and so every day, that it's easy to build an expectation for the title. For me, audio editing on behalf of the TWiST podcast is a nearly daily thing (at least five days a week), and Audacity is my tool of choice for doing audio editing, partly by chance but more recently by familiarity. Is there a book out there that would keep my interest on the subject?

I'm happy to say that "The Book of Audacity", written by Carla Schroeder, and published by No-Starch Press, is just such a book. You don't have to be a computer aficionado, but it certainly helps. You don't have to be a musician, but it certainly helps there, too. You don't have to be someone who enjoys a witty and sometimes mildly sarcastic writing style, but again, it certainly helps. If you are the special geek that fits all three of these categories just mentioned, then this book is a gem!

The Book of Audacity is platform agnostic, but shows a number of approaches to using it on a number of platforms (with a special section specifically focusing on Linux). Audacity is free and cross platform, and the author spends plenty of time trying to make the users feel comfortable tackling the various topics.

Many books are written to describe the process of recording and producing music, but they often devolve into an impenetrable treatise on sound theory and issues of interest to professional audio and signal processing engineers, leaving many of us everyday folks interested in recording behind. Carla is careful to not do that here. Often her tone is irreverent, humorous, and at times downright snarky, proving this isn't your typical audio recording book, and that's all for the better.

The Book of Audacity uses multiple projects to help the user get the most out of the program and appreciate many of the finer details the application provides. Some of the projects will have varying amounts of interest, but the chapter long focus on many of these projects allows the reader to get in-depth enough if they want to focus on that particular aspect, or skip to the next chapter if they are not.

AUDACITY FROM START TO FINISH

This section gives a good overview of the program and how to get a quick understanding of many key features. It's not an in-depth tutorial, but the first time user will feel comfortable after perusing this chapter.

BUILDING A GOOD DIGITAL SOUND STUDIO ON THE CHEAP

Think that you will have to break the bank to create a "recording rig"? In many cases, it's as simple as using the hardware already in your computer. If you want to get more involved, there are additional items that can be used, and I appreciate the level of personal detail Carla provides in showing the equipment that she personally likes using, including audio interfaces, microphones and digital recording devices.

TRANSFERRING VINYL LPs (AND OTHER LEGACY MEDIA) TO CD

This chapter may be skipped if this project isn't relevant to you, but there's a lot of good information in here regarding how to get external audio into your computer and then work with the audio to create master CD's. Topics like dynamic range, recording levels, fixing pops and clicks, dealing with clipping, dealing with separate tracks, creating fade-ins and fade-outs, and mixing down and creating the final audio CD are covered.

CREATING AND EDITING LIVE TRACKS FOR CD

If you have an interest in recording live music, especially if you use a modern flash based digital recording device, then this section is for you. It covers the technical details of recording a live performance, whether that be using the digital recorder to record the live room or getting a feed from the board directly. It also covers such things as how to interact with the sound crew and generally be a net positive in the experience (these are the little things that set this book apart from many other audio books, in that it covers some of the finer personal interactions, not just using an audio tool). Methods for dealing with recordings made at different times and different places are covered so that the end result sounds as consistent as possible.

AUTHORING A COMPILATION CD

This section covers taking audio from multiple audio sources and creating a compilation CD (or for those of us of an older generation, a digital "mix tape"). Using multiple audio formats, ripping from CD's and DVD's are covered, converting MP3s to uncompressed WAV files, and covering the details needed to get the tracks to a consistent sound level, determining track order, and creating a seamless production so that the final product can be mixed down and burned to a Red Book format CD are discussed.

AUTHORING SUPER HIGH-FIDELITY AUDIO DVDs

DVD audio is a high end sound approach that takes advantage of the space a DVD allows to let the person doing the recording use even higher quality audio samples and audio formats (uncompressed WAV, AIFF, FLAC, etc.) This section walks the user through the process of producing an audio DVD and highlights tools that will help the process go smoothly.

CREATING PODCASTS

So far, most of the projects have been dealing with single track (mono or stereo) sequences. This is the first section that gets into multi-track recording and covers my bread-and-butter topic, podcasting. You'll learn how to mix multiple parts together, including using intro music, creating a duck down track for theme music and having it drop when the announcer speaks, cleaning up verbal ticks (how to deal with "ums" and "ahs" and the like), as well as exporting to a format that is high enough quality for listening purposes but minimizes the size requirements for easier downloading.

BECOMING AN ONLINE STAR

So you have gone to great lengths to produce audio for various purposes. Now what do you want to do with it/. In this chapter, the topic of getting your work out into the public space is covered. Ever wondered what it would be like to be a signed musician, Do you even want to go that route? Do you need to? Can you forge your own path? This section answers those questions as well as how to go about developing an online presence, how to get your work out to those who want to listen to it, whether or not you should use Digital Rights Management on your files (personal choice, I generally say "don't", but your mileage may vary), and dealing with the issues surrounding copyright and fair use.

MULTITRACK RECORDING

While the section for podcasting goes into the basics of multi-track recordings, this is a deep dive into how Audacity allows for multiple channels to be recorded (and the equipment necessary if you want to do it "live"), dealing with and ordering multiple tracks, getting the levels right, using the internal mixer and equalization tools, labeling tracks to keep track of what's happening and where, how to move various tracks around and group them together, as well as how to construct custom mix downs so that instruments are panned and ordered in the mix the way you want them to be.

MAKING YOUR OWN RINGTONES

If you are tired of paying for ring-tones for your cellular phone, or just want to know how to make them for the fun of it, this section is for you. It discusses creating a short recording, using dynamic range compression so that the recording can be optimized for the small speaker inside a phone, and then converted to the file format that your phone will support and allow you to upload it and use it as a ring tone. Again, it's an example of a project that shows how Audacity can be used for a range of audio options.

AUDACITY PLUG-INS FOR SPECIAL EFFECTS

One of the great advances Audacity and other audio tools provides is the ability to use effects that used to require lots of outboard gear. Signal processing allows for very basic details such as dynamic range compression and signal leveling, but also lets the user go to town with interesting effects such as reverb, digital delay, tremolo, phase shifting, distortion, etc. Using these effects effectively is more challenging than just setting an effect and applying it. Many effects on a given track will cause additive effects and knowing how to deal with them is important. It's also possible to use the effects to create electronic drum sounds and other approaches (there's an entire effects language called NyQuist that is covered a bit in here as well).

FIX-ITS AND CLEANUPS

Ideally, we will do the best we can to get clean and focused audio recording, but sometimes the source material is not perfect or we have little control over some of the issues that arise in the recording process (live interviews, noisy rooms, sudden volume changes, etc). This section deals with the ways to handle the inevitable "clean-up" jobs we will face from time to time. Simple tasks like cutting out sections or trimming silence are covered, as well as more advanced topics like splitting audio tracks, performing noise removal (and dealing with the effects of that), how to effectively use leveling and normalization, waveform repair using the draw tool, modifying tempo and performing pitch correction, and using compression effectively are all covered here.

CONFIGURING LINUX FOR BEST AUDIO QUALITY

For those who are using Windows or a Mac, this section will probably not be relevant. For those using Linux distributions, though, there is a gold mine of information in here for maximizing your system's abilities.

CONFIGURING WINDOWS FOR BEST AUDIO QUALITY

Windows also has a number of quirks and areas that can be adjusted so that the system performs smoothly and integrates that various options for sound input and output together. With the number of available devices that leverage USB 2.0, FireWire and other media formats, even laptop users with limited options for on-board configurability can branch out and experience high quality interfaces and how to tweak them for best use.

CUSTOMIZING AUDACITY

There are lots of preference options that will allow the user to tailor the experience to the things that they do best or wish to take advantage of, and this section covers all of them. This section also covers default file formats, setting up batch jobs (chains) that can be used for automating many of the routine tasks, exporting to a default file format, enabling or disabling effect, and other helpful options so that you can focus on your projects and not dealing with the system that supports it.

APPENDIX

The last section is a reference guide to audio recording equipment, topics and terms, recording myths and explanations that will help demystify the process of audio recording and help present the truth about such ideas as "equipment burn-in" (myth, it's not needed), the superiority of tubes over solid state (99.9% of listeners won't be able to tell the difference), and the need for specialty cables (in most cases, nope. You want properly made cables, yes, but gold plating is not necessary).

BOTTOM LINE

There is truly something in here for everybody that deals with audio recording of any stripe, and Audacity can be used for both simple and all-encompassing projects. The style of the book takes into account that not everyone has the same goals, and the book is structured in a way where a complete read-through is not necessary. The basic techniques are covered multiple times in the book so that mastery can be developed but also so that the project that interests the user can be the primary focus.

Most of all, the book gets out of the way to let you work on the projects you want to work on in the way you want to work. It also strikes a balance between technical discussion and everyday reality, with a tone that is both engaging and entertaining (yes, technical books can be entertaining, too, it is possible). For those looking to go beyond the basics, and want to use Audacity as their tool of choice, The Book of Audacity would be a good title to help get the most out of that decision.
Comment Comment (1) | Permalink | Most recent comment: Apr 29, 2012 2:01 PM BST


Selenium 1.0 Testing Tools: Beginner's Guide
Selenium 1.0 Testing Tools: Beginner's Guide
by David Burns
Edition: Paperback
Price: £24.99

2 of 2 people found the following review helpful
4.0 out of 5 stars Selenium 1.0 Test Tools: Beginners Guide, 20 Mar 2011
Selenium 1.0 Testing Tools: Beginners Guide is exactly that. It is a book that is aimed at those who are beginners with the technology (not necessarily beginners to testing or coding). Overall, David Burns has written a good book here. The conversational style is helpful; you feel like you are talking to a team-mate who is explaining the system to you in a friendly and engaging manner. The exercises selected are of a level that you are eased into working with the technology and the tools. The first five chapters are dedicated to the Selenium IDE, which for many testers is all they will ever see of Selenium, and for many testers who want to automate front end tests on Firefox, it may be all they ever need. If that's the case, the first five chapters will give you a lot of practical information and give you some solidly ninja levels skills to write tests and make them robust and solid. They will be limited to the Selenese format, but even with that limitation, there's a lot of cool things that a tester can do, from declaring and using variables, calling JavaScript events, and managing for examining objects and creating robust tests to help enhance testing.

The second half of the book deals with Selenium Remote Control (RC) and here is where some deviation takes place, at least for me. First off, I did not have the exact environment described in this book. I was close, but I had some set-up differences that caused some headaches. A number of the examples in the book just flat out would not work for me. Since my environment was different than that recommended (a Windows 7 machine on a 64-bit Athlon processor), I can't hold David responsible for my roadblocks. It does, however, show a critical issue with the Learn by Doing format of this book. If everything is the same, the format is terrific, and the first 6 chapters I was able to accomplish most of the project objectives and practice using the tools as listed. When I found myself stuck, there was little I could do to get around the issues. Be aware of that going in, your mileage may vary with the examples shown in the book.

Another frustration I had was specifically in Chapter 7, which dealt with writing your own scripts in Selenium RC. The chapter is structured around using the IntelliJ Idea Java IDE. In and of itself, this is not a bad practice, but when things start to not line up due to environments being different, adding an IDE into the mix can add even more complications and details to keep track of. While I appreciated the clean nature of integrating JUnit and the Selenium libraries under one roof, it added another layer that I personally felt might have been better handled by not including another tool. Agreed, CLI's are not sexy and they require repetition that the IDE doesn't, but I would have appreciated more specific examples and more complete examples. As it is, to get around the behaviors I was seeing, I generated tests in the IDE, saved the structure as a separate file, and then loaded that file to write my tests.

Again, these criticisms are actually pretty minor, and they are colored because my own environment had trouble with the examples (of which David states that 64 bit environments will have issues). Overall, this is a great first effort in describing the tools and the methods involved in loading, installing, and working with the Selenium stack. As the technology becomes more well known and solidifies, I'd like to see what David does with a future Selenium treatment. There's a lot of gold in here, and a few pieces of pyrite (and again, I have to take responsibility for my own panning), but all in all it fills a void for documentation for Selenium with a continuity that a beginner can appreciate and get productive with quickly.


Page: 1 | 2