The Lost Hero – A review

Comments: No Comments
Published on: January 25, 2011

With what looks to be five books planned in a new series by Rick Riordan, people have some good fantasy ahead of them.

I just finished the first installment in this new series and must say that I am pleased with the story line.  New characters, new aspects of mythology and a third series revolving around those principles.  Rick Riordan has got a really hot topic and something working for him with all three of his series.

In this series we are introduced to the Roman versions of the mythological gods.  With the Roman aspects of these gods, we also get a new class of “evil god.”  Book one takes off from the final prophecy in the Percy Jackson series and brings three new demigods as the central focus.  I like the powers of these new demigods.  I also like the personalities of each.  Rick has done a great job of illustrating their characteristics without making them sound too much like heroes from prior books.

I did not like the grammatical problems constantly repeated throughout this book.  The same thing happened in the Percy Jackson series and got better with each book.  This is not an issue with the dialog but more to do with editing.  An example would be “Jason sat to next to the tree.”  Stuff like that is easily skipped by many people but sticks out like a sore thumb to me.

Overall, I highly recommend the book if you enjoy mythology and fantasy.

MockingJay – a review

Comments: 1 Comment
Published on: January 4, 2011

After a long wait, I have finally read the final installment in the “Hunger Games” trilogy.  I read the other two books earlier in the year in 2010 and then had to wait for the third book to come out.   Once the book came out (September 2010) I had to find some time to read the book.  Actually, I had to make time to read it.  Reading helps to de-stress and I just needed to do it.  you can read my reviews of the other books here and here (d’oh didn’t write one for the first book).

Up front – this was the third best book in the series.  I was mildly disappointed in this book.  The story was good but was just not as good as the first two.  It seemed to me that the author was trying to develop the story as the story unfolded.  The twists and turns in the plot were minor and mostly the plot was about the Mockingjay recovering from this or that.  It just wasn’t in true hunger games fashion.

It also seemed obvious to me that Plutarch (games master) was busy trying to orchestrate yet another Hunger Games.  That became painfully evident early on but was blaringly obvious when they are in the command center going over the map for Capitol City.  And if there was any doubt in the final chapters as to who did what in regards to a certain bombing event – you weren’t paying attention while reading.

I still liked the book and i still liked the series – I expected more and for it to be better.  If the book was to be another Hunger Games – then play that up a bit more.  It is the how the first two books were written and the description of the games that got people intrigued.

I would still say to go read the book and the entire series though.

Drumroll Please…

Comments: No Comments
Published on: November 29, 2010

Defensive Db Programming Chapter 10

After dragging this review on for months now, it is finally time to bring this bad boy home and wrap it up.  I have been working through a chapter by chapter review of the book by Alex Kuznetsov (Blog | Twitter).  Alex has been taking us through the process and various techniques to better program defensively.  This is the last installment in that series (yes shed a little tear).  This chapter is devoted to teaching us how to better deal with Modifications that Survive Concurrency.  Some of the problems associated with this are:

  • lost modifications, a.k.a. lost updates – such problems occur when modifications performed by one connection are overwritten by another; these typically occur silently; no errors are raised
  • resource contention errors – such as deadlocks and lock timeouts
  • primary key and unique constraint violations – such problems occur when different modifications attempt to insert one and the same row. (p. 337)

Another way of stating these types of problems is that there is a “Race Condition.”  You may have heard this term thrown around by the developers from time to time.  It isn’t made up and is a very real potential problem that must be dealt with accordingly.

I can’t give this chapter enough props nor enough due through a short blog post on it.  It is a lengthy chapter and covers a very important topic (my opinion).  Alex covers each of the race conditions and continues to show how to resolve that race condition.  He uses real world scenarios as you should have grown to see up to this point.  I will point out that I had not considered using RowVerssion to help resolve some race conditions.  That is at least one thing I have learned from reading this chapter.

Another thing that struck me and made me think is related to the TSQL patterns that Fail High concurrency.  Here two methods are scrutinized and a third method is proposed.  The third method is MERGE.  That is a subject about which I could learn a lot.

For the final time (since this series has come to a close), go get the book and read it.  You can find the rest of the articles by linking back through this link.

Defensive Db Programming Chapter 09

Comments: No Comments
Published on: November 22, 2010

It is down to the final two chapters of the book by Alex Kuznetsova.  Check out the previous chapter here.  The review of this book is certainly taking longer to produce than I had planned.  However, I think you find that the book is still worth it and that this little series is also worth it.  I hope that the spread of this series is at least getting to a few more people here and there and that more people may get a copy of “Defensive Database Programming”.

This chapter is about concurrent queries and Isolation Levels.  I think these seem to be a hot button of late – at least I have been hearing more and more talk about them than in the near past.  Alex starts the chapter with a stark realization.  He states:

Even the simplest SELECT, against one table, may retrieve incorrect results when the base table is being modified at the same time. (p. 297)

Think about that statement for a bit.  I imagine it won’t take you long to realize that it is true.  I am certain that you have come up with several examples that underscore that statement.

Alex then progresses through Isolation levels giving a demonstration of what will happen under the described circumstances.  This chapter is not intended to explain the differences between the Isolation levels, but merely to demonstrate what could happen – as has been the theme throughout the book to this juncture.  These examples that Alex uses first describe a theoretical problem and then he reproduces the theoretical problem with real world scenarios.

Alex also outlines in this chapter some considerations for choosing the correct Isolation level for your business needs.  Pros and Cons are weighed and usefulness of the Isolation level is discussed.  Alex also offers up the notion of using a query hint to issue a table lock when querying the database.  Due to the reciprocal effects Alex also states that it is almost never really an option.

Alex goes the extra mile in this chapter by discussing how we can minimize deadlocks.

In the end Alex makes a recommendation as to which Isolation level he would use.  Check it out and see for yourself.

Defensive Db Programming Chapter 08

Comments: 1 Comment
Published on: November 11, 2010

We are slowly getting to the end of this book by Alex Kuznetsov (Blog).  You can find more on this series by looking here.  We are now discussing chapter 8 and it is a good chapter.  This chapter delves into Error Handling.

While the use of TRY…CATCH certainly is the best way to handle errors in T-SQL, it is not without difficulties. (p. 259)

In this chapter, Alex discusses some of the problems associated with error handling and demonstrates how to resolve some of those problems.  We will also see how to use XACT_ABORT.

The first key to error handling is to prepare for unanticipated failure.  That is the crux of error handling.  We anticipate certain behaviors and code for that, anything else needs to be handled through error handling so we can see what has happened.  Code sometimes fails, and queries against the data can also fail on occasion – we need to plan for those failures.

When dealing with data modifications there are occasions when using explicit transactions is necessary due to the nature of the data modification – we would want to ensure that any and all changes to the data were rolled back.  There are other times when we would want to ensure that processing halts immediately when an error is encountered.  In such a scenario, XACT_ABORT comes in useful.  Note, however, that this setting is probably better set explicitly ON or OFF depending on the needs.

A recommendation in this chapter is to use client-side error handling for all but the simplest of error handling.  Error-handling is far more robust in other languages than it is in TSQL.  This is a recommendation that I support.  Error handling in TSQL has become better over time (i.e. with the addition of the TRY…CATCH) and is quite useful for some degrees of error handling.  One particular realm where error handling in TSQL is lacking is in the area of Code-Reuse.  The TRY…CATCH must be rewritten for each stored procedure for which you wish to enable error handling.

As always, this chapter covers some of the gotchas of error handling in TSQL and gives examples on how to implement as well as circumvent some of the problems.  Check it out!!

Blogger Awards

A few days ago I wrote about an election that was taking place (ok so it was a week ago at this point).  That election was the SQLServerpedia Awards.  My first post on that election can be found here.  I had wanted to write another post about the election and make a whole bunch of campaign promises – to help make it feel political.  One big difference is that I was going to run a positive campaign and just talk about what I would do if I were to win.

Well, I won in one of the categories and I never wrote that campaign promises post.  So, I will just tell you what I would have promised and then maybe do some of those things.

  1. I will display the trophy in my cubicle at work
  2. I will support my fellow bloggers as much as I can just as I have done in the past.  There are some exceptional bloggers out there.
  3. I will continue to work with SQL Server
  4. I will continue to blog!!!!
  5. I will also finish my series on the book review for which I won.  Then I will progress to the next book or two and write reviews for them as well.
  6. I will continue to provide posts to SQLServerPedia

Thanks to all who voted for me.  I appreciate the support.  I recommend checking out the other books in the Book Review category.  I also recommend that you read the Blogs of the other people that were nominated for the SQL Choice Awards/ SSP Awards.

In short, this award is great and I really appreciate it.  In the grand scheme of things I am happy to have received it and rest assured that it doesn’t change my blog or me – except that I will post a badge on my blog.  We also had many excellent DB professionals and bloggers who won in various other categories.

Thanks SQLServerpedia for the awards and putting on these awards for the community.

Defensive Db Programming Chapter 07

We are here again after another …um long lapse in time … and ready for another episode in this series.  Today we get to talk about chapter 7 in the book by Alex Kuznetsov (Blog).  You can find more on this series by looking here.

Advanced Use of Constraints

This chapter ties in well with chapters 4 and 6.  You may want to review those chapters as you read this chapter.  There were problems raised in those prior chapters and now they are being discussed at length in this chapter.  First order of business is to revisit the ticket tracking system that was discussed in chapter 4.

Ticket Tracking

The system was left with business rules implemented via triggers in chapter 4.  We are now going to explore using constraints in lieu of the triggers to enforce the business rules.  For sake of testing, the environment should be reset and a new environment built.  Alex provides all of the scripts to do so.  As Alex progresses through this example he lays out the assumptions and some of the problems with those assumptions.  Through a combination of Indexes and constraints.  Another item that was implemented was the use of ON UPDATE CASCADE to help ensure the business requirements could be met.  Alex talks about the implications on performance and the reasons for implementing the cascade update.  Make sure you read this chapter to find out more.

Inventory System

There is a substantial amount of discussion about a new example in this chapter.  That discussion revolves around the Inventory System and several use cases.  I recommend reading the chapter.  I am not going to discuss it beyond that here in this post.  There are a great collection of scripts to run through the example.

Conclusion

In this chapter Alex shows us how a combination of constraints can enforce complex business rules.  The use of constraints should be included as a viable option when trying to enforce business rules.

Once again, go get this book and read it.  It is well worth the read.

The Year of the Phantom

Tags: ,
Comments: No Comments
Published on: October 3, 2010

It is amazing how fast time moves the older (and slower) we as humans get.  Looking back on time, it doesn’t seem to have been that long since I got married.  Today marks the 15th anniversary of that occasion.  It has been a good fifteen years and both of us have learned a lot.  I would dare say that while many things have not changed, many have changed within our relationship.  That is a good thing – you can’t make a marriage work without teamwork.  We work well together.

For our anniversary celebration (we did it a day early), I took her to the Phantom of the Opera at the Venetian.  If I were to be reviewing it, I would give it high marks in most areas and I think it is a must see.  A tip though, order your tickets directly from the Venetian.  If you order from the Venetian, the initial ticket cost is cheaper than anywhere else I found the tickets.  Furthermore, I was able to find discount codes online for ticket purchases at the Venetian.  Overall cost savings was huge.

My wife and I sat front row for the show, right next to the orchestra pit.  The view was spectacular – even when we disappeared in the fog.  What we were unprepared for was the fireworks and fire plumes at various points in the show.  We like what they did with the chandelier and moving the characters from time to time throughout the audience.  Even being as close as we were, and being able to see fine details in the makeup, there were no real flaws to the production (not even in the makeup).

I would go see it again.  Just be aware that this production is not exactly the same as the production on Broadway.  This is still Andrew Lloyd Webbers work and all changes to the score were done by home.  The main changes are in scenery and transition as well as special effects.  Both versions have their highlights and are both well worth watching.

Red Pyramid

Tags:
Comments: No Comments
Published on: October 2, 2010

After having read the Percy Jackson series of books, I wanted to read a few more books by Rick Riordan.  I happened across this book one day while browsing a local store.  It didn’t take much thought after seeing the cover, title and author (sometimes the cover art is important in finding a book).  The book is “The Red Pyramid (The Kane Chronicles, Book 1).

I have to remark that I was somewhat surprised by the end of the book in the vast improvement in grammatical mistakes that I noticed.  This book could have gotten away with a lot more based on the style.  At the end of the book, there were only two such mistakes that I had noticed – that is very good.  That is substantially better than the Percy Jackson series as well.  I had to bring that up since I had noted the problem in the Percy Jackson series and it is the same author.

The book takes on a different culture this time with the heroes (who are also once again godlings / demigods).  Rather than the Gods of Rome and Greece, we now get to learn a little about the Egyptian gods – mixed deeply in fantasy.  I found it intriguing – while also too similar to the Percy Jackson series.  There were substantial differences – but kind of the same feel while not being entirely the same plot.  I think it might have been recognized by the author as well when he made a subtle reference to the Percy Jackson series as our heroes arrived in Brooklyn.  I thought that was great.

This series is not about the adventures/misadventures of one teenage demi-god, but rather a brother and sister who must help each other.  There are some nice twists and turns and it should be enjoyable.

I would give this one a B+

Keys to the Demon Prison

Categories: Book Reviews, News
Tags:
Comments: No Comments
Published on: September 15, 2010

I recently finished reading Fablehaven, Book 5:Keys to the Demon Prison by Brandon Mull.  I thoroughly enjoyed this book.  I found myself constantly looking forward to reading the book and couldn’t put the book down once I started reading.

This is the final installment in the Fablehaven series and it made me want to go back and reread the other four books.  There were adequate plot twists and turns – some predictable and some not.  I do wish the turns would have gone this way or that throughout the story.  I think that is natural for somebody engaged in a book like that – you want certain storylines to turn out differently or to be developed a little  bit more.

I would recommend this series to others.  This series is an adolescent type series and is great fantasy.  I found it worth the read and well edited.

«page 2 of 4»

Calendar
December 2018
M T W T F S S
« Nov    
 12
3456789
10111213141516
17181920212223
24252627282930
31  

Welcome , today is Thursday, December 13, 2018