tag:blogger.com,1999:blog-196606772024-03-08T15:30:29.903-08:00Real World Software ArchitectureReal World Software Architecture is dedicated to providing information and experiences from the field of Software Architecture.Unknownnoreply@blogger.comBlogger725125tag:blogger.com,1999:blog-19660677.post-11292180098274731692016-10-27T14:47:00.003-07:002017-06-14T05:48:16.584-07:00Apple Blows it Again 16GB and a Touch-me Bar - Yippee6-5-2017<br />
Ditto...<br />
<br />
<br />
10-27-2016<br />
I was amazed at what I could do with my MacBook Pro back in 2012. Being able to run Windows and OS X at the same time, on the same laptop, allowed me to code the services that went with my mobile apps.<br />
<br />
When I need to do heavy server work I carry around my Alienware which has 32 GB of RAM. I have added new parts to it as they came out, but it did not survive the Windows 10 Anniversary update. I have been eyeing up a couple different 64 GB devices to replace it, but was holding off for the new MacBook Pro.<br />
<br />
There is no way I thought they would keep it stuck in the stone age with only 16 GB. Apple will not let us run their OS on a real laptop, but they themselves won't build us a real laptop. I am not really sure what they are thinking, but not giving us anywhere to develop is just sad and sickening at the same time.<br />
<br />
They should give all refunds on out developer licenses which I just renewed. Apparently for no good reason at all.<br />
<br />
It blows my mind that we waited this long to get a toy laptop with a little bar that you can touch. Thank goodness it is thinner. They will be able to store more in the warehouses where they will be sitting.<br />
<br />
What is up with the stupid thinner thing anyway. Give me a 17" screen, thick body that has some awesome cooling fans for my 64 GB of RAM.<br />
<br />
So my choices are …. An awesome laptop running Windows 10 - which does not run, or a toy MacBook with a stupid touch-me bar. Yippee…. I never thought I would want to retire, but with the way the IT industry is going, you'd have to be nuts to want to be part of it.<br />
<br />
O that's right…. I have my iPad Pro that I can program Playgrounds on…. I'll just use that!!!!<br />
<div>
<br /></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-19660677.post-15250746620209187902016-09-24T09:48:00.001-07:002016-09-24T10:43:38.917-07:00The Ransomware that was once the worst PC Virus/Trojan in history - Windows 8 now called Windows 10This virus that was once known as Windows 8 and 8.1, that has been renamed Windows 10, has been allowed to go unchecked by both the business world and the government.<br />
<br />
It masks itself as an operating system, but as soon as it has been installed it kicks off an unstoppable process called Windows Update. It reaches out and pulls down more and more of the virus creating a deadly package, which will shred your systems mercilessly. That is unless you pay the hackers.<br />
<br />
The hackers who created the ransomware, known only as Microsoft, have lobbied Washington and held some of the biggest businesses in the world hostage.<br />
<br />
We have suffered repeatedly from the "Windows 8 and 10 Windows Update Restart Trojan", but the latest took us down completely.<br />
<br />
We have recently suffered the dreaded "Windows 10 Anniversary Update Bomb - Spinning Login Circles". It has destroyed my Alienware 18X. Although the data was left behind, 5 years worth of software configuration, development environments, proof of concept labs, installations, account settings, and more are lost. This will cost us weeks of man hours to repair, and new equipment in the 5K range. In total we estimate a $15,000 loss.<br />
<br />
I know- peanuts to the Hackers and the other big businesses being held ransom, but it is taking down my small business.<br />
<br />
Microsoft is not being held accountable by anyone because of all the other issues facing the world today. They are not a company we should avoid, they are an enemy that should be destroyed.<br />
<br />
Update - Right after I posted this I went to feed our Beta Fish - Alex. He has passed away. He has been here for 3 years. I am also holding Microsoft responsible for this. When you are in league with the devil, your reach is endless.<br />
<div>
<br /></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-19660677.post-66705351349377154312015-09-25T11:59:00.001-07:002015-09-25T12:01:07.976-07:00Windows 10 ReviewPure crap. Released too soon with way too many issues. I completely regret putting it on my bare metal. I only ran Windows 8/8.1 in VMware Fusion on my Mac.<br />
<br />
I totally screwed the pooch and installed on my Alienware.<br />
<br />
Issues include but are not limited to-<br />
<br />
<ul>
<li>Cannot recognize my exFat formatted hard drives - which is a Microsoft designed format</li>
<li>Cannot copy large files - Backing up my Virtuals to external hard drives continuously fails</li>
<li>Cannot list all the applications i have installed in the start menu- Google "512 apps windows 10 start menu"</li>
<li>Screen Flickers are going to give me a seizure!!!</li>
<li>I forgot how much I DID NOT miss the Blue Screen of Death. Luckily now it is sometimes black!!!</li>
<li>Windows Update is now more of a virus than a tools. You have zero control over it.</li>
<li>Wi-Fi works when it feels like it. Non-repeatable issues</li>
<li>All my browsers have issues</li>
<li>Edge = Turd... Who is the world design that mess??? Fire them... NOW!!! It is not a browser. It is an ADHD nightmare application.</li>
</ul>
<br />
<br />
Do yourself a favor and stick with Windows 7. I messed up and went with the every other release from Microsoft is good theory.<br />
<br />
Yep, I got it for free. If they want me to install it anywhere else it will cost them $500 per box!!!Unknownnoreply@blogger.com4tag:blogger.com,1999:blog-19660677.post-5027021302318297852015-09-04T05:52:00.002-07:002015-09-04T05:52:40.139-07:00DevOps: A Software Architect's Perspective Book Review<table style="width: 100%"><tr><td>This is the first DevOps book that shows a realistic and achievable view of the full implementation of DevOps. Most of the books and other literature I have read on DevOps are all about the culture, the attitudes, how it relates to Agile and Lean practices, and a high level view of microservices. This book includes all that, but they are not its main focus, and it goes several steps further with respect to the architecture and infrastructure needed for the implementation.<br /><br />The book is broken down into 5 parts. I have listed each part below along with the chapters they include.<br /><br /><strong>Part One: Background</strong><br />Chapter 1. What Is DevOps?<br />Chapter 2. The Cloud as a Platform<br />Chapter 3. Operations<br /><br /><strong>Part Two: The Deployment Pipeline</strong><br />Chapter 4. Overall Architecture<br />Chapter 5. Building and Testing<br />Chapter 6. Deployment<br /><br />Part Three: Crosscutting Concerns<br />Chapter 7. Monitoring<br />Chapter 8. Security and Security Audits<br />Chapter 9. Other Ilities<br />Chapter 10. Business Considerations<br /><br /><strong>Part Four: Case Studies</strong><br />Chapter 11. Supporting Multiple Datacenters<br />Chapter 12. Implementing a Continuous Deployment Pipeline for Enterprises<br />Chapter 13. Migrating to Microservices<br /><br /><strong>Part Five: Moving Into the Future</strong><br />Chapter 14. Operations as a Process<br />Chapter 15. The Future of DevOps<br /><br />The first chapter introduces DevOps and puts it into context with respect to the rest of the book. The definition of DevOps the authors provide focuses on the goals, rather than the means-<br /><blockquote>DevOps is a set of practices intended to reduce the time between committing a change to a system and the change being placed into normal production, while ensuring high quality.<br /><br />They also identify five different categories of DevOps practices that help define their definition of DevOps. I have repeated them below.<br />1. Treat Ops as first-class citizens from the point of view of requirements.<br />2. Make Dev more responsible for relevant incident handling.<br />3. Enforce the deployment process used by all, including Dev and Ops personnel.<br />4. Use continuous deployment.<br />5. Develop infrastructure code, such as deployment scripts, with the same set of practices as application code.</blockquote><br />Chapter 1 also talks about the reduction of coordination and different barriers that can present themselves. The barriers include the culture, type of organization, the goals operations verses development, silo mentality, tool support, and personnel issue such as the difference in salaries between developers and operation staff. Moving operation tasks to a developers plate may not make much sense if the time to do the task is not drastically reduced.<br /><br />Chapter 2 gives a nice introduction to using a cloud environment as a platform. The way in which this book describes the implementation of DevOps, the cloud is a key component.<br /><br />The chapter does a really great job of introducing a ton of material in a very concise way. They start by introducing and discussing the characteristics of the cloud- on-demand self-service, broad network access, resource pooling, rapid elasticity, and measured service.<br /><br />Chapter 2 also covers the 3 types of service - Software as a Service (SaaS), Platform as a Service (PaaS), and Infrastructure as a Service (IaaS). The authors go into detail of how the cloud impacts DevOps - the ability to create and switch environments simply, the ability to create VMs easily, and the management of databases.<br /><br />Chapter 3 is a discussion of the core concepts and phases of Information Technology Infrastructure Library (ITIL) and how traditional IT Ops and DevOps interact.<br /><br />Part 2 covers the deployment pipeline. This part is where the microservice architectural style is covered. Deploying, monitoring, debugging, performance management, testing, and team skills are all different than what most development teams are going to be used to. Most teams will not be able to achieve instancing a microservice architecture, for various reasons, but there are some really good practices in this part of the book that teams can achieve.<br /><br />I just got done researching microservices and NServiceBus. I came to the conclusion I would not be able to move in that direction in my current environment. Although team skills where of some concern, the culture is what killed the possibility. It is a command and control environment that is anything but transparent. In order to make such a fundamental shift in the way things are done there would have to be major changes. The environment allows for no agile or lean practices, although it claims to be agile, and is completely closed to change.<br /><br />Certain parts of the book may come across as completely academic and unrealistic, but depending on your environment all best practices and software development principles written by the gurus of our profession may be unrealistic. Do yourself a favor and push through. The case studies do a great job of taking the first three part of the book and showing how organizations are doing their best to move towards a DevOps environment.<br /><br />I thought the case studies were very thorough, maybe even too thorough. Although I think SEI's books contain some of the most important information that has been released in our industry, their books are not always the easiest to read. For as short as this one is, it took me quite a while. A lot of that was my schedule, but not all of it.<br /><br />I can tell you from experience that most of the places I go think the same thing about all of SEI's materials. They mostly view it as purely academic. They are wrong. The places that have allowed me to practice the processes found in <a target="_blank" href="http://www.amazon.com/gp/product/0201703327/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0201703327&linkCode=as2&tag=realworlsofta-20&linkId=DWNZUEZE3ZX5K3SN"><strong>Software Product Lines: Practices and Patterns</strong></a><strong><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0201703327" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />, </strong><a target="_blank" href="http://www.amazon.com/gp/product/0321815734/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0321815734&linkCode=as2&tag=realworlsofta-20&linkId=CSOUGP25UF6ATAFT"><strong>Software Architecture in Practice</strong></a><strong><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0321815734" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />, </strong><a target="_blank" href="http://www.amazon.com/gp/product/0321552687/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0321552687&linkCode=as2&tag=realworlsofta-20&linkId=KAVWNFVQDNCYIL2W"><strong>Documenting Software Architectures: Views and Beyond</strong></a><strong><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0321552687" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />, </strong><a target="_blank" href="http://www.amazon.com/gp/product/032171833X/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=032171833X&linkCode=as2&tag=realworlsofta-20&linkId=VWOK3GYAFY6W3ID6"><strong>Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives</strong></a><strong><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=032171833X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />, <a target="_blank" href="http://www.amazon.com/gp/product/0321711505/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0321711505&linkCode=as2&tag=realworlsofta-20&linkId=LDUNHCQCJADK74U6">CMMI for Development</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0321711505" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />, and </strong><a target="_blank" href="http://www.amazon.com/gp/product/0321812573/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0321812573&linkCode=as2&tag=realworlsofta-20&linkId=5W7LWWB2OG2FNE6L"><strong>The CERT Guide to Insider Threats</strong></a><strong><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0321812573" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></strong>, have seen how well their advice works. Places that don't allow me to apply the practices only did themselves a disservice because I did them anyway. It is the only way I know how to successfully build complex software successfully.<br /><br />For those places that micromanaged my activities to make sure I was not wasting time documenting or planning I had to tell - Find someone else to do it. I don't know how to build something wrong, and I have no interest in learning how to. Right now in my current environment they would love me to come in, sit down, shut up, and just go with the flow. The problem with that is the flow is currently taking us down a toilet hole, so I have no choice but to go against the flow!<br /><br />If DevOps can make it across the <strong><a target="_blank" href="http://www.amazon.com/gp/product/0062292986/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0062292986&linkCode=as2&tag=realworlsofta-20&linkId=PLTL74AAYF5DRN65">chasm</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0062292986" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></strong> you will be very happy to have the material found in this book in your arsenal of knowledge. </td><td style="text-align: center"><a target="_blank" href="http://www.amazon.com/gp/product/B00XCF9VCI/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=B00XCF9VCI&linkCode=as2&tag=realworlsofta-20&linkId=6EMNXLOPJGAJY6VK"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B00XCF9VCI&Format=_SL110_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=realworlsofta-20" ></a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=B00XCF9VCI" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <br /><a target="_blank" href="http://www.amazon.com/gp/product/B00XCF9VCI/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=B00XCF9VCI&linkCode=as2&tag=realworlsofta-20&linkId=6EMNXLOPJGAJY6VK">DevOps: A Software Architect's Perspective (SEI Series in Software Engineering)</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=B00XCF9VCI" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> </td></tr><tr><td colspan="2" style="text-align: center"><a target="_blank" href="http://www.amazon.com/gp/product/B00XCF9VCI/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=B00XCF9VCI&linkCode=as2&tag=realworlsofta-20&linkId=6EMNXLOPJGAJY6VK"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B00XCF9VCI&Format=_SL110_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=realworlsofta-20" ></a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=B00XCF9VCI" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <br /><a target="_blank" href="http://www.amazon.com/gp/product/B00XCF9VCI/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=B00XCF9VCI&linkCode=as2&tag=realworlsofta-20&linkId=6EMNXLOPJGAJY6VK">DevOps: A Software Architect's Perspective (SEI Series in Software Engineering)</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=B00XCF9VCI" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> </td></tr></table>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-19660677.post-70481924770468922242015-07-17T13:03:00.003-07:002015-07-23T14:22:04.849-07:00Scaled Agile Framework (SAFe) LiveLessons Video Series ReviewThis is a review of the <a target="_blank" href="http://www.informit.com/store/leading-safe-scaled-agile-framework-livelessons-video-9780134131986" style="font-weight: 700">Scaled Agile Framework (SAFe) LiveLessons video series</a>. Below are a list of lessons covered.<br /><br />Lesson 1: Introducing the Scaled Agile Framework<br />Lesson 2: Thinking Lean and Embracing Agility<br />Lesson 3: Applying SAFe Principles<br />Lesson 4: Implementing an Agile Release Train<br />Lesson 5: Plan a Program Increment<br />Lesson 6: Execute a Program Increment<br />Lesson 7: Implementing the Agile Portfolio<br />Lesson 8: Scaling Leadership—A Learning Journey<br /><br /><strong>The Review</strong><br />The Agile buzzword has done a lot of damage, but so has SOA, Lean, Scrum, Cloud, as well as one of the latest buzzwords- DevOps. The true processes and architectures that those buzzwords represent, when used in the right context, and the right way, have made the software development world a much better place to be.<br /><br />I have said it at least a hundred times, so one more time won't hurt- none of these processes and architectures are intended to make building software easier, they are intended to enable you to succeed. The one big requirement for success with these processes and architectures is that teams need to have a lot of experience and skills. One way to learn about the skills needed are through books and training videos like this one.<br /><br />SAFe was the first enterprise level agile process and it is still the most comprehensive and complete enterprise level agile process. What baffles me is the number of enterprises I have been in that have not come close to implementing 10% of the needed process activities at the different levels of the enterprise, yet they call themselves agile and lean. The one thing this video series brings to light is just how complex and advanced agile processes are. In his book on SAFe, the video presenter says, "it is not easy, it is agile".<br /><br />I liked this whole video series. There is a ton of great information in it and if you look into the references you will learn a ton. Some of my favorite topics were the SAFe House of Lean, SAFe principles, coverage of the agile manifesto, limiting work in process (WIP), WSJF (Weighted Shortest Job First), Agile Release Trains (ART), budgeting, and scaling leadership.<br /><br />The SAFe House of Lean coverage is great. The presenter uses a different parts of a house to help visualize Lean. The roof is the goal - Value, the three pillars are - Respect for People, Product Development Flow, Kaizen, and the foundation of the house is Leadership.<br /><br />Most of the house titles are self explanatory except Kaizen. Kaizen represents driven, relentless reflection and continuous improvement. Organizations make small, steady improvements to effect significant, lasting change over time.<br /><br />The SAFe Principles are a great compilation of Lean and Agile principles that SAFe is built upon. They are listed below.<br /><br />Take an economic view<br />Apply systems thinking<br />Assume variability, preserve alternatives<br />Manage risk and efficacy with fast, synchronous learning cycles<br />Develop systems incrementally, integrate and test frequently<br />Facilitate flow by reducing batch sizes, managing queue lengths, and limiting WIP (work in process)<br />Base milestones on objective evaluation of working systems<br />Synchronize with cross-domain planning and collaboration<br />Unlock the intrinsic motivation of knowledge workers<br />Decentralize decision-making<br /><br />The presenter does a great job of covering the agile manifesto. He points out that they did not say "do not do the things on the right" but rather find the things on the left more important. One of the most damaging thinks the agile manifesto has done is allow teams to interpret it to mean no more documentation and no more architecture is needed.<br /><br />I do documentation, proof of concepts, and architectural diagrams because it helps me think through the process of how the artifacts will actually be built. The architectural artifacts also provide the Rosetta Stone of the project between the technical and nontechnical team members. Without the exercise of documenting I cannot do due diligence with respect to correctly creating the simplest yet most effective solution. From what I've seen nobody can. That is of course unless they've done the solution many times in the past. I have been fighting for years to get architecture and documentation back into the processes that need it. Thank goodness the agilists are finally speaking out on the topic. Processes like SAFe and DAD (<a target="_blank" href="%3Ca%20href=%22http:/www.amazon.com/gp/product/0132810131/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0132810131&linkCode=as2&tag=realworlsofta-20&linkId=EHJ72RR6LXJYEZ7Z">Disciplined Agile Delivery</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0132810131" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />" style="font-weight: 700">Disciplined Agile Delivery</a>) have grounded the agile world back in reality, and they do not pull punches.<br /><br />Too much work in process (WIP) is a huge problem, especially in a command and control environment. They have no concept of context switching, or the damage it does, and they think the more they pile on the better they are managing. Most days I see people running around like chickens with their heads cut off, completely ineffective and getting nothing done, except moving onto the next fire. I am actually two or three days ahead, every day I take off, because I'm not there to fight fires and have tasks added to my queue. Every project that is done is done because it finally becomes a fire. Systems that should've been taken off-line years ago are finally being taken off-line because they will no longer run. Most of these issues can be shown to relate back to work in process, and never having the time to actually complete tasks and complete them right.<br /><br />I really like the way SAFe emphasizes leadership and not management- "SAFe Lean-Agile leaders are life-long learners and teachers who help teams build better systems through understanding and exhibiting the values, principles and practices of Lean, systems thinking, and Agile software development."<br /><br />I am not a manager, but as an architect I am always managing. If I simply managed, no one would do what I ask. I learned a long time ago I must be willing to jump in and do first what I expect others to also do. It was the only way I could get my developers to do documentation, learn patterns, and be willing to learn to deal with complexity by working towards simplicity. I had to do it first. It was a small part of the mentoring process needed to implement a SDLC on the projects I led.<br /><br />It seems to me agilists like to assume all employees can be great team members because of their need for cross functional teams filled with people that are generalists. SAFe says agile team members is consisting primarily of developers and testers, but may include other necessary roles as well (e.g., technical lead, system architect, technical writer, etc.), which I agree with. Specialists are needed in agile environments more than they were in traditional SDLCs. A system of any complexity must have the architecture in place to support rapid change, which means you better have an architect that considers modifiability one of the most important quality attributes. Enabling modifiability while not sacrificing performance and simplicity is not easy.<br /><br />I cannot stand the saying "There is no such thing as a bad employee, just bad managers". That seems to be the theme that all agilists continue to stick with, or they just avoid the topic of management altogether. In my experience a bad manager can shut down good employees, they can be inexperienced enough to hire bad employees, and they can completely destroy an environment, but there are also people (workers) that are, or have become, unteachable.<br /><br />I won't go into much on the topic, but I do think SAFe should start providing some guidance on it. All I will say is you must accept that everyone will not survive the transition to an agile environment and that is ok. Change is change, and it is the responsibilities of that position that are changing. If the employee filling the position changes, great. If not, you change the employee in that position. There are no other options.<br /><br />Don't get me wrong, management can do much more damage than bad employees. I have worked with about 5 developers that I could trust to know more than me about structuring code, know the nuances of the languages we were using, and have work done before they are asked to do it. In the environment I was in with the worst managers I have ever experienced, I witnessed one of them simply crushed.<br /><br />Sometimes it is necessary to break the will of a young talented but stubborn employee, but you should never break their spirit. When you break their spirit you change something so foundational within their core that they end up undependable and dangerous. They become an insider threat that needs to move on so they can reclaim their dignity and passion.<br /><br />The presenter provides nice coverage of long term planning. Although it is nice to think you do not need to have any long term planning in an agile process, you cannot do without it. Architecture requires long term planning in order to put a framework in place that allows for agility. An architecture that does not support change, shuts you down before you get started.<br /><br />There are three parts on Agile Release Trains. These are teams of teams created at the program level that are responsible for delivering increments of value in a value stream. The three parts are Implementing an Agile Release Train, Plan a Program Increment, and Execute a Program Increment.<br /><br />There is a lot on budgeting and it is rather radical compared to how I see budgeting done at most places. I see it fudged, shoved, twisted, and stretched to make it look like it is working, but it is just a hoax. Pay very close attention to the presenter, because odds are your budgeting does't work either, and trying something new cannot really hurt.<br /><br />WSJF (Weighted Shortest Job First) is a great process for figuring out what you should do next. It is a comprehensive model for prioritizing work based on the economics of product development flow. WSJF is calculated as the Cost of Delay divided by job duration.<br /><br />Leadership was the topic of the last module. The best leader I ever met was a project manager I worked with years ago, 15 years or so ago. My first project with her was to develop a navigation system for a fairly massive web site that was backed by a custom built administration tool. It housed GE Fanuc Automation Corporation's complete inventory.<br /><br />My meeting with the company's developers to go over the requirements for the navigation system ended with me telling them it was not possible to build it the way they designed it. They said, figure it out. I said that could take a very long time. Their response was, your contract is 6 months and renewable so who cares. Just make sure you bill the right account. That was the attitude of everyone I had met their up to that point, but I had not worked with her prior to this.<br /><br />The project manager came back to my desk everyday asking when it would be done, and I said "I do not know", she looked at me weird and walked off. After 2 weeks of that routine I told her not to ask me about work anymore. If she wanted to talk about the weather, or her weekend, fine - but stop asking me when it will be done. She looked at me like she wanted to slap me and then walked off.<br /><br />She came back a few hours later and asked me why I said that. I told her it was because I told you it was impossible to build the way you want it, and you told me to do it anyway no matter how long it takes. She asked me to explain. Apparently the internal development team had not told her what I had told them.<br /><br />She asked me how it should be done. I drew a few diagrams, and explained why it could not be done the way they wanted, but showed her how it could be done, and still meet all the customer's demands. She asked how long that would take and I said 3 weeks. She said do it, and I did. It was fully tested and ready for production promotion in 3 weeks.<br /><br />That set in motion a new way of doing things at that company. The business had been telling her she needed to have it done in 2 weeks from the beginning of this ordeal. The dates came and went until I told her 3 weeks. She told them 3 weeks, they said no 2, she said sorry 3, and we delivered in 3 weeks. The next thing they said they wanted in 1 month. She asked me how long and I said 2 months. She told them 2 months. They were not at all used to this behavior, but after we delivered several projects in the time we promised, the business started trusting our team.<br /><br />That sounds like a ho-hum story, but what followed was the development of a cross functional team that was completely transparent with the business, allowing the business to be completely transparent with the client. Over the next year and a half we developed iteratively, creating use cases, doing proof of concepts, requirement specifications, architectural diagrams, and had a blast. We did code reviews by having the whole team try to find issues with the code, if they found a certain amount of issues, the team member being reviewed had to buy the team ice cream.<br /><br />We made deliveries every few weeks, which was fast enough to keep new requirements in the next release and had refactored the code so that it was very malleable and could be easily changed and tested. We achieved the state of agility. Keep in mind that agile is a state of being, not a process, not a set of development practices, not a way of budgeting, and not an architecture. All those things must be done in a certain way in order to achieve an agile state on a project.<br /><br />Where did we learn how to do all that? Our team used 4 primary books to guide us - <a target="_blank" href="http://www.amazon.com/gp/product/0201615932/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0201615932&linkCode=as2&tag=realworlsofta-20&linkId=QNQMNUO6DVS5O4ZO"><strong>Managing Software Requirements: A Unified Approach</strong></a><strong><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0201615932" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></strong>, <a target="_blank" href="http://www.amazon.com/gp/product/0201199300/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0201199300&linkCode=as2&tag=realworlsofta-20&linkId=5GOVGROTEYG52TPE" style="font-weight: 700">Software Architecture in Practice</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0201199300" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />, <a target="_blank" href="http://www.amazon.com/gp/product/0201633612/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0201633612&linkCode=as2&tag=realworlsofta-20&linkId=J6GOLHTDTL2PS3OP"><strong>Design Patterns: Elements of Reusable Object-Oriented Software</strong></a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0201633612" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />, and <a target="_blank" href="http://www.amazon.com/gp/product/0137488807/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0137488807&linkCode=as2&tag=realworlsofta-20&linkId=RNYNFKKSPIC6W7FY"><strong>Applying UML and Patterns</strong></a><strong><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0137488807" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></strong>. Two of them are now available in their third edition.<strong> </strong><a target="_blank" href="http://www.amazon.com/gp/product/0321815734/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0321815734&linkCode=as2&tag=realworlsofta-20&linkId=JXOWGKGSXBS2EXEH"><strong>Software Architecture in Practice</strong></a><strong><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0321815734" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></strong> - <a target="_blank" href="http://www.amazon.com/gp/product/0131489062/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0131489062&linkCode=as2&tag=realworlsofta-20&linkId=RHARAZDSCAXCYIS6"><strong>Applying UML and Patterns</strong></a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0131489062" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />, and <a target="_blank" href="http://www.amazon.com/gp/product/0321635841/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0321635841&linkCode=as2&tag=realworlsofta-20&linkId=BXA4WNQNDTM6CPT3"><strong>Agile Software Requirements: Lean Requirements Practices for Teams, Programs, and the Enterprise</strong></a><strong><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0321635841" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></strong>.<br /><br />In case you don't know- <a target="_blank" href="http://www.amazon.com/gp/product/0321635841/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0321635841&linkCode=as2&tag=realworlsofta-20&linkId=BXA4WNQNDTM6CPT3"><strong>Agile Software Requirements: Lean Requirements Practices for Teams, Programs, and the Enterprise</strong></a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0321635841" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> is all about SAFe.<br /><br />The video covers three leadership styles - Leader as Expert, Leader as Conductor, and Leader as Developer. The presenter goes over the characteristics of each type, and the challenges each type has. He covers a ton of other valuable information as well.<br /><br />I liked keeping the <a href="http://www.scaledagileframework.com/" target="_blank"><strong>SAFe web site</strong></a> up while going through the videos. Following the topics on the site helped me get familiar with the current release of SAFe. I read the book a few years ago and still keep it handy, but the team developing SAFe has been hard at work adding new material. When I read the book, this site was just the process picture and some release dates, now it is a huge repository of valuable information.<br /><br />The videos cover a bunch of valuable templates. Following along on the site allowed me to grab them as they were being covered.<br /><br />I also recommend doing the exercises as the presenter asks you too. It really helps to do them because it makes you think the way the presenter wants you to think. Just watching him do them is good, but doing them yourself helps you absorb the topic more.<br /><br />Do not make the mistake of thinking that you can take SAFe as is and implement the process in your enterprise. What you find here is the first thing needed for software process engineering, a repository of assets, principles, practices, activities, and patterns you can use to instance a process. The second half is instancing the process in your environment. Think of it like a module of classes, some of them he would override, some of them you would use as is, some of them you would not need to use, and you would add your own functionality.<br /><br />The Scaled Agile site provides Enterprise SAFe which allows organization to customize SAFe. I used EPF (Eclipse Process Framework) to build a process for the State of Pennsylvania using material from Scott Ambler, SEI, Sparx, Microsoft Pattern and Practices group, and baseline processes like OpenUP and Scrum so I know what it should do, but have not had the opportunity to use or see it in action yet. I just wanted to point it out.<br /><br />Over all I don't think you can afford not to watch this video series if you are planning on introducing agile processes at an enterprise level. Even if you aren't, watching the series will provide you with a tons of tools on teamwork and leadership. I have watched several parts of it several times. Get more information about the videos<a href="http://www.informit.com/store/leading-safe-scaled-agile-framework-livelessons-video-9780134131986" target="_blank"><strong> here</strong></a>.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-19660677.post-78413017750505252822015-06-11T17:01:00.002-07:002015-06-11T17:01:10.800-07:00Bulletproof Android: Practical Advice for Building Secure Apps Book Review<table style="width: 100%"><tr><td>Sometimes I really annoy myself. When I received this book I was already reading Android Hacker's Handbook. When I saw the size of it, I put it on the bottom of the pile of books in my reading queue. I then got Android Security Internals and that was not a quick read.<br/><br/>I am glad I finally picked this one up off the pile. For a small book, it contains a ton of great information. In the first chapter they introduce several security guidelines including PCI Mobile Payment Acceptance Security Guidelines, Google Security, HIPAA Secure, OWASP Top 10 Mobile Risks (2014), and Forrester Research’s Top 10 Nontechnical Security Issues in Mobile App Development.<br/><br/>I have listed the chapters below.<br/><br/>1. Android Security Issues<br/>2. Protecting Your Code<br/>3. Authentication<br/>4. Network Communication<br/>5. Android Databases<br/>6. Web Server Attacks<br/>7. Third-Party Library Integration<br/>8. Device Security<br/>9. The Future<br/><br/>The book is very concise, but the author targets topics that can be taught in short to the point chapters. For example, Chapter 2 does an awesome job of introducing obfuscation, covering the different types, and then showing us how to use ProGuard and DexGuard. The chapter concludes by showing the differences of what you can accomplish with decompiling and disassembling.<br/><br/>This book is different from the other Android security books I have read because it is not a book for the hacker, it is more of a book for the architect and developer. It is a book about the tools available to protect your application, not break your application.<br/><br/>It is also about the best practices that are available for us to follow in order to achieve a stable and secure application. Although the other books I have read were fun, this one applied more to what I need to know to do my daily job. I don't go to work to hack applications, I go there to build safe and secure ones.<br/><br/>The code that comes with the book is great. Best of all, it just opens, builds, and runs in Android Studio. I have been using ADT, but just recently made the switch to Android Studio. This is the first Android book that has come with code that just ran for me, and was also actually worth running and digging into.<br/><br/>The author's writing style makes the book an easy cover to cover read. It was also nice to have a small book to carry around for once.<br/><br/>I highly recommend this book to any architect or developer that is interested in learning more about Android security topics for the architect and developer.<br/><br/></td><td style="text-align: center"><a target="_blank" href="http://www.amazon.com/gp/product/0133993329/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0133993329&linkCode=as2&tag=realworlsofta-20&linkId=LG3PK62KUFLGMOTD"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=0133993329&Format=_SL110_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=realworlsofta-20" ></a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0133993329" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <br/><a target="_blank" href="http://www.amazon.com/gp/product/0133993329/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0133993329&linkCode=as2&tag=realworlsofta-20&linkId=LG3PK62KUFLGMOTD">Bulletproof Android: Practical Advice for Building Secure Apps (Developer's Library)</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0133993329" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> </td></tr><tr><td colspan="2" style="text-align: center"><a target="_blank" href="http://www.amazon.com/gp/product/0133993329/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0133993329&linkCode=as2&tag=realworlsofta-20&linkId=LG3PK62KUFLGMOTD"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=0133993329&Format=_SL110_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=realworlsofta-20" ></a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0133993329" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <br/><a target="_blank" href="http://www.amazon.com/gp/product/0133993329/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0133993329&linkCode=as2&tag=realworlsofta-20&linkId=LG3PK62KUFLGMOTD">Bulletproof Android: Practical Advice for Building Secure Apps (Developer's Library)</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0133993329" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> </td></tr></table>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-19660677.post-47587999126704231262015-04-16T17:24:00.001-07:002015-04-16T17:24:44.830-07:00Swift for Programmers Book Review<table style="width: 100%"><tr><td>This is one of the best laid out programming books I have read in a while. The way it starts out providing summaries of Swift features found in other programming languages, Swift features that eliminate common programming errors, the list of Cocoa and Cocoa Touch frameworks, new key features in Xcode 6, special characters, numeric and boolean types, operators, conditional and loop statements, compound assignment operators, Classes, access modifiers, properties, initializers, methods, value and reference types, and making use of built in frameworks is perfect for developers from any other language.<br /><br />By the time you are done the first few chapters you have gained a great deal of knowledge about Swift that is familiar from your experience with other languages. Below is a list of all the chapters included in the book.<br /><br />1. Introduction to Swift and Xcode 6<br />2. Introduction to Swift Programming<br />3. Introduction to Classes, Objects, Methods and Functions<br />4. Control Statements; Assignment, Increment and Logical Operators<br />5. Functions and Methods: A Deeper Look; enums and Tuples<br />6. Arrays and an Introduction to Closures<br />7. Dictionary<br />8. Classes: A Deeper Look and Extensions<br />9. Structures, Enumerations and Nested Types<br />10. Inheritance, Polymorphism and Protocols<br />11. Generics<br />12. Operator Overloading and Subscripts<br />13. iOS 8 App Development: Welcome App<br />14. iOS 8 App Development: Tip Calculator App<br />A. Keywords<br />B. Operator Precedence Chart<br />C. Labeled break and continue Statements<br /><br />After the initial introductory chapters the book digs deep into different topics by giving each major language feature a chapter of its own. The chapter names are reflective of the topics covered.<br /><br />Object-oriented programming topics are covered throughout the book when topics being covered create the right context to cover them. However, chapter 10 is dedicated to covering Inheritance, Polymorphism and Protocols. This chapter does a good job of explaining how Swift is different than most object-oriented languages because it does not have a common superclass from which all other classes inherit basic capabilities.<br /><br />The last two chapters of the book give us a glimpse into developing iOS 8 applications. Each chapter builds a small application and covers a bunch of topics at a high level. They also introduce storyboards and the Xcode interface. These two chapters are from the book <a target="_blank" href="http://www.amazon.com/gp/product/0133965260/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0133965260&linkCode=as2&tag=realworlsofta-20&linkId=4VAZ5D3WFTNHHFIS">iOS 8 for Programmers: An App-Driven Approach with Swift</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0133965260" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />, which gives you an idea of whether or not you would like to read a book which takes you through building a bunch of small applications to introduce you to iOS 8 development.<br /><br />The book includes code samples you can download, but one of the things I liked best about the book is the amount of code found in the book and the format in which they were presented. I could carry the book around and read it without feeling like I had to run the code samples on my Mac.<br /><br />The samples include the results of running the code in the book. I know a lot of books do the opposite, making you type everything in, which is effective for the beginner, but this format is much more appealing to me.<br /><br />The downloadable samples are very well organized by chapter and then labeled with the same figure name used in the book, making finding the really easy. I upgraded to iOS 8.3 and Xcode 6.3 and all the samples easily upgraded. I didn't have any problems with any of the examples before or after the upgrade.<br /><br />Another thing I like about the book is the sidebars throughout the book. They have 5 different types of them including Good Programming Practices, Common Programming Errors, Error-Prevention Tips, Performance Tips, and Software Engineering Observations. They are usually 1 to 4 sentences, and are related to the material being covered in the section they are placed.<br /><br />I saw that there is now a Swift Fundamentals LiveLessons available by the author. I have not seen this course, but have seen other LiveLessons, and they are usually pretty good. There are a few sample videos available <a href="http://www.informit.com/store/swift-fundamentals-livelessons-part-i-of-iii-video-9780134076997" target="_blank">on the publisher's web site</a>.<br /><br />The author's writing style and the layout of the book makes this an easy cover to cover read. The way the topics are covered also makes the book a good reference. There is no fluffy filler. The authors get right to the point of a topic and stick to it until it is thoroughly covered.<br /><br />All in all I think this book is the perfect place for the experienced programmer of C#, Java, Objective-C, or C++ to get started with Swift.<br /><br /></td><td style="text-align: center"><a target="_blank" href="http://www.amazon.com/gp/product/0134021363/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0134021363&linkCode=as2&tag=realworlsofta-20&linkId=XRDTP4PJCT6VMWXU"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=0134021363&Format=_SL110_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=realworlsofta-20" ></a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0134021363" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <br /><a target="_blank" href="http://www.amazon.com/gp/product/0134021363/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0134021363&linkCode=as2&tag=realworlsofta-20&linkId=XRDTP4PJCT6VMWXU">Swift for Programmers (Deitel Developer Series)</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0134021363" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> </td></tr><tr><td colspan="2" style="text-align: center"><a target="_blank" href="http://www.amazon.com/gp/product/0134021363/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0134021363&linkCode=as2&tag=realworlsofta-20&linkId=XRDTP4PJCT6VMWXU"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=0134021363&Format=_SL110_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=realworlsofta-20" ></a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0134021363" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <br /><a target="_blank" href="http://www.amazon.com/gp/product/0134021363/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0134021363&linkCode=as2&tag=realworlsofta-20&linkId=XRDTP4PJCT6VMWXU">Swift for Programmers (Deitel Developer Series)</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0134021363" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> </td></tr></table>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-19660677.post-60981935159761087792015-04-03T10:53:00.002-07:002015-04-03T10:53:37.307-07:00Security in Computing (5th Edition) Book Review<table style="width: 100%"><tr><td>This book is a beast!!! It is 100 % textbook, with a lot of exercises at the end of the chapters. If your class uses this book, get ready for a fire hose of information. It covers a ton of topics and covers them in depth.<br /><br />Although it is a text book the authors do there best to keep it interesting. I really enjoyed the sidebars that include true stories of security breaches. I really like the ones that find out what the criminal was thinking. Some of the reasons for doing what they do are nuts.<br /><br />One of the biggest problems with security I see today is the security teams oftentimes don't know what to secure, or how to secure stuff when they do. This book starts out with a really nice introduction to what computer security is. The author discusses Values of Assets, the Vulnerability–Threat–Control Paradigm, Confidentiality, Integrity, Availability, Types of Threats, Types of Attackers, Risk and Common Sense, Method–Opportunity–Motive, Vulnerabilities, and Controls. By the time you are done this chapter you have a high level few of today's security issues.<br /><br />1. Introduction<br />2. Toolbox: Authentication, Access Control, and Cryptography<br />3. Programs and Programming<br />4. The Web—User Side<br />5. Operating Systems<br />6. Networks<br />7. Databases<br />8. Cloud Computing<br />9. Privacy<br />10. Management and Incidents<br />11. Legal Issues and Ethics<br />12. Details of Cryptography<br />13. Emerging Topics<br /><br />I was glad to see information on regulations, compliance, and laws. They can wreak havoc on an organization's productivity when left to an unqualified security team. I usually find that IT organizations that have locked down everything from the Internet to your USBs, have no concept of how to implement security in a managed and efficient way.<br /><br />Years ago I was the lead research and development on a contract with the state. They allowed no internet except for 2 PCs that all 250 people on the project had to use. 90% of the time they were tied up with people checking their personal email. That was the days before smart phones. I would have to go home, research stuff, download it and burn it to CD, and take it in to work. I understand the thoughts behind natural immunity, but separating yourself from the world you are trying to successfully build software for, leads to software that doesn't meet the needs of that world.<br /><br />More recently I was tasked with building a mobile application. The company had a guest wireless connection in place, but it was so locked down we couldn't use it. We needed to get data plans for the phones to test the applications. They also had emails with attachments reviewed by help desk personnel that would then release them. They basically are operating like the state project I mentioned above. Yet every security audit is failed.<br /><br />This book does a great job of covering all the security topics you need to know about to work successfully in a decent size enterprise. The detail and depth of each topic amazed me.<br /><br />A highlight of this book is that after the detailed introduction at the beginning of the book, each chapter contains topics you can read in isolation, while at the same time they are logically tied together.<br /><br />Another highlight is that the book contains both timeless information and current information doing a really good job of tying the history of a topic to the current state of a topic. For example, the chapter on Cloud computing contains basic information on SaaS, PaaS, and IaaS, as well as sidebars on current research happening today that isn't quite ready for release to the world.<br /><br />Over all I highly recommend this book not only students that need it for a course, but to everyone that has any interest in learning more about the world of security. For the amount of information and the clarity of its delivery, this book is absolutely worth the price. </td><td style="text-align: center"><a target="_blank" href="http://www.amazon.com/gp/product/0134085043/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0134085043&linkCode=as2&tag=realworlsofta-20&linkId=FXD5HG7SMMPKGZSR" style="text-align: center"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=0134085043&Format=_SL110_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=realworlsofta-20" ></a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0134085043" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <br /><a target="_blank" href="http://www.amazon.com/gp/product/0134085043/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0134085043&linkCode=as2&tag=realworlsofta-20&linkId=FXD5HG7SMMPKGZSR">Security in Computing (5th Edition)</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0134085043" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> </td></tr><tr><td colspan="2" style="text-align: center"><a target="_blank" href="http://www.amazon.com/gp/product/0134085043/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0134085043&linkCode=as2&tag=realworlsofta-20&linkId=FXD5HG7SMMPKGZSR"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=0134085043&Format=_SL110_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=realworlsofta-20" ></a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0134085043" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <br /><a target="_blank" href="http://www.amazon.com/gp/product/0134085043/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0134085043&linkCode=as2&tag=realworlsofta-20&linkId=FXD5HG7SMMPKGZSR">Security in Computing (5th Edition)</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0134085043" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> </td></tr></table>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-19660677.post-2748608887131467302015-03-03T08:37:00.002-08:002015-03-03T08:39:36.050-08:00Swift in 24 Hours, Sams Teach Yourself Book Review<table style="width: 100%"><tr><td>This book has Beginning to Intermediate on the back cover. I would recommend you put that into the context of learning Swift, not learning Object-Oriented Programming. The book does an excellent job of covering the Swift language in detail and it jumps right in after a short introduction to the available development environments - Xcode, playgrounds, and REPL (Read-Eval-Print-Loop). REPL is kind of a command line version of playgrounds running in terminal.<br /><br />The introduction is hour 1. There are 24 hour long lessons. I have listed the lessons below to show you what is covered.<br /><br />Hour 1. Introducing the Swift Development Environment<br />Hour 2. Learning Swift’s Fundamental Data Types<br />Hour 3. Using Operators in Swift<br />Hour 4. Working with Collection Types<br />Hour 5. Understanding Optional Values<br />Hour 6. Controlling Program Flow with Conditionals<br />Hour 7. Iterating Code with Loops<br />Hour 8. Using Functions to Perform Actions<br />Hour 9. Understanding Higher Order Functions and Closures<br />Hour 10. Learning About Structs and Classes<br />Hour 11. Implementing Class Inheritance<br />Hour 12. Harnessing the Power of Enums<br />Hour 13. Customizing Initializers of Classes, Structs, and Enums<br />Hour 14. Digging Deeper with Properties<br />Hour 15. Adding Advanced Type Functionality<br />Hour 16. Understanding Memory Allocation and References<br />Hour 17. Using Protocols to Define Behavior<br />Hour 18. Using Extensions to Add Type Functionality<br />Hour 19. Working with Optional Chaining<br />Hour 20. Introducing Generics<br />Hour 21. Adding Interoperability with Objective-C<br />Hour 22. Interacting with User Interfaces<br />Hour 23. Asynchronous Programming in Swift<br />Hour 24. Learning Swift’s Standard Library Functions<br /><br />The hour's titles do a great job of describing exactly what is covered. Sometimes authors like to use goofy chapter titles that need interpreted, but not in this book. Having the topics broken down into individual chapters makes this book a good reference.<br /><br />Although you can jump into any topic, the book's chapters do build on each other. If you can, I would recommend reading the book cover to cover and then keep it around as a reference.<br /><br />Each topic is thoroughly explained but the author did a really great job of keeping the chapters short enough that they can be read in an hour. I have had many "in 24 Hours" books and many of them had 2 hour chapters. This book is definitely the lunch break book.<br /><br />I am reading four books on Swift before moving on to iOS 8. This might seem like over kill since I have spent a lot of time in Objective-C, but this is what I do to learn when I am trying to learn something I am not using at work. I am not that quick or smart, so I need to repeatedly pound stuff into my head for it to stick.<br /><br />Although I started all four books at the same time this is the second one that I started running away with and finished. The reason for that is this one is in the middle of them as far as being robust goes, but it still contains straight to the point content. No filler at all.<br /><br />What made this one a little more robust than the first one I read was each chapter end with a Q&A section, a Workshop- Quiz with answers, and an Exercise. These really help to drive home the topics covered in the chapter.<br /><br />The book comes with all the examples available for download. They are all in playgrounds, except the last 3 chapters, which are in projects. The examples organized by chapter.<br /><br />This is not an iOS 8 book, it is a Swift language book, so don't expect to be building apps at the end of the book. Although, you can expect to get started with iOS 8 when you are done this book.<br /><br />As I mentioned above the author says you do not need prior programming experience to get through the examples in the book. He is probably right because he does a really good job of walking the reader through them. However, if you have no prior programming experience, you are going to have to pick up some books on Object-Oriented Programming before moving on to iOS 8.<br /><br />All in all, I found the book a pleasure to read. The author's writing style is great, and the chapters were the perfect size to read over lunch. I recommend having your Mac with you when you are reading it. A few times I used an online swift compiler to run through some of the examples. I only had my iPad with me.<br /><br />If you are interested in learning Swift, this is a great place to start!! </td><td style="text-align: center"><a target="_blank" href="http://www.amazon.com/gp/product/067233724X/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=067233724X&linkCode=as2&tag=realworlsofta-20&linkId=NMT3OXAWASRHUR46"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=067233724X&Format=_SL110_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=realworlsofta-20" ></a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=067233724X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <br /><a target="_blank" href="http://www.amazon.com/gp/product/067233724X/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=067233724X&linkCode=as2&tag=realworlsofta-20&linkId=NMT3OXAWASRHUR46">Swift in 24 Hours, Sams Teach Yourself</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=067233724X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> </td></tr><tr><td colspan="2" style="text-align: center"><a target="_blank" href="http://www.amazon.com/gp/product/067233724X/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=067233724X&linkCode=as2&tag=realworlsofta-20&linkId=NMT3OXAWASRHUR46"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=067233724X&Format=_SL110_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=realworlsofta-20" ></a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=067233724X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <br /><a target="_blank" href="http://www.amazon.com/gp/product/067233724X/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=067233724X&linkCode=as2&tag=realworlsofta-20&linkId=NMT3OXAWASRHUR46">Swift in 24 Hours, Sams Teach Yourself</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=067233724X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> </td></tr></table>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-19660677.post-82359026735372672282015-02-26T10:57:00.001-08:002015-02-26T11:00:01.297-08:00Sparx Systems Releases Enterprise Architect 12There is only one tool I have open more than Xcode, Visual Studio, Eclipse, and Android Studio, that tool is Sparx Enterprise Architect. Below is their recent announcement of Enterprise Architect 12. There is no tool on the market that compares to Sparx Enterprise Architect at such a great price. If you have never checked it out, do yourself a favor and check it out now!!<br /><br /><span style="font-size: 14.0pt; font-family: "Calibri-Light",serif;"><strong>Continuing a long term commitment to the development, extension and refinement of its flagship UML based modeling tool, Enterprise Architect, Sparx Systems is proud to announce the official release of Enterprise Architect 12.</strong><o:p></o:p></span><p><span style="font-family: "Calibri",sans-serif">As one of the most feature rich and exciting product releases to date, Enterprise Architect 12 is the result of extensive community consultation, in house innovation and overall optimization. It includes new and unique tools that tightly integrate data models, wire-frames, information meta-models, XSD, XML, documents and code in a robust and collaborative environment. Revitalized user interface themes provide a compelling and sleek UI that is both engaging and stimulating. <o:p></o:p></span></p><p><span style="font-family: "Calibri",sans-serif">Registered users can download Enterprise Architect 12 from the <a href="http://www.sparxsystems.com/registered/reg_ea_down.html?source=ea12" target="_blank">registered users download page</a>.<o:p></o:p></span></p><p><span style="font-family: "Calibri",sans-serif">Take a look at some of the major new features in Enterprise Architect 12 at: <a href="http://www.sparxsystems.com/ea12?source=ea12" target="_blank">www.sparxsystems.com/ea12</a><br />Read through the full list of changes in the: <a href="http://www.sparxsystems.com/products/ea/history.html?source=ea12" target="_blank">release notes</a><o:p></o:p></span></p><p><strong><span style="font-family: "Calibri",sans-serif">Some release highlights:</span></strong><span style="font-family: "Calibri",sans-serif"><br />( Use the jump list below to go directly to your area of interest )<o:p></o:p></span></p><p class="italic"><span style="font-family: "Calibri",sans-serif"><a href="http://www.sparxsystems.com/products/ea/12/?source=ea12#totaluserinterfacetheming" target="_blank"><span style="font-style: normal">User Interface Theming</span></a>: Significant enhancements to the look and feel of Enterprise Architect <o:p></o:p></span></p><img alt="" src="http://www.sparxsystems.com/images/products/ea/12/visual/visual-style-black.png" style="height: 225px; width: 400px" /> <br /><a href="http://www.sparxsystems.com/images/products/ea/12/visual/visual-style-black.png" target="_blank">Click here for larger image</a> <p class="italic"><span style="font-family: "Calibri",sans-serif"><a href="http://www.sparxsystems.com/products/ea/12/?source=ea12#portalswindow" target="_blank"><span style="font-style: normal">Portals Window</span></a>: An all new tool to provide rapid access to common commands, searches, recent documents, user interface theming, workspace layouts and more<o:p></o:p></span></p><p class="italic"><span style="font-family: "Calibri",sans-serif"><a href="http://www.sparxsystems.com/products/ea/12/?source=ea12#navigatorbar" target="_blank"><span style="font-style: normal">Navigator Bar</span></a>: An all new toolbar designed to provide better control and management of your current context within the model<o:p></o:p></span></p><p class="italic"><span style="font-family: "Calibri",sans-serif"><a href="http://www.sparxsystems.com/products/ea/12/?source=ea12#databaseengineeringtoolset" target="_blank"><span style="font-style: normal">Database Engineering Toolset</span></a>: Database Builder view added to provide a database centric view of your Data Model<o:p> </o:p></span></p><img src="http://www.sparxsystems.com/images/products/ea/12/database/database-columns.png" alt="" style="height: 252px; width: 400px" /> <br/><a href="http://www.sparxsystems.com/images/products/ea/12/database/database-columns.png" target="_blank">Click here for larger image</a> <p class="italic"><span style="font-family: "Calibri",sans-serif"><a href="http://www.sparxsystems.com/products/ea/12/?source=ea12#wireframingsupport" target="_blank"><span style="font-style: normal">GUI Wireframing</span></a>: All new fully featured and comprehensive Wireframing library for modeling common devices and user interfaces<o:p></o:p></span></p><img src="http://www.sparxsystems.com/images/products/ea/12/wireframe-android-toolbox.png" alt="" style="height: 225px; width: 400px" /> <br/><a href="http://www.sparxsystems.com/images/products/ea/12/wireframe-android-toolbox.png" target="_blank">Click here for larger image</a> <p class="italic"><span style="font-family: "Calibri",sans-serif"><a href="http://www.sparxsystems.com/products/ea/12/?source=ea12#schemacomposer" target="_blank"><span style="font-style: normal">Schema Composer</span></a>: A new powerful toolset to rapidly design and build XSD and similar data definitions from a model subset<o:p></o:p></span></p><p class="italic"><span style="font-family: "Calibri",sans-serif"><a href="http://www.sparxsystems.com/products/ea/history.html?source=ea12#diagramming" target="_blank"><span style="font-style: normal">Diagramming</span></a>: Many improvements to the behavior, drawing and navigation of diagrams have been added. Improvements include: New Drawing Styles, Diagram Quick Keys, Shape Script enhancements and more<o:p></o:p></span></p><p class="italic"><span style="font-family: "Calibri",sans-serif"><a href="http://www.sparxsystems.com/products/ea/12/?source=ea12#commonpropertydialogs" target="_blank"><span style="font-style: normal">Redesigned Property Dialogs</span></a>: The Object Properties dialog has been updated to bring the focus to the name and notes of any element<o:p></o:p></span></p><p class="italic"><span style="font-family: "Calibri",sans-serif"><a href="http://www.sparxsystems.com/products/ea/12/?source=ea12#startpage" target="_blank"><span style="font-style: normal">Start Page Updated</span></a>: A clearer and simpler jumping off point for models and portals<o:p></o:p></span></p><p class="italic"><span style="font-family: "Calibri",sans-serif"><a href="http://www.sparxsystems.com/products/ea/12/?source=ea12#mainmenu " target="_blank"><span style="font-style: normal">Main Menu</span></a>: Changes to simplify and focus access to tools<o:p></o:p></span></p><p class="italic"><span style="font-family: "Calibri",sans-serif"><a href="http://www.sparxsystems.com/products/ea/12/?source=ea12#xsltdebugger" target="_blank"><span style="font-style: normal">XSLT Debugging</span></a>: Build, debug and execute XSL Transforms<o:p></o:p></span></p><img src="http://www.sparxsystems.com/images/products/ea/12/xslt.png" alt="" style="height: 216px; width: 400px" /> <br/><a href="http://www.sparxsystems.com/images/products/ea/12/xslt.png" target="_blank">Click here for larger image</a> <p class="italic"><span style="font-family: "Calibri",sans-serif"><a href="http://www.sparxsystems.com/products/ea/12/?source=ea12#xmlandxsd" target="_blank"><span style="font-style: normal">XML Editing and Validation</span></a>: Improved XML/XSD editing, navigation and validation<o:p></o:p></span></p><p class="italic"><span style="font-family: "Calibri",sans-serif"><a href="http://www.sparxsystems.com/products/ea/12/?source=ea12#defaultdocumenthandler" target="_blank"><span style="font-style: normal">Document Handling</span></a>: (Enterprise Architect as 'Default Program') Load supported file types by default into Enterprise Architect to provide a better editing and viewing experience<o:p></o:p></span></p><p class="italic"><span style="font-family: "Calibri",sans-serif"><a href="http://www.sparxsystems.com/products/ea/12/#xmimerge" target="_blank"><span style="font-style: normal">XMI Merge</span></a>: Added support for merging multiple XMI 1.1 files originating from the same baseline into a model<o:p></o:p></span></p><p class="italic"><span style="font-family: "Calibri",sans-serif"><a href="http://www.sparxsystems.com/products/ea/12/#vslinkandeclipselink" target="_blank"><span style="font-style: normal">MDG Link for Eclipse and MDG Link for Microsoft Visual Studio</span></a>: Now included with Enterprise Architect Professional and above<o:p></o:p></span></p><img src="http://www.sparxsystems.com/images/products/ea/12/vslink/vs-link-code.png" alt="" style="height: 225px; width: 400px" /> <br/><a href="http://www.sparxsystems.com/images/products/ea/12/vslink/vs-link-code.png" target="_blank">Click here for larger image</a> <p class="italic"><span style="font-family: "Calibri",sans-serif"><a href="http://www.sparxsystems.com/products/ea/history.html?source=ea12#pjm" target="_blank"><span style="font-style: normal">Project Management Profile</span></a>: and new <a href="http://www.sparxsystems.com/products/ea/history.html#risk" target="_blank"><span style="font-style: normal">Risk Taxonomy Profile</span></a><o:p></o:p></span></p><p class="italic"><span style="font-family: "Calibri",sans-serif"><a href="http://www.sparxsystems.com/products/ea/history.html?source=ea12#reportingdocgen" target="_blank"><span style="font-style: normal">Reporting & Document Generation</span></a>: New tweaks and refinements help you build the best reports yet<o:p></o:p></span></p><p class="italic"><span style="font-family: "Calibri",sans-serif"><a href="http://www.sparxsystems.com/products/ea/12/?source=ea12#bpmn" target="_blank"><span style="font-style: normal">BPMN</span></a>: Many updates, conformance improvements and diagramming improvements<o:p></o:p></span></p><p><span style="font-family: "Calibri",sans-serif">Plus added support for <a href="http://www.sparxsystems.com/products/ea/history.html?source=ea12#niem" target="_blank">multiple information meta-models</a> such as:<o:p></o:p></span></p><ul type="disc"><li class="MsoNormal" style="margin-bottom: 7.5pt;"><span style="font-family: "Calibri",sans-serif;">UN/CEFACT<o:p></o:p></span></li><li class="MsoNormal" style="margin-bottom: 7.5pt;"><span style="font-family: "Calibri",sans-serif;">UBL<o:p></o:p></span></li><li class="MsoNormal" style="margin-bottom: 7.5pt;"><span style="font-family: "Calibri",sans-serif;">CIM<o:p></o:p></span></li><li class="MsoNormal" style="margin-bottom: 7.5pt;"><span style="font-family: "Calibri",sans-serif;">NIEM<o:p></o:p></span></li></ul><p><span style="font-family: "Calibri",sans-serif">Further changes include <a href="http://www.sparxsystems.com/products/ea/history.html?source=ea12#codeengineering" target="_blank">Code Engineering</a>, <a href="http://www.sparxsystems.com/products/ea/history.html?source=ea12#executionanalyzer" target="_blank">Execution Analysis</a>, <a href="http://www.sparxsystems.com/products/ea/history.html?source=ea12#arcgis" target="_blank">ArcGIS</a>, <a href="http://www.sparxsystems.com/products/ea/history.html?source=ea12#archimate" target="_blank">ArchiMate</a>, <a href="http://www.sparxsystems.com/products/ea/history.html?source=ea12#gml" target="_blank">GML</a>, <a href="http://www.sparxsystems.com/products/ea/history.html?source=ea12#specman" target="_blank">Specification Manager</a>, <a href="http://www.sparxsystems.com/products/ea/history.html?source=ea12#xmi" target="_blank">XMI</a>, <a href="http://www.sparxsystems.com/products/ea/history.html?source=ea12#vc" target="_blank">Version Control</a>, <a href="http://www.sparxsystems.com/products/ea/history.html?source=ea12#locking" target="_blank">Locking</a> and more.<o:p></o:p></span></p>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-19660677.post-42384258326952225432015-02-18T11:34:00.000-08:002015-02-18T15:36:52.100-08:00Learning Swift Programming Book Review<table style="width: 100%"><tr><td>I started programming with Swift the first day it was available. Back then all we had available was Apple's The Swift Programming Language, and Using Swift with Cocoa and Objective-C eBooks. I got in a few weeks of heads down work before the plug was pulled on our project.<br /><br />When the project was shut down I was handed a project that required 100% of my attention so I was forced to shut down Xcode for a few months. That was a blessing and a curse. Curse because I don't remember anything I was doing, and a blessing because now there are several books available for getting started with Swift.<br /><br />I am reading 4 books on Swift before moving on to iOS. This might seem like over kill since I have spent a lot of time in Objective-C, but this is what I do to learn when I am trying to learn something I am not using at work. I am not that quick or smart, so I need to repeatedly pound stuff into my head for it to stick. I have a real world app I will be coding after I finish the books.<br /><br />Although I started all 4 books at the same time this is the one that I started running away with and finished first. The reason for that is this one is the least robust and contains straight to the point content. No filler at all. Below are the chapters included in the book.<br /><br />Introduction<br />1. Getting Your Feet Wet<br />2. Collecting Data<br />3. Making Things Happen: Functions<br />4. Structuring Code: Enums, Structs, and Classes<br />5. Making a Game<br />6. Reusable Code: Closures<br />7. Subscripts and Advanced Operators<br />8. Protocols<br />9. Becoming Flexible with Generics<br />10. Games with SpriteKit<br />11. Games with SceneKit<br />12. Apps with UIKit <br /><br />My favorite thing about the book is the concise, yet thorough, explanation of language features. The author also has a great feel for which topics need more attention. For example, Closures, Generics, and Protocols get a whole chapter dedicated to themselves.<br /><br />My biggest gripe with the book is not a legitimate one, because it is actually with the author, and complaining about it would not be right. I thought it may be an issue when I read at the beginning of the Introduction that the last thing the author would provide in the Introduction is where we can find the code. Where to find the code is not in the Introduction, or any where else that I can find.<br /><br />Looking for it I eventually found my way to a cloud implementation of a Swift programming environment that was broken. That was where the author said he promised to house all the examples from the book. I saw the promise on one of the sites that came up in my search for the code. I have no doubt, that he eventually will get it working. Regretfully, I could not retrace my tracks back to it. Although I did find some other online Swift compilers.<br /><br />So my big gripe is that the author is doing too much for the community. He needs to slow down, take a small break, clean up his web presence, and then get back to full on teaching with a less outlets. The Skip Wilson videos are great, but trying to find the code led me all over the place. I also couldn't find an easy way to ping the author.<br /><br />Like I said at the beginning of the explanation of my only gripe, my issue is not with the book. It's not really against the author either, I really appreciate all his contributions to the community. He does a great job. I just know I have seen people 1 star an Amazon review simply because a book came with no code.<br /><br />This book is the place to start with Swift if you have prior programming experience. The author's writing style is great so the book is a nice short cover to cover read, but it also makes an excellent reference. Looking up a topic you will find examples easy enough to not have to get your head around the domain's context, but complex enough to show the feature in detail.<br /><br />The reader for this book is the experienced programmer that wants a quick look at what Swift has to offer. It is not a book about how to build applications, although the author uses a few apps in his examples, it is a book about Swift. If you want a swift introduction to Swift, this is a great place to start. </td><td style="text-align: center"><a href="http://www.amazon.com/gp/product/0133950409/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0133950409&linkCode=as2&tag=realworlsofta-20&linkId=PKXBMI6LZFF7KGYX" target="_blank"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=0133950409&Format=_SL110_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=realworlsofta-20"></a><img alt="" border="0" height="1" src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0133950409" style="border: none !important; margin: 0px !important;" width="1" /> <br /><a href="http://www.amazon.com/gp/product/0133950409/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0133950409&linkCode=as2&tag=realworlsofta-20&linkId=PKXBMI6LZFF7KGYX" target="_blank">Learning Swift Programming</a><img alt="" border="0" height="1" src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0133950409" style="border: none !important; margin: 0px !important;" width="1" /> </td></tr><tr><td colspan="2" style="text-align: center"><a href="http://www.amazon.com/gp/product/0133950409/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0133950409&linkCode=as2&tag=realworlsofta-20&linkId=PKXBMI6LZFF7KGYX" target="_blank"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=0133950409&Format=_SL110_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=realworlsofta-20"></a><img alt="" border="0" height="1" src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0133950409" style="border: none !important; margin: 0px !important;" width="1" /> <br /><a href="http://www.amazon.com/gp/product/0133950409/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0133950409&linkCode=as2&tag=realworlsofta-20&linkId=PKXBMI6LZFF7KGYX" target="_blank">Learning Swift Programming</a><img alt="" border="0" height="1" src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0133950409" style="border: none !important; margin: 0px !important;" width="1" /> </td></tr></table>Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-19660677.post-65138231660885208342015-02-05T20:27:00.002-08:002015-02-05T20:27:28.486-08:00Android Security Internals: An In-Depth Guide to Android's Security Architecture Book Review<table style="width: 100%"><tr><td>This is the first security book I have read on Android that was not primarily about hacking the Android platform. This book completely covers all the tools available to the Android software architects and developers.<br/><br/>Instead of showing us how to root the device at the beginning of the book and then showing us exploits and vulnerabilities throughout the rest of it, he covers how root access is achieved in different types of Android builds, and different ways get Root Access, but late in the book.<br/><br/>The book starts out with an overview of the Android security model, and then each chapter is dedicated to a specific feature of Android's security model. I have listed the chapters below.<br/><br/>Chapter 1: Android's Security Model<br/>Chapter 2: Permissions<br/>Chapter 3: Package Management<br/>Chapter 4: User Management<br/>Chapter 5: Cryptographic Providers<br/>Chapter 6: Network Security and PKI<br/>Chapter 7: Credential Storage<br/>Chapter 8: Online Account Management<br/>Chapter 9: Enterprise Security<br/>Chapter 10: Device Security<br/>Chapter 11: NFC and Secure Elements<br/>Chapter 12: SELinux<br/>Chapter 13: System Updates and Root Access<br/><br/>Although the chapter titles give you a pretty good idea of what is in them, I have listed some of the chapters below along with the topics covered that I liked best.<br/><br/>Chapter 2: Permissions covers The Nature of Permissions, Requesting Permissions, Permission Management, Permission Protection Levels, Permission Assignment, Permission Enforcement, System Permissions, Shared User ID, Custom Permissions, Public and Private Components, Activity and Service Permissions, Broadcast Permissions, Content Provider Permissions, and Pending Intents.<br/><br/>Chapter 3: Package Management covers Android Application Package Format, Code signing, APK Install Process, and Package Verification.<br/><br/>Chapter 4: User Management covers, Multi-User Support Overview, Types of Users, User Management, User Metadata, Per-User Application Management, External Storage, and Other Multi-User Features.<br/><br/>Chapter 5: Cryptographic Providers covers JCA Provider Architecture, JCA Engine Classes, Android JCA Providers, and Using a Custom Provider.<br/><br/>Chapter 6: Network Security and PKI covers PKI and SSL Overview, JSSE Introduction, and Android JSSE Implementation.<br/><br/>Chapter 8: Online Account Management covers Android Account Management Overview, Account Management Implementation, and Google Accounts Support.<br/><br/>Chapter 10: Device Security covers Controlling OS Boot-Up and Installation, Verified Boot, Disk Encryption, Screen Security, Secure USB Debugging, and Android Backup.<br/><br/>Chapter 11: NFC and Secure Elements covers NFC Overview, Android NFC Support, Secure Elements, and Software Card Emulation.<br/><br/>There are some books I feel every Android developer should read and this book is definitely one of them. Every Android developer should have this book on their bookshelf. Although, I do not feel it is a beginner's book. You should have a working knowledge of Android programming before attempting to read it, so don't start here, but make sure you eventually get here.<br/><br/>The author's writing style is great. He does an excellent job of covering complex topics in a way that makes them easy to understand. Diagrams, code snippets, and screen shots are used just at the right spots. This may seem stupid to mention, but after attempting to get value out of a book with 2 screenshots and 3 sentences on a page, you learn to appreciate when the learning tools are used right.<br/><br/>The book is not only a great cover to cover read, but it will also make a good reference. Chapter 1: "Android's Security Model" is available on the publisher's site which is a nice introduction to the book and the author's writing style. There is also a very detailed table of contents and the index available.<br/><br/>Amazon also has a lot of the book available for preview. Their preview includes some material from chapters other than chapter 1. You can also use the search on Amazon to see if a topic you are interested in is included.<br/><br/>Overall I found this book excellent. Admittedly, it was a very long read. I have been toting it around for months, but that is because so many things are covered, and they are covered in depth. I also enjoyed reading it, so it was worth the time and toting.<br/><br/></td><td style="text-align: center"><a target="_blank" href="http://www.amazon.com/gp/product/1593275811/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=1593275811&linkCode=as2&tag=realworlsofta-20&linkId=POLMQ5AIU4TZM3DL"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=1593275811&Format=_SL110_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=realworlsofta-20" ></a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=1593275811" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <br/><a target="_blank" href="http://www.amazon.com/gp/product/1593275811/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=1593275811&linkCode=as2&tag=realworlsofta-20&linkId=POLMQ5AIU4TZM3DL">Android Security Internals: An In-Depth Guide to Android's Security Architecture</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=1593275811" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> </td></tr><tr><td colspan="2" style="text-align: center"><a target="_blank" href="http://www.amazon.com/gp/product/1593275811/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=1593275811&linkCode=as2&tag=realworlsofta-20&linkId=POLMQ5AIU4TZM3DL"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=1593275811&Format=_SL110_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=realworlsofta-20" ></a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=1593275811" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <br/><a target="_blank" href="http://www.amazon.com/gp/product/1593275811/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=1593275811&linkCode=as2&tag=realworlsofta-20&linkId=POLMQ5AIU4TZM3DL">Android Security Internals: An In-Depth Guide to Android's Security Architecture</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=1593275811" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> </td></tr></table>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-19660677.post-17297258110261993892014-12-15T07:07:00.003-08:002014-12-15T07:07:51.962-08:00Adaptive Code via C#: Agile coding with design patterns and SOLID principles Book Review<table style="width: 100%"><tr><td>I have seen a lot of Scrum projects flop and flop hard. There are so many IT shops that look at the little iterative Scrum diagram and think, "well that looks easy enough", and they are off and running. Regretfully they don't understand that Scrum is just a process, and a development process is only as good as the team you've assembled.<br /><br />In real world development project's processes should be tailored for a given project. Allowing you to account for your team's skills and availability, your business's needs, the tools you have available, the environment you are working in, the difficulty of the solution, the working environment - team member locations, greenfield vs. brownfield development, and many more things that are usually not taken into consideration when a project is started.<br /><br />I have seen projects fail for any of the above factors not being handled correctly. I usually see projects fail for multiple reasons. Lack of architecture, managers that have no business managing, business owners who want to over step the boundary that exists between the decisions we need them to make and the technical decisions they need to leave to the technical team, and of course the one this book addresses, inexperienced developers.<br /><br />After a short introduction the author takes us on a tour of Scrum. I really liked that the author stayed grounded in reality during the tour and at the end of it brings us back to the topic he is covering, quality code. The book is broken down into 3 parts. I have listed each along with the chapters they contain.<br /><br /><strong>PART I AN AGILE FOUNDATION</strong><br />CHAPTER 1 Introduction to Scrum<br />CHAPTER 2 Dependencies and layering<br />CHAPTER 3 Interfaces and design patterns<br />CHAPTER 4 Unit testing and refactoring<br /><br /><strong>PART II WRITING SOLID CODE</strong><br />CHAPTER 5 The single responsibility principle<br />CHAPTER 6 The open/closed principle<br />CHAPTER 7 The Liskov substitution principle<br />CHAPTER 8 Interface segregation<br />CHAPTER 9 Dependency injection<br /><br /><strong>PART III ADAPTIVE SAMPLE</strong><br />CHAPTER 10 Adaptive sample: Introduction<br />CHAPTER 11 Adaptive sample: Sprint 1<br />CHAPTER 12 Adaptive sample: Sprint 2<br /><br />Appendix A: Adaptive tools<br />Appendix B: GitHub code samples online<br /><br />Very few developers take the time to learn the coding principles, practices, and patterns found in this book. The author has done the development community a great service by assembling all these topics and one book. Prior to this book you could still learn all these techniques, but you would have to go looking for them in different books and locations on the Internet.<br /><br />There were some books that covered all these topics in the past but they were much more difficult to get through. The author's writing style really helps absorb this material. This book also uses C# so .NET developers should feel right at home. The books I am referring to used Java, C, or C++.<br /><br />Agile coding techniques in this book are not optional. They are a key piece of the puzzle in a shop or on a project that is attempting to run with agile processes.<br /><br />Keep in mind that agile is a state of being, not a process, not a set of development practices, not a way of budgeting, and not an architecture. All those things must be done in a certain way in order to achieve an agile state on a project.<br /><br />Adaptive Code via C#: Agile coding with design patterns and SOLID principles does a great job of showing the developer how to achieve their part of the puzzle that are needed to create an agile environment.<br /><br />Another book that just came out, <a target="_blank" href="http://www.amazon.com/gp/product/0735685355/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0735685355&linkCode=as2&tag=realworlsofta-20&linkId=WG5MUADY6GJYEXSM">Microsoft .NET - Architecting Applications for the Enterprise (2nd Edition)</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0735685355" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />, does an excellent job of showing the architect how to achieve their part of the many pieces of the puzzle that are needed to create an agile environment.<br /><br />Absolutely buy both, but developers should start here, and architects should start with <a target="_blank" href="http://www.amazon.com/gp/product/0735685355/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0735685355&linkCode=as2&tag=realworlsofta-20&linkId=WG5MUADY6GJYEXSM">Microsoft .NET - Architecting Applications for the Enterprise (2nd Edition)</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0735685355" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />.<br /><br />There are very few books that assemble and present the amount of important material as this one. It is an absolute must read for every .NET software architect and developer. </td><td style="text-align: center"><a target="_blank" href="http://www.amazon.com/gp/product/0735683204/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0735683204&linkCode=as2&tag=realworlsofta-20&linkId=UADSN3AMQZ5OHGTE"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=0735683204&Format=_SL110_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=realworlsofta-20" ></a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0735683204" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <br /><a target="_blank" href="http://www.amazon.com/gp/product/0735683204/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0735683204&linkCode=as2&tag=realworlsofta-20&linkId=OD773SZDOODSEQR6">Adaptive Code via C#: Agile coding with design patterns and SOLID principles</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0735683204" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> </td></tr><tr><td colspan="2" style="text-align: center"><a target="_blank" href="http://www.amazon.com/gp/product/0735683204/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0735683204&linkCode=as2&tag=realworlsofta-20&linkId=UADSN3AMQZ5OHGTE"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=0735683204&Format=_SL110_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=realworlsofta-20" ></a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0735683204" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <br /><a target="_blank" href="http://www.amazon.com/gp/product/0735683204/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0735683204&linkCode=as2&tag=realworlsofta-20&linkId=OD773SZDOODSEQR6">Adaptive Code via C#: Agile coding with design patterns and SOLID principles</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0735683204" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> </td></tr></table>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-19660677.post-46937198531663727902014-12-08T15:45:00.003-08:002014-12-09T05:17:36.335-08:00Microsoft .NET - Architecting Applications for the Enterprise (2nd Edition) Book Review<table style="width: 100%"><tr><td>Below is my review of the first edition of this book. I have included it in its entirety because it is rather short. <blockquote><em>This book does a great job of putting architecture into a view that .NET developers and architects can relate to.<br /><br />The book covers design principles and patterns, and then relates them to each layer of a traditional layered system. It includes business, services, data access, and presentation layers. The authors include several different patterns for each layer and discuss the pros and cons of each.<br /><br />The book focuses on the technical aspects of .NET architecture. It does not cover the soft skills needed to be an architect, or cover the customer facing skills needed to communicate with the business stakeholders. You won't find much on process either, just an overview. These missing topics have not taken away from the book, they have made it a stronger book. There are plenty of resources on how to execute the soft skills and architecture process. This book concentrates on how to communicate with the development team through solid design and well known patterns and principles.<br /><br />This is a must read for all architects, no matter what your skill set is.<br /><br />A .NET developer looking to move into architecture should make this book their first stop on a long journey. This will definitely get you off to a very strong start.<br /><br />This book will not leave my side... until the 2nd edition… </em></blockquote>Now that the second edition is here, I'm not quite sure the last sentence of that review is true anymore. There is still some information that is in the first edition of the book, which has been replaced in this version of the book, that I would still like to have handy. That is not a bad thing, but I consider this version of the book volume two rather than an edition two.<br /><br />In chapter 9 Implementing Domain Model the authors say "Most .NET developers have grown up following the guidelines of the Table Module Pattern". In my experience most .NET developers do that, but they still do not know that. I have referred developers to the first version of this book repeatedly because it does a great job of describing the Table Module Pattern.<br /><br />The first edition also does a great job of explaining the Transaction Script, Active Record, Remote Façade, Data Transfer Object, Adapter, Service Layer, Model View Controller, Model View Presenter, and the Presentation Model Pattern. A lot of these patterns are still valid patterns to use in simple applications.<br /><br />The first edition of the book also covers Service Oriented Architecture and UML. The UML section isn't that great though, so it is not missed.<br /><br />The second edition of the book touches on many of the patterns and topics above but in a different context. The authors group the patterns above, and the relational models they work with, into the Data-centric age- late 1970's to the early 2000s. They say the task-based age, using domain-driven design, started in the early 2000s and has continued until present day. This edition of the book brings us up to speed on what the software architect is doing in the .NET world today using domain-driven design.<br /><br />I have pasted the table of contents from each edition to show you how different they are.<br /><br />The First Edition -<br /><br />Part I Principles<br />-- Architects and Architecture Today<br />-- UML Essentials<br />-- Design Principles and Patterns<br /><br />Part II Design of the System<br />-- The Business Layer<br />-- The Service Layer<br />-- The Data Access Layer<br />-- The Presentation Layer<br />-- Final Thoughts<br />-- Appendix: The Northwind Starter Kit<br /><br />The Second Edition-<br /><br />PART I FOUNDATION <br />-- Architects and architecture today<br />-- Designing for success<br />-- Principles of software design<br />-- Writing software of quality<br /><br />PART II DEVISING THE ARCHITECTURE<br />-- Discovering the domain architecture<br />-- The presentation layer<br />-- The mythical business layer<br /><br />PART III SUPPORTING ARCHITECTURES<br />-- Introducing Domain Model<br />-- Implementing Domain Model<br />-- Introducing CQRS<br />-- Implementing CQRS<br />-- Introducing event sourcing<br />-- Implementing event sourcing <br /><br />PART IV INFRASTRUCTURE<br />-- The persistence layer<br /><br />Like the first edition of the book, this one also focuses on the technical aspects of .NET architecture. It does not cover the soft skills needed to be an architect, or cover the customer facing skills needed to communicate with the business stakeholders, although domain driven design (DDD)increases the quality of communication with the business. You won't find much on process either, just an overview.<br /><br />Like the first version, these missing topics have not taken away from the book, they have made it a stronger book. As I said above there are plenty of resources on how to execute the soft skills and architecture process. This book concentrates on how to communicate with the development team through solid design and well known patterns and principles.<br /><br />The bottom line is this book summarizes what software architecture evolved into after how it was presented in the first edition of this book. However that does not mean, the techniques in this book are good for every project. DDD is not easy and can add too much complexity to simple projects to make it worth the effort. I would say on more complex decent size projects the techniques are a must do to enable all those Scrum projects out there to actually be agile.<br /><br />Having 15 minute meetings every morning while passing around a ball, pretending to force deliverables executing two week iterations, and eliminating upfront thought does not make your project agile. Your team must have agile design and coding skills, and your architecture absolutely must be agile. There is also a lot of things that must happen at an enterprise level on the business side in order to have an agile environment, but that is beyond the scope of this book.<br /><br />The book comes with downloadable samples which really help when covering the patterns that are instanced throughout the book. Although this book does a great job of showing the development level details involved with putting an agile architecture in place I would also highly recommend .NET software architects and developers also read <a target="_blank" href="http://www.amazon.com/gp/product/0735683204/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0735683204&linkCode=as2&tag=realworlsofta-20&linkId=WXQPAF54SNFITFTQ">Adaptive Code via C#: Agile coding with design patterns and SOLID principles</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0735683204" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />. It covers agile development practices that are an absolute must on an agile software development project.<br /><br />This book does a great job of explaining all the material it covers. The topics are explained in detail and in a way that makes them easy to understand. Every software architect, enterprise architect, project manager, CIO, developer, and tester should read this book. Even though most of these roles won't be doing the architecture it is still necessary for them to understand what the architect is doing that uses the patterns and practices in this book.<br /><br />Keep in mind that agile is a state of being, not a process, a set of development practices, a way of budgeting, or an architecture. All those things must be done in a certain way in order to achieve agility on a project. This book does an excellent job of showing the architect how to achieve their part of the many pieces of the puzzle that are needed to create an agile environment. <a target="_blank" href="http://www.amazon.com/gp/product/0735683204/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0735683204&linkCode=as2&tag=realworlsofta-20&linkId=WXQPAF54SNFITFTQ">Adaptive Code via C#: Agile coding with design patterns and SOLID principles</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0735683204" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> does a great job of showing the developer how to achieve their part of the puzzle that are needed to create an agile environment. Absolutely buy both, but architects should start here, and developers should start with <a target="_blank" href="http://www.amazon.com/gp/product/0735683204/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0735683204&linkCode=as2&tag=realworlsofta-20&linkId=WXQPAF54SNFITFTQ">Adaptive Code via C#: Agile coding with design patterns and SOLID principles</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0735683204" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />. </td><td style="text-align: center"><a target="_blank" href="http://www.amazon.com/gp/product/0735685355/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0735685355&linkCode=as2&tag=realworlsofta-20&linkId=3MGHHBOXNY4BZXWZ"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=0735685355&Format=_SL110_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=realworlsofta-20" ></a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0735685355" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <br /><a target="_blank" href="http://www.amazon.com/gp/product/0735685355/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0735685355&linkCode=as2&tag=realworlsofta-20&linkId=3MGHHBOXNY4BZXWZ">Microsoft .NET - Architecting Applications for the Enterprise (2nd Edition)</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0735685355" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> </td></tr><tr><td colspan="2" style="text-align: center"><a target="_blank" href="http://www.amazon.com/gp/product/0735685355/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0735685355&linkCode=as2&tag=realworlsofta-20&linkId=3MGHHBOXNY4BZXWZ"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=0735685355&Format=_SL110_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=realworlsofta-20" ></a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0735685355" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <br /><a target="_blank" href="http://www.amazon.com/gp/product/0735685355/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0735685355&linkCode=as2&tag=realworlsofta-20&linkId=3MGHHBOXNY4BZXWZ">Microsoft .NET - Architecting Applications for the Enterprise (2nd Edition)</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0735685355" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> </td></tr></table>Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-19660677.post-56125499904236776732014-10-30T08:31:00.000-07:002014-10-30T08:31:32.141-07:00App Accomplished: Strategies for App Development Success Book Review<table style="width: 100%"><tr><td>The process of getting a successful mobile application deployed can be complex and daunting. Architecting, designing and developing natural user interfaces for touch and gesture on mobile devices is not the same as web and desktop UI design and development. Mobile devices are used in different contexts, and bring different personas to the table. Having web and desktop architecture, development, and UI design experience does not make you a qualified mobile architect, developer, or UI designer.<br /><br />Although it was much worse back in the Dot Com Boom days, I still see publication and commercial print designers trying to design web sites the way they design a magazine. A lot of them finally figured out web design is different, and we are now dealing with getting them to realize web and desktop UI design experience does not make you a qualified mobile UI designer.<br /><br />The same was true back in the Dot Com Boom days for developers and architects. Mainframe developers and VB6 developers carried over skills they needed to leave behind. Not all of them, but developing client server applications was different than building web applications. For the past decade or so, a ton of people have jumped on to the web development money cow, now they are jumping ship to the next money cow, mobile apps.<br /><br />To make money in the app stores, or as part of an enterprise effort, you need to know what you are doing. Regretfully, all we know, is what we have done. Luckily books like this come out and help us avoid a lot of the learning by trial and error. I have listed the chapters of the book below to give you a high level view of what is covered.<br /><br />1. What Could Possibly Go Wrong?<br />2. The App Development Life Cycle<br />3. Prototyping and Wireframing Your App<br />4. Determining Your App’s Components<br />5. Finding the Right Tools<br />6. Skill Gap Analysis<br />7. Finding a Developer<br />8. Interviewing and Selecting a Developer<br />9. Managing to Milestones<br />10. Understanding What You’re Getting<br />11. Pulling the Plug Early<br />12. Communicating Using Bugs<br />13. Testing<br />14. Submission and Beyond<br /><br />The author won me over with his definition of a failed project. He summarized them in the four bullets below.<br />1. The app failed to ship (that is, didn’t become available to users).<br />2. The app failed to work (that is, didn’t work as intended for a noticeable percentage of intended users).<br />3. The project cost significantly more money than planned (more than 10% or 20% over budgeted funding).<br />4. The project took significantly more time than planned (more than 10% or 20% over budgeted time).<br /><br />I have witnessed some software projects succeed, some crash and burn, and the rest get close enough to success that the team can sell it as a success. Sometimes the later takes a heck of a sales job. I would say in my book 80% of those sold as successes failed. They either came in well over budget, well beyond their projected delivery date, or delivered such buggy software that the maintenance effort was as big as the development effort.<br /><br />I have seen teams only meet #1 in the author's list above, delivering an app so buggy it should not have been used. Success to the team simply meant they considered the project over for themselves, and they passed the headache on to support. You will find the members of those project teams run as fast as they can to the next project, instead of doing a retrospective study. After several months of releases to the app stores, the maintenance team got the major bugs out of the app.<br /><br />Each chapter of the book covers a ton of topics. For example chapter 4 covers Devices, Native apps, Web apps, Hybrid apps, Third-Party Frameworks, Analytics, Video and Audio, Peripherals, Accessibility, Custom or Complex Animations, Conditional Formatting, Localization, User Preferences, Data Storage, Servers, Syncing, Push Notifications, and Background Tasks.<br /><br />Chapter 6 covers Programming, Testing and Quality Assurance, Server Support and Troubleshooting, User Experience Design, Graphic Design, Sound Design and Music, Copywriting, Marketing, and Games.<br /><br />Covering so many topics does not allow for a deep discussion of each one. Instead the author introduces the topic and provides enough information that you understand the topic well enough to continue learning more about it. There is also a lot of cohesion in the chapter's topics, which helps to provide a context for the topics as a whole.<br /><br />The one thing I had a little trouble with is that in certain places in the book the author gets into a mode of "That having been said", and then saying it is ok to do the opposite of what he recommends. That is fine, but it drags out those sections with info that is repeated over and over. At least that is the way it felt.<br /><br />Prototyping and Wireframing Your App was where this came through pretty hard. In this section he also seemed to get a little simple for the reading audience by covering in detail how to cut and paste images into Keynote from OmniGraffle. I am not going to ding the book for this, because I feel it is just a writing style. I have learned over the years there are a lot of people who like this style of writing.<br /><br />One of my favorite parts of the book are the sidebar case studies. Here is a partial list of them- API documentation, app development company outsourcing, Auto Layout UI code, cookie refreshing, design changes, Groovy and Grails languages, miscommunication with developer, missing source code, multiple bug reports, number comparison bug, optimization updates, outsourcing developers, plagiarism detection, spaghetti code, and vague requirements.<br /><br />The case studies really help tie the topics being covered in the chapter to the real world. They are also lessons learned the hard way. By reading them, you gain the experience of having made the mistake yourself, without actually having to make the mistake. You just reap the lesson learned.<br /><br />Over all I highly recommend this book to anyone getting into the mobile application world. The book is good for getting a sweeping view of the mobile world in its current state. <br /><br /><br /></td><td style="text-align: center"><a target="_blank" href="http://www.amazon.com/gp/product/0321961781/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0321961781&linkCode=as2&tag=realworlsofta-20&linkId=EJSRLGI45ODIURTO"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=0321961781&Format=_SL110_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=realworlsofta-20" ></a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0321961781" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <br /><a target="_blank" href="http://www.amazon.com/gp/product/0321961781/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0321961781&linkCode=as2&tag=realworlsofta-20&linkId=EJSRLGI45ODIURTO">App Accomplished: Strategies for App Development Success</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0321961781" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> </td></tr><tr><td colspan="2" style="text-align: center"><a target="_blank" href="http://www.amazon.com/gp/product/0321961781/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0321961781&linkCode=as2&tag=realworlsofta-20&linkId=EJSRLGI45ODIURTO"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=0321961781&Format=_SL110_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=realworlsofta-20" ></a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0321961781" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <br /><a target="_blank" href="http://www.amazon.com/gp/product/0321961781/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0321961781&linkCode=as2&tag=realworlsofta-20&linkId=EJSRLGI45ODIURTO">App Accomplished: Strategies for App Development Success</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0321961781" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /><br /><br /></td></tr></table>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-19660677.post-24531537094530827972014-10-30T07:48:00.001-07:002014-10-30T07:48:14.264-07:00Android Security Essentials LiveLessons (Video Training) ReviewI unintentionally watched all three hours of this video series in one sitting. The presenter hooked me and before I knew it, it was three hours later. It is a very fast paced tour of the security issues that can arise when using the Android platform. The tour is built around the Open Web Application Security Project (OWASP) top 10 Mobile Security Risks as a guideline.<br /><br />The Open Web Application Security Project (OWASP) top 10 Mobile Security Risks are -<br /><br />M1: Weak Server Side Controls<br />M2: Insecure Data Storage<br />M3: Insufficient Transport Layer Protection<br />M4: Unintended Data Leakage<br />M5: Poor Authorization and Authentication<br />M6: Broken Cryptography<br />M7: Client Side Injection<br />M8: Security Decisions Via Untrusted Inputs<br />M9: Improper Session Handling<br />M10: Lack of Binary Protections<br /><br />It seems like every security consulting firm engagement I hear about lately finds one or two things that in some other context/environment would make them dangerous, tells you to fix them, and recommends you review the OWASP top ten lists. They get their check and say see you in 6 months.<br /><br />I have seen companies blindly follow the directions given by a compliance/security audit that were a total waste of a lot of money on completely unwarranted requests. Everyone involved with approving and allowing them to be done should have been assessed for competency. <br /><br />This type of thing happens a lot as technologies change. Web and mobile applications are not the same thing. To think you can simply hop from one to the other is nuts, and no, using HTML5 everywhere does not change that. This happens in more areas than just security, but with regards to security, although the high level types of attacks seem similar, the details of how they are carried out and what you need to do to protect your systems are not.<br /><br />Luckily this video series drills in on the details of Android attacks. You won't walk away from this series a security expert, but you will walk away with an appreciation for how far hackers will go to get your data. You will also have a solid baseline understanding of the entire spectrum of the Open Web Application Security Project (OWASP) top 10 Mobile Security Risks, how they can be used to secure your android applications, and how hackers are going to attack your applications.<br /><br />The presenter is engaging and easy to follow, there are a ton of demos, and all the material is very interesting. I would recommend this video series to anyone involved with an Android development project, but if you are a developer and you want to understand the details of what the presenter is talking about, you should have Android development experience. I say anyone can watch it, because even if you don't understand all the technical mumbo jumbo, you will understand how serious security should be taken, and what the end result will be if you don't.<br /><br />Below is the description from the products web page. I simply pasted it below because I felt it was very accurate and it explains each lesson clearly.<br /><br /><strong>You can check out previews and buy the series <a target="_blank" href="http://www.informit.com/store/android-security-essentials-livelessons-video-training-9780133829044">here</a>.</strong><br /><br />Android applications make use of advanced hardware and software, as well as local and server data, exposed through the platform to bring innovation and value to consumers. To protect that value, the platform must offer an application environment that ensures the security of users, data, applications, the device, and the network. Securing an open platform requires a robust security architecture and rigorous security programs, as well as developers who are aware of the security issues that may come up.<br /><br />Android Security Essentials LiveLessons alerts developers to the security issues that can arise when using the Android platform and guides them though solutions. Godfrey Nolan covers best practices for Android security by examining common security scenarios. Each lesson begins by presenting the concept behind the security problem at hand, with snippets of code introduced as the problem is explored. This is then followed by examination of code or demonstration of tools showing you how to implement the concepts presented.<br /><br /><strong>Lesson 1: Android Security Basics</strong><br />This lesson explains the problems with Android from a security perspective. We dive right in and show how to reverse engineer an Android APK to view its source as well as backup an APK’s data to see what runtime customer information is exposed. The lesson also introduces the OWASP Mobile top 10 risks from the Open Web Application Security Project which we cover detail in each lesson.<br /><br /><strong>Lesson 2: Dealing with Insecure Data</strong><br />Lesson 2 walks you through where runtime data is stored on the Android device, how to use Android file permissions to securely write data to an SD-card and also looks at how to write securely to a SQLite database.<br /><br /><strong>Lesson 3: Weak Server Side Controls</strong><br />This lesson deals with storing and securing data stored on backend web servers or in the cloud. You learn what the implications are of using remote servers for storing application data as well as how to secure the data.<br /><br /><strong>Lesson 4: Insufficient Transport Layer Protection</strong><br />This lesson builds on what we learned in Lesson 3. You learn how to perform a man-in-the-middle attack to see how insecure data is transmitted and how SSL can secure the traffic.<br /><br /><strong>Lesson 5: Client Side Injection</strong><br />Many Android apps are not 100% native and contain one or more HTML pages as webviews. Learn how to secure these hybrid apps by understanding how cross-site scripting and SQL injection are used to attack your web server.<br /><br /><strong>Lesson 6: Poor Authorization</strong><br />This lesson explains what the options are for logging in to an Android app, how they can be compromised and best practices for user authorization.<br /><br /><strong>Lesson 7: Improper Session Handling</strong><br />Building on Lesson 6, this lesson explains why mobile sessions are different from web sessions. Learn how to implement mobile sessions securely as well as use OAuth to log in to social media websites.<br /><br /><strong>Lesson 8: Security Decisions via Untrusted Inputs</strong><br />Learn how the Android framework manages communication between Android apps and how that can be exploited. Understand the principle of minimum Android manifest permissions and what permissions should be avoided.<br /><br /><strong>Lesson 9: Side Channel Data Leakage</strong><br />Android apps, probably more than other mobile platform, have a tendency to leak information in log files. In the past, third party libraries from advertising companies have also collected more customer information than they needed. In this lesson learn how to remove all logging for your production app and how to use proxy servers and decompilers to know exactly what your third party apps are collecting.<br /><br /><strong>Lesson 10: Broken Cryptography</strong><br />Learn what types of synchronous and asynchronous encryption can be used in Android apps, why it’s not a good idea to store the keys in the code or on the device, how to store the key using the NDK as well as encryption best practices using asynchronous techniques.<br /><br /><strong>Lesson 11: Sensitive Information Disclosure</strong><br />While Lesson 2 looked at the runtime information that may or may not be exposed, Lesson 11 looks at how developers are exposing information hard coded in the compiled application such as encryption keys and how this potentially exposes more customer information.<br /><br /><strong>Lesson 12: Conclusion</strong><br />In the final lesson we review the OWASP top 10 and use a tool from OWASP called GoatDroid that will help you get a better understanding of how to write more secure Android code.<br /><br /><strong>You can check out previews and buy the series <a target="_blank" href="http://www.informit.com/store/android-security-essentials-livelessons-video-training-9780133829044">here</a>.</strong><br /><br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-19660677.post-1115279571864918202014-09-15T11:16:00.002-07:002014-09-15T11:16:21.077-07:00Agile! The Good, the Hype and the Ugly Book Review<table style="width: 100%"><tr><td>Finally a book from an industry leader that has the guts to write about the real world of Agile software development. If I had to pick one word to describe this book, it would be 'truth'.<br /><br />This book is going to raise the blood pressure of some of the Agilists out there. If you think you may be one of those, do yourself a favor and keep at the forefront of your mind that the author points out all the good in Agile too. He is not telling a one sided story. When reading a strongly opinionated book like this, we tend to only see the things the author is pointing out as our flaws, or failures to understand, which blinds us to the gems we could have really benefited from. I have been guilty of that more than once over the years.<br /><br />I am an old man. I have been a consultant most of my 20 year career, so I have had the privilege of working in a lot of different environments, with a lot of different people. On most of those gigs I have had the responsibility of putting the software development process in place that the project would use.<br /><br />In real world development project's processes should be tailored for a given project. Allowing you to account for your team's skills and availability, your business's needs, the tools you have available, the environment you are working in, the difficulty of the solution, the working environment - team member locations, greenfield vs. brownfield development, and many more things that are usually not taken into consideration when a project is started.<br /><br />For a successful Agile project to actually run in an agile state, the process is the final thing that will help you, not the first. The first things you need are team members with enough experience to create an agile architecture, develop code with agile practices, requirement elicitors that understand how to collect, organize, and prioritize them in a way that harmoniously works with the architecture- including Quality Attributes, and complete support of the business unit, upper IT management/CIO, and customers. The business unit, upper IT management/CIO, and customer are the success-critical stakeholders.<br /><br />To gain complete support of the success-critical stakeholders, you need someone that can configure, implement, and manage a process for the environment the project will be executed in, and communicate all areas of the process to all stakeholders involved. This book is the best place to start if you hope to have anything that remotely resembles success running an Agile process. What about self-organizing teams? Read the book. I have listed the chapters below to give you a very high level of what is covered.<br /><br />1 Overview<br />2 Deconstructing agile texts<br />3 The enemy: Big Upfront Anything<br />4 Agile principles<br />5 Agile roles<br />6 Agile practices: managerial<br />7 Agile practices: technical<br />8 Agile artifacts<br />9 Agile methods<br />10 Dealing with agile teams<br />11 The Ugly, the Hype and the Good: an assessment of the agile approach<br /><br />Chapter 1 is a summary of Agile ideas and introduces the following core characteristics of Agile.<br />--- Values: general assumptions framing the agile view of the world.<br />--- Principles: core agile rules, organizational and technical.<br />--- Roles: responsibilities and privileges of the various actors in an agile process.<br />--- Practices: specific activities practiced by agile teams.<br />--- Artifacts: tools, both virtual and material, that support the practices.<br /><br />Chapters 2 and 3 are awesome. In chapter 2 the author takes a logical look some of the arguments for Agile, that the Agile authors use to sway us to accept the Agile way, and simply applies common sense to them. He shines a light on them allowing them to be seen for what they really are.<br /><br />Chapter 3, "The enemy: Big Upfront Anything" takes a look at plan-based approaches. I have had, and I currently have, a very difficult time reversing the damage Agile has done in this area. Advocating no planning on software projects the Agile community has done permanent damage to some organizations. There are people who have never seen a software process run correctly. They therefore have never seen software delivered that can actually run without a bigger maintenance crew than they had for development. My wife puts more energy into our plans for Sunday afternoons than some of the software projects I have seen put into planning the project.<br /><br />As a Software Process Engineer it has been a real battle keeping people grounded in reality when it comes to Agile. Have you ever sat in meetings of 2 to 40 people, and they were all agreeing on something that you thought sounded completely insane. You think that you must be the crazy one, but in the end it turns out you weren't. When it comes to some of the practices in Agile, I have felt that way, but it was the entire software industry that I thought must be nuts. This book has given me back my sanity!!!!<br /><br />Chapter 4 covers the Agile principles. It takes the original raw principles and breaks them down into organizational and technical principles. In this chapter one of the things the author talks about is having a domain expert available to the team. I can tell you from experience his discussion is right on the money. The person you get that can be made the most available to your team, is the person the domain can afford to not have working full time on domain issues. Meaning they aren't that needed because they really aren't that valuable. Their knowledge is limited and they generally have a personal opinion on how things should work, rather than how they need to work. I have seen teams burnt badly by this single point of contact many, many times.<br /><br />The complete list of Organizational and Technical Principles discussed in the rest of chapter 4 are below:<br />1 Put the customer at the center.<br />2 Let the team self-organize.<br />3 Work at a sustainable pace.<br />4 Develop minimal software:<br /> 4.1 Produce minimal functionality.<br /> 4.2 Produce only the product requested.<br /> 4.3 Develop only code and tests.<br />5 Accept change.<br />6 Develop iteratively:<br /> 6.1 Produce frequent working iterations.<br /> 6.2 Freeze requirements during iterations.<br />7 Treat tests as a key resource:<br /> 7.1 Do not start any new development until all tests pass.<br /> 7.2 Test first.<br />8 Express requirements through scenarios.<br /><br />In the next chapter on Agile Roles, the author introduces manager, product owner, team, members and observers (pigs and chickens), customer, coach in Extreme Programming, and a Scrum Master in Scrum. He thoroughly covers these roles and the good and bad of each. What I would have liked to see is more on the roles eliminated from a normal SDLC.<br /><br />When the agile movement re-cast the roles of the SDLC they did so with small projects as the baseline of their experience. A typical minimal SDLC method includes subject matter experts (those who execute the current workflow activities), a Project Manager, a Business Analyst, a Software Architect, UX specialists, Developers, DBAs, and Testers. A Scrum Team consists of a Product Owner, the Development Team, and a Scrum Master. The typical SDLC method responsibilities for activities, and the skills needed to get them done, went from 8 roles down to 3. If you have a highly skilled team, for small projects that is great, but as the industry is learning the hard way, for bigger projects it just doesn't cut it. Although the author talks about it in some other sections of the book, I would have liked to hear the author's opinion on this.<br /><br />In the next chapter on management practices the author covers Sprint, Daily Meeting, Planning Game, Planning Poker, Onsite Customer, Open Space, Process Miniature, Iteration Planning, Review Meeting, Retrospective, Scrum of Scrums, and Collective Code Ownership.<br /><br />Every topic covered was great but I am only going to discuss one- Open Space. Since I left the electronic engineering field I have not had an office with a door except at my home office. I have sat at tables where all the printers were for the office. The printing noise wasn't bad, but the people standing around talking, waiting for the slow printers, was a problem.<br /><br />At work I am in a cube that is noisy 25% to 75% of a given day. I share it with one of the main application support guys on our team, and he often has a line waiting to see him. While they wait I am an open target for them to kill the wait time talking to me. To help a little bit I turn off my phone's ringer. Company policy is to always answer your phone, but 98% of the calls I get are salesmen calling about a product I needed to research.<br /><br />Another thing about the office is they keep it hot in the winter and hot in the summer. They keep it around 76-78F, but I have seen the temperature at a screaming 82F. I have to keep a fan blowing on me and by the end of every week my eyes are wind burnt and bloodshot. My chair I have at work has me going to the chiropractor. They were going to buy us new chairs, but discovered they were too expensive, and we aren't allowed to bring our own chair in.<br /><br />I work from home on Mondays. My home desk provides me twice the area I have at work. I have the room at a cool 68F. I have a great ergonomic chair. If I get a call I can put it on speaker phone, instead of having to hold it to my ear with my shoulder.<br /><br />On average I would estimate I get 20 - 80% more work done on Mondays than any other day of the week because I have the isolated environment I need to think. To get hold of me people IM, email, or call if needed, but I can queue them until I am done with what I am working on. At the office if you don't answer an email right away they come to your cube and interrupt your thoughts. The author highlights the fact that different people thrive in different environments, and that an open space environment is not a good environment for everyone.<br /><br />The author does another excellent job of pointing out the pros and cons of each topic in chapters 7 and 8. He covers a ton of topics in each chapter.<br /><br />In Chapter 7 he discusses Agile technical practices which include Agile Daily Build and Continuous Integration, Pair Programming, Coding Standards, Refactoring, Test-First, and Test-Driven Development.<br /><br />Chapter 8 covers Agile artifacts. They include Code, Tests, User Stories, Story Points, Velocity, Definition Of Done, Working Space, Product Backlog, Iteration Backlog, Story Card, Task Card, Task and Story Boards, Burndown and Burnup Charts, Impediment, Waste, Technical Debt, Dependency, and Dependency Charts.<br /><br />His discussion of User Stories is right on the money. He does a great job of highlighting the good in them, while also bringing to light their deficiencies. I have seen the exact issues he points out on every Agile project that used them.<br /><br />Chapter 9 is a review of some of the more popular Agile methods. The author takes a look at Lean Software, Kanban, XP, Scrum, and Crystal. I think this is a great chapter if you want a high level introduction to the methods, what the 'Big Idea', as the author puts it, is behind each method, and an honest assessment of each one.<br /><br />Chapter 10 discusses dealing with agile teams. It is very short and deals with two topics. The first topic is "Trust us, agile solves everything", which was the theme of a recently written IBM book author by the IBM agilists. I agree 100% with the author when he says "This is not very good advice to give to managers, who are entitled to more caution from such a venerable company."<br /><br />The second topic the author discusses is the either what or when fallacy. Agile teams will tell you when you can have it, or what you can have, but won't give you both at the same time. The author does a good job of arriving at the conclusion that it is possible to do both, when you can have it, and what it will do at that point in time.<br /><br />The last chapter is where the author lays it all out on the table. He lists the different agile practices under the headings of the bad and the ugly, the hyped, the good, and the brilliant. Do yourself a favor and read the book before turning to this chapter. There are a lot of good reasons presented throughout the book that leads the author to his conclusions.<br /><br />This book is mandatory reading for anyone involved with Agile processes. You are doing yourself and your team a huge disservice if you choose not to read this book. </td><td style="text-align: center"><a target="_blank" href="http://www.amazon.com/gp/product/3319051547/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=3319051547&linkCode=as2&tag=realworlsofta-20&linkId=X53YWBWZG7U2K67D"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=3319051547&Format=_SL110_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=realworlsofta-20" ></a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=3319051547" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <br /><a target="_blank" href="http://www.amazon.com/gp/product/3319051547/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=3319051547&linkCode=as2&tag=realworlsofta-20&linkId=X53YWBWZG7U2K67D">Agile!: The Good, the Hype and the Ugly</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=3319051547" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> </td></tr><tr><td colspan="2" style="text-align: center"><a target="_blank" href="http://www.amazon.com/gp/product/3319051547/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=3319051547&linkCode=as2&tag=realworlsofta-20&linkId=X53YWBWZG7U2K67D"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=3319051547&Format=_SL110_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=realworlsofta-20" ></a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=3319051547" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <br /><a target="_blank" href="http://www.amazon.com/gp/product/3319051547/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=3319051547&linkCode=as2&tag=realworlsofta-20&linkId=X53YWBWZG7U2K67D">Agile!: The Good, the Hype and the Ugly</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=3319051547" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> </td></tr></table>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-19660677.post-90577917616682490752014-08-15T09:36:00.001-07:002014-08-15T09:39:24.580-07:00Introduction to Agile Methods Book Review<table style="width: 100%"><tr><td>At the beginning of the book the authors say they created this book to be used in a classroom setting. I agree that it is a great book for the classroom, but I would also recommend it to anyone who wants to learn about the current Agile methodologies. It does what the title of the book says it does, and it introduces the reader to Agile methods.<br /><br />It starts with a nice introduction to the Agile movement's history and then covers all the traditional topics that fall within the Agile purview. I have listed the chapters below to give you a high level view of the topics covered.<br /><br />Chapter 1. The History and Value of Agile Software Development<br />Chapter 2. Organizational Culture Considerations with Agile<br />Chapter 3. Understanding the Different Types of Agile<br />Chapter 4. Describing the Different Roles<br />Chapter 5. The New Way to Collect and Document Requirements<br />Chapter 6. Grooming and Planning<br />Chapter 7. Testing, Quality, and Integration<br />Chapter 8. Tracking and Reporting<br />Chapter 9. Agile beyond IT<br />Appendix. John Deere Case Study<br /><br />I was initially worried about this book because the very first sentence has a typo, but that wasn't a problem throughout the rest of the book. Just really bad luck.<br /><br />This book is a snapshot of Agile processes and practices as they are taught in the software development world at this time. The Agile processes and practices in this book address small team development. They don't go into large distributed or enterprise level projects that would use Disciplined Agile Delivery (DAD) or Scaled Agile Framework (SAFe).<br /><br />They do hit a very broad range of subjects and cover them in enough detail that you walk away with a level of understanding that would allow you to work with an Agile team.<br /><br />They introduce Extreme Programming ( XP), Scrum, Feature-Driven Development, Dynamic Systems Development Method (DSDM), Lean Software Development, Kanban Method, and Crystal Family in one chapter. In the chapters that follow, they use different parts of the methodologies to explain how to accomplish tasks in an agile way, that are part of a normal software development lifecycle. Some examples are defining roles, eliciting requirements, planning, tracking assets, reporting, and developing.<br /><br />Throughout the book the authors have interviews with leading Agilists. This is a nice touch because this introduces real world experiences.<br /><br />The author's use a fictitious company named Cayman Design to show how some of the topics they cover would be executed. Cayman Design is moving in the Agile direction.<br /><br />For those starting to learn Agile processes and practices this book is the perfect place to start. It is necessary to learn how things should work, before learning how they really work. Meaning being agile is not easy, and there are a lot of books out now based on that fact. They include experienced based on the projects that fail, the few that succeed, and the many that are sold as successes. I would start here though if you are just starting with Agile. Let's make it three times in one paragraph, start here!!<br /><br />In real world development projects processes should be tailored for a given project. Allowing you to account for your team's skills and availability, your business's needs, the tools you have available, the environment you are working in, the difficulty of the solution, the working environment - team member locations, greenfield vs. brownfield development, and many more things that are usually not taken into consideration when a project is started.<br /><br />People leave, laws change, hurricanes happen, people get sick, and so on. The point is your process must be as agile and resilient as the software you create. That means the process must be changeable, extensible, as simple as it can be while still getting the job done, understandable, and the people involved must have the skill level to execute the required tasks.<br /><br />Always being low ceremony does not work. Low ceremony projects are smaller lightweight projects. They produce less documentation and artifacts in general. Low ceremony does not have anything to do with being agile, although many times experienced teams will run projects at the lower ceremony than a less experienced team would be able to. Agile is an enabled state that is only accomplished through experience. It can be learned, but absolutely not by doing less.<br /><br />This book helps the reader understand all the tasks in typical projects so that when you come across a tailored process you will have an understanding of the roles and activities being performed.<br /><br />Bill Gates said, "The first rule of any technology used in a business is that automation applied to an efficient operation will magnify the efficiency. The second is that automation applied to an inefficient operation will magnify the inefficiency."<br /><br />The same can be said about Agile and Lean practices:<br /><br />The first rule of any software process used in development is that Agile and Lean practices applied to an efficient development team will magnify the efficiency. The second is that Agile and Lean practices applied to an inefficient development team will magnify the inefficiency.<br /><br />There are two primary things you need to be part of an environment that uses Agile processes. The first is enough experience to execute your role's activities in a way that enables agility, and the second is an understanding of the Agile processes. This book can give you the later of the two. I highly recommend this book to teachers and to those who want to start learning about the Agile methods.<br /><br /></td><td style="text-align: center"><a target="_blank" href="http://www.amazon.com/gp/product/032192956X/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=032192956X&linkCode=as2&tag=realworlsofta-20&linkId=M7YGWZ7WFEUF2MOT"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=032192956X&Format=_SL110_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=realworlsofta-20" ></a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=032192956X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <br /><a target="_blank" href="http://www.amazon.com/gp/product/032192956X/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=032192956X&linkCode=as2&tag=realworlsofta-20&linkId=M7YGWZ7WFEUF2MOT">Introduction to Agile Methods</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=032192956X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> </td></tr><tr><td colspan="2" style="text-align: center"><a target="_blank" href="http://www.amazon.com/gp/product/032192956X/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=032192956X&linkCode=as2&tag=realworlsofta-20&linkId=M7YGWZ7WFEUF2MOT"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=032192956X&Format=_SL110_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=realworlsofta-20" ></a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=032192956X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <br /><a target="_blank" href="http://www.amazon.com/gp/product/032192956X/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=032192956X&linkCode=as2&tag=realworlsofta-20&linkId=M7YGWZ7WFEUF2MOT">Introduction to Agile Methods</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=032192956X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> </td></tr></table>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-19660677.post-89969368649436922842014-08-08T08:01:00.002-07:002014-08-08T08:04:00.843-07:00Developing Quality Technical Information: A Handbook for Writers and Editors, Third Edition Book Review<table style="width: 100%"><tr><td>As an enterprise and software architect the one thing I hate most about my job is documentation, yet the importance of doing documentation on sizable projects is what I find myself preaching about the most.<br /><br />One reason I understand the importance of documentation is that I came from an electronic engineering background. As an electronic engineer 93% - 97% of my time was consumed doing proof of concepts and documentation. Almost all of that time was documentation.<br /><br />It was just my luck that my boss was an English grammar teacher before moving into engineering. My documents came back very bloody. He used a red pen to mark up my documents. It took me 2 years, and a whole lot of tongue biting, but I started getting papers through him without a red mark. I still remember the first one. I walked outside to where the smokers took their breaks and let out a screaming "YES, Finally!!!"<br /><br />I have been without my grammar teaching boss for over 18 years now, and I am pretty sure if he came across the book reviews I am writing now, he would be sending me bloodied up copies!!! I really needed this book!!<br /><br />Technical documentation is a hard skill set to learn, at least doing good technical documentation is. I have been on Template Zombie projects where teams considered documentation complete when they had filled in enough templates to overwhelm the customer to the point where they would not have time to review 1/10 of what was being written.<br /><br />One project I was on built a documentation generator so it was easier to duplicate documents and only change the title and a few pieces of content. The sad part of that project was they got paid for each document handed in. The criteria for getting paid for use cases were that they had to have something underneath every heading in the document.<br /><br />Documentation should not be something you check off of the project's task list, it should add value to the project or it should not be done. This book will definitely help you make valuable documentation. I have listed the chapters below to give you an idea of what the book covers.<br /><br /><strong>Part 1: Introduction</strong><br />Chapter 1. Technical information continues to evolve<br />Chapter 2. Developing quality technical information<br /> <br /><strong>Part 2: Easy to use</strong><br />Chapter 3. Task orientation<br />Chapter 4. Accuracy<br />Chapter 5. Completeness<br /><br /><strong>Part 3: Easy to understand</strong><br />Chapter 6. Clarity<br />Chapter 7. Concreteness<br />Chapter 8. Style<br /><br /><strong>Part 4: Easy to find</strong><br />Chapter 9. Organization<br />Chapter 10. Retrievability<br />Chapter 11. Visual effectiveness<br /><br /><strong>Part 5: Putting it all together</strong><br />Chapter 12. Applying more than one quality characteristic<br />Chapter 13. Reviewing, testing, and evaluating technical information<br /><br /><strong>Part 6: Appendixes</strong><br />Appendix A. Quality checklist<br />Appendix B. Who checks which characteristics?<br />Glossary<br />Resources and references<br /><br />When I came into the Dot Com Boom I found some software engineering, but most of what I found was the wild west and cowboy coding running rampant. The industry has not changed much since then. We just gave names to the chaotic processes to justify our lack of discipline. I continued my engineering practices and quickly learned how to document software processes and architectures, but convincing others to do it was a different story.<br /><br />The only way I have been able to show it has value is do it myself. After the team sees I am willing to suffer the boredom of documentation they tend to step in and help. That wouldn't happen if we didn't make use of the documentation and they didn't see value in it.<br /><br />It has been years since I have had someone to officially review it. This book really helps keep the important things in mind, and since there is no one else to review it, I can use all the help I can get. Right now one of the things I do to catch issues in my documents is have them spoken back to me using the speech capabilities on my computers. This helps me catch sentence structure issues, and some typos. It doesn't catch using the wrong their/there, insure/ensure, except/accept, and many more like sounding words that I mess up.<br /><br />I use Sparx Enterprise Architect to document systems. Behind every diagram you find the information that explains them. If that information is not simple to understand, and easy to read, the diagram's value falls greatly.<br /><br />Throughout the process you need to write for several different audiences. Your stakeholders are interested in different aspects of the system. Creating a clear view of what each type of stakeholder wants to see is a painful process, but it always pays off.<br /><br />It makes me think about the solution from angles I normally wouldn't. Not only think about them, but diagram and describe them in a way that the solution's diagrams and associated documents can stand on their own. It makes me justify and clarify all the decisions made about the system, before it is in production!<br /><br />Doing documentation is like coding. You start with a shell of what you are building, and you add the details to the different topics with each iteration of your development cycle. Your goal- to make simple, complete, accurate, logical, easy to understand documents. That is exactly what this book will guide you to do.<br /><br />There are tons of examples showing the original text, diagram, or screen shot of a design, and then the revised version. There are two really cool appendices and a nice glossary. The first appendix is a huge checklist for quality characteristic. The second appendix is a big chart showing which roles should be reviewing the different aspects of the document.<br /><br />Over all I found every chapter of this book valuable. As time goes on, the hardest part for me is keeping it all in mind. For that reason, this book will be staying by my side just like each of my current most useful programming books. If you do any documenting of software systems, this is a must read. Every software architect, enterprise architect, CIO, developer, tester, and project manager working on a software project, should have this book in his or her hands. You own to your stakeholders and yourself.<br /><br /> </td><td style="text-align: center"><a target="_blank" href="http://www.amazon.com/gp/product/0133118975/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0133118975&linkCode=as2&tag=realworlsofta-20&linkId=LPGJNF3ZG5UXE3H5"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=0133118975&Format=_SL110_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=realworlsofta-20" ></a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0133118975" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <br /><a target="_blank" href="http://www.amazon.com/gp/product/0133118975/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0133118975&linkCode=as2&tag=realworlsofta-20&linkId=LPGJNF3ZG5UXE3H5">Developing Quality Technical Information: A Handbook for Writers and Editors (3rd Edition)</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0133118975" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> </td></tr><tr><td colspan="2" style="text-align: center"><a target="_blank" href="http://www.amazon.com/gp/product/0133118975/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0133118975&linkCode=as2&tag=realworlsofta-20&linkId=LPGJNF3ZG5UXE3H5"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=0133118975&Format=_SL110_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=realworlsofta-20" ></a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0133118975" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <br /><a target="_blank" href="http://www.amazon.com/gp/product/0133118975/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0133118975&linkCode=as2&tag=realworlsofta-20&linkId=LPGJNF3ZG5UXE3H5">Developing Quality Technical Information: A Handbook for Writers and Editors (3rd Edition)</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0133118975" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> </td></tr></table>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-19660677.post-27189533653959872662014-07-28T07:28:00.001-07:002014-07-28T07:28:44.130-07:00The Incremental Commitment Spiral Model: Principles and Practices for Successful Systems and Software Book Review<table style="width: 100%"><tr><td>Processes are not documented and reused by a set of individuals because they lead to failure. Like design patterns, they are documented and reused because they lead to success.<br /><br />They are all put together by very talented people who have successfully used them to develop software multiple times. For them the process is easy to use and understand. The teams that have not used it have a steep learning curve ahead of them. Just looking at the diagram of a pattern or process, definitely will lead you to failure every time.<br /><br />I have seen Waterfall, Spiral, RUP, OpenUP, and Scrum all fail multiple times each because project managers, architects, developers, CIOs, and IT managers have only gone as far as looking at the diagram of the process they choose to use. They apply practices and principles they already know to the models instead of the ones that go with the models. The principles and practices that are behind the model must be learned and used in order to succeed.<br /><br />I assume this is a trick insanity plays on them. Doing the same thing over and over again expecting a different result. They thought renaming and reordering what they already do was actually changing.<br /><br />This book is required reading if you want to understand the Incremental Commitment Spiral Model (ICSM) and it's related diagrams. If you are not going to read the book, please do not attempt to use the diagram. After a very nice introduction it is broken down into five parts including the afterword. I have list each part and the chapters it includes below.<br /><br /><strong>0. Introduction</strong><br />Part I: The Four ICSM Principles<br />1. The First Principle: Stakeholder Value-Based Guidance<br />2. The Second Principle: Incremental Commitment and Accountability<br />3. The Third Principle: Concurrent Multidiscipline Engineering<br />4. The Fourth Principle: Evidence- and Risk-Based Decisions<br /><br /><strong>Part II: ICSM Life Cycle and Stage I: Incremental Definition</strong><br />5. The ICSM Life Cycle<br />6. Exploration Phase<br />7. Valuation Phase<br />8. Foundations Phase<br /><br /><strong>Part III: Stage II: Incremental Development and Evolution</strong><br />9. Development Phase<br />10. System Production and Operations<br /><br /><strong>Part IV: Applying ICSM to Your Organization</strong><br />11. ICSM Patterns and Common Cases<br />12. ICSM and Your Organization<br />13. Evidence-Based Life-Cycle Management<br />14. Cost and Schedule Evidence Development<br />15. Risk–Opportunity Assessment and Control<br /><br /><strong>Afterword</strong><br />Appendix A. Evidence Evaluation Framework<br />Appendix B. Mapping between ICSM and Other Standards<br />Appendix C. A Value-Based Theory of Systems Engineering<br /><br />Don't make the mistake of looking at this book and saying "oh, it's that old model again", it's not the 1988 spiral model- A Spiral Model of Software Development and Enhancement. The 1988 spiral model began the long process leading to the spiral model in this book, the Incremental Commitment Spiral Model (ICSM).<br /><br />Developing software correctly is easy. The hard part is having all the skills needed to do that. Since most teams do not possess the skills needed to easily execute a software development process, they usually have a hard time. Even those who gave it their best shot learning the practices and principles behind the 1988 model had a hard time succeeding.<br /><br />Within a short time the feedback that reached Dr. Boehm lead him to claim "What we really need are process model generators". I agree 100%. Implementing a development process instance for a given project is the only way to correctly use software development processes. Just as important, if not more important, is the ability to understand what is happening with your project and to change the process as needed. Teams seem to have a much harder time with that. Luckily that is what we got with this book.<br /><br />Software process engineering allows you to account for your team's skills and availability, your businesses needs, the tools you have available, the environment you are working in, the difficulty of the solution, the working environment - team member locations, greenfield vs. brownfield development, and many more things that are usually not taken into consideration at all. Software process engineering not only gives you the instance to work with, it also allows for tailoring the process to meet the needs of the project as circumstances change throughout the project.<br /><br />People leave, laws changes, hurricanes happen (although that didn't stop us- dumb, dumb, dumb), people get sick, and so on. The point is your process must be as agile and resilient as your software. That means the process must be changeable.<br /><br />I have sat in a room watching project managers and business users debate for hours about what to do now that they have discovered the next 3 sprints will take 3-4 weeks and not the 2 weeks they had agreed on.<br /><br />1/2 of them wanted to split functionality (user stories) to meet the 2 week mark and add it back later with 3 more sprints but that would really mean 4 extra sprints because splitting the functionality adds complexity to the programming. Some of them wanted to borrow a few developers, while others just wanted to pretend they didn't know and just start the next 2 weeks after they got done this sprint. No deliverables or tests, just keep going and hope they weren't questioned. All of this is non-transparent nonsense, and is anything but agile.<br /><br />This book is not a software development process. The author's say "The ICSM is not a single, one-size-fits-all process. It is actually a process generator…". The book did not meet my expectation of what that means to me. In order for it to be a process generator, it would need to reference one or more specific process asset repositories which can be configured into an instance of a process.<br /><br />That does not detract from the value of the book, because we already have enough process asset repositories. My perception of the content of the book is that it is material that will help you audit, adjust, and manage a software process. That is needed more in today's industry. The rest of the sentence that begins the paragraph above is consistent with my understanding of the book's content- "… that steers your process in different directions, depending on your particular circumstances."<br /><br />One very cool thing about this book is that the material is available online. The material has been published from Eclipse Process Framework. At least it looks like it to me. There are two sites, <a target="_blank" href="http://greenbay.usc.edu/ICSMBook">The Incremental Commitment Spiral Model (ICSM)</a> and <a target="_blank" href="http://greenbay.usc.edu/IICMSw">The Instructional Incremental Commitment Spiral Model (ICSM) Electronic Process Guide</a>. The Instructional Incremental Commitment Spiral Model (ICSM) Electronic Process Guide is a version of ICSM which is tailored to fit the nature of CSCI577ab Software Engineering Class.<br /><br />The one thing that drove me kind of nuts while reading this book is the very heavy use of acronyms. They probably drove me crazy because they brought back flashbacks of being in the Army and working for the State of PA.<br /><br />The thing I liked most about this book is the honesty found in it. An example is found in the first paragraph of the Preface- "Rumor has it, however, that some people would rather deliver an unsuccessful system so that they can continue being paid to make it successful; rumor also doubts those people will read this book." They also present failure stories for each success story, which really helps to keep the book grounded in reality.<br /><br />All in all I found this book an excellent read. It contains a ton of wisdom gathered over a very long period of time. <br /><br /></td><td style="text-align: center"><a target="_blank" href="http://www.amazon.com/gp/product/0321808223/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0321808223&linkCode=as2&tag=realworlsofta-20&linkId=GCCTYNAHSERJRUT5"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=0321808223&Format=_SL110_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=realworlsofta-20" ></a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0321808223" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <br /><a target="_blank" href="http://www.amazon.com/gp/product/0321808223/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0321808223&linkCode=as2&tag=realworlsofta-20&linkId=GCCTYNAHSERJRUT5">The Incremental Commitment Spiral Model: Principles and Practices for Successful Systems and Software</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0321808223" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> </td></tr><tr><td colspan="2" style="text-align: center"><a target="_blank" href="http://www.amazon.com/gp/product/0321808223/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0321808223&linkCode=as2&tag=realworlsofta-20&linkId=GCCTYNAHSERJRUT5"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=0321808223&Format=_SL110_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=realworlsofta-20" ></a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0321808223" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <br /><a target="_blank" href="http://www.amazon.com/gp/product/0321808223/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0321808223&linkCode=as2&tag=realworlsofta-20&linkId=GCCTYNAHSERJRUT5">The Incremental Commitment Spiral Model: Principles and Practices for Successful Systems and Software</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0321808223" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> </td></tr></table>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-19660677.post-39253668126043728912014-06-24T12:43:00.002-07:002014-06-24T12:43:32.201-07:00Learning Mobile App Development: A Hands-on Guide to Building Apps with iOS and Android Book Review<table style="width: 100%"><tr><td>As an individual I can decide which platform I would like to target with my shiny new application, but when working for a company we have to target both industry leaders at the same time. Although I like a good challenge, I am really glad the mobile world now only consists of iOS and Android.<br /><br />When I first started looking at building consumer applications, Blackberry was still in the picture. My enterprise mobile experience consists of all Microsoft technologies, but that was in a different lifetime using Windows CE, Pocket PC, and Windows Mobile.<br /><br />This book is a great book for looking at how some of the most commonly used functionality compares across the Android and iOS environments. I have listed the table of contents below to give you an idea of what topics are covered.<br /><br /><strong>Part I: Overview of Mobile App Development</strong><br />1. Why Mobile Apps?<br />2. App Design Issues and Considerations<br /><br /><strong>Part II: Developing the Android App</strong><br />3. Using Eclipse for Android Development<br />4. Android Navigation and Interface Design<br />5. Persistent Data in Android<br />6. Lists in Android: Navigation and Information Display<br />7. Maps and Location in Android<br />8. Access to Hardware and Sensors in Android<br /><br /><strong>Part III: Developing the iOS App</strong><br />9. Using Xcode for iOS Development<br />10. iOS Navigation and Interface Design<br />11. Persistent Data in iOS<br />12. Tables in iOS: Navigation and Information Display<br />13. Maps and Location in iOS<br />14. Access to Hardware and Sensors in iOS<br /><br /><strong>Part IV: Business Issues</strong><br />15. Monetizing Apps<br />16. Publishing Apps<br /><br /><strong>Part V: Appendixes</strong><br />A. Installing Eclipse and Setup for Android Development<br />B. Installing Xcode and Registering Physical Devices<br />C. Introduction to Objective-C<br /><br />The authors tell us in the beginning of the book that it "is not intended to be a comprehensive work on the subject. The book assumes programming knowledge. At a minimum you should have taken at least one college-level course in the Java or C programming languages." and "Experience with an IDE is a plus." I completely agree.<br /><br />I think that you should also have some experience with Objective-C. Although the authors provide an introduction to Objective-C, I am glad I had prior experience. I also think you should have a decent grasp of Android concepts like Activities, Layouts, Fragments, and Intents. Neither are needed, while at the same time having both helped me.<br /><br />What about Swift's impact? Swift put a big crinkle into a lot of people's learning plans. I know that as soon as it was announced a lot of people dropped out of training they had planned. While getting started in Objective-C may not 'seem' to make sense, continuing to learn the iOS libraries used to accomplish framework tasks does.<br /><br />Also, I don't think it is going to be possible for an iOS developer to not know their Objective-C and C. In other words, I still think it makes sense to continue with your Objective-C learning plans. I have no plans to stop learning either one anytime soon. So the short answer is, that in my opinion, this book is as relevant now as it was the day before the Swift announcement was made.<br /><br />The authors make the chapter's code samples available for download. I ran into several issues getting some of the projects to compile and run in both the Android and the iOS code. I got most of them running in a relatively short period of time. I didn't have the time, or the need, to get the rest of them working.<br /><br />The quality of the book itself is great. It is printed on high quality paper, and it is in color. Color always makes reading the code easier and is much nicer when looking at screenshots of the apps, Eclipse, Xcode, or dialogs.<br /><br />My favorite part of the book is being able to flip back and forth between the iOS and Android topics to see how each platform handles the implementation of the topic's functionality. The book has really come in handy with the current project I've just started. We are developing an Android and iOS client which will run against a RESTful service implemented with Microsoft's ASP.NET Web API framework.<br /><br />All in all I think this is a great read for those that need to develop for both Android and iOS.<br /><br /></td><td style="text-align: center"><a target="_blank" href="http://www.amazon.com/gp/product/032194786X/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=032194786X&linkCode=as2&tag=realworlsofta-20&linkId=7N6EVIEKKZXCEQFE"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=032194786X&Format=_SL110_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=realworlsofta-20" ></a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=032194786X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /><br /><a target="_blank" href="http://www.amazon.com/gp/product/032194786X/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=032194786X&linkCode=as2&tag=realworlsofta-20&linkId=7N6EVIEKKZXCEQFE">Learning Mobile App Development: A Hands-on Guide to Building Apps with iOS and Android</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=032194786X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> </td></tr><tr><td colspan="2" style="text-align: center"><a target="_blank" href="http://www.amazon.com/gp/product/032194786X/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=032194786X&linkCode=as2&tag=realworlsofta-20&linkId=7N6EVIEKKZXCEQFE"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=032194786X&Format=_SL110_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=realworlsofta-20" ></a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=032194786X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /><br /><a target="_blank" href="http://www.amazon.com/gp/product/032194786X/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=032194786X&linkCode=as2&tag=realworlsofta-20&linkId=7N6EVIEKKZXCEQFE">Learning Mobile App Development: A Hands-on Guide to Building Apps with iOS and Android</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=032194786X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> </td></tr></table>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-19660677.post-64933268686750489432014-06-15T21:22:00.000-07:002014-06-15T21:22:10.187-07:00Android for Programmers and Android How to Program (2nd Editions) Book Reviews<table style="width: 100%"><tr><td>This review is for two books. It is for <a target="_blank" href="http://www.amazon.com/gp/product/0133764036/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0133764036&linkCode=as2&tag=realworlsofta-20">Android: How to Program (2nd Edition)</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0133764036" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> and <a target="_blank" href="http://www.amazon.com/gp/product/0133570924/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0133570924&linkCode=as2&tag=realworlsofta-20">Android for Programmers: An App-Driven Approach (2nd Edition)</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0133570924" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> . Why? Because <a target="_blank" href="http://www.amazon.com/gp/product/0133764036/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0133764036&linkCode=as2&tag=realworlsofta-20">Android: How to Program (2nd Edition)</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0133764036" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> includes the entire <a target="_blank" href="http://www.amazon.com/gp/product/0133570924/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0133570924&linkCode=as2&tag=realworlsofta-20">Android for Programmers: An App-Driven Approach (2nd Edition)</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0133570924" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> book.<br/><br/><a target="_blank" href="http://www.amazon.com/gp/product/0133764036/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0133764036&linkCode=as2&tag=realworlsofta-20">Android: How to Program (2nd Edition)</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0133764036" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> is in black and white and it also includes a Java language overview/reference. This book is great for the programmer coming from another language. Having the Java reference included as the second half of the book comes in really handy. Lately I have spent most of my time in Objective-C building client apps and C# building Web API RESTFul services. Having the Java reference handy was helpful.<br/><br/><a target="_blank" href="http://www.amazon.com/gp/product/0133570924/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0133570924&linkCode=as2&tag=realworlsofta-20">Android for Programmers: An App-Driven Approach (2nd Edition)</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0133570924" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> is the first half of Android: How to Program, 2nd Edition. It is a much nicer read because it is in color. This is the book for the experienced Java developer who wants to get up to speed on Android development.<br/><br/>The perfect book would have been <a target="_blank" href="http://www.amazon.com/gp/product/0133764036/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0133764036&linkCode=as2&tag=realworlsofta-20">Android: How to Program (2nd Edition)</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0133764036" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> in color.<br/><br/>Below is the table of contents for <a target="_blank" href="http://www.amazon.com/gp/product/0133570924/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0133570924&linkCode=as2&tag=realworlsofta-20">Android for Programmers: An App-Driven Approach (2nd Edition)</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0133570924" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> -<br/><br/>1. Introduction to Android<br/>2. Welcome App<br/>3. Tip Calculator App<br/>4. Twitter® Searches App<br/>5. Flag Quiz App<br/>6. Cannon Game App<br/>7. Doodlz App<br/>8. Address Book App<br/>9. Google Play and App Business Issues<br/><br/>Below are the chapters added to the second half of <a target="_blank" href="http://www.amazon.com/gp/product/0133764036/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0133764036&linkCode=as2&tag=realworlsofta-20">Android: How to Program (2nd Edition)</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0133764036" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> -<br/><br/>A. Introduction to Java Applications<br/>B. Introduction to Classes, Objects, Methods and Strings<br/>C. Control Statements<br/>D. Methods: A Deeper Look<br/>E. Arrays and ArrayLists<br/>F. Classes and Objects: A Deeper Look<br/>G. Object-Oriented Programming: Inheritance and Polymorphism<br/>H. Exception Handling: A Deeper Look<br/>I. GUI Components and Event Handling<br/>J. Other Java Topics<br/>K. Operator Precedence Chart<br/>L. Primitive Types<br/><br/>The projects cover a ton of functionality, but the best part about the projects is that the accompanying downloadable code compiles and runs with no tweaking. One thing I thought was weird though, is after going to the trouble to log on to the companion website, you find nothing but the source code there, which you can download without registering. It claims to have "Premium web chapters", but at the time I am writing this review there are none.<br/><br/>The projects section of the book does a great job of covering how to use Eclipse. The authors use the Graphical Layout Editor to build the app's GUI. This is a nice approach for those just starting with Android development. The book mentions Android Studio, but uses Eclipse, which is good. I have played with Android Studio, but it has a way to go before it is ready for primetime.<br/><br/>For the second half of the book I just use jEdit to play with the files. The examples come as *.java files that you can compile and run. I was just using terminal and TextEdit, but the syntax coloring in jEdit and the Console plugin helped make it a more pleasurable experience.<br/><br/>Another thing I liked about the book is that it covers Android 4.4 (KitKat). I have some other Android books I have been reading, but they have not been updated yet. The authors also point to other sites as resources to learn more about a topic, or to point out locations you will be able to find the latest info available on Android as updates are made to the OS.<br/><br/>Chapter 9, the last chapter before the Java overview section does a great job of introducing Google Play and pointing you to the information on the Android developer site. At the rate things change, that makes more sense than putting it in the book and the information being out of date in 2 months.<br/><br/>The book has an outstanding index. That may seem like a dumb thing to point out, but when you have a book with a crappy one, you learn to appreciate the good ones.<br/><br/>Like I said above <a target="_blank" href="http://www.amazon.com/gp/product/0133570924/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0133570924&linkCode=as2&tag=realworlsofta-20">Android for Programmers: An App-Driven Approach (2nd Edition)</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0133570924" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> is the book for the experienced Java developer who wants to get up to speed on Android development. <a target="_blank" href="http://www.amazon.com/gp/product/0133764036/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0133764036&linkCode=as2&tag=realworlsofta-20">Android: How to Program (2nd Edition)</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0133764036" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> is great for the programmer coming from another language. Having the Java reference included as the second half of the book comes in really handy.<br/><br/>Saying <a target="_blank" href="http://www.amazon.com/gp/product/0133764036/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0133764036&linkCode=as2&tag=realworlsofta-20">Android: How to Program (2nd Edition)</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0133764036" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> is a great book, is saying they both are great books. I highly recommend one or the other. </td><td style="text-align: center"><a target="_blank" href="http://www.amazon.com/gp/product/0133764036/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0133764036&linkCode=as2&tag=realworlsofta-20"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=0133764036&Format=_SL110_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=realworlsofta-20" ></a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0133764036" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /><br/><a target="_blank" href="http://www.amazon.com/gp/product/0133764036/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0133764036&linkCode=as2&tag=realworlsofta-20">Android How to Program (2nd Edition)</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0133764036" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <br/><br/><br/><br/><br/><br/><br/><br/><br/><a target="_blank" href="http://www.amazon.com/gp/product/0133570924/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0133570924&linkCode=as2&tag=realworlsofta-20"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=0133570924&Format=_SL110_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=realworlsofta-20" ></a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0133570924" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /><br/><a target="_blank" href="http://www.amazon.com/gp/product/0133570924/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0133570924&linkCode=as2&tag=realworlsofta-20">Android for Programmers: An App-Driven Approach (2nd Edition)</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0133570924" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> </td></tr><tr><td colspan="2" style="text-align: center"><br/><br/><a target="_blank" href="http://www.amazon.com/gp/product/0133764036/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0133764036&linkCode=as2&tag=realworlsofta-20"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=0133764036&Format=_SL110_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=realworlsofta-20" ></a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0133764036" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /><br/><a target="_blank" href="http://www.amazon.com/gp/product/0133764036/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0133764036&linkCode=as2&tag=realworlsofta-20">Android How to Program (2nd Edition)</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0133764036" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <br/><br/><br/><a target="_blank" href="http://www.amazon.com/gp/product/0133570924/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0133570924&linkCode=as2&tag=realworlsofta-20"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=0133570924&Format=_SL110_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=realworlsofta-20" ></a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0133570924" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /><br/><a target="_blank" href="http://www.amazon.com/gp/product/0133570924/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0133570924&linkCode=as2&tag=realworlsofta-20">Android for Programmers: An App-Driven Approach (2nd Edition)</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0133570924" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> </td></tr></table>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-19660677.post-85642814326331811942014-06-10T19:21:00.000-07:002014-06-16T14:21:53.455-07:00Essential Mobile Interaction Design: Perfecting Interface Design in Mobile Apps Book Review<table style="width: 100%"><tr><td>Designing and developing natural user interfaces for touch and gesture on mobile devices is not the same as web and desktop UI design and development. Mobile devices are used in different contexts, and bring different personas to the table. Having web and desktop UI design experience does not make you a qualified mobile UI designer.<br /><br />Although it was much worse back in the Dot Com Boom days, I still see publication and commercial print designers trying to design web sites the way they design a magazine. A lot of them finally figured out web design is different, and we are now dealing with getting them to realize web and desktop UI design experience does not make you a qualified mobile UI designer.<br /><br />This book is a great place for them to start. It is the book for the beginner to get started with mobile interaction design. It is perfect for designers, developers, architects, project managers, and testers migrating from web and desktop application development to start with mobile interaction design.<br /><br />It starts with an introduction to mobile interaction and sets up the context that the book's topics live in. The authors start at the very beginning of the mobile timeline and explain how we got to where we are today.<br /><br />Chapter 1. A Look at Mobile and Its Main Players<br />Chapter 2. Design for Humans, by Humans<br />Chapter 3. Dynamic Differences in Mobile Design<br />Chapter 4. First Sketches of an App<br />Chapter 5. Finding the Right Design Flow<br />Chapter 6. Designing for Visual Appeal<br />Chapter 7. Working with Programmers<br />Chapter 8. Making Apps Usable by All<br />Chapter 9. Designing for Simplicity<br />Chapter 10. Gaining Valuable Feedback<br />Chapter 11. Refreshing a Design<br />Appendix A. Standout Apps<br />Appendix B. Apps for Designers<br />Appendix C. Artwork Requirements for Android and iOS<br /><br />This book does a great job of pointing out the basics. Some times they use sidebars like this one- "When building applications, enable operating system features such as text-to-voice, color blindness controls, and enhanced zoom modes to see how your on-screen interactions work with these features…"<br /><br />Sometimes I felt they got a little too basic. Like with this sidebar for example- "Don’t confuse the term “interface chrome” with the Google Chrome browser. Interface chrome is somewhat common computer software design slang used to describe buttons of an interface.…"<br /><br />I actually laughed at that one because I thought it was just a joke. The second half of the tip clued me in. It wasn't a joke.<br /><br />One of the coolest things this book did for me was push me to try Balsamiq Mockups. I have seen the tool used before, but I have been using SketchFlow and Storyboards in PowerPoint.<br /><br />When I am in an environment where users believe a prototype and production release are the same thing, I go to extra lengths to delineate the two. Tools that present mockups that look like they have been sketched really help to get the point across.<br /><br />Realistic mockups send the message that the app has screens, buttons, and if the screen changes when you clicked on the buttons, it must be done and ready to go. Users don't understand that they are just screens for vetting the UI and not working application screens.<br /><br />The authors have a way of bringing to light things that are subtle and sometimes not so obvious. An example of that would be sandboxes and the way your applications now run within them. When designing mobile applications this needs to be taken into account.<br /><br />The authors have created a website and have a page dedicated to each chapter of the book. Each page contains all the resources that they point out throughout the chapter. It is a very convenient way to get to the resources that they talk about.<br /><br />If you are expecting a book with a ton of screenshots explaining what was wrong with each one, and then providing a solution to the problem, look elsewhere. It does have a ton of examples, but this book covers topics in a way that makes you think about them.<br /><br />The last thing I will say about the book is that it is current. In the brutal world of mobile that says a lot about the book. I don't know how many book I have received on the day it was published only throw it aside because it is no longer current.<br /><br />I highly recommend this book for every role on a mobile project. Everyone should understand mobile integration design at the level presented in the book.<br /><br /></td><td style="text-align: center"><a href="http://www.amazon.com/gp/product/0321961579/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0321961579&linkCode=as2&tag=realworlsofta-20" target="_blank"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=0321961579&Format=_SL110_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=realworlsofta-20"></a><img alt="" border="0" height="1" src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0321961579" style="border: none !important; margin: 0px !important;" width="1" /> <br /><a href="http://www.amazon.com/gp/product/0321961579/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0321961579&linkCode=as2&tag=realworlsofta-20" target="_blank">Essential Mobile Interaction Design: Perfecting Interface Design in Mobile Apps</a><img alt="" border="0" height="1" src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0321961579" style="border: none !important; margin: 0px !important;" width="1" /> </td></tr><tr><td colspan="2" style="text-align: center"><a href="http://www.amazon.com/gp/product/0321961579/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0321961579&linkCode=as2&tag=realworlsofta-20" target="_blank"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=0321961579&Format=_SL110_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=realworlsofta-20"></a><img alt="" border="0" height="1" src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0321961579" style="border: none !important; margin: 0px !important;" width="1" /> <br /><a href="http://www.amazon.com/gp/product/0321961579/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0321961579&linkCode=as2&tag=realworlsofta-20" target="_blank">Essential Mobile Interaction Design: Perfecting Interface Design in Mobile Apps</a><img alt="" border="0" height="1" src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0321961579" style="border: none !important; margin: 0px !important;" width="1" /> </td></tr></table>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-19660677.post-32986929647342304102014-05-17T11:58:00.002-07:002014-05-17T11:58:18.417-07:00The Agile Culture: Leading through Trust and Ownership Book Review<table style="width: 100%"><tr><td>I wish this book would have been around a few years ago. At the time I was trying to convince a manager for several months that the top-down command and control model no longer works. The evidence was not difficult to come up with, you just had to take a look at the last 4 to 6 projects they ran, and the results spoke for themselves.<br/><br/>The really bad part was that it was a completely predictable environment. Orders came from the top to management and down to the worker bees. The projects were always over budget, missed delivery dates, and delivered buggy partially completed products. If you were lucky you got something close to what the business asked for, but sometimes it just didn't work at all, or was so far away from meeting their needs it wasn't usable. Process makes for a predictable outcome, and the top-down command and control style they used, created the same result every time.<br/><br/>That was the bad part, the sad part was everyone in IT knew what was going to happen, but they had no choice but to play along. The business being convinced IT was just a business expense, and not a strategic partner, they just thought this is how it is working with IT. Expensive and you get very little for your money.<br/><br/>This is a very archaic way of thinking and is usually found in businesses over 70 years old. They still don't understand, that in today's world, many companies of any decent size are just an IT company that specializes in a certain type of business. IT is the life line to their customers. People pick up a phone to order a product, but not by making a phone call to their favorite salesman, they use the mobile application your company provides. Don't have one? I guess the order wasn't going to your company then.<br/><br/>As I said above, in these companies you will find the mindset that the business is IT's customer. Instead of a partnership with the goal of meeting the actual customer's needs, the command and control mindset is built into their relationship creating a lot of dysfunction. This is a higher level example of an entire department having no trust from the business unit and no ownership of their projects. This has devastated the morale in IT and without big changes, it won't get better.<br/><br/>In these archaic thinking companies you find very little trust and ownership in all their departments. I see a lot of them today suffering terribly, but insisting on staying in denial. They just won't give up on the mantra- This is how we have always done it, and doing it this way is what got to where we are today. They just don't have a realistic view of where they really are today, and if you don't know where you are today, you sure as heck can't decide where you want to be tomorrow.<br/><br/>This book provides a way out of the anguish that companies like I described above are in. Below are the chapters the book contains-<br/><br/>Chapter 1. Unleashing Talent<br/>Chapter 2. Trust and Ownership<br/>Chapter 3. Building Trust and Ownership<br/>Chapter 4. Trust Tools<br/>Chapter 5. Ownership Tools<br/>Chapter 6. Business Alignment Tools<br/>Chapter 7. Dealing Honestly with Ambiguity<br/>Chapter 8. Tools to Deal with Walls<br/>Chapter 9. Metrics<br/>Chapter 10. Case Study<br/>Appendix A. Quick Reference Guide<br/>Appendix B. Trust-Ownership Assessment<br/>Appendix C. Collaboration Process<br/>Appendix D. Collaborating with Non-Collaborators Worksheet<br/>Appendix E. What to Do about Metrics<br/><br/>I love that this book pushes for transparency by accepting and dealing with the fact that we work in an environment of low certainty and high ambiguity. One of the best things about this book is that when there is an Elephant in the room, they don't just point at it and say "there is an Elephant in the room", they walk you over to it and let it trunk slap you a few times.<br/><br/>My daughter had a habit of striking up a conversation in the middle of her teacher's lectures. She was constantly bringing home notes from the teacher throughout second-grade asking for our help making her understand she cannot speak while the teacher is speaking.<br/><br/>Third grade rolled around and we were at the point of having our first parent teacher conference. I had received no notes asking to help my daughter not to hold mini fashion classes while the teacher was lecturing. Amazingly the meeting went great. My daughter was being a model student. This repeated during the second teacher conference of the year.<br/><br/>Then the third one came. I went in and sat down smiled and said hello to her teacher. Right before my eyes I saw her smile fade away into a twisted sick looking grin, her eyes bulged, and I swear I thought I saw her hair fly out from her skull as she screamed "You have got to do some thing about your daughter!!! I need help!!!". My first thought was,you certainly do need 'help'.<br/><br/>She proceeded to rant on and on about how my daughter won't stop talking in class, and just ignores the teacher when she asks her to stop, along with a dozen other things. I asked her why she told me she was doing great and was well behaved in the first two meetings. She said she is a believer in tolerance. I didn't get it. She explained that she believes every child given enough time will choose to do the right thing and the teacher of today tolerates misbehavior until the child changes.<br/><br/>I won't tell you what I wanted to say, but I did say "well apparently that's not going to good for you. Can I ask why the teacher of today thinks their only role is to regurgitate the curriculum and not teach children the difference between right and wrong behavior? " I thanked her for letting my daughter get all her little girl chatter, and back talking out during class, because of that, she had been great at home.<br/><br/>This teacher attempted this year after year, and year after year it failed. That is a perfect example of complete trust in someone who just didn't have the capacity to understand how to take ownership of their actions. I see this all time. Leaders trusting the same people over and over again and those people failing to deliver over and over again. So what happened. The same thing that happens at companies, complete 100% command and control kicked in. My daughter couldn't sneeze the rest of the year without being written up.<br/><br/>It all boils down to, change, hope, and insanity. You hope the next time will be different, but you refuse to change anything in your environment. It is called insanity. As Einstein put it- insanity is doing the same thing over and over again and expecting different results.<br/><br/>One of the things I would have like to see is a little more dealing with the team member that refuses to update their skill set in order to be more effective, and have no interest in taking ownership. The book touches on helping members decide to leave, and asking them to leave, but that is not an option for these individuals. They themselves, along with their managers, and the majority of the company believe they've paid their dues. Most have over 25 years of service and are headed towards the day they can start using their pension.<br/><br/>This can be a very big problem in companies that have a great retention rate. Many of the company's heroes from the mainframe days are still occupying seats with their same skill sets. Some have moved on, retired, or have been given a new roles in the company.<br/><br/>In one of the environments I am referring to the company has scattered the remaining mainframe era individuals throughout the IT teams. The issue is, those that don't update their skills are hurting their team. They are counted as a full resource, but only provide a fraction of what the other team members provide.<br/><br/>The worst part of this situation is that these legacy team members are not lazy people, and could be used in other areas of the company. Why aren't they? The command and control environment doesn't ask what they would like to do, it doesn't care. Upper management decides where resources are needed and moves people there. This is really blatant in government. If they are in IT, they must stay in IT, although you can tell they are sick of IT.<br/><br/>In some even worse cases the legacy employees have been made managers. The company has been 100% command and control since their inception 100 or so years ago, and they see no reason to change that. Management is therefore trained with in-house made training, which is all geared towards maintaining a command and control environment. This book would be labeled heresy in this environment. If caught with it, you may be burned t the stake. It is an endless cycle of promoting people to the point of incompetency, which adds a little more dysfunction to the environment with every round of promotions.<br/><br/>Because the world says everybody must go Agile and Lean, they attempted to implement Agile and Lean practices. How did that go you ask?<br/><blockquote>Bill Gates said, "The first rule of any technology used in a business is that automation applied to an efficient operation will magnify the efficiency. The second is that automation applied to an inefficient operation will magnify the inefficiency."</blockquote>The same can be said about Agile and Lean practices:<br/><blockquote>The first rule of any software process used in development is that Agile and Lean practices applied to an efficient development team will magnify the efficiency. The second is that Agile and Lean practices applied to an inefficient development team will magnify the inefficiency.</blockquote>I won't ding the book for not covering the team issue I brought up above, because the book didn't try to cover it. It was just something I would liked to have seen. There are many more difficult situations I could bring up that I would like to see covered, but this book is based on the author's real life experiences. If they have not had to deal with such situations, it is not something they would cover.<br/><br/>That is something I really like about this book. It is all based on experiences. I have said before that there are way too many books, and way too much information available on agile these days. I'll be the first to admit, that every time I see an agile book coming out the first thing I think is how could they possibly still be milking agile. I also must admit, that many of the new books coming out on agile are now reflective of experience, and not based entirely on theory. That was what you used to find in the agile library, all theory and no experience. Now with books like this one, we find great advice based on real world experience.<br/><br/>Trusting people is hard. I always proof of concept a new development team. What choice do I have, especially today when the technology changes with every new project. Every time it has paid off in dividends. Someone always joins the team in the wrong role. I have had several four person teams where one or two of the team members had to be assigned menial tasks, or if possible replaced. This not only works to circumvent disastrous code and a lot of wasted time, it also helps you identify the members you can trust with technical decisions. You may not have time to get fully briefed on an issue before a decision needs to be made. Having a second or third technical expert identified for the team really helps.<br/><br/>There is a big difference between leading and managing. If you want to succeed as a leader, this book is a great read. It is packed with advise on building trust and helping teams take ownership. It also has a ton of advise on aligning with the business and showing you what metrics are the most important in a project. They show you why "hitting a date" is from the land of the lost, and delivering a quality product that pleases the customer is when the project is done.<br/><br/>The book also has 5 appendices packed with tools to help you assess your current situation and then move towards an environment of trust and ownership.<br/><br/>I thoroughly enjoyed reading this book. The authors all have great writing styles and reading it goes really fast. I have about 15 tabs stuck in it, and I will be keeping it close. This is the kind of wisdom I like reminding myself of periodically.<br/><br/>If you buy only buy one agile, management, or leadership book this year, make it this one!!!! If you plan on buying more than one agile, management, or leadership book this year, make this your first one!!!! <br/><br/><br/></td><td style="text-align: center"><a target="_blank" href="http://www.amazon.com/gp/product/0321940148/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0321940148&linkCode=as2&tag=realworlsofta-20&linkId=PHTL2SKA53KU73RS"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=0321940148&Format=_SL110_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=realworlsofta-20" ></a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0321940148" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <br/><a target="_blank" href="http://www.amazon.com/gp/product/0321940148/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0321940148&linkCode=as2&tag=realworlsofta-20&linkId=PHTL2SKA53KU73RS">The Agile Culture: Leading through Trust and Ownership</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0321940148" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> </td></tr><tr><td colspan="2" style="text-align: center"><a target="_blank" href="http://www.amazon.com/gp/product/0321940148/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0321940148&linkCode=as2&tag=realworlsofta-20&linkId=PHTL2SKA53KU73RS"><img border="0" src="http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=0321940148&Format=_SL110_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=realworlsofta-20" ></a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0321940148" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <br/><a target="_blank" href="http://www.amazon.com/gp/product/0321940148/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0321940148&linkCode=as2&tag=realworlsofta-20&linkId=PHTL2SKA53KU73RS">The Agile Culture: Leading through Trust and Ownership</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=realworlsofta-20&l=as2&o=1&a=0321940148" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> </td></tr></table>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-19660677.post-63466310704506805882014-05-05T19:57:00.002-07:002014-05-05T19:57:48.062-07:00Sparx Enterprise Architect 11 Released - For Software, Business, and SystemsFor years now, Sparx Enterprise Architect has been the one software package I insist having on all my projects. It doesn't matter if the projects are mobile iOS and Android, .NET, ASP.NET, ASP.NET Web API, Enterprise or Software Architecture modeling, SPEM (Software Process Engineering Metamodel) modelling, or a SPLE (Software Product Line Engineering) project, Sparx Enterprise Architect is my go to tool. <br/><br/>To see examples of some of the things listed above, done with Sparx Enterprise Architect, you can <a target="_blank" href="http://www.softwareprocessengineering.com/"><strong>visit here</strong></a>. You can also find some examples <a target="_blank" href="http://community.sparxsystems.com/tutorials/author/627-tadanderson"><strong>here</strong></a> on the Sparx Community Site. <p><strong>Enterprise Architect 11 - For Software, Business, and Systems (info below is from the Sparx site)</strong><br/><br/>Sparx Systems is proud to announce the release of Enterprise Architect 11, which includes hundreds of new enhancements and technologies.</p><p><strong>For Software:</strong><br/>Enhanced tools for software development, reporting and simulation for the <a target="_blank" href="http://www.sparxsystems.com/products/ea/11/for-software.html"><strong>Software Engineer</strong></a></p><p><strong>For Business:</strong><br/>Take on the role of a <a target="_blank" href="http://www.sparxsystems.com/products/ea/11/for-business.html"><strong>Business Analyst or a Requirements Engineer</strong></a> as we introduce Enterprise Architect 11</p><p><strong>For Systems:</strong><br/>For realtime and embedded <a target="_blank" href="http://www.sparxsystems.com/products/ea/11/for-systems.html"><strong>Systems Engineers and Designers</strong></a>, Enterprise Architect is packed full of enhancements and features for you!</p><br/><p><strong>Release Highlights:</strong></p><ul style="padding-left: 0px;"><li><a target="_blank" href="http://www.sparxsystems.com/products/ea/11/index.html#specman"><strong>Software Business Systems:</strong></a> Documentation, Graphs, and Reports </li><li><a target="_blank" href="http://www.sparxsystems.com/products/ea/11/index.html#team"><strong>Team Based Modeling</strong>:</a> Communication and Security </li><li><a target="_blank" href="http://www.sparxsystems.com/products/ea/11/index.html#profile"><strong>New / Enhanced Profiles</strong>:</a> NIEM, GML, ArchiMate and more </li><li><a target="_blank" href="http://www.sparxsystems.com/products/ea/11/index.html#ui"><strong>Enhanced UI</strong>:</a> Team Review, Relationship Matrix, Element Browser </li><li><a target="_blank" href="http://www.sparxsystems.com/products/ea/11/index.html#coding"><strong>Coding and Scripting</strong>:</a> Profiling, Grammars, & Roundtripping </li><li><a target="_blank" href="http://www.sparxsystems.com/products/ea/11/index.html#simulation"><strong>Simulation</strong>:</a> Objects, Actions, Parameters, & API </li><li><a target="_blank" href="http://www.sparxsystems.com/products/ea/11/index.html#vea"><strong>Execution Analysis</strong>:</a> Function Line Reports, 64-bit, and more </li><li><a target="_blank" href="http://www.sparxsystems.com/products/ea/11/index.html#deployment"><strong>New Deployment Options</strong>:</a> Cloud, RAS, OSLC, Firebird </li><li><a target="_blank" href="http://www.sparxsystems.com/products/ea/11/index.html#diagramming"><strong>Diagramming</strong>:</a> Tiles, Transparencies, Themes, & Storage </li></ul><br/><p><strong>Videos:</strong></p><table style="width:100%;"><tbody><tr><td style="width:45%;"><a target="_blank" href="http://www.sparxsystems.com/products/ea/11/video/specification-manager/specification-mananager.htm"><span>Specification Manager</span></a></td><td style="width:55%;"><a target="_blank" href="http://www.sparxsystems.com/products/ea/11/video/charts/charts.htm"><span>Charts and Dashboards</span> </a></td></tr><tr><td><a target="_blank" href="http://www.sparxsystems.com/products/ea/11/video/documentation/enhanced-documentation.htm"><span>Enhanced Documentation</span> </a></td><td><a target="_blank" href="http://www.sparxsystems.com/products/ea/11/video/ea11-default-theme/ea11-default-theme.htm"><span>EA 11 Diagram Theme</span> </a></td></tr><tr><td><a target="_blank" href="http://www.sparxsystems.com/products/ea/11/video/diagram-themes/diagram-themes.htm"><span>Diagram Themes</span> </a></td><td><a target="_blank" href="http://www.sparxsystems.com/products/ea/11/video/package-views/package-views.htm"><span>Package Driven Modeling</span> </a></td></tr><tr><td><a target="_blank" href="http://www.sparxsystems.com/products/ea/11/video/kanban/kanban.htm"><span>Kanban</span> </a></td><td><a target="_blank" href="http://www.sparxsystems.com/products/ea/11/video/element-discussions/element-discussions.htm"><span>Element Discussions</span> </a></td></tr><tr><td><a target="_blank" href="http://www.sparxsystems.com/products/ea/11/video/element-browser/enhanced-element-browser.htm"><span>Element Browser</span> </a></td><td><a target="_blank" href="http://www.sparxsystems.com/products/ea/11/video/state-machines/state-machine-execution.htm"><span>State Machine Code Generation</span> </a></td></tr><tr><td><a target="_blank" href="http://www.sparxsystems.com/products/ea/11/video/simulation/model-simulation.htm"><span>Simulation</span> </a></td><td><a target="_blank" href="http://www.sparxsystems.com/products/ea/11/video/function-line-reporting/function-line-reporting.htm"><span>Function Line Reporting</span> </a></td></tr><tr><td><a target="_blank" href="http://www.sparxsystems.com/products/ea/11/video/vea/vea-combined.htm"><span>Visual Execution Analysis</span> </a></td><td><a target="_blank" href="http://www.sparxsystems.com/products/ea/11/video/cloud/cloud-services.htm"><span>Cloud Services</span> </a></td></tr><tr><td><a target="_blank" href="http://www.sparxsystems.com/products/ea/11/video/ras/ras.htm"><span>Reusable Asset Service</span> </a></td><td><a target="_blank" href="http://www.sparxsystems.com/products/ea/11/video/oslc/oslc.htm"><span>OSLC</span> </a></td></tr></tbody></table>Unknownnoreply@blogger.com0