Subscribe with RSS or ATOM Add to Google





Monday, May 20, 2013

The Modern Web: Multi-Device Web Development with HTML5, CSS3, and JavaScript Book Review

Although I started with ColdFusion for application development, I did plenty brochureware sites with HTML. I believe the version was HTML 2.0 for IE 2.0. I lived in the browser world for years doing ColdFusion, ASP, and HTML sites. When winforms and Smart Client with web services emerged I changed my religion. Since then I have been avoiding the browser whenever possible since.

For the past couple of years I have used HTML/JavaScript/CSS a lot as a byproduct of building ASP.NET and ASP.NET MVC applications for public consumption. Internal enterprise applications I will still push for using WPF and web services over ASP.NET or ASP.NET MVC, but I lose that battle a lot, especially when the developers have never learned WPF (XAML) and have no interest in learning anything new.

When it comes to Mobile Apps my first choice will always be native applications using Objective-C, XAML with C# or C++, and Java using the ASP.NET Web API for the services. The problem is I am going to end up fighting the same battle with the web developers that don't like learning anything new. They are going to turn to HTML/JavaScript/CSS to build their mobile applications as a mobile web site or hybrid application.

So far I have found HTML5 is no different than any other version with respect to the way its capabilities are implemented and where it belongs when architecting a solution. It is far reaching, but if you want a rich HTML5 UI you will be writing a lot of JavaScript and CSS. It really can't be helped, that has always been the real skin and muscle on the HTML skeleton.

HTML5, JavaScript, and CSS are broad subjects. This book zeros in on what you need to know to build to build multi-device web applications. Below are the chapters in the book to give you an idea of what is covered.

Chapter 1: The Web Platform
Chapter 2: Structure and Semantics
Chapter 3: Device-Responsive CSS
Chapter 4: New Approaches to CSS Layouts
Chapter 5: Modern JavaScript
Chapter 6: Device Apis
Chapter 7: Images and Graphics
Chapter 8: New Forms
Chapter 9: Multimedia
Chapter 10: Web Apps
Chapter 11: The Future
Appendix A: Browser Support as of March 2013
Appendix B: Further Reading

In the beginning of the book the author described the different types of readers he tailored the book to. I fall into the category of wanting a snapshot of what the latest and greatest technologies are available.

The author's description of his book is "this book is a snapshot of current, new, and near-future features in HTML, CSS, JavaScript, and related technologies, with a bias toward those that are best for building sites in the multi-device world." I would say he pulls it off.

The author has a really nice writing style which makes the book an enjoyable read. He covers a ton of topics and covers them deep enough to thoroughly explain how to use them. This book isn't really a reference book, so he does not cover every scenario and provide big tables or lists of APIs. It is a learning book that presents it lessons in the context of multi-device web development.

That is not saying I won't be keeping it handy to refer back to over time. I am just saying there is no reference type content filler. Which is great!!

The code samples are very well organized and usable. Each chapter has a folder and each example has a file.

I highly recommend this book to anyone that wants to get a snapshot of current, new, and near-future features in HTML, CSS, JavaScript, and related technologies in the context of multi-device web development.

The author also has a really good book out on CSS, The Book of CSS . I highly recommend that one too!

The Modern Web: Multi-Device Web Development with HTML5, CSS3, and JavaScript

Saturday, May 04, 2013

Core Java (9th Edition) , Volume I and Volume II Book Reviews

This review covers both Core Java Volume I--Fundamentals (9th Edition) and Core Java, Volume II--Advanced Features (9th Edition). Both books are part of the Prentice Hall Core Series.

I actually got Volume II first and liked it so much I ordered Volume I. I felt like I was missing the first half of the story. Especially when I downloaded the code and both volumes were included.

These two books take you on quite a journey. The first volume starts off with a great overview and history of Java. It then goes into how to download, install, and configure both the JDK and Eclipse. The authors uses Eclipse throughout both volumes.

The rest of Volume I is dedicate to covering the fundamental concepts of the Java language and the basics of user-interface programming. I have listed the chapters in Volume I below.

Volume I
Chapter 1. An Introduction to Java
Chapter 2. The Java Programming Environment
Chapter 3. Fundamental Programming Structures in Java
Chapter 4. Objects and Classes
Chapter 5. Inheritance
Chapter 6. Interfaces and Inner Classes
Chapter 7. Graphics Programming
Chapter 8. Event Handling
Chapter 9. User Interface Components with Swing
Chapter 10. Deploying Applications and Applets
Chapter 11. Exceptions, Assertions, Logging, and Debugging
Chapter 12. Generic Programming
Chapter 13. Collections
Chapter 14. Multithreading
Appendix A. Java Keywords

As you can see the first volume covers a ton of topics. They are all covered in depth and without filler. It is amazing that in these two huge books the authors' no nonsense approach uses no blather to fill up pages with unneeded war stories and his personal views on how the language could be better. I mention that because I recently tossed a book on the pile of books I regret buying that was all filler.

Volume II picks up where Volume I left off and continues into enterprise features and advanced user-interface programming. The topics are covered in great detail, but the authors' writing styles make the topics easy to understand, and a pleasure to read.

Volume II
Chapter 1. Streams and Files
Chapter 2. XML
Chapter 3. Networking
Chapter 4. Database Programming
Chapter 5. Internationalization
Chapter 6. Advanced Swing
Chapter 7. Advanced AWT
Chapter 8. JavaBeans Components
Chapter 9. Security
Chapter 10. Scripting, Compiling, and Annotation Processing
Chapter 11. Distributed Objects
Chapter 12. Native Methods

The authors also have a support site that has a List of Frequently Asked Questions, a bug list (Errata), and the downloadable code.

The downloadable code is organized by volume and chapter. Each chapter has its own folder and each example in the chapter also has its own folder. The best part about it is it just runs. Lately that hasn't been the case with a few book I have purchased.

The code along with the in-depth and clear explanations of the topics at hand provide the ultimate Java learning tools.

There are a total of 2092 pages of pure Java learning material. The authors' writing styles make these a good cover to cover read for the beginner that needs to cover everything, but they very well organized and make great references.

I highly recommend these books to beginners as well as advanced developers. When I am coding Java, these two books will definitely be by my side.

Core Java Volume I--Fundamentals (9th Edition)










Core Java, Volume II--Advanced Features (9th Edition)

Wednesday, May 01, 2013

C# 5.0 Unleashed Book Review

In this version of the book the author still starts off by answering the question, "Why do we need another C# book?". I was asking myself that very question when I turned to the introduction of C# 4.0 Unleased which was the first version of this book I read. He says "In short, what sets this book apart from many others is its in-depth coverage of how things work."

As far as C# 5.0 books go, I have read C# 5.0 in a Nutshell: The Definitive Reference, Pro C# 2012 and the .NET 4.5 Platform, Essential C# 5.0, and CLR via C# (Dev-Pro) . All very good books, very good!!! C# 5.0 Unleashed belongs on the shelf with them. The author does indeed break down the C# language in a unique and very enjoyable way.

The book starts out with a great overview of the .NET Framework and history of C#. The author breaks the history down by versions. The first two chapters will catch all those new to C# development up with the C# progression a lot of us lived through.

After that the author has two detailed chapters on .NET development and the C# language essentials. He then continues the rest of the book digging into all of the details of the C# language. I have listed the chapters below to give you an idea of how much is covered.

Chapter 1. Introducing the .NET Platform
Chapter 2. Introducing the C# Programming Language
Chapter 3. Getting Started with .NET Development Using C#
Chapter 4. Language Essentials
Chapter 5. Expressions and Operators
Chapter 6. A Primer on Types and Objects
Chapter 7. Simple Control Flow
Chapter 8. Basics of Exceptions and Resource Management
Chapter 9. Introducing Types
Chapter 10. Methods
Chapter 11. Fields, Properties, and Indexers
Chapter 12. Constructors and Finalizers
Chapter 13. Operator Overloading and Conversions
Chapter 14. Object-Oriented Programming
Chapter 15. Generic Types and Methods
Chapter 16. Collection Types
Chapter 17. Delegates
Chapter 18. Events
Chapter 19. Language Integrated Query Essentials
Chapter 20. Language Integrated Query Internals
Chapter 21. Reflection
Chapter 22. Dynamic Programming
Chapter 23. Exceptions
Chapter 24. Namespaces
Chapter 25. Assemblies and Application Domains
Chapter 26. Base Class Library Essentials
Chapter 27. Diagnostics and Instrumentation
Chapter 28. Working with I/O
Chapter 29. Threading and Synchronization
Chapter 30. Task Parallelism and Data Parallelism
Chapter 31. Asynchronous Programming
Chapter 32. Introduction to Windows Runtime

He has included a ton of diagrams that provide a visualization of the topic he is covering. The diagrams really help to speed up the learning process. They really help with the chapters on LINQ.

The author also includes tons of sidebars that are interesting and helpful. A few examples include "No PIA", "The Origin of the Name C#", "The Story of a Guy Called Jim... Or How the Dynamic Language Runtime was Born", "On Backward Compatibility and Keyword Reuse", "Functions are Data!", "Functional Techniques in C#: Currying", "Where does the Name Lambda Come From?", and "Don't Repeat Mistakes".

Some of my favorite sections of the book are ""The Evolution of C#", "Life Without LINQ", "Query Expression Syntax", "Co- and Contravariance", "DLR Internals", "The Holy System Root Namespaces", and "Classes Versus Structs".

The downloadable code for the previous versions of the book were in one solution. There was one project per chapter which makes it very easy to find the sample and use it while reading the book. At the time I am writing this review there is no download available. I pinged the author through his blog site, but the email came back as undeliverable. I am assuming it will be posted in the near future in the same easy to use format.

One bummer about this version of the book is that it no longer continues the theme of marking things by .NET version. In previous versions the author included an icon indicating which version of C# included the feature he is going to cover. This helped in an environment that ranges from 1.1 to 4.0. When I find myself in 2.0 code, and I am trying to use a feature I am used to having available since 3.0, I could take a quick look to see if I am nuts, or it is just missing because of the version I am using.

The bummer is cancelled out by the fact that when you buy the book you also get a code that allows you to download the .pdf, .epub, and .mobi versions of the book. It is nice to have access to the book everywhere I go without having to lug the 5lb tome around.

Pure is the one word I would use to describe this book. It is purely about the C# language. It briefly covers the Framework libraries that are available in the beginning of the book during the introduction, but then it is all about C# 5.0. 1700 pages of C# nirvana!!!

All in all I highly recommend this book. It is good for both the beginner and the advanced developers.

C# 5.0 Unleashed

Monday, April 29, 2013

The Java Tutorial: A Short Course on the Basics (5th Edition) Book Review

If you are interested in getting started with Java, or just object oriented programming, this is a great book to start with.

The book starts off with a high level overview of the Java platform and goes straight into an example of creating a hello world application. While creating the hello world application the authors take you on a tour of the NetBeans IDE.

It then covers the basics of 0bject-oriented programming and the Java programming language. The authors cover objects, classes, inheritance, interfaces, packages, variables, operators, expressions, statements, blocks, and control flow statements.

After the introduction chapter the chapters begin to go into detail about each of the topics that were introduced, and many more. I have listed the chapters below.

1. Getting Started
2. Object-Oriented Programming Concepts
3. Language Basics
4. Classes and Objects
5. Interfaces and Inheritance
6. Generics
7. Packages
8. Numbers and Strings
9. Exceptions
10. Basic I/O and NIO.2
11. Collections
12. Concurrency
13. Regular Expressions
14. The Platform Environment
15. Packaging Programs in JAR Files
16. Java Web Start
17. Applets
18. Doing More with Java Rich Internet Applications
19. Deployment in Depth

The coolest thing about this book is that it is available for free on Oracle's Java Tutorials web site. You can download the book by chapter in epub and mobi format, or the entire Java Tutorials web site. You can check out the entire book before you buy it. You also have the ability to search the book.

Personally, when I want to learn and not simply look something up, I need printed books. After spending 8-10 hours a day staring at a computer screen the last thing I want to do is read a book from a computer screen.

When you download the web site you get all the sample code that accompanies the chapters. The downloaded web site also includes trails and lessons are only available as web pages with the download or online. All the samples are available in .java and .class formats.

The book ends with an Appendix titled Preparing for Java Programming Language Certification. It contains outlines of the topics you need to know for three of the Oracle certification examinations, and points to the chapters you should read and study.

The author's writing style makes this book an easy cover to cover read, but it also makes a great reference.

All in all I highly recommend this book to those getting started with Java or anyone that wants to start learning what 0bject-oriented programming is all about.

The Java Tutorial: A Short Course on the Basics (5th Edition)

Friday, April 26, 2013

Secure Coding in C and C++ (2nd Edition) Book Review

This book is not only solid in the technical coverage it gives, it also gives a great overview of security concerns, history of how we got where we are, the types of threats and flaws that exist, who needs to be concerned, and what your role's responsibilities are in the security picture.

It is amazing to see the data summarized in one place and how disturbing the data is. The amount of money lost to security issues is amazing. After reading the first chapter you can't help but to want to read the rest of the book.

This second version of this book is not a small update. The first edition was 341 pages and the second edition is 569 pages. That is 228 more pages of new information added to existing chapters and a whole new chapter 7 on concurrency. I have listed the chapters below.

Chapter 1. Running with Scissors
Chapter 2. Strings
Chapter 3. Pointer Subterfuge
Chapter 4. Dynamic Memory Management
Chapter 5. Integer Security
Chapter 6. Formatted Output
Chapter 7. Concurrency
Chapter 8. File I/O
Chapter 9. Recommended Practices

There is a lot of new material added on integer security, strings, , and dynamic memory management. Every chapter goes into great detail.

The book is packed full of a ton of code samples, summary tables, and diagrams that really help to clarify the topic at hand.

The book ends with an awesome chapter of recommended practices. The author covers the Security Development Lifecycle, Security Training, Requirements, Design, Implementation, and Verification (analysis, code audits, and testing). The chapter includes recommendations on secure coding standards, threat modeling, security quality requirements engineering, and much more.

The technical advice is thorough and explained in a way that makes for a very interesting read. In other words, the author has a great style of writing, which really helps with a topic like this. It is actually hard to put down. The threats the author uncovers just keep coming.

This is must read for C++ and C developers, but I would also recommend it for any programmer or architect of any language.

Secure Coding in C and C++ (2nd Edition)

Tuesday, April 16, 2013

Test-Driven Database Development: Unlocking Agility Book Review

I was a little wary of this book when I first saw it. No real specific red flag came up, just the general thought of yet another TDD book that magically unlocks agility.

The author caught me by surprise as I started to read the book. He starts off with the way we need to change our view of databases from that of a particular instance into one of classes of databases. This line of thought is what enables TDD in the database world.

The third chapter he covers the differences and relationship between test-first programming and test-driven development. He gets you thinking in the right frame of mind about TDD.

The book continues with details of the practices and patterns you need to know to succeed at TDD with databases. I have listed the chapters below.

Chapter 1. Why, Who, and What
Chapter 2. Establishing a Class of Databases
Chapter 3. A Little TDD
Chapter 4. Safely Changing Design
Chapter 5. Enforcing Interface
Chapter 6. Defining Behaviors
Chapter 7. Building for Maintainability
Chapter 8. Error and Remediation
Chapter 9. Design
Chapter 10. Mocking
Chapter 11. Refactoring
Chapter 12. Legacy Databases
Chapter 13. The Façade Pattern
Chapter 14. Variations
Chapter 15. Other Applications

Through the process of showing us how to change our view of databases, the author introduces a way of building and deploying databases using XML scripts. He use XML to define the changes to the database, and a library he wrote to handle the parsing the XML and update the database. That technique is used throughout the book.

I mention that because it may be easy to miss when the author says "I’ll leave the implementation details to you, but I typically express the database design in terms of XML documents and store the already-applied versions in a table." I want to point that out because as you start going through the code it may get a bit overwhelming when you see how much work the author puts into the supporting library and XML documents. His tools include using NUnit also. There is an NUnit plug-in for Visual Studio 2012 available which makes running the tests and debugging while testing a lot easier.

The thing to keep in mind is that the author is introducing TDDD (Test Driven Database Design) practices and patterns and he is using the implementation method he has used for years. I accomplish the same thing as the author but I use Visual Studio's Unit Test Project template for tests, the SQL Server Database Project template for database scripts, and TFS for versioning, branching, and merging the tests and database scripts. The point is, keep reading because the author includes great advice throughout the entire book.

The code samples are very well organized and usable. After changing the connection strings and using NuGet to download Moq and NUnit, everything ran as expected. The author uses C# to write the tests and parse the XML he uses to define the database structure and changes.

The author's writing style makes the book an entertaining and enjoyable read.

Overall I highly recommend this book to developers, database administrators, enterprise architects, and software architects.

Test-Driven Database Development: Unlocking Agility

Tuesday, April 09, 2013

Database Design for Mere Mortals: A Hands-On Guide to Relational Database Design (3rd Ed) Book Review

This book is THE book for the database beginner. It thoroughly covers design principles and process, and it covers them in depth.

The book is broken into four parts, Part I: Relational Database Design, Part II: The Design Process, Part III: Other Database Design Issues, and Part IV: Appendixes.

Part I starts with a chapter that gives the history of databases and the path we took to get where we are. It continues with a chapter that covers the reason to have a good design methodology and what the goal of the methodology should be.

Chapter three is really cool for those just getting into database design. It introduces some of the most common terminology used in the database design process. It is not just a glossary (which this book also has after the appendixes), it goes much further than just a definition and includes diagrams to help with the explanations.

Part II covers the database design process. Topics the author covers include table structures, field specifications, assigning primary keys, table relationships, views, and levels of data integrity.

Part III covers bad design and when bending the rules of proper design are ok.

The appendices (Part IV) include a summary of design guidelines, example form templates, diagram symbols, a check list of design guidelines, and an activity diagram (flowchart) of the database design process.

I have listed each part and the chapters they contain below.

Part I. Relational Database Design
1. The Relational Database
2. Design Objectives
3. Terminology

Part II. The Design Process
4. Conceptual Overview
5. Starting the Process
6. Analyzing the Current Database
7. Establishing Table Structures
8. Keys
9. Field Specifications
10. Table Relationships
11. Business Rules
12. Views
13. Reviewing Data Integrity

Part III. Other Database Design Issues
14. Bad Design—What Not to Do
15. Bending or Breaking the Rules

Part IV. Appendixes
A. Answers to Review Questions
B. Diagram of the Database Design Process
C. Design Guidelines
D. Documentation Forms
E. Database Design Diagram Symbols
F. Sample Designs
G. On Normalization
H. Recommended Reading

One thing this book does not include is coverage of the structured query language bracket (SQL). This book is purely about designing the database not about what to do with the data once it is in the database. That's not a downfall of the book, it actually makes it better. The author is able to focus on design principles and drill much further into them by excluding teaching SQL.

Overall I found the author's writing made reading the book a pleasant experience. I cannot say that for all database books I have read. Another reason it is good is that the author goes into extreme detail on each topic he covers.

The author also has made the forms he uses in the book available in Word and PDF format for download on the publisher's web site

All in all I highly recommend this book to database beginners. It will teach you how to do things the right way from the get-go.

I also recommend it for the non-DBA developer who is tasked with creating databases on their projects because the project can't afford a real DBA. There are a lot of those out there and I have seen them be the cause of many painful projects that have to manipulate good code into bad code to compensate for poor database design.

Database Design for Mere Mortals: A Hands-On Guide to Relational Database Design (3rd Edition)

Saturday, April 06, 2013

Implementing Domain-Driven Design Book Review

Agile is not easy and implementing Domain-Driven Design (DDD) is not easy. I think my favorite part of the book is that the author realizes that, and also has a realistic perspective on what it takes to successfully use agile processes and DDD.

The book starts out with a really nice overview of DDD. By the time you are done the first chapter you have a pretty good high level picture of what DDD is all about. One topic he really drives home is Ubiquitous Language.

Ubiquitous Language is a shared team language that defines a certain domain. When you are reading about Ubiquitous Language it may seem like something that just happens on its own. It isn't. An explicit domain language should be defined, it should not just be allowed to implicitly come about. This same concept has been around for years in Water Fall, Unified Process, RUP, and other processes. It has always been a very important part of the software development process, so don't discount it.

Chapter 1 also does a great job of providing tips on how to show the business value of using DDD. The author has a clear understanding that without the support of the business you aren't going to get very far with your project, and in order to get them onboard you need to show them what they will gain by supporting DDD.

The remaining chapters dig into the details of DDD. I have listed the chapters below. Their titles are pretty self-explanatory.

Chapter 1. Getting Started with DDD
Chapter 2. Domains, Subdomains, and Bounded Contexts
Chapter 3. Context Maps
Chapter 4. Architecture
Chapter 5. Entities
Chapter 6. Value Objects
Chapter 7. Services
Chapter 8. Domain Events
Chapter 9. Modules
Chapter 10. Aggregates
Chapter 11. Factories
Chapter 12. Repositories
Chapter 13. Integrating Bounded Contexts
Chapter 14. Application
Appendix A. Aggregates and Event Sourcing: A+ES

I have seen a lot of teams that could not build software with UP or RUP adopt Scrum in hopes that changing the process will make a difference. It never does. There are a variety of reasons including not doing any architecture, not having experienced developers with the right skill sets, not having the right business users involved, not having the requirements elicitation skills needed, and the list can go on and on. The author clearly understands Scrum is not a silver bullet. I mention this because DDD done correctly can give agile processes a much better chance at success, but you must have the skills on the team in order pull it off.

I was really glad to see the author included a chapter on architecture. The author does a great job of covering a ton of architectural styles and patterns. Patterns, styles, and topic found in the Architecture chapter include Layers Architecture with the Dependency Inversion Principle, Hexagonal Architecture, SOA environment, REST, Data Fabric, Grid-Based Distributed Cache, and CQRS.

Every chapter is an in depth look at the topic of the given chapter. I did not leave any of the chapters feeling like I missed something. I have read both Domain-Driven Design: Tackling Complexity in the Heart of Software and Patterns of Enterprise Application Architecture, and I had both handy for looking up references to them. It is not necessary to read them first, but it did help that I had.

I am not going to say using DDD is easy, but I will say this book can definitely get you to where you can successfully use it. The author's writing style is really good and he is good at making the book entertaining. I will however say this, be prepared to read the entire book if you want to get to that point of successfully using DDD. There is a lot to learn, but it is worth it.

I highly recommend this book to every software architect and developer. Even if you don't go all out DDD there is a ton of great advice and wisdom found in this book that will help you improve your skills.

Implementing Domain-Driven Design

Wednesday, April 03, 2013

Tool for Reverse engineering SharePoint 2007/2010/2013 to HTML, Text, and DGML Sitemaps

I have upgraded the tool I created for reverse engineering SharePoint 2007 and 2010 into HTML, Text, and DGML Sitemaps to work with SharePoint 2013. The tool is now versioned at 1.5.  You have to copy the appropriate folder instead of just the file (Version 1.0 was only one file) because the tool is dependent on the WPF Toolkit. The folder includes the WPF Toolkit DLL.

There are no new features with this version.  It is just an upgrade to work with SharePoint 2013

Current features include generating DGML diagrams which allow Root Sites to be put into groups, reports include information on Services running on the Server and the Farm, Database Sizes, user and group account information, and application pool information.

You the option to list the users on the sites, and flag sites that have not been updated for a while to show in RED. The user's emails are listed as well as their administration status.

The DGML tool that creates diagrams for Visual Studio 2010 now ties all the site collects to the web application at the top level, or gives you the option of displaying the top level sites as groups. Sites older than the day selected will be shown in RED. All the site nodes in the DGML are clickable.

The reason for the tool is that I needed to reverse engineer a SharePoint 2007 Farm to prepare for an upgrade to 2010.

I initially used the stsadm tool and PowerShell commands, but they were arduous to use. I looked around for open source options but could not find one. So I built this one. The SharePoint Diagram Tool reverse engineers SharePoint 2007, 2010, and 2013 SharePoint sites into HTML, text, and DGML for displaying in a diagram.

Just copy the appropriate folders to the server and run it as administrator.

You need admin rights on the box and to the content databases. If you generate files, they will be in the same folder as the exe. You also have the option of just copying the results out of the results textbox.

Note- These are not ASP.NET Site Maps. These are for analysis not navigation.

You can turn on the Report Errors to record any exceptions that occur. This can be helpful in troubleshooting permissions. Below are some screen shots:

Feature Panel

Click here for a larger image.


DGML No Groups

Click here for a larger image.


DGML with Top Sites in Groups

Click here for a larger image.


HTML Output

Click here for a larger image.


Text Output

Click here for a larger image.


I have uploaded the tools here.

Sunday, March 24, 2013

The Advanced iOS 6 Developer's Cookbook Book Review

This book is what it claims to be and that is a cookbook on advanced topics. I would follow the author's advice and if you are a beginner with Objective-C or iOS, this book is not the one you want to start with. This book is however an excellent book for experienced developers.

The first chapter kicks right into overdrive with a really nice overview of device specific development. It shows you how to get device capabilities and how to take advantage of that information in your applications. It continues on with 12 more excellent chapters which I have listed below.

1. Device-Specific Development
2. Documents and Data Sharing
3. Core Text
4. Geometry
5. Networking
6. Images
7. Cameras
8. Audio
9. Connecting to the Address Book
10. Location
11. GameKit
12. StoreKit
13. Push Notifications

One of my favorite chapters in the book was on the use of attributed strings and Core Text. That is probably because I needed to use the knowledge in that chapter in an application immediately. It was perfect timing and it does a great job of showing how iOS 6 has been updated.

I also used the chapter on Push Notifications immediately. I needed to understand how they work because we are using Airwatch which requires an Apple Push Notification Service Certificate. The chapter really helped clarify how they work, when to use them, and when not to use them.

This book picks up where the authors book The Core iOS 6 Developer's Cookbook left off with networking. The chapter on networking included in this book covers handling authentication challenges, using the system keychain, and working with OAuth.

I did not bother doing all the iTunes Connect registration required by Apple to use the GameKit chapter. Apple needs to fix this process. I only breezed through the GameKit chapter and the StoreKit chapter. I have no requirements for either in the applications I am currently building.

Like the author's other books, this book is much more than just a cookbook with a bunch of recipes in it. I have used plenty of cookbooks and they are never readable from cover to cover. I usually just familiarize myself with the recipes that are available, read the ones interesting to me at the time, and throw them on the shelf until I need them.

This one is both a great cover to cover read as well as a great reference. The author does a great job of mixing a traditional book with a recipe book. Each chapters contain both background information and recipes.

This book lives up to the cookbook title. There is tons of code that comes with it and it is all very well organized and usable. The only thing I didn't like was that the author used HelloWorld.xcodeproj for the project name every time. After you open a few projects you have to go to Finder and the actual folder to reopen a specific one because all your shortcuts are HelloWorld.xcodeproj.

Over all I found this to be an excellent book for experienced developers. It is a perfect addition to her The Core iOS 6 Developer's Cookbook.

The Advanced iOS 6 Developer's Cookbook (4th Edition)

Saturday, March 23, 2013

Blender Master Class: A Hands-On Guide to Modeling, Sculpting, Materials, and Rendering Book Review

Blender is a beast. At least to a guy like me that is usual in code and not in user interface tools. Sure I use Xcode, Eclipse, and Visual Studio but they just give me a place to code. I have used Photoshop, GIMP, and Expression Studio which make you depend on the tools available but Blender is in a class of its own.

I have downloaded it in the past around the time Big Buck Bunny was first released. I spent a few weeks playing with it, but got nowhere. This book convinced me to take another crack at it and I am really glad I did.

The book starts off with an introduction to Blender and a short introduction to GIMP. GIMP is another powerful open source tool the author uses for 2D image editing throughout the book. For a great book on GIMP check out The Book of GIMP: A Complete Guide to Nearly Everything . I have a review of that book here.

I have listed all the chapters below to give you an idea of all the high level topics covered. Each chapter is packed with tons of information.

1. Introduction to Blender
2. Introduction to GIMP
3. Preparation
4. Blocking In
5. Modeling the Details
6. Sculpting
7. Retopology
8. UV Unwrapping
9. Hair and Particle Systems
10. Texture Baking
11. Texture Painting
12. Materials
13. Lighting
14. Rendering and Compositing
15. Going Further

I had Blender open almost the entire time I read the book. It took a little longer to get through because I kept getting sidetracked trying different things, and wanted to be in front of a computer with Blender on it, but I think it was worth it.

Blender really is an amazing tool and I know the author said they have made great improvements to the user interface to make it more intuitive, but I would still be lost in it without a book like this.

Without this book I would have never figured out how to do sculpting correctly or work with particle systems and paint textures. This book goes into some really advanced modelling techniques, which makes this book great for both the beginner and the advanced user.

The book sticks to creating, texturing, and rendering models as still images. It does not cover the rigging and animation tools, simulation tools, or the game engine. That takes nothing away from the book and actually makes it better. Focusing on creating, texturing, and rendering models as still images the author is able to go in depth on a massive amount of topics.

The book comes with some awesome examples. Without them I probably would have not have learned as much as I did. It was pretty cool to see how powerful Blend is and how awesome the results of using it correctly can be. The author does some really cool stuff.

The author's writing style also made the very complex tools easier to understand. The book is written like he is there in the room with you helping you learn and showing you how to work through the steps of creating still images.

This book has literally opened up a whole new world of creative possibilities. I now have Blender open every chance I get.

I highly recommend this book to anyone wanting to learn about Blender, or anyone working with Blender at any level.

Blender Master Class: A Hands-On Guide to Modeling, Sculpting, Materials, and Rendering

Friday, March 08, 2013

Sams Teach Yourself iOS 6 Application Development in 24 Hrs 4th Edition Book Review

If you want to learn iOS 6 development, this is a great place to start. The book spends the first several chapters covering the basics. The author first shows you how to get your system setup and how to install Xcode. He then covers the Xcode interface and the iOS simulator.

After that he provides a short primer on Objective-C and then covers the Cocoa touch layers and the frameworks they contain. There are a ton of them but the author does a nice job of introducing them. You leave Hour 4 with a great understanding of the tools you have access to.

The author continues with twenty more chapters broken down into hour long reads. Most chapters took me longer because I got sidetracked playing with the code samples. I have listed the chapters below. Their titles are descriptive enough to give you a good idea of what is covered.

Hour 1. Preparing Your System and iDevice for Development
Hour 2. Introduction to Xcode and the iOS Simulator
Hour 3. Discovering Objective-C: The Language of Apple Platforms
Hour 4. Inside Cocoa Touch
Hour 5. Exploring Interface Builder
Hour 6. Model-View-Controller Application Design
Hour 7. Working with Text, Keyboards, and Buttons
Hour 8. Handling Images, Animation, Sliders, and Steppers
Hour 9. Using Advanced Interface Objects and Views
Hour 10. Getting the User’s Attention
Hour 11. Implementing Multiple Scenes and Popovers
Hour 12. Making Choices with Toolbars and Pickers
Hour 13. Advanced Storyboards Using Navigation and Tab Bar Controllers
Hour 14. Navigating Information Using Table Views and Split View Controllers
Hour 15. Reading and Writing Application Data
Hour 16. Building Responsive User Interfaces
Hour 17. Using Advanced Touches and Gestures
Hour 18. Sensing Orientation and Motion
Hour 19. Working with Rich Media
Hour 20. Interacting with Other Applications
Hour 21. Implementing Location Services
Hour 22. Building Background-Aware Applications
Hour 23. Building Universal Applications
Hour 24. Application Tracing and Debugging

The thing I like most about this book is the flow of topics. The author does a really good job of logically ordering the chapters so that you have learned what you need to know when you get to later chapters from the previous ones. The book also will work good as a reference.

One topic missing was that I would have like to see is Core Data. The author gives a high level overview of it, but does not include it in any of the samples.

The code samples are very well organized and usable. Each chapter has a iPhone and an iPad project except for the chapter on building universal applications.

The best part about the code samples is they all work. That is not always the case anymore. I recently purchased a book on Core Data I had been really looking forward to getting my hands on. It had about 10 projects included as samples and none of them worked. After going back and forth with the author I threw the book on a shelf and decided to not even bother with it. He fixed three of them by the third round of updates. That gave me very little confidence in the advice he would offer in a book.

I found the author's writing style made the book an easy cover to cover read. He is very good at explaining things at the right level of detail, and at the right time. You are not jumping all over the book because he is referencing you to other parts of it all time. I recently had that experience too and it isn't pleasant.

All in all I highly recommend this book to anyone developing iOS or looking to start down that path.

For more book recommendations check out my .NET, iOS, and Java Architecture and Development Book Recommendations for 2013

Sams Teach Yourself iOS 6 Application Development in 24 Hours (4th Edition)

Sunday, February 24, 2013

Building Windows 8 Apps with JavaScript Book Review

Although I started with Cold Fusion for application development, I did plenty brochureware sites with HTML. I believe the version was HTML 2.0 for IE 2.0. I lived in the browser world for years doing Cold Fusion, ASP, and HTML sites. When winforms and Smart Client with web services emerged I changed my religion. Since then I have been avoiding the browser whenever possible since.

For the past couple of years my extent of using simple HTML has been limited to writing blogs and book reviews. Simple HTML means no ASP.NET or ASP.NET MVC. I have used HTML/JavaScript/CSS a lot as a byproduct of building ASP.NET and ASP.NET MVC applications for public consumption. Internal enterprise applications I will still push for using WPF and web services over ASP.NET or ASP.NET MVC, but I lose that battle a lot, especially when the developers have never learned WPF (XAML) and have no interest in learning anything new.

When it comes to Windows Store Apps my first choice will always be XAML with C# or C++. The problem is I am going to end up fighting the same battle with the web developers that don't like learning anything new. They are going to turn to HTML/JavaScript/CSS to build their Windows Store Apps.

Microsoft has recreated the same type of migration path as they did for the VB6 developers to move to VB.NET. The problem with that migration was tons of really bad VB.NET being written. After running into a lot of VB.NET projects that performed very badly and were very buggy I refused to allow VB.NET on my projects whenever I could.

The problem was VB6 programmers would not learn OOP and continued to code like they were still in the VB6 world. When I made them switch to C# that seemed to force them to learn more about .NET and that really helped improve their OOP skills. I never had anything against VB.NET coded correctly, the problem was most people didn’t code it correctly.

My fear of web developers moving to a mobile client application development environment with a requirement for natural user interfaces using touch is that we are going to see some atrocious applications being built. Windows Store Apps development is new enough that I have not had to deal with a lot of cleanup of bad HTML/JavaScript/CSS development yet. If I do start running into it, I will be adopting the same line of thought I had for VB.NET on projects. Meaning if it is my call, all development on my projects will be done using XAML with C# or C++. I really hope that does not happen again.

If you are one of those web developers that are planning on using your HTML/JavaScript/CSS, please take the time to read this book and other books on mobile device development and natural user interfaces. You are no longer developing for the browser!

With all that said, this book is a great place to start learning how to use your HTML/JavaScript/CSS to develop Windows Store Apps the right way. Below are the chapters included in the book.

1. Hello, Windows 8!
2. Binding and Controls
3. Layout
4. Typography
5. Media
6. Drawing and Animation
7. App State
8. Networking
9. Shell Contracts
10. Shell Integration
11. Device Interaction
12. Native Extensibility
13. Making Money
A. JavaScript for C-Family Programmers
B. Presentation and Style at a Glance

This book does a great job of covering development on Windows 8 with JavaScript and introducing architectural and design concerns that need to be considered on mobile devices. It does a great job of covering all the controls in and out of the context of touch. It injects thoughts on performance concerns with all the topics that need to worry about it.

The application state coverage is an important topic to understand and a must read chapter for new Windows 8 App developers.

I thought they did a really good job of covering Shell Contracts and Shell Integration. They are one of my favorite features in Windows 8.

The last chapter of the book does an awesome job of showing us how to go through a submission to the Microsoft Windows Store.

The book ends with two appendices. The first is an overview of JavaScript for C-Family programmers. I thought they did a pretty good job of assembling a lot of topics into a format which allowed them to cover a lot in a little space. The second appendix is an overview of HTML5 and CSS. It is all short and concise, but has a lot of good coverage.

I did find a couple of things missing that I would have like to see covered. One was the Windows.UI.Input.Inking APIs. The was no coverage at all. This is one of the main features I am using in the XAML project I am building. Another topic I would have liked to have seen more on in is using SQLite. So far all the books that I have read on Windows 8 Apps tell you that it's available, but they don't explain how to use it. The apps I am working on are going to need a robust local data cache, and App Data and User Data are not going to be able to handle it. Security was also only lightly touched on. There could have more on security.

The code samples are very well organized and usable. The best part about them is they all work. That is not always the case anymore. I recently purchased a book I had been really looking forward to getting my hands on. It had 11 projects included as samples and none of them worked. After going back and forth with the author I threw the book on a shelf and decided to not even bother with it. He fixed three of them by the third round of updates. That gave me very little confidence in the advice he would offer in a book.

All in all I thought this book was a great read. The authors writing style made reading it a pleasure. Not all technical authors can do that. I highly recommend this book to anyone looking at getting into building Windows 8 Apps with JavaScript.

For more book recommendations check out my .NET, iOS, and Java Architecture and Development Book Recommendations for 2013

Building Windows 8 Apps with JavaScript