Esther Derby speaks at OTUG on Tue, Feb 15

Who: Esther Derby
What: TBD
When: Tuesday, February 15, 6:30 - 8:00 PM
Where: University of Saint Thomas, St. Paul Campus

Check the OTUG website for more information.

Book Review: The Android Developer's Cookbook: Building Applications with the Android SDK

James Steele and Nelson To
The Android Developer's Cookbook

Smart-phone market and mobile web consumption are exploding. Within the next few years, more users will connect to the Internet over mobile devices than desktops. We are in the middle of the next technological revolution.

Android has recently overtaken iPhone in US market share and continues to enjoy widespread adoption among device manufacturers. James Steele's and Nelson To's cookbook helps get started building mobile applications for Android. Organized as a set of independent easy-to-follow recipes, it provides an excellent overview of the fast-growing Android development platform:

  1. Threads, Services, Receivers
  2. Activities, Intents
  3. User Interface elements
  4. Touches and Gestures
  5. Audio and Video support
  6. Communicating with other devices
  7. Location services
  8. Sensors

I highly recommend this book to all levels of the experience. Happy reading!

Comments will be disabled

We have been receiving thousands of spam comments on this blog per day. It is time to put this feature offline.

I may revisit this decision after implementing a new version of the blog and adding a level of protection against automated HTML posts. For now, comments will remain closed.

Book Review: Leading Change

John Kotter
Leading Change

Leading Change is a practical guide to implementing change in a corporate business environment. It is essentially a change process consisting of 8 main stages:

  1. Establish a sense of urgency and overcome complacency.
  2. Create a strong guiding coalition.
  3. Develop an inspiring vision and strategy for achieving it to help employees take actions in the right directions.
  4. Communicate the vision in a simple and clear message.
  5. Empower employees to experiment with how to make the vision a reality.
  6. Generate and celebrate short wins.
  7. Consolidate gains and produce more change.
  8. Anchor new approaches in the culture.

Today's changing market conditions put pressure on businesses to adjust their operations quickly to the new business environment. Companies unable to implement change quickly fall behind their competition.

I recommend this book to business and technical leaders at all levels of the organization. Whether you are considering a small change on your project, a technology improvement, or a system-wide business transformation initiative, you can apply principles described in this book in your situation. Happy reading!

June Architect: Domain Model Structure - Part 5: Loading Value Objects into Memory

In my last article, we talked about Value Objects, domain model elements with no conceptual identity. We said that Value Objects represent descriptive aspects of the domain and are fully defined by their state. This month, we will review the options for loading Value Objects into memory.

Potluck Principle of getting Value Objects

The Potluck Principle states that if you need to obtain a Value Object in your code, you have the following three options:

  1. You may be able to create the Value Object yourself
  2. You may be able to ask another object to give the Value Object to you
  3. You may be able to reconstitute the Value Object from a previously stored state

Option 1: Create Value Objects yourself

You can create a Value Object by calling it's constructor or factory. This is a very simple method but there is a catch: since Value Object are immutable, you need to know all their required attributes at the moment of construction.

Example: Creating an instance of the Address class based on a submitted HTML form.

Option 2: Ask other objects to give Value Objects to you

If you need a Value Object in your code, who could you ask for it? Since Value Objects are often descriptors, you may be able to query objects their describe (usually Entities or other Value Objects).

Example: asking Person Entity for the Person's Age or asking Email Address Value Object for it's Domain.

Another popular way is to obtain a Value Object as a result of an operation call closed under the Value Object interface.

Example: (new Money($10)).Multiply(2) results in new Money($20) or Color.Blue.Mix(Color.Yellow) returns Color.Green.

Option 3: Recreating a Value Object from a previously stored state

As discussed in my previous posts, Value Objects are tracked only as part of Entities they describe, in which case they are loaded into memory using Option 2. Value Objects are not recreated from previously stored states.

However, there is a situation when Value Objects need to be created independently. For example, it is a fairly common requirement to display the list of Value Objects in a drop-down list.

Example: User submits a new Purchase Order. As part of the entry screen, the user chooses Billing and Shipping Address for the new Purchase Order. All 50 States are selectable on the Billing Address form, but only 48 States are selectable on the Shipping Address form.

How shall we populate drop-down lists of 48 and 50 States for the New Purchase Order screen?

I have heard software designers making arguments towards promoting State to an Entity. Then, State Repository would be responsible for retrieving the right lists of States to display in each situation. I disagree with such design. It introduces a responsibility of managing States into the domain model, which can be easily avoided if we keep States as Value Objects.

Another important point against introducing the IStateRepository interface is that business rules of whether to display a particular State in a drop-down or not do not belong to the State class. For example, the company could introduce a new Product, which could be shipped to all 50 States.

My preference is to assign the responsibility of knowing about Value Object lists to aggregate repositories. In our example, IPurchaseOrderRepository would have FindStatesForShipping and FindStatesForBilling methods.

Happy coding! To be continued...

Book Review: Kanban

David Anderson
Kanban. Successful Evolutionary Change for Your Technology Business.

Kanban is the latest book by David Anderson, the author of Agile Management for Software Engineering: Applying the Theory of Constraints for Business Results. While searching for sustainable software development and successful change management, David expanded the ideas of Theory of Constraints and Lean Manufacturing. The new methods got their first real-world implementation at Corbis and Microsoft and the results are presented in this book.

Kanban systems have been gaining popularity in software development and information technology. They represent a pull-system approach, which produces what the next process needs when it needs it. Thus, the new work is pulled into the system when there is a capacity to handle it.

Kanban systems often visualize the development workflow and all work in progress (WIP) on a card wall, where each card represents a single work item. If your objectives are to improve lead time predictability and increase throughput, you can achieve them by limiting WIP, identifying and alleviating bottlenecks, and reducing variability.

The book is very informative, filled with practical ideas and rich examples on how to:

  • Handle different types of work
  • Set initial WIP limits and input queue size
  • Introduce queues to absorb variation and maintain flow
  • Buffer bottlenecks to ensure smooth flow in the system and avoid idle time in the bottlenecks
  • Cope with multiple concurrent and unordered activities
  • Cope with impediments
  • Support hierarchical requirements
  • Manage shared resources

I greatly enjoyed reading David's book and hope you will like it as much as I have. My only recommendation for the next edition of this book is to have card-wall pictures printed in color.

Happy reading!

.NET consultant available

Let me know if you are looking for a .NET consultant. A friend of mine is a recent winner of U.S. Green Card Lottery and is available on short notice.

I will support him on your project and offer you an attractive rate. Let me know. Thank you.

Agile Palooza on May 7, 2010

What: Agile Palooza
When: May 7, 8:00 AM - 5:00 PM
Where: Marriott City Center, Minneapolis MN
Cost: $89

Click here to learn more and register.

Scrum Experience Group event on Tue, April 27, 2010

What: Scrum / Agile Tools
When: Tuesday, April 27, 6:00 - 8:30 PM
Where: University of St. Thomas, Murray Herrick, room 155
Cost: Free

Click here for more information.

OTUG event on Tue, April 20, 2010

Who: Gary Jedynak and Arun Batchu
What: Mentoring in the I.T. Community
When: Tuesday, April 20, 6:00 - 8:00 PM
Where: Brady Educational Center (BEC) room LL03, University of Saint Thomas, St. Paul Campus
Cost: Free

Check the OTUG website for more information.

Welcome to ModelBlog

Thank you for visiting ModelBlog. We hope the time you spend with us will be both entertaining and worth your while. Have fun!