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






Sunday, September 23, 2012

Major New Wifi Issues with iPhone 5 and iOS 6

Although Apple quickly fixed their delete test page that caused problems with user's wifi connections on their new iPhone 5s, that is not the real issue.

There is still a huge issue with iOS 6 and possibly iPhone 5 hardware. The forums are buzzing with users having issues and returning phones. Apple is currently silent on the issue.

A few threads:
Anyone still having IOS 6 wifi issues?
iOS 6 WiFi Disabled
iPhone 5 wifi issues
iPhone 5 wifi signal strength issues

I have the same problems. iOS 6 causes iPad 2 wifi issues. The signal has a very short range, the speeds are slow, and the connection constantly drops.

The iPhone 5 wifi is way to weak and also constantly drops.

iOS 6 on 3GS iPhone the wifi works fine. The signal has a long range, the speeds are very fast, and the connection does not drop at all.

iOS 6 and iPhone 5 have zero range. I have 2 PC laptops, 1 MacBook, and 2 3GS phones that are fine in our living room. iPhone 5's and iPad 2 lose their connections. If I stand right next to the router, the iPhone 5s and the iPad 2 work fine. If I walk 10-15 feet away I lose the connection. My other equipment works in the back yard which is 50 -75 ft away and through several walls.

At 15 feet away my 3GS has 10 times the speed of my iPhone 5. Several videos have been posted showing the issue. Here is one.

THIS IS NOT GOOD!!!

posted by tadanderson at 6:45 AM 1 comments

Wednesday, September 19, 2012

Presentation Patterns: Techniques for Crafting Better Presentations Book Review

Being a consultant has landed me in a ton of different roles. Sometimes those roles required giving a lot of presentations and some of them did not require me to give any. A few of those positions had me using PowerPoint more than Visual Studio. There were also a few that wanted the presentations recorded live and some made without an audience.

I have presented enough now that I don't mind presenting at all, but that doesn't mean my audience always likes sitting through the presentations I create. I have never had food thrown at me, but I have seen the zombie gaze staring back at me as though I had successfully pulled off mass hypnosis. This usually happens when I have a mixed audience and I am not targeting a mixed audience. Sometimes things are too technical, boring the end user and managers, and sometimes they aren't technical enough boring the developers.

This book offers a ton of advice on how to not to preform mass hypnosis on your audience. It is a well organized catalog patterns that provides sound advice for designing, creating, and delivering your presentations.

It is broken down into three parts. The parts of the book coincide with the parts of the recommended process to follow when creating presentations. I have listed the parts and the chapters they contain below.

Part I: Prepare
Chapter 1. Presentation Prelude Patterns
Chapter 2. Creativity Patterns

Part II: Build
Chapter 3. Slide Construction Patterns
Chapter 4. Temporal Patterns
Chapter 5. Demonstrations versus Presentations

Part III: Deliver
Chapter 6. Stage Prep
Chapter 7. Performance Antipatterns
Chapter 8. Performance Patterns

I like the way the book is structured. It covers the entire process from the inception of the presentation, to building it, to delivering it. The process helps you think about presentations the right way for the given part of the process you are in. The book does not skimp on the building of the presentation. There are tons of pointers on how to correctly layout and structure the presentation. The book also include interludes that help put the pattern into context.

The authors don't only list positive ways to improve your presentations, they also list a ton of Antipatterns along the way. An example of an Antipattern is dealing with hecklers. I have personal experience with them and this book is spot on with how to deal with them.

My favorite part of the book is that it was written by technologists. As a software architect one of the most critical aspects of my job is to communicate efficiently and clearly to a diverse audience. Following the advice in this book will definitely help with that in the future.

All in all I highly recommend this book to every Enterprise and Software Architect. The authors speak our language and have laid the book out in a very comfortable format. I also recommend it to anyone that has to do presentations. It is a great compilation of advice on how to deliver successful presentations.

Presentation Patterns: Techniques for Crafting Better Presentations


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

posted by tadanderson at 10:14 AM 0 comments

Tuesday, September 11, 2012

SOA with REST: Principles, Patterns & Constraints for Building Enterprise Solutions with REST Book Review

This book does what it patterns book should do. It defines a language for enterprises to use to develop SOA solutions using REST.

The book starts off with two chapters. The first chapter is an introduction and shows how the book is laid out. Chapter 2 introduces two case studies that are used throughout the book to provide examples of how the patterns can be applied to real-world situations.

After the first two chapters of the book is broken down into six parts. I have listed the parts below with their associated chapters.

Chapter 1: Introduction
Chapter 2: Case Study Background

Part I: Fundamentals Chapter 3: Introduction to Services
Chapter 4: SOA Terminology and Concepts
Chapter 5: REST Design Constraints and Goals

Part II: RESTful Service-Orientation
Chapter 6: Service Contracts with REST
Chapter 7: Service-Orientation and REST

Part III: Service-Oriented Analysis and Design with REST
Chapter 8: Mainstream SOA Methodology
Chapter 9: Analysis and Service Modeling with REST
Chapter 10: Service-Oriented Design with REST

Part IV: Service Composition with REST
Chapter 11: Fundamental Service Composition with REST
Chapter 12: Advanced Service Composition with REST
Chapter 13: Service Composition with REST Case Study

Part V: Supplemental
Chapter 14: Design Patterns for SOA with REST
Chapter 15: Service Versioning with REST
Chapter 16: Uniform Contract Profiles

Part VI: Appendices
Appendix A: Case Study Conclusion
Appendix B: Industry Standards Supporting the Web
Appendix C: REST Constraints Reference
Appendix D: Service-Orientation Principles Reference
Appendix E: SOA Design Patterns Reference
Appendix F: State Concepts and Types
Appendix G: The Annotated SOA Manifesto
Appendix H: Additional Resources

In Chapter 14, Design Patterns for SOA with REST, the author introduces seven new patterns. They include Reusable Contract, Lightweight Endpoint, Entity Linking, Endpoint Redirection, Content Negotiation, Idempotent Capability, and Uniform Contract. All of the new patterns are nicely tied to currently existing patterns that appear in the author's other books.

One of my favorite parts of the book is that it shows the relationship between SOA and REST. REST architecture provides a medium by which service oriented architecture can be implemented. This book does an excellent job of clearly defining the relationship.

Another thing I really like the book is the low-level granularity that it goes into when describing the pattern languages Used for implementing SOA using REST.

The author does a great job of showing how the goals of the rest architectural style meet certain quality attributes. Quality attributes he covers include performance, scalability, simplicity, modifiability, visibility, portability, and reliability.

I would have liked to see more coverage of security. Although mentioned several times, it was not really covered. It would have been nice to see them cover hash-based message authentication code as one of the patterns used in REST architecture. Maybe it isn't used as widely as it appears to be used.

The author does have a Visio stencil available for download that includes all of the modeling symbols used in his SOA books, but does not appear to have updated with the REST symbols yet.

I believe this book did a nice job of filling in an existing gap in the SOA pattern books.

All in all if you are considering learning REST or SOA you should make this book part of your library. I felt the author did a good job of introducing both SOA and REST in the beginning of the book, so this book is perfect for the beginner. I also felt the author went deep enough into detail to make this book valuable to the more experienced developer.

Most importantly I feel the author nailed the goal of a pattern book and accomplished creating a reference for the language of SOA with REST for development teams to have a common vocabulary to communicate with.

SOA with REST: Principles, Patterns & Constraints for Building Enterprise Solutions with REST


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

posted by tadanderson at 2:04 PM 0 comments

Monday, September 03, 2012

An Enterprise and Software Architect's Tools of the Trade

I have been doing Software Architecture for 16 years and Enterprise Architecture for the past few. Along with architecture I usually find as part of each gig, if not the main focus of each gig, process implementation or at least process improvement is required.

It is not easy keeping up the latest technologies, processes, architectural techniques, and enterprise architecture framework improvements. I am a firm believer that to be an architect, you must also be an experienced developer. I do not believe in the hands off architect role and wish the Ivory Tower Architects would stop claiming to be Architects. They are theorist not architects. Modeling, Governance, and documenting are part of the architect's job, but in order to produce valuable artifacts you need to be getting your hands dirty.

I also run into a ton of Googler-Developers. Meaning they have no idea why they are using the code they are using, they just know someone else posted it so it must work. Google has been one of the biggest assets and one of the biggest downfalls for the development community. Proof of concepts are one of the most important parts of the architecture process, and Google has made it easy for developers and architects to shortcut the learning and thinking part of the process.

Back in 1994 when I started my own business I decided I would at a minimum invest 10% of my income back into my education. Over the years that has gone into tons of books, MSDN licenses, other software, and of course equipment.

Now more than ever an architect needs a lot of assets to keep up. I currently carry 5-6 books I am reading with me and 2 laptops to work every day. A shot of my home office is below.



Equipment at Home Office
Click for larger view

Below are the tools I am currently using to stay current. My hope is that it helps others heading into software development or software architecture understand what it takes to stay current.

Equipment and Environments

The Computers
I have four laptops, a windows home server, and a desktop I use at home. The MacBook Pro has 16GB of RAM and a 512GB SSD hard drive. The Alienware has 32GB of RAM and a 750GB 7200RPM hard drive. The Toshiba has a 64GB SSD and a 500GB hard drive.

On the MacBook I program in Xcode and I am running Windows 8 (which by the way is the best place to run it) in Parallels Desktop 8 for Mac.  I use Visual Studio 2012 and SQL Server 2012 on Windows 8 instance.

On the Alienware I use Visual Studio 2010 and 2012 with SQL Server 2012.  I also have several virtuals built in both Windows Server 2003 and 2008 R2.  I do not have any in Windows Server 2012 yet because the RTM kept bombing in VMware. I tried installing it 3 times with no luck. I also have an instance of Windows 8 set up in VMware, but rarely use it.

I have an instances of SharePoint 2003, 2007, 2010, and 2013 I use to proof of concept.  I am just finishing up a big 2007 to 2010 migration and without these environments it would not be happening.  The Alienware allows me to run two virtuals at the same time with plenty of power left over.


MacBook Pro with Retina Display

Alienware AM18X

Toshiba Qosmio X505-Q890


The Mice
My mice are big time productivity savers. Besides the two shown here, I also own the Apple Magic Mouse.  It is the best mouse made for the Mac and is by far the best mouse for Windows 8 on the Mac.

The two shown here are awesome for programming, which is all I use them for.  When people see my equipment they always ask which games I play.  The last game I played was Link (The Legend of Zelda) in the late 1980s.

I have both of these programmed to work with Visual Studio and they work great for building and running, stepping through code, and injecting snippets.

Cyborg M.M.O.7

Logitech G600 MMO


The Coolers
I use coolers on all my machines when I am running them heavy. I started using them because my main laptop that I had 4 years ago would overheat to the point of shutting down.

I use the NotePal U2 for my MacBook.  What I like about it is it has 2 fans that can be repositioned and completely removed.  I also use this cooler to provide additional protection for my MacBook Pro in my backpack. I put my MacBook Pro in a Thule MacBook Sleeve and then slide the Thule Sleeve into the NotePal U2. Together they provide excellent protection.

I use the ZM-NC2000 for my Alienware and Toshiba.  I doubt the Alienware needs it because when its fan system kicks into to high gear it is like a jet engine starting up, but I use it anyway.  Most of the time I do not need to use the fans on these.  Just getting the laptops off the desk provides the cooling they need.

NotePal U2

ZM-NC2000


The External Storage
I own several external hard drives. I use them for storage but I also use them to run virtuals off of them. I have a Western Digital WD Elements 1 TB USB 2.0 and a U32Shadow (on the right).  It is a 1 TB USB 3.0.  Virtuals run fine from the externals and the externals allow me to keep tons of them.  I have virtuals with Windows 2000 and VB 6.0 development environments and every environment in-between up to Windows 8 and Visual Studio 2012 available.
U32 Shadow


Developer Programs and Software

MSDN
This is the first year since 2002 that I am not a MSDN subscriber. I still have one through my current job, but decided to give my personal one up.  For years as a consultant I found value in having access to all the Microsoft tools and servers, but Microsoft has changed my opinion over the past two years. My attitude now is if a company wants me to develop in Visual Studio, they can provide the license from now on.

Microsoft may change my mind in the future if when they get their act together, but right now they are nothing but aggravating to me. The way I look at it is Microsoft has to be doing enough to keep me making enough to afford a license, if they aren't, then I am just throwing my money away. I felt I had been burning $5000 a year for nothing over the past 2 years and the future they are offering I have no interested in. I will learn Microsoft technologies and use it to get a check, but the techie in me has lost all passion for Microsoft.

All that being said, if you are a consultant in the world of Microsoft and you love what they are doing, your current firm should provide an MSDN as part of your contract.  If they don't, I would say raise your rate so you can cover it yourself.  If I ever get passionate about Microsoft technologies again and the place I am at does not give me an Ultimate license, I will purchase my own.  That however won't be anytime soon.

I use the MSDN subscription to set up environments to do proof of concepts and make use of the software that comes with it.  I use Expression Studio 4 Ultimate, Team Foundation Server 2012, Visual Studio 2012 Ultimate, Office 2013, and Microsoft SQL Server 2012.

You can check out your MSDN Subscription options here.

iOS Developer Program
Apple offers two real developer programs and a free Safari developer program.  The Mac Developer Program allows developers to distribute their Mac apps on the Mac App Store, the iOS Developer Program allows developers to distribute their apps on the App Store and reach millions of iPad, iPhone, and iPod touch users, and the Safari Developer Program includes all the tools and resources for creating extensions that enhance and customize Safari.

I currently only belong to the iOS Developer Program. I like being able to push my apps to my devices for testing and the iOS Developer Program allows me to provision devices to do so.  Since Xcode 4 is free to download, that is the only advantage I get right now.  If I want to push my applications out for approval and to the store I can also do that with the license.

You can check out the developer programs at the links below.
iOS Developer Program
The Mac Developer Program
The Safari Developer Program

Software Beyond the Subscriptions
Below is some of the key software I use beyond what Apple and Microsoft provide.

SPARX System's Enterprise Architect- Enterprise Architect 9.3 is a high performance modeling, visualization and design platform based on the UML 2.4.1 standard.

Eclipse Process Framework (EPF) - The Eclipse Process Framework (EPF) aims at producing a customizable software process enginering framework, with exemplary process content and tools, supporting a broad variety of project types and development styles.

Android Development Tools (ADT) is a plugin for the Eclipse IDE- Designed to give you a powerful, integrated environment in which to build Android applications.

LINQPad- LINQPad is also a great way to learn LINQ: it comes loaded with 500 examples from the book, C# 4.0 in a Nutshell. There's no better way to experience the coolness of LINQ and functional programming.

Paint.NET- Paint.NET is free image and photo editing software for computers that run Windows.

Notepad++- Notepad++ is a free (as in "free speech" and also as in "free beer") source code editor and Notepad replacement that supports several languages.

Auslogics Disk Defrag- Compact and fast defragmenter with over 11,000,000 fans worldwide. It will improve your PC's performance by defragmenting and re-arranging files on your disk.

Parallels Desktop for Mac- Parallels Desktop for Mac is the most tested, trusted and talked-about solution for running Windows applications on your Mac.

VMware Player- VMware Player is the easiest way to run multiple operating systems at the same time on your PC.

Apple Developer Library
Although I have heard plenty of complaints about the iOS Developer Library I have only found certain information in the library.  All iOS books, and I have read plenty, fall short on service communication and security.  They either only mention it, or they use a third party library.  I don't mind books including third party libraries, but I would prefer they include how to use the framework also.  The Developer Library was the only source of any good information on service communication and security using the actual framework.

Webinars and Videos
I am not going to list all the videos I have found on the web. I am just including a few that were really beneficial.

iPad and iPhone Application Development (HD) by Paul Hegarty
Apple Developer Videos
Pluralsight Starter Subscription for MSDN

Reading

Latest Books I've Read and some Classic Must Reads

posted by tadanderson at 4:18 PM 0 comments

Saturday, September 01, 2012

Windows 8 runs best on my MacBook Pro

I have had a version of Windows 8 running since the first day the Developer Preview was available for download. I did so out of necessity, not because the techie in me wanted to. The techie in me that has spent the last 10 years exclusively in Microsoft's world wants nothing more than my freedom from the Microsoft Empire.

That will not be happening anytime soon since they own me and every enterprise I work with. I therefore have no choice but to keep learning the Microsoft platform as new releases and tools come out.

Windows 8 RTM is no less annoying to me than the first time I downloaded it. I still don't run it on bare metal and do not plan to. I have found several ways to make it less painful. I do not use the Metro crap ribbon at all. As soon as it loads I hit the desktop.

The biggest trick I have found to make it the least annoying so far is to run it in Parallels Desktop 8 for Mac on my MacBook Pro. The main reason for that is I get my start menu back. It is shown below.

Windows 8 Start Menu in Parallels
Click for larger view

Up until the RTM came out I ran Windows 8 in VMware on my Alienware M18X. I installed the RTM on it but moved all my development to my Mac and haven't opened it on my Alienware since. Not having to deal with that annoying Metro banned of squares is great!!! Sorry about all the Metro references, but that is the only name I know to describe the ugly in Windows 8 on the desktop.

Another plus is that on the MacBook the touch pad allows me to pinch and do a ton of other gestures that aren't available on windows pads. The Magic Mouse also works great with it.

If you are an enterprise user or developer, Microsoft owns you, your sole, your desktop, your servers, and especially your check. They don’t care if they have to throw us under the bus, because they own us. To get a non-enterprise and non-developer customer base they are willing to burn us for the next 3-4 years. We have nowhere else to go and they know it. So yes I will be learning Metro development (or whatever they are calling it now).

On tablets and phones it isn't a bad environment since that customer base is what it is made for. On the desktop it is a joke, and no one but partners who are being force to upgrade are giving it any thought.

I believe they will come around and provide a decent development environment again in 3-4 years, but the bad news is, this will happen again with them. They are followers not leaders, they are imitators not innovators. In 3-4 years they will have missed another bus and it will be catch up time again. The baby will be tossed out with the bath water and we will be starting over…. again.

Anyway...  If you own a Mac and you need to run Windows 8, ironically your best bet is to run it on your Mac environment.

posted by tadanderson at 8:07 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