Amazon Kindle

I was one of the early adopters of the Amazon Kindle, but my first generation device has been on its last legs for the past year. For Christmas this year, however, my wife got me the new $79 Kindle. Why this particular model, and how does it stack up against the older version?

I specifically didn’t want a touchscreen Kindle, for two reasons: I don’t want fingerprints on the screen, and since I have an iPhone and iPad, I’m used to Apple’s touchscreen navigation and figured Amazon’s would probably be different. (Of course, the non-touchscreen version being cheaper helped as well!) I wanted the Kindle with special offers because some of the offers are for things I want, and I’d rather have those than the old screensaver (the offers are not visible when you’re reading). Yesterday, for example, the offer was $10 off a $100 Amazon order when you use your mastercard, plus $10 off a future $50 Amazon order; if I hadn’t already finished my Christmas shopping, I would have found that very useful.

I’m still getting used to the actual Kindle – it’s a lot smaller and lighter than my old one. The biggest changes are the side buttons and lack of a keyboard. The missing keyboard really only makes a difference when you’re linking the Kindle to your account (assuming you didn’t just buy it from Amazon – we got it from Target due to a promotion) and when searching for books from the Kindle (I’d rather use the computer) but it does mean typing is a pain. It’s the buttons I’m still getting used to; on the first generation Kindle, most of the right side was one big easy to press forward button. The new buttons are harder to push (so you rarely push them accidentally) and the page forward button is a lot smaller, so I’m still getting used to that.

I have an iPad as well, but I hate reading on a backlit screen; as with the older version, the e-ink screen of the Kindle is ideal for reading novels. For technical material, the screen is a bit small – no screen this size will display PDFs well – so if you have a lot of those, you’ll want either a tablet or the Kindle DX. For novels, though, the paperback-sized screen works just fine.

I’ve had the Kindle for about a week and haven’t charged it yet; so far I’ve read one book and parts of a few more and the battery is at about half; based on previous experience I’m guessing it’ll last quite a bit longer once I actually charge it. All of my ebooks were purchased from Amazon, Baen, or O’Reilly, so it was easy to download them again to the new device. I’m definitely enjoying it so far. Recommended.

Murach’s C# 2010

Murach’s C# 2010 by Joel Murach
$54.50 from Murach & Associates

Recently I needed to pick up C# programming; it was shortly after I read (and was impressed by) Murach’s SQL Server 2008, so I decided to see if they had a C# book (Murach is a small publisher that puts out limited number of titles). As it happens, they do…and it has the same things going for it as their SQL book. I’m familiar with the C languages – C++ is my favorite language to work in – though I haven’t used them much recently. I wanted a book that wouldn’t assume I was already an expert, but also wouldn’t spend forever explaining how to write a for loop. I found that the Murach style (they put code on the right page and explanation on the left) to work very well for this. Each topic, except for the more advanced ones, tends to be explained in one set of facing pages, and the format makes it easy to skim stuff you’re already familiar with, get a better explanation of things you don’t understand, and find relevant information when you’re trying to look something up later.

The book starts out by helping you get started with Visual Studio…which makes sense, since most C# development will be done there! The instructions in the book assume you’re using Visual Studio Professional Edition, but everything will still work with the free Visual C# Express Edition; you just have to make a few changes to your workflow. After getting Visual Studio up and running, we jump right into several chapters on designing, coding, and testing a Windows Forms application. People familiar with Visual Basic will have no trouble here – doing forms with C# is very similar (just with C-style command structure). This means you’re creating a graphical program almost as soon as you start the book.

Section two, which contains chapters four through eleven, has all the things you’d expect to find in any programming language introduction: data types, control structures, arrays, collections, etc – as well as a few things that a beginning programmer might not be familiar with, such as exceptions and event handlers. It also covers debugging. In section three, we move on to discussion of object oriented programming: classes, inheritance, and interfaces. This section also covers more advanced topics like delegates and indexers. Section four, which is chapters 17 through 20, is about database programming. Want to know how to access a SQL database with ADO.NET? You’ll find it here. Finally, section five (chapters 21 through 25) covers miscellaneous things that programmers will likely need to know: how to work with files and data streams, how to work specifically with XML files, using LINQ, enhancing the user interface, and deploying an application.

Murach books are written from a business perspective; while I don’t mind the usual bit where you define an animal class and derive a dog class from it (or shape and circle..you get the idea), all of the projects here are business applications. In the very first section of the book, you’re already developing a project that generates invoices, and you’ll later build a project to keep track of your customers. My recommendation? Let’s just say I wish they had books on the next two languages I plan to learn, Cocoa and Objective C..

Learning HTML5 Step by Step

HTML5 Step by Step
$34.99 from Microsoft Press

I’ve reviewed several books lately that introduce the new elements in HTML5; each of them assumes that you already have a working knowledge of html and css and simply want to know about the changes. But what if you’re brand new to web programming and want a simple html book that assumes you don’t know anything about making websites?

In that case, Microsoft’s HTML5: Step by Step could be exactly what you’re looking for. As should be obvious by now, if you already have some experience coding websites, this book is not for you. It starts out by explaining what HTML is, how to save a .html file in notepad, how to test your site in a web browser…you get the idea. On the other hand, if you’ve never built a webpage before, read on!

Part one of the book starts with how to edit and view HTML files, formatting a document (that is, placing the head, body, and html tags), formatting text, setting up lists and backgrounds, and creating links; in other words, everything you need to know to build a basic website. Once you’ve completed this section, you essentially know everything you need for most sites except the formatting.

Part two introduces you to style sheets and graphics. A style sheet is a file containing code that describes how the content of a webpage should be displayed; by separating the style from the content (which goes in the HTML), it becomes much easier to get everything to look the way you want it to look, and it’s also much easier to change things! To top it off, this also saves you a lot of code in multi-page sites (since you only have to write things once, rather than over and over) which makes your pages load faster as well.

Part three is about layout and navigation: now that you know how to make each section of the page display the way you want it to, how do you make it display where you want it to? This section covers creating and displaying divisions on your page, as well as the newer semantic elements present in HTML5. (A semantic element is a tag that describes what it contains, such as article or header). After learning to float divs (which lets them sit site by side on the page, rather than one after another), the book covers tables and forms. It also introduces the new audio and video tags HTML5 provides to allow playing video and sound files requiring without a plug-in. Finally, it introduces JavaScript (which is used to control the behavior of a webpage).

Something I thought was a nice touch is appendix B, which provides guidelines for making your websites accessible; by following these suggestions, you help people with disabilities (or just old browsers) to take advantage of what your site has to offer. Another nice addition is a code for a free digital copy of the book.

As you would expect from a Microsoft book, the text mostly talks about Internet Explorer, but it does recommend using multiple browsers to test your pages and even tells you where to download Opera and Chrome. Unlike the last Microsoft Press book I read, the editing seems pretty decent, and the book is easy to read.

Will this make you an expert on HTML? No…this is an introduction, written to be an easy to follow tutorial on website creation, and it shows. The book is 350 pages, with lots of pictures; there’s no space to cover more advanced topics, such as how relative and absolute positioning work together. As an introductory book, though, it’s not half bad; if I was teaching an introductory class on websites, this is a book I’d consider using.

Disclosure: I received a free review copy of this book.

HTML5 and CSS3

HTML5 and CSS3: Develop with Tomorrow’s Standards Today by Brian Hogan
$33 from Pragmatic Bookshelf

The Book of CSS3 by Peter Gasston
$34.99 from no starch press

There’s really no reason why HTML5 and CSS3 have to be grouped together; they’re two completely different things. The first is the latest code for marking up the content of a website, while the second is the latest code for marking up the presentation. There’s no reason you can’t use CSS3 with HTML4, or HTML5 with CSS2. That said, since both are hot right now and are often used together, they’re often treated as if they were the same thing, and I’m going to add to the problem by talking about several books this week. Neither is aimed at the complete beginner: both assume that you already have a working knowledge of HTML and CSS, and simply introduce you to the new features.

One thing that HTML5 and CSS3 have in common is that they continue the process of separating style, presentation, and behavior. HTML5 deprecates a number of elements from previous versions, leaving the programmer to use CSS (for presentational aspects) or JavaScript (for behavior). My first book for today, HTML5 and CSS3 by Brian Hogan, groups topics by what you’re trying to do; for each topic, it uses new elements from HTML5 and CSS3, along with any required JavaScript.

The first topic is improving user interfaces: how can we use the new options to make our websites easy to use? First off, we cover semantic markup: all the new elements (article, section, header, etc) that let us mark off sections off the page with tags that describe what that section actually is, rather than an overabundance of div tags. Afterwards, we go to forms: there are a number of new form options in HTML5 that allow the browser to provide behaviors that were previously handled with JavaScript, such as popping up a calendar in a date field. Having better described our interface, we now spruce up its appearance with some CSS, using pseudoclasses to target particular parts of the page (for example, every third paragraph) without requiring extra markup in the HTML. We can also use CSS to dynamically add content as needed.

Next up is sights and sounds: using the Canvas element, which lets us build graphics using JavaScript, and embedding audio and video onto the page; on the CSS side, we add eye candy such as rounded edges; shadows, gradients, and transforms. The Canvas chapter was the least satisfactory section of the book to me, as parts seemed awkward or slightly unclear, but this was the only section of the book I wasn’t entirely happy with.

The last section talks about things that aren’t technically part of HTML5, but were developed along with it; some even were previously part of the standard. This includes keeping data on the client, geolocation, etc. There are also several appendixes, including a quick reference to the new features, a JQuery primer, and quick directions for encoding audio and video.

Overall, I found this book to be extremely readable; it kept me occupied for about three hours on a plane this afternoon! I also found several specific pieces of information that will be useful to me immediately and that I haven’t seen elsewhere, including a recommendation for a program to see how pages will look in all versions of Internet Explorer.

The Book of CSS3, however, I found to be somewhat less readable. That’s not to say that this is a bad book – it isn’t. I just found it a bit dry; whereas the first book was organized by application and was an easy read, I see this one as more of a reference book. From a CSS standpoint, it covers much of the same material, though in more detail since it does not cover HTML5. Chapters are arranged based on how widespread adoption of that particular element is, so you start out by seeing things that will work in any modern browser and finish with things that nobody really does yet. This strikes me as a great way to arrange things, if you just want to try out new stuff; however, it does get annoying when even stuff close to the front of the book is missing from multiple browsers!

After an introduction to CSS3, the book starts off with a bit about media queries, which allow you to tailor your page to the device the user is viewing; if a visitor is using a small monitor, for example, you can switch to a one-column format and perhaps lose the sidebar. Next we have the new selectors, pseudoclasses, and pseudoelements, which help you select pretty much anything you want from the page using only the CSS, rather than adding extra classes to the HTML.

I’m not big on fonts myself – Times New Roman is good enough for me, thank you very much – but my wife tells me that choosing a good font is very important, and CSS’s font-face allows designers to finally leave the world of web-safe fonts and use any font they have permission to distribute. This leads into other text effects: applying shadows, wrapping text, splitting text into columns, etc. With CSS3, the “printed” word on a website can now look as professional as the same work in a magazine!

After a few chapters on background images and borders, we start getting into more advanced stuff, where availability tends to be spotty. Gradients and Transforms are fun, but you may need to brush up on your math skills! Meanwhile, things like 3D Transformations tend to be available in only one or two browsers (generally Safari and Opera are the furthest along in supporting the CSS3 and HTML5 standards) and aren’t really ready for prime time. One of the appendices is simply a list of which browsers support which features; while any such list is naturally going to be out of date as soon as it’s published, the book website has an updated list.

Between them, HTML5 and CSS3 give a lot of additional power to the web designer to make sites that are better looking and easier to use. If you want to make sure your sites are top notch, I recommend giving these books a read.

Disclosure: I received a free review copy of these books.

Microsoft SQL Sever 2008- Implementation and Maintenance

Microsoft SQL Sever 2008- Implementation and Maintenance by Mike Hotek
$69.99 from Microsoft Press

Until recently, I’ve never done much with databases, but since my job now involves dealing with SQL databases I thought it was high time I learned! For this, I used three very different books: The Manga Guide to Databases for a refresher on concepts, Murach’s SQL Server 2008 for the actual SQL queries, and finally, this Microsoft book for the details on administering MS-SQL Server. I’ve also occasionally referred to the Microsoft SQL Server 2008 Administrator’s Pocket Consultant, also from Microsoft Press.

The Implementation and Maintenance guide is written specifically for one purpose: preparing you to take the SQL Server Administration exam, MCTS Exam 70-432. As such, don’t expect theoretical descriptions of how databases work or instructions on how to write an efficient SQL query; this book is about administering the database, not using it. The expectation is that those reading the book already have experience working with databases and a working knowledge of how SQL Server 2008 works. Since it’s the official Microsoft book, and my workplace will pay for the people in my study group to take the exam, we decided this would be the best choice for directing our study.

The book itself has its plusses and minuses. The main drawback is the editing, or lack thereof; it’s clear that the book was rushed out with an insufficient amount of time devoted to finding and fixing typos. The worst example of this is the tear-out exam objectives sheet at the front of the book, which lists the objectives and where the corresponding material can be found in the book. However, many of the locations referred to don’t even exist; for example, the section on maintaining SQL server instances tells you to read lessons 2, 3, and 4 of chapter 10…which has only two lessons. There are a number of other typos as well; for example, a table listing the values that various data types can take on somehow lost its formatting, so that what should be -231 became -231 instead. Not too difficult to figure out, but still annoying. O’Reilly, who publishes the Microsoft Press books, has an errata list available, but most of the errors are on the unconfirmed list, as the “official” list apparently hasn’t been updated since July 2010. I’m sure this isn’t the fault of O’Reilly, since their own editing tends to be quite good, but I still find it quite annoying. Aside from outright wrong information, there are also oddities like exam questions that cover material which has not yet been covered in the book, which again should have been caught with proper editing. Additionally, although I suppose this isn’t really the fault of the book, the instructions for installing SQL Server are out of date and we had to throw them out entirely; I would have expected this to be updated by the fourth printing of the book.

On the plus side, I found most of the book to be quite readable. Each chapter opens with a story from the author’s experience that illustrates why a particular concept is important, and the descriptions are quite easy to follow. I found it to be interesting reading up until about the last third of the book, when the writing seemed to bog down; granted, this is also where you get into the most technical detail.

The main attraction of this book, however – certainly, the main reason we chose it – is the test questions. Each section has just a couple of questions at the end of it, but the book comes with a CD containing full practice exams; I haven’t yet taken them as from what I’ve heard, they cover all off the material rather than being divided by chapter and I haven’t quite finished the book. While the reviews on the test questions are mixed, I’ve seen several reviews from people who felt they were useful for studying for the exam. Additionally, the book comes with a coupon code for a 20% discount on additional practice tests, as well as another one for 15% off the cost of a Microsoft exam; taking advantage of those easily covers the cost of the book if you buy it from Amazon.

So do I recommend this book? I think I’d have to say yes, with reservations. First off, if you don’t know SQL, learn the basics of that first or you’ll be fairly lost. Second, expect to spend an hour making corrections from the errata site, unless you’re familiar with with the basic concepts and SQL Server to avoid getting confused when you hit one of the errors. Third, tear out the study guide at the front and throw it away, then look up instructions online for how to get SQL Server up and running if it isn’t already. Once you’ve done that, I think you can get your money’s worth out of this book.

Remote Exposure

Remote Exposure: A Guide to Hiking and Climbing Photography by Alexandre Buisse
$29.95 from rockynook

I’ve always been a fan of taking pictures, and one of my favorite subjects to photograph is the outdoors; as such, I was looking forward to checking out this new book from rocky nook. The book covers shooting hiking, climbing, and mountaineering.

Chapter one covers choosing the right equipment; for the type of photos the author is talking about, weight and size often matter more than other factors, since you’ll be carrying the equipment with you! His advice on lenses makes sense, but I felt that he overemphasized memory cards; SD and CF cards (which most of us will probably be using) aren’t that expensive and weigh almost nothing, so if you’re planning to make outdoor shooting a serious hobby I see no reason not to carry at least a couple of 16gb cards (assuming your camera will take them). The cost is nothing compared to how much you’ll have spent on the camera and lenses, and it means not having to worry that you’ll miss a shot due to running out of memory! (You do, of course, have to avoid leaving too many photos on one card, in case it fails) The emphasis here is on carrying lightweight equipment that meets your basic needs and can be easily accessed, rather than on having the latest and greatest.

Chapter two is about actually shooting your photos. When do you shoot? How do you take care of your equipment (and in particular, when you’re climbing, how do you avoid dropping things?) What does it take to keep both you and your equipment safe?

Chapter three is about creating strong images; it talks about composition and telling a story, and gives a few practical tips to help you capture the image.

Chapter four is discipline-specific, with tips for photographing camping, hiking, technical climbing, and mountaineering. These shots can require a bit of planning ahead, especially if you want to avoid boring shots of the other members of your party from behind!

Chapter five is on advanced techniques, including low-light photography and HDR, while chapter six touches on ethics and safety.

This being a photography book, the big draw is the images. I have to say that there aren’t that many photos in the book that really grab me, but I suspect that’s largely a matter of preference; I generally don’t put people in my landscapes, the the images here are almost all of people engaged in outdoors activities. However, I can still tell that they’re well done, and I liked the panoramas and particularly the HDR sunset on page 139.

If you’re not interested in shooting while hiking, climbing, etc, then you might as well give this book a miss; you’re not the intended audience. But if you enjoy this type of outdoors activity and want to start taking photos while participating, it’s probably worth a look.

Murach’s SQL Server 2008 for Developers

Murach’s SQL Server 2008 for Developers by Bryan Syverson and Joel Murach
$52.50 from Mike Murach & Associates

When I started my current job, I didn’t know much about databases in general, or SQL in particular; I took the usual databases class in college and taught Access for a few semesters, but that’s about it. After finding out that my job involves moving information into SQL databases, I figured I’d better brush up on those things!

I found that I had three related areas I wanted to study: basic database concepts, SQL use in general, and MSSQL administration in particular. Database concepts I was somewhat familiar with from college, so I just picked up The Manga Guide to Databases for a quick review. For the Microsoft administration part, a group of coworkers and I are reading through the MCTS Self-Paced Training Kit on SQL Server 2008 and planning to take the 70-432 exam. For SQL itself, however, I was lucky enough to pick up a copy of the Murach book, which provides an excellent coverage of SQL commands.

If you’re not familiar with the Murach books (I wasn’t), they have a somewhat unique format: each topic is discussed in two different ways, on opposing pages. On the left, you see a description of what’s going on, while on the right you see code examples and guidelines. As an example, I randomly opened the book to pages 162 and 163; page 163 has some sample code and output from a SELECT statement using GROUP BY and HAVING, while page 162 talks about how the GROUP BY and HAVING clauses work and what’s going on in the code on the facing page. I found that this style makes it very easy to follow what’s going on, and rather than reading one page at a time I’ll alternate between pages, looking at the code while reading the description of what it does.

If all you need to know is how to use a database, you can probably get by with just the first two sections of this book. Section one, An introduction to SQL, explains the concept of a relational database and how tables and columns are related, how to use SQL Server 2008, how to back up and restore databases, etc. Section two, The essential SQL skills, is all about the commands that you’ll execute on a database. The first three chapters in section two are all about various SELECT statements, starting with retrieving data from single tables and moving on to retrieving from multiple tables, summary queries, and subqueries. After that we get into INSERT, UPDATE, an d DELETE, as well as the data types SQL supports and how to work with them.

Section three covers how to design and implement the database; here you learn things like how to identify the primary and foreign keys and how normalization works, as well as the commands to actually create everything. Section four is several hundred pages on advanced SQL skills, including working with views, coding scripts, stored procedures, and functions, managing transactions and security, working with XML and BLOBs, etc. Finally, section five gives you the basics of CLR integration, and of course there are a few appendixes telling you how to install the database files and software (SQL Server 2008 Express, which is free, and Visual Studio 2008, which you need only for the last few chapters) that you’ll need to work through the examples in the book. No CD is included; all of the required example files can be downloaded from the Murach website.

Although I bought the book specifically to use to learn SQL, I expect it to make a great reference; the format (and excellent table of contents) makes it easy to quickly look up how to do things. I’ve already recommended the book to several of my coworkers who also wanted to learn more about SQL, and so far I’ve heard uniformly high reviews. Highly recommended.

The Manga Guide to Databases

The Manga Guide to Databases by Mana Takahashi
Illustrated by Shoko Azuma
$19.95 from No Starch Press

This book has either a minor plot hole or a lying fairy, but I’m not sure which.

Since my job now requires that I use databases, I’ve been learning the basics of SQL; I have several excellent, yet dry, books on the subject. Then I ran across the Manga Guide to Databases; while I’m not a fan of manga, I do like graphic novels and I was curious as to how they would approach the subject.

The book follows a simple storyline about the Kingdom of Kod, which produces and exports fruit. It is the job of Princess Ruruna to manage the data involved in the entire fruit business, and she is feeling overwhelmed, to say the least! Then her parents, who are traveling abroad, send her a book on databases, which comes complete with a database fairy who instructs her in the ways of SQL. Naturally, there is a romantic subplot as well.

The book is illustrated by a professional manga artist; I don’t know enough about the genre to compare the art to other manga, but it works for me. The story, as mentioned, is pretty simple, but it works effectively to break up what can be a dry subject. The book starts out by exploring what a database is, then narrows that down to a relational database. We then move on to database design, SQL, operating a database (including the ACID principle and data recovery), then finish by talking about various database applications.

Naturally, the book isn’t going to tell you everything you need to know about databases – you won’t learn how to set up a SQL server, for example, so you’ll need one already available if you want to try out the commands given here – but it presents a nice high-level overview of databases, making it a good introduction to the theoretical concepts.

My New iPad

My New iPad: A User’s Guide
by Wallace Wang
Published by No Starch Press (an imprint of O’Reilly Media)
List $24.95, $15.44 from Amazon, $9.99 Kindle edition

For many people, the iPad is the most complex electronic device they’ll ever own. Neither buying nor using it requires a computer (although rearranging your icons is a lot easier using iTunes than doing it on the iPad directly). From personal experience, my mother couldn’t tell you the difference between a floppy disk, a CD, and a videotape, but she thinks the iPad is really cool.

So a lot of people could probably use a little help getting started with all of the features that the iPad has to offer; while there’s always the Apple store, who wants to go to the mall anytime you have a question? Wallace Wang’s new book, My First iPad, is a fairly comprehensive look at what the little machine can do, complete with step by step directions on how to do it. The instructions are laid out pretty well – I only noticed one instance where there was a skipped step, and it was fairly minor – and should be easy for even non-technical people to follow.

The book has 40 chapters divided into seven sections, starting with the basics (how to turn the iPad on and off, ways to conserve battery power) and moving into customizing the iPad, surfing the internet, transferring data, buying stuff in the Apple store, and basic troubleshooting.

Reading this book, I didn’t see much I didn’t already know after owning an iPad for a couple of months, but I’m a fairly technical person and also own an iPod touch; I see this aimed more at the non-techie person who doesn’t normally spend a lot of time or money on gadgets. For that audience, this should be a very useful book, and I plan on giving my parents a copy once they get their first iPad.

The Linux Programming Interface

The Linux Programming Interface
A Linux and UNIX System Programming Handbook
by Michael Kerrisk, published by No Starch Press (an imprint of O’Reilly Media)

As someone with several degrees in computer science, I’ve used Linux quite a bit; it’s my preferred environment for doing C++ programming. However, I’ve never formally studied the operating system; rather, I’ve just picked up enough to get by. As such, I was very interested to pick up a copy of O’Reilly’s new book on Linux programming and remedy that deficit in my education!

My original intent was to just spend a few weeks reading through the entire book; that delusion lasted approximately fifteen minutes. This is a big, heavy book – as in, potential murder weapon heavy. As should be clear from the title, it’s not about using Linux, it’s about programming with Linux, and expects a minimal level of programming competence from the reader. I had originally intended to review the book last year, but there’s quite a lot of reading involved!

The book starts out with an introduction to the history (including the standardization process) of UNIX and C; it then has one chapter each on fundamental concepts and system programming concepts. This is followed by information on files (there are, in fact, six chapters on file I/O, attributes, and events), processes, memory allocation, users and groups, security (including process credentials and access control lists), threads, sockets, etc; in all, there are 64 chapters covering 1400 pages, plus a half-dozen appendixes. The book covers over 500 system calls and library functions, and includes over 200 sample programs.

Reading through the book, it appears to be well-edited; free from obvious technical and typographic errors. This being a Linux/UNIX book, all of the sample code is naturally written in C, rather than trying to show multiple versions in “hot” languages, as many books these days tend to do. The author has been in charge of maintaining the man pages for Linux since 2004, and his familiarity with the system shines through; fortunately, he also happens to be a good writer, and rather than just telling you what a particular system call does, he first explains why something is useful and when you might want to use it.

Lately I’ve been in the process of slimming down my personal library, but this book has earned a prominent place on my computer shelf.

Disclosure: I received a free review copy of this book.