Real World Software Architecture

Real World Software Architecture is dedicated to providing information and experiences from the field of Software Architecture.



Subscribe with RSS or ATOM Add to Google

Links

  • Home Page
  • Real World Software Process Engineering
  • Suggested Reading
  • .NET Dev and Arch Collection
  • SEI Essays on SA
  • Software Architecture
  • Bredemeyer
  • wwisa
  • Product Line Engineering
  • PLEES
  • Software Product Lines
  • MSDN Architecture Center
  • patterns & practices






Thursday, November 28, 2013

iOS Components and Frameworks: Understanding the Advanced Features of the iOS SDK Book Review

When I first started flipping through this book the diverse set of topics threw me for a loop. Then I read the introduction where the authors say, "This publication aims to provide development information on the intermediate-to-advanced topics that are otherwise not worthy of standalone books. It’s not that the topics are uninteresting or lackluster, it’s that they are not large enough topics."

This book covers a wide variety of topics, and it covers them in enough detail that you have a good understanding of them by the end of the chapter. Only Game Center and Core Data are covered in more than one chapter. The book is not a cover to cover read, but rather a pure reference.

I have listed the chapters below to show you what is covered.

1. UIKit Dynamics
2. Core Location, MapKit, and Geofencing
3. Leaderboards
4. Achievements
5. Getting Started with Address Book
6. Working with Music Libraries
7. Working with and Parsing JSON
8. Getting Started with iCloud
9. Notifications
10. Bluetooth Networking with Game Kit
11. AirPrint
12. Core Data Primer
13. Getting Up and Running with Core Data
14. Language Features
15. Integrating Twitter and Facebook Using Social Framework
16. Working with Background Tasks
17. Grand Central Dispatch for Performance
18. Using Keychain to Secure Data
19. Working with Images and Filters
20. Collection Views
21. Introduction to TextKit
22. Gesture Recognizers
23. Accessing Photo Libraries
24. Passbook and PassKit
25. Debugging and Instruments

One thing that you should be made aware of is that the authors decided to present all their examples in the book without using Automatic Reference Counting (ARC). At the time of this review all the chapters have non-ARC code samples are available, and only 9 of them have sample code using ARC.

They said the reason for not using ARC is that it is easier to mentally remove the memory management than to add it. Personally I find it annoying, but it isn't that big of a deal. The authors do cover ARC in chapter 14 along with literals, properties, blocks, fast enumeration, and method swizzling.

The authors' writing styles make the topics easy reads, and they do a great job of explaining things, but this book is for someone very comfortable with iOS, Xcode, Objective-C, the Developer's Portal, iTunes Connect, and Instruments. Although the authors do cover some of the basics in a few chapters, and includes a primer on Core Data, most of the topics assume the reader has some prior working knowledge about the topic at hand.

Over all I found this book worth the shelf space. I had an immediate need for more information on a few of the topics they included in the book and was satisfied with the coverage they included. I did have to dig for more information on the topics, but I had solid ground to stand on and knew what else I needed to find.

If you are an iOS developer, and are using Xcode, this book will at some point offer you information on a topic you need to get your head around quickly.

iOS Components and Frameworks: Understanding the Advanced Features of the iOS SDK

posted by tadanderson at 4:44 PM 0 comments

Wednesday, November 13, 2013

The Essentials of iOS App Development LiveLessons

This is the perfect way to quick start development with iOS and Xcode. The speaker takes you from the very beginning, showing you how to enroll in the iOS Developer Program, downloading and Installing Xcode, and explaining provisioning profiles and certificates. He takes you through to the end which is uploading your application to iTunes Connect.

In between he covers Interface Builder, Design Patterns, Storyboards, UIViewController, UITableViewCell, Core Data, application icons and images, interfacing with Twitter and Facebook, Accessibility, Grand Central Dispatch, and creating an iPad version of the application.

Below is a list of the lessons included:

Lesson 1: What’s New in Objective-C and iOS 6
Lesson 2: Setup and Installation
Lesson 3: Getting to Know Xcode and Interface Builder
Lesson 4: Common Design Patterns
Lesson 5: Creating the UI in Interface Builder
Lesson 6: Programming the UI
Lesson 7: Understanding Core Data
Lesson 8: Creating the Core Data Stack
Lesson 9: Connecting Core Data to the UI
Lesson 10: UIKit Customization
Lesson 11: Adding Social and Sharing Features
Lesson 12: Making iDo Accessible
Lesson 13: Working with Grand Central Dispatch
Lesson 14: Creating iDo for iPad
Lesson 15: Finalizing the iDo iPad Version
Lesson 16: Submitting Your App to iTunes Connect

You can get the details of each of the lesson on the informIT site.

You can also preview each of the lessons and order individual lesson. For example, if you just want to learn about Core Data, you can just buy lessons 7,8, and 9.

The thing I liked most about this series of videos is that the speaker took the application the whole way to the store. It is actually available in iTunes for download on the iPhone and iPad.

The author has the code available out on GitHub under felipelm / iOS-Essentials. It all runs without having to tweak it, which is nice.

The code and the tools used in the videos are Xcode 4.5 and iOS 6. This is not a problem because the concepts of what are taught still apply to Xcode 5 and iOS 7. You will notice a few issues with layout when running the samples but they are easily fix. Mostly just setting navigationBar.translucent = NO.

Over all I think this is a great place to start with iOS Xcode programming. I would suggect being familiar with Objective-C first. The series also provide the option of picking and choosing what you would like to learn.

Get the series here

posted by tadanderson at 7:04 PM 0 comments

Tuesday, November 12, 2013

iOS MapKit and Core Location LiveLessons

This is the perfect place to start with iOS MapKit and Core Location to get a complete view. The speaker does a great job of covering broad set of topics.

The speaker does a very good job of keeping your attention and has ordered the lessons and a flow that makes sense, as they build upon each other.

I have listed the details of the two courses below. I would recommend that you know Objective-C and are comfortable in Xcode before watching these videos.

60+ Minutes of Video Instruction
iOS MapKit and Core Location LiveLessons (Developer Talks) shows you by example how to add location handling and mapping features to your iOS application, all in an easily accessible, presentation-style format.

iOS developer Joe Keeley offers novice programmers practical advice on to work with Mapkit and the Core Location framework along with hands-on, step-by-step video training. This presentation does not assume any previous experience working with these technologies, and you will easily be able to put Keeley’s examples to use in your own iOS application development.

Introduction

Part One: Display Maps
Setup
Basic Map Annotations
Customizing the Map Display
Responding to User Interactions

Part Two: Core Location
Core Location Overview
Permissions
Starting Location Request
Understanding Location Data
Testing Locations
Getting Directions
Summary

I would say the best aspect of this training is how you learn what MapKit does, what Core Location does, and then shows you how to use them together.

The author does a great job of accounting for handling exceptions gracefully, and keeps power usage at the forefront of the choices you make configuring your application.

He also does a great job of showing you how to take advantage of the simulators to test your apps.

The one gripe I have is that there is no code available for download. At least none that I could find.

Overall I found this a solid overview of what functionality you have available in iOS MapKit and Core Location. I highly recommend it if you want to get up to speed on iOS MapKit and Core Location quickly.

You can get the lessons here.

posted by tadanderson at 7:57 PM 0 comments

Saturday, November 02, 2013

The Enthusiastic Employee: How Companies Profit by Giving Workers What They Want (2nd Ed) Book Review

So I opened my resume and counted how many places I have been since leaving the electronic engineering field. I have had 18 gigs. Most of that time was spent as a consultant in the role of software architect or software process engineer. Most gigs were like building a house. You do the architectural plans, lead the team through development, and you leave. Home builders do not hang around waiting for something to need repaired. They turn the keys over to the owners and move on to the next house.

I have had several 100% work from home jobs, partial work from home jobs, road warrior jobs, jobs with long commutes, and jobs I ride the train to daily.

The point is I have managed a lot of different teams, and have been under a lot of different management styles, in many different environments. Since I am in IT I tend to stick to IT centric management books. Two of my favorites are Managing the Unmanageable and Peopleware. This book definitely belongs on the shelf with them.

The authors of this book have done an awesome job of compiling a ton of great management advice in one place. A few weeks before I planned on reading it, I was very anxious to see what was in it, so I started just opening up different spots in the book. I soon learned that was a trap, because whatever the topic was it sucked me.

The book covers a lot of ground and it covers it in detail. They do not present best practices dreamed up by a bunch of ivory tower managers sitting in a think tank, they present real problems, and real solutions, backed by real data. The book is broken down into five parts. I have listed them below along with the chapters they contain to give you a high level view of the topics covered.

Part I: Worker Motivation, Morale, and Performance
1. What Workers Want—The Big Picture
2. Employee Enthusiasm and Business Success

Part II: Enthusiastic Workforces, Motivated by Fair Treatment
3. Job Security
4. Compensation
5. The Impact of the Great Recession: Flight to Preservation
6. Respect

Part III: Enthusiastic Workforces, Motivated by Achievement
7. Organization Purpose and Principles
8. Job Enablement
9. Job Challenge
10. Feedback, Recognition, and Reward

Part IV: Enthusiastic Workforces, Motivated by Camaraderie
11. Teamwork

Part V: Bringing It All Together: The Culture of Partnership
12. The Culture of Partnership
13. Leadership and the Partnership Culture
14. Translating Partnership Theory into Partnership Practice

Building the People Performance Model in chapter 2 the authors do a great job of showing how important high employee morale is for great customer satisfaction. I have been in plenty of places that don't understand that the only person you really work for is the customer. Not your manager, CIO, team leader, or the president of the company. If they understand they all work for the customer too, then the organization is usually healthy.

I have been several places that have forgotten that customers pays their bills. I know of situations where customers were misled and made to pay for free software. I have seen customers talked into using subpar software because the consulting firm gets a kickback for using it. I have seen a $10K component sold for $300K. I have watch customers be told there was a team ready to go for their project when there was no one on the team at that point.

I have witnessed good IT departments be gutted by newly appointed directors and CIOs that don't feel they have the skill set to continue running it the way it is running, and throw every project to vendors which will cause everything to be built for twice the price. Seeing this kind of stuff is just depressing and immediately removes your trust in the company. If they are willing to do things like this to their customers, they sure as heck are not going to hesitate burning an employee. Chapter 7 goes into what I am speaking about here.

One of my favorite things about the book is they provide data from real companies that back up the advice they are giving in the book. The data is surprising or the opposite of what you would expect sometimes.

Another thing I really like is how current it is. They provide a great deal of advice based on the effect of the 2008 recession. The insight given in that chapter alone is worth buying the book.

They also address the new Yahoo CIO's policy of zero telecommuting. I am not going to give away what they said, but I will say I agreed with everything they had to say on the topic.

One thing I learned a long longtime ago is that there are people who are classified as non-trainable individuals. They ended up in the position they are filling by putting in time-in-service, as the military calls it, or some other means that did not require them to have the skill set to do the job before they got it. You move them to an appropriate position for their skills or you fire them, period. This book does not steer clear of the fire word.

I point that out because one of the biggest flaws with some of the agile management books around today is that they desire a team equally skilled and capable, but on any decent size project, that is practically impossible. A bad seed on an agile team needs to go, and sooner rather than later. Most of the books I am referencing just ignore the subject.

I also liked the three styles of management they put into context and covered. The three styles they cover are autocratic management which is top-down, laissez-faire which is bottom-up, and participative management, where influence goes both up and down. They do a great job in this part of the book of showing the impact a style of management can have.

The author's writing styles make the book an easy read and the stories and statistics keep it very interesting. I found value in every chapter, and I did not leave a chapter feeling like I was short changed.

All in all I highly recommend this book to anyone in management - CIO, Director, CEO, Project Managers, Department Managers, etc. I also recommend this book to anyone who is working anywhere!!! To have an understanding of the way things could be are essential to your survival.



The Enthusiastic Employee: How Companies Profit by Giving Workers What They Want (2nd Edition)

The Enthusiastic Employee: How Companies Profit by Giving Workers What They Want (2nd Edition)

posted by tadanderson at 7:39 PM 0 comments

Friday, November 01, 2013

Awesome Java Training 1/2 Price for 2 Days - Design Patterns | Spring Framework | Lambda Expressions and Streams

Below are 3 LiveLesson videos that starting today and this weekend (ends strike of midnight on Monday), that are being offering at 50% off the list price. If you have not had the opportunity to view any LiveLessons you are missing out. This is the perfect opportunity to check some of them out.

Spring Framework LiveLessons (Video Training), Downloadable Version
4+ Hours of Video Instruction

Spring Developer Advocate Josh Long provides a walking tour of all the Spring projects, including: Spring, Spring MVC, Spring Data, Spring Batch, Spring Integration, Spring Security, Spring Social, and more. Josh introduces how to get started building modern-day Spring applications while introducing the concepts behind them. In the lessons, Josh guides viewers through a look at the Spring stack and the features designed to support relational data access, NoSQL and big-data access, batch processing, integration and messaging, REST services, mobile clients, OAuth-secured, connected web applications, service provider APIs, and more!

Read about the 9 lessons offered in this course and purchase them here.


Design Patterns in Java LiveLessons (Video Training), Downloadable Version
4+ Hours of Video Instruction

Design Patterns in Java LiveLessons is a clear, concise introduction to one of the most important concepts in software engineering–design patterns. It introduces patterns both conceptually and through the application of many classic “Gang of Four” design patterns to the development of a case study application written in Java.

Douglas C. Schmidt, Professor of Computer Science at Vanderbilt University’s School of Engineering, provides students and professional programmers with 4+ hours of example and case study based video learning on the concepts and application of design patterns. Design Patterns in Java LiveLessons describes how to master the complexity of developing software by learning and applying object-oriented patterns and frameworks. It centers on a case study that showcases pattern- and object-oriented design and programming techniques using Java. This case study will help you evaluate the limitations of alternative software development methods (such as algorithm decomposition) and demonstrate by example how patterns and object-orientation help to alleviate such limitations. More than a dozen patterns from the book Design Patterns: Elements of Reusable Object-Oriented Software (the so-called “Gang of Four”' book) are applied in the case study.

Read about the 6 lessons offered in this course and purchase them here.


Java 8: Lambda Expressions and Streams LiveLessons (Video Training)
3+ Hours of Video Instruction

  Java 8: Lambda Expressions and Streams covers the most important new features introduced in Java 8. It is presented by Marty Hall, bestselling author, world-renowned instructor, and president of the training company coreservlets.com. This LiveLesson explains the syntax and usage of Java 8 lambda expressions, shows the prebuilt functions, covers streams thoroughly, and gives examples of the types of applications to which lambdas and streams are well suited.

  Lambda expressions are a way of representing “functions”, and Java 8 introduces a number of prebuilt function building blocks as well as a set of function composition methods. Although lambda expressions are not quite real functions, they are close enough for most purposes, and have very succinct syntax that looks like anonymous functions from Scala (minus the type declarations) and are even moderately similar to JavaScript anonymous functions.

  Streams are wrappers around arrays, collections, or other data sources that use lambdas pervasively. They support many convenient and high-performance operations that use lambdas, including "map", "reduce", "filter", and "forEach". They also support lazy evaluation, so if you map firstName over a Stream of Employees, filter the ones that start with "P", then choose the first, it really only maps and filters until the first match. Streams can also be made parallel automatically, so that the operations are done in parallel without having to write any explicit multithreading code.

  Lambdas don't exactly turn Java into Lisp, and streams don't exactly turn Java SE into Hadoop. Nevertheless, they provide significant new capabilities to Java, and taken together, lambdas and streams result in by far the biggest change in Java programming style since at least 2004, when generics and annotations were added to the language.

  Skill Level: Intermediate to advanced

  Who Should Take This Course?: Experienced Java developers who need to learn about the new features introduced in Java SE 8

  What You Will Learn:
 · How to use the most important features of Java 8: lambda expressions and  streams.
 · Technologies that support lambdas: method references, lambda building blocks in the java.util.function package, effectively-final local variables, the @FunctionalInterface annotation, and higher-order functions.
 · Stream methods: forEach, map, filter, reduce, etc.
 · Infinite (unbounded) streams
 · Parallel streams.
 · Lazy evaluation and short-circuit stream operations.
 · Supporting Java 8 features: interfaces with concrete methods and the Optional class.

Read about the 9 lessons offered in this course and purchase them here.

View All LiveLessons on InformIT here.

posted by tadanderson at 5:30 PM 0 comments

Previous Posts

  • DevOps: A Software Architect's Perspective Book Re...
  • Scaled Agile Framework (SAFe) LiveLessons Video Se...
  • Bulletproof Android: Practical Advice for Building...
  • Swift for Programmers Book Review
  • Security in Computing (5th Edition) Book Review
  • Swift in 24 Hours, Sams Teach Yourself Book Review
  • Sparx Systems Releases Enterprise Architect 12
  • Learning Swift Programming Book Review
  • Android Security Internals: An In-Depth Guide to A...
  • Adaptive Code via C#: Agile coding with design pat...



Archives

  • December 2005
  • January 2006
  • February 2006
  • March 2006
  • April 2006
  • June 2006
  • August 2006
  • October 2006
  • November 2006
  • December 2006
  • January 2007
  • February 2007
  • March 2007
  • April 2007
  • May 2007
  • June 2007
  • July 2007
  • August 2007
  • September 2007
  • October 2007
  • November 2007
  • December 2007
  • January 2008
  • February 2008
  • March 2008
  • April 2008
  • May 2008
  • June 2008
  • July 2008
  • August 2008
  • September 2008
  • October 2008
  • December 2008
  • January 2009
  • February 2009
  • March 2009
  • April 2009
  • May 2009
  • June 2009
  • July 2009
  • August 2009
  • September 2009
  • October 2009
  • November 2009
  • December 2009
  • January 2010
  • February 2010
  • March 2010
  • April 2010
  • May 2010
  • June 2010
  • August 2010
  • September 2010
  • October 2010
  • November 2010
  • December 2010
  • January 2011
  • February 2011
  • March 2011
  • April 2011
  • May 2011
  • June 2011
  • July 2011
  • August 2011
  • September 2011
  • October 2011
  • November 2011
  • December 2011
  • January 2012
  • February 2012
  • March 2012
  • April 2012
  • May 2012
  • June 2012
  • July 2012
  • August 2012
  • September 2012
  • October 2012
  • November 2012
  • December 2012
  • January 2013
  • February 2013
  • March 2013
  • April 2013
  • May 2013
  • June 2013
  • July 2013
  • August 2013
  • September 2013
  • October 2013
  • November 2013
  • December 2013
  • January 2014
  • February 2014
  • March 2014
  • April 2014
  • May 2014
  • June 2014
  • July 2014
  • August 2014
  • September 2014
  • October 2014
  • December 2014
  • February 2015
  • March 2015
  • April 2015
  • June 2015
  • July 2015
  • September 2015

Powered by Blogger