Skip to content

Software Development Blogs: Programming, Software Testing, Agile Project Management

Methods & Tools

Subscribe to Methods & Tools
if you are not afraid to read more than one page to be a smarter software developer, software tester or project manager!

Feed aggregator

SPaMCAST 316 – David Rico, Agile Cost of Quality

www.spamcast.net

http://www.spamcast.net

Listen to the Software Process and Measurement Cast 316

SPaMCAST 316 features a return visit from Dr. David Rico. We talked about the cost of quality and Agile. Does Agile impact the cost of quality? The cost of quality is a measure of the time and cost that is required to ensure that what is delivered meets quality standards. Dr. Rico walks us through the evidence that not only does Agile improve customer satisfaction, but it also improves the cost of quality.

Dr. Rico is a principal systems engineer with Boeing, where he helps oversee a portfolio of large, multi-billion dollar government computer-system programs. He has been a technical leader in support of NASA, U.S. Air Force, U.S. Navy, and U.S. Army for over 30 years. He has led numerous projects based on Cloud Computing, Lean Thinking, Agile Methods, SOA, Web Services, Six Sigma, FOSS, ISO 9001, CMMI, Baldrige, TQM, Enterprise Architecture, DoDAF, and DoD 5000. He specializes in IT investment analysis, IT portfolio valuation, and IT enabled change. He has been an international keynote speaker, presented at leading industry conferences, written seven textbooks, published numerous articles, and is a reviewer for multiple systems engineering journals. He is a Certified PMP, CSEP, ACP, CSM, and SAFe Agilist, and teaches at four Washington, DC-area universities. He has been in the field of information systems since 1983.

Contact Dr Rico
Blog:  davidfrico.com
Email: dave1@davidfrico.com
Twitter: @dr_david_f_rico

Call to action!

We are in the middle of a re-read of John Kotter’s classic Leading Change of on the Software Process and Measurement Blog.  Are you participating in the re-read? Please feel free to jump in and add your thoughts and comments!

After we finish the current re-read will need to decide which book will be next.  We are building a list of the books that have had the most influence on readers of the blog and listeners to the podcast.  Can you answer the question?

What are the two books that have most influenced you career (business, technical or philosophical)?  Send the titles to spamcastinfo@gmail.com.

First, we will compile a list and publish it on the blog.  Second, we will use the list to drive future  “Re-read” Saturdays. Re-read Saturday is an exciting new feature that began on the Software Process and Measurement blog on November 8th.  Feel free to choose you platform; send an email, leave a message on the blog, Facebook or just tweet the list (use hashtag #SPaMCAST)!

Next

SPaMCAST 317 will tackle a wide range of frequently asked questions, ranging from the possibility of an acceleration trap, the relevance of function points, whether teams have a peak loads and safe to fail experiments.

We will also have the next instalment of Kim Pries’s column, The Software Sensei!

 

Upcoming Events

DCG Webinars:

How to Split User Stories
Date: November 20th, 2014
Time: 12:30pm EST
Register Now

Agile Risk Management – It Is Still Important
Date: December 18th, 2014
Time: 11:30am EST
Register Now

The Software Process and Measurement Cast has a sponsor.

As many you know I do at least one webinar for the IT Metrics and Productivity Institute (ITMPI) every year. The ITMPI provides a great service to the IT profession. ITMPI’s mission is to pull together the expertise and educational efforts of the world’s leading IT thought leaders and to create a single online destination where IT practitioners and executives can meet all of their educational and professional development needs. The ITMPI offers a premium membership that gives members unlimited free access to 400 PDU accredited webinar recordings, and waives the PDU processing fees on all live and recorded webinars. The Software Process and Measurement Cast some support if you sign up here. All the revenue our sponsorship generates goes for bandwidth, hosting and new cool equipment to create more and better content for you. Support the SPaMCAST and learn from the ITMPI.

Shameless Ad for my book!

Mastering Software Project Management: Best Practices, Tools and Techniques co-authored by Murali Chematuri and myself and published by J. Ross Publishing. We have received unsolicited reviews like the following: “This book will prove that software projects should not be a tedious process, neither for you or your team.” Support SPaMCAST by buying the book here.

Available in English and Chinese.

 

 


Categories: Process Management

SPaMCAST 316 – David Rico, Agile Cost of Quality

Software Process and Measurement Cast - Sun, 11/16/2014 - 23:00

SPaMCAST 316 features a return visit from Dr. David Rico. We talked about the cost of quality and Agile. Does Agile impact the cost of quality? The cost of quality is a measure of the time and cost that is required to ensure that what is delivered meets quality standards. Dr. Rico walks us through the evidence that not only does Agile improve customer satisfaction, but it also improves the cost of quality.

Dr. Rico is a principal systems engineer with Boeing, where he helps oversee a portfolio of large, multi-billion dollar government computer-system programs. He has been a technical leader in support of NASA, U.S. Air Force, U.S. Navy, and U.S. Army for over 30 years. He has led numerous projects based on Cloud Computing, Lean Thinking, Agile Methods, SOA, Web Services, Six Sigma, FOSS, ISO 9001, CMMI, Baldrige, TQM, Enterprise Architecture, DoDAF, and DoD 5000. He specializes in IT investment analysis, IT portfolio valuation, and IT enabled change. He has been an international keynote speaker, presented at leading industry conferences, written seven textbooks, published numerous articles, and is a reviewer for multiple systems engineering journals. He is a Certified PMP, CSEP, ACP, CSM, and SAFe Agilist, and teaches at four Washington, DC-area universities. He has been in the field of information systems since 1983.

Contact Dr Rico
Blog:  davidfrico.com
Email: dave1@davidfrico.com
Twitter: @dr_david_f_rico

Call to action!

We are in the middle of a re-read of John Kotter’s classic Leading Change of on the Software Process and Measurement Blog.  Are you participating in the re-read? Please feel free to jump in and add your thoughts and comments!

After we finish the current re-read will need to decide which book will be next.  We are building a list of the books that have had the most influence on readers of the blog and listeners to the podcast.  Can you answer the question?

What are the two books that have most influenced you career (business, technical or philosophical)?  Send the titles to spamcastinfo@gmail.com.

First, we will compile a list and publish it on the blog.  Second, we will use the list to drive future  “Re-read” Saturdays. Re-read Saturday is an exciting new feature that began on the Software Process and Measurement blog on November 8th.  Feel free to choose you platform; send an email, leave a message on the blog, Facebook or just tweet the list (use hashtag #SPaMCAST)!

Next

SPaMCAST 317 will tackle a wide range of frequently asked questions, ranging from the possibility of an acceleration trap, the relevance of function points, whether teams have a peak loads and safe to fail experiments.

We will also have the next instalment of Kim Pries’s column, The Software Sensei!

 

Upcoming Events

DCG Webinars:

How to Split User Stories
Date: November 20th, 2014
Time: 12:30pm EST
Register Now

Agile Risk Management - It Is Still Important
Date: December 18th, 2014
Time: 11:30am EST
Register Now

The Software Process and Measurement Cast has a sponsor.

As many you know I do at least one webinar for the IT Metrics and Productivity Institute (ITMPI) every year. The ITMPI provides a great service to the IT profession. ITMPI’s mission is to pull together the expertise and educational efforts of the world’s leading IT thought leaders and to create a single online destination where IT practitioners and executives can meet all of their educational and professional development needs. The ITMPI offers a premium membership that gives members unlimited free access to 400 PDU accredited webinar recordings, and waives the PDU processing fees on all live and recorded webinars. The Software Process and Measurement Cast some support if you sign up here. All the revenue our sponsorship generates goes for bandwidth, hosting and new cool equipment to create more and better content for you. Support the SPaMCAST and learn from the ITMPI.

Shameless Ad for my book!

Mastering Software Project Management: Best Practices, Tools and Techniques co-authored by Murali Chematuri and myself and published by J. Ross Publishing. We have received unsolicited reviews like the following: “This book will prove that software projects should not be a tedious process, neither for you or your team.” Support SPaMCAST by buying the book here.

Available in English and Chinese.

 

 

Categories: Process Management

Re-read Saturday: Leading Change, John P. Kotter Chapter 2

You need to climb each stage to reach to top!

You need to climb each stage to reach to top!

 

We began exploring Leading Change by John P. Kotter by exploring the reasons organizational change fails. Chapter two explores successful change and the forces that drive successful change: an introduction to Kotter’s famous eight-stage process model and the role of leadership in change.

The eight-stage process for creating major change is a direct reflection of the eight common errors described in chapter one. The model describes a sequence of activities needed to generate, implement and then instantiate change within an organization. The eight steps are:

  1. Establish a sense of urgency.
  2. Creating a guiding coalition.
  3. Developing a vision and strategy.
  4. Communicating the change vision.
  5. Empower broad-based action.
  6. Generating short-term wins.
  7. Consolidating gains and producing more changes.
  8. Anchoring new approaches in the culture.

Each step in the model builds on the step before. Jumping into the model by communicating a vision and strategy with a power base and an organizational urgency is like putting the cart before the horse. The strategy and vison you are trying to communicate will not have the motivational power and would easily run out gas. When considering the stages in the model, recognize that Kotter conceived of the model as a sequence and that each step needs to be addressed.

Kotter talked briefly in the chapter about projects within projects. The idea is that most major changes are a reflection group of inter-related changes. An IT program is a group of related projects managed in a coordinated fashion. Any project can be starting or completing if we looked at a cross section of the program at any specific time. Similarly any individual change project following Kotter’s process within a larger group of changes will be at the stage need by that project.

The second major theme in this chapter is a discussion of leadership and the differences between leadership and management. Leadership provides vision and direction that are needed for building a powerbase for change and then to galvanize the organization into action. Almost by definition a leader conceives of a vision of the future and then acts as a catalyst to make that vision a reality. Leadership is transformational in nature. The difficulty is that many change programs are led by managers rather than leaders. Management is concerned with organizing, planning and controlling work. Almost by definition management is a tool to resist change. Management is important to the day-to-day activities, but without the vision of leadership there would be nothing to manage. Where leadership transforms, management translates.

While the dichotomy of leadership and management seems black and white, both are always required in any organization. As the rate of change increases (or at least as the need for the rate of change increases), the need for vision and leadership increases. Alternately during periods in were there is little pressure on firms business model, the need for managers and management tends to rise into ascendancy over the need for leadership. The late 40’s and 1950’s were such a period in the United States. That is not the environment that we find ourselves in today. Change is a fact of life. Kotter’s eight-stage process model provides a structure for applying leadership in consistent manner that identifies why change needs to occur, builds a base, delivers change and makes sure it sticks.


Categories: Process Management

Social Media and Process Improvement

Collaboration tools are now nearly ubiquitous in the home, in the workplace and on your belt. These tools are wielded by a generation that has grown up using text/SMS messages.

Collaboration tools are now nearly ubiquitous in the home, in the workplace and on your belt. These tools are wielded by a generation that has grown up using text/SMS messages.

A piece of advice I once received was that you either made things happen or let them happen to you. That piece of advice is as true now as it was then.  We live in an era of great change inside and outside the information technology community.  The advent of social media and its incorporation into workplace to foster collaboration is only one affectation of the change that is going on.  There are many messages the explosion of social medias such as LinkedIn, Facebook, blogs and podcast can share with the process improvement (PI) community.   The first and perhaps the most important message is transmitted by the extraordinary fact these tools exist at all.   The fact that these tools exist (not even reflecting on the fact that there are five more everyday) is that change is occurring and that it is unstoppable because it fits human nature. These changes are not only unstoppable, but gaining speed.  The change driven by social media is a very human kind of change which affects how people interact and how work is accomplished.  In the process improvement arena both you and your customers are the change.  This a statement on many levels.  I would like to focus on what the changing environment says about a changing vision of control.  Control is a critical concept in the process improvement community and the change I see in our industry is redefining the concept of control or at the very least challenging how control can be applied.

At its basic level control is a gate that interjects “permissions” between two groups.  For example, defining a process for tailoring a defined methodology for use on a project creates a control gate that regulates how work will be accomplished. The process defines the ritual required to granted permission to change the standard process.  The world that created these control gates is quickly being overcome by a new set of rules that govern collaboration and social interaction.  Workers in this new world can easily view permissions as a hurdle between them and getting the work done.  This is most true when control gates add drag to the process without adding perceived value.  This conflicts with an alternative, albeit more classic, view of organizational control, where relying on the wisdom of crowds or where a wide distribution of authority is view as contributing to anarchy.  The second paradigm is one that we have been trained to accept as true by models such as the CMMI or tools like Six Sigma.  It is the view that standardization is good and control is required for standardization therefore anything that challenges control leads to a suboptimal outcome.   I suggest that a change in paradigm is at our door, it is knocking and it isn’t going to leave. Change is inevitable and since we are the change, we can help guide change in our organizations and our industry or ride the wave and let change happen to us.


Categories: Process Management

Social Media and Process Improvement

Collaboration tools are now nearly ubiquitous in the home, in the workplace and on your belt. These tools are wielded by a generation that has grown up using text/SMS messages.

Collaboration tools are now nearly ubiquitous in the home, in the workplace and on your belt. These tools are wielded by a generation that has grown up using text/SMS messages.

A piece of advice I once received was that you either made things happen or let them happen to you. That piece of advice is as true now as it was then.  We live in an era of great change inside and outside the information technology community.  The advent of social media and its incorporation into workplace to foster collaboration is only one affectation of the change that is going on.  There are many messages the explosion of social medias such as LinkedIn, Facebook, blogs and podcast can share with the process improvement (PI) community.   The first and perhaps the most important message is transmitted by the extraordinary fact these tools exist at all.   The fact that these tools exist (not even reflecting on the fact that there are five more everyday) is that change is occurring and that it is unstoppable because it fits human nature. These changes are not only unstoppable, but gaining speed.  The change driven by social media is a very human kind of change which affects how people interact and how work is accomplished.  In the process improvement arena both you and your customers are the change.  This a statement on many levels.  I would like to focus on what the changing environment says about a changing vision of control.  Control is a critical concept in the process improvement community and the change I see in our industry is redefining the concept of control or at the very least challenging how control can be applied.

At its basic level, a control is a gate that interjects “permissions” between two groups.  For example, defining a process for tailoring a defined methodology for use on a project creates a control gate that regulates how work will be accomplished. The process defines the ritual required to granted permission to change the standard process.  The world that created these control gates is quickly being overcome by a new set of rules that govern collaboration and social interaction.  Workers in this new world can easily view permissions as a hurdle between them and getting the work done.  This is most true when control gates add drag to the process without adding perceived value.  This conflicts with an alternative, albeit more classic, view of organizational control, where relying on the wisdom of crowds or where a wide distribution of authority is view as contributing to anarchy.  The second paradigm is one that we have been trained to accept as true by models such as the CMMI or tools like Six Sigma.  It is the view that standardization is good and control is required for standardization therefore anything that challenges control leads to a suboptimal outcome.   I suggest that a change in paradigm is at our door, it is knocking and it isn’t going to leave. Change is inevitable and since we are the change, we can help guide change in our organizations and our industry or ride the wave and let change happen to us.


Categories: Process Management

Building Games with Google Cast is Easy and Powerful

Google Code Blog - Fri, 11/14/2014 - 20:03
By Nathan Camarillo, Chromecast Product Manager for Games

This week, we announced several Google Cast games that were built with the Google Cast SDK. With a Google Cast endpoint like a Chromecast or Android TV, developers can now use Google Cast to bring a whole new style of multi-screen social gaming experiences to the living room.
What makes a Google Cast game unique? It enables multi-screen gameplay between mobile devices and a television, and it transforms users’ mobile devices into amazing game controllers. Anyone with a compatible Android or iOS phone or tablet can join the game. There’s no hassle or expense with extra controllers or peripherals; your very own iPhone or Android phone simply works and everyone can join in.

The innovative part of creating a Google Cast game is all the ways you can use mobile devices to create a variety of controls with the television as a shared screen. The Accelerometer can be used for motion controls ranging from subtle, to dramatic, to rhythmic. No-Look Controls and virtual controllers can allow you to focus on the television as you compete against friends. Direct target manipulation through touch controls can create intense gameplay moments that temporarily focus on the mobile device and then return the focus to the television where all players can share and compare the results. You can even use the microphone or other input methods to create games for everyone in the home. Whether cooperative or competitive, Google Cast enables you to create fun moments for everyone using the devices they already have and know how to use.

Now it’s your turn! Go make something fun with the Google Cast Design Principles. The experiences you create using Google Cast will entertain gamers and inspire a whole community of developers embracing a new revolution in multi-screen gaming.

Categories: Programming

Fixing the #1 problem with Xamarin.Forms

Eric.Weblog() - Eric Sink - Fri, 11/14/2014 - 19:00
Update

I'm not sure what I expected when I wrote this blog entry. I just figured I would "throw it out there" and see what happened. Maybe the Xamarin.Forms team would talk about my idea at their next standup.

What actually happened is that within an hour, Jason Smith (the lead developer of Xamarin.Forms) invited me to a Skype call, shared his screen, brought up The Code, and we talked about ways it could be improved.

I didn't expect that.

(But it was glorious, as nerd conversations about code so often are.)

The discussion gave me a decent idea of what kind of changes Jason intended to make, but I don't think it is my place to say more about the details. Suffice it to say that I'm probably not getting exactly what I suggested, but it looks like I'll be getting what I need. If Jason and his team end up confirming the viability of the changes he and I discussed, then it will definitely become possible to get much better performance in a Xamarin.Forms app.

Anyway, huge kudos and thanks to Jason for a response I consider way "above and beyond the call".

And the #1 problem is...

It's slow.

To be fair...

It's not always slow. There are plenty of use cases where it works fine.

And not all of Xamarin.Forms is slow. The biggest offender is the layout system.

But this can be a pretty big problem. It's not too hard to find stories of people who gave up on Xamarin.Forms simply because there was no way to make their app perform acceptably.

Positive remarks to balance my complaining

Xamarin.Forms is terribly exciting. I've spent much of the last three months working with it, and I love it. Like any young technology trying to solve very hard problems, it has plenty of rough edges. But it shows high potential for awesomeness.

And lots of people seem to agree. In fact, I daresay that the level of excitement around Xamarin.Forms has taken some people at Xamarin by surprise. I can't quote verbatim, but I'm pretty sure I heard somebody at Evolve say that they changed their plans for the training and sessions to include a lot more Xamarin.Forms content because of the buzz.

People want this technology. And they want it to be great.

That's my goal in writing this piece. I just want to help make Xamarin.Forms great.

BTW

If the code were open source, this blog entry would be a pull request. And it wouldn't be my only one.

Someone has made the decision to not open source Xamarin.Forms, and I shall not criticize or second-guess this choice. But I can't resist saying that if it were open source, I would be actively spending my time helping make it better.

This is a very difficult problem

Cross-platform stuff is really hard. And if you add "UI" into the previous sentence then you have to add a least two more "reallys".

I've been doing cross platform development for a long time. I've used dozens of different UI toolkits and APIs. After you master the first ten, they all start to look the same.

Until you try to wrap them in a common API, and then the differences stop whispering and start screaming.

Xamarin.Forms is venturing into territory where dozens of others have failed. We're going to have to be patient.

But good grief the layout code is slow

Seriously. Write something non-trivial with Xamarin.Forms and then bring it up under a profiler.

But that's okay...

... for two reasons.

  • The layout code is doing a lot of work for you. I don't mind code that takes time when it's doing stuff I need done. That's life. The layout system is powerful, and convenience always comes at a price.

  • The code will get better. I've spent an awful lot of time reading Xamarin.Forms.Core.dll in the Xamarin Studio Assembly Browser. This code simply hasn't had much attention given to optimizaiton yet. When it does, it will get faster.

I'm not complaining about the layout code being slow. I'm complaining that I always have to use it.

Child views vs. Layouts

The real problem here is that Xamarin.Forms gives you no way to have child views without using a subclass of Layout. What I want is the ability to write a subclass of View that can have child views.

Right now I can do something like this:

public class myParentView : Layout<View>
{
    private Rectangle getBox(View child)
    {
        // whatever
    }

    protected override void LayoutChildren (double x, double y, double width, double height)
    {
        foreach (View v in Children) {
            Rectangle r = getBox (v);
            v.Layout (r);
        }
    }
}

But for some situations, the Layout system is just way too much. Events propagating up and down. Height and width requests. Real estate negotiations between every child view and its parent.

And for the sake of making sure the layout always gets updated when it needs to be, the code triggers a layout cycle in response to, well, almost everything.

Add or remove a child view? Relayout everything.

Here's my favorite: Put a Label in a Frame in a StackLayout in another StackLayout in a ScrollView in a Whatever. The details don't matter. Just build a hierarchy several levels deep with a Label down near the bottom. Then change the Text property of that label from "foo" to "bar". This triggers a layout cycle, because the label might want to request more size, and the parent might want to care about that request, so the whole negotiation starts over.

For extra fun, bind that Label's Text property to something that is also bound to the Text property of an Entry. Now you can trigger a complete relayout on every keystroke.

Xamarin.Forms currently suffers from a problem that is very typical for cross-platform UI toolkits at the toddler stage: It is constantly triggering layout updates "just in case" one might be needed. In general, it is better to have your forums filled with people saying "layout is slow" rather than people saying "I changed something and layout didn't update".

We need a lower-level mechanism

I would like to rewrite my example above to look something like this:

public class myParentView : View
{
    private List myChildren;

    private Rectangle getBox(View child)
    {
        // whatever
    }

    public LayoutMyChildren()
    {
        foreach (View v in myChildren) {
            Rectangle r = getBox (v);
            v.Layout (r);
        }
    }
}
  • Instead of subclassing Layout, I have subclassed View.

  • Since I no longer inherit a Children collection, I have defined my own.

  • Whereas previously I did an override of the abstract LayoutChildren() method, now I just provide a method called LayoutMyChildren().

  • Whenever I know I need to arrange all my child views, instead of triggering a layout cycle, I call LayoutMyChildren().

  • If I only need to arrange some of my child views, I can write a method that does less work.

  • Not shown, but I probably need to override OnSizeAllocated() and call LayoutMyChildren().

  • Since I own myChildren, inserts and deletes from this collection will not automatically trigger a layout cycle. If anything needs to updated when my set of child views changes, I have to do that myself.

In other words, I don't want any help laying things out. I just want the ability to have child views, and I don't want anybody meddling with my right to parent those children however I see fit.

A full implementation of myParentView is going to be rather complicated. But it's going to be fast, because myParentView has all the knowledge it needs to allow it to make smart decisions and avoid doing things that don't need to be done.

The design of child views in Xamarin.Forms

The concept of "child views" should be be distinct from the concept of "deciding where those child views should be placed". Thinking over the various UI toolkits I have used, the separation of these two concepts is a common pattern.

But the example above doesn't work in Xamarin.Forms 1.2. My child views never get a renderer assigned to them, so they never show up. The element hierarchy on the PCL side is fine. It just never gets mirrored on the platform side.

When I explained this to a coworker, I said, "The whole idea almost works. In fact, it all works, right up until the end, when it doesn't work at all."

Interestingly, Xamarin.Forms is very close to the design I want it to have. In researching this problem, I expected to find the child view management stuff in Xamarin.Forms.Layout, but it's just not there. As it turns out, the ability to have child views is actually not specific to Xamarin.Forms.Layout. Rather, this concept is implemented in Xamarin.Forms.Element (right where it belongs, IMNSHO).

The Element class has three important members. It does not actually manage a collection of child views. Rather, it exposes a way for a subclass to do so. OnChildAdded() and OnChildRemoved() need to be called when the child views collection has changed. These methods set the Parent property of the new child view, but more importantly, they trigger an event. The platform code is listening to this event (in VisualElementPackager), and that is where child views get their renderer assigned.

So what I need to do is call OnChildAdded() whenever I add something to myChildren. Now my layout wannabe class looks like this:

public class myParentView : View
{
    private List myChildren;

    private Rectangle getBox(View child)
    {
        // whatever
    }

    private addChild(View child)
    {
        myChildren.Add(child);
        OnChildAdded(child);
    }

    public LayoutMyChildren()
    {
        foreach (View v in myChildren) {
            Rectangle r = getBox (v);
            v.Layout (r);
        }
    }
}

And this almost works, but not quite. As I said above, Element has three important members which are used to communicate with the renderer about child views. The first two (discussed above) are OnChildAdded() and OnChildRemoved(). The third one is a property called LogicalChildren. This property is, well, the collection of child views. The two OnChild* methods are just there to keep things up to do date, but LogicalChildren is the starting point.

So what I need to do in myParentView is just override the LogicalChildren property, which is virtual. No problem, right?

Here's the problem: LogicalChildren is marked "internal", so a subclass cannot override it unless it was written by Xamarin.

My request

Broadly speaking, I am asking the Xamarin.Forms team for the ability to have a View subclass which can have and manage its own child views without being a subclass of Layout.

My suggested implementation of that idea is to just change Element.LogicalChildren from "internal" to "protected internal".

And I've spent some time trying to prove that my suggestion would work. Purely as a proof of concept, I used Mono.Cecil to create a hacked-up copy of Xamarin.Forms.Core.dll which has my suggested change:

#r "Mono.Cecil.dll"

open Mono.Cecil

let a = AssemblyDefinition.ReadAssembly("Xamarin.Forms.Core.dll")
for t in a.MainModule.Types do
    if t.FullName = "Xamarin.Forms.Element" then
        for p in t.Properties do
            if p.Name = "LogicalChildren" then
                let m = p.GetMethod
                m.IsFamilyOrAssembly <- true
a.Write("Better.Xamarin.Forms.Core.dll")

And then I wrote a myParentView class which has an override for LogicalChildren. The result is a huge performance increase for my particular use case, because myParentView doesn't need all the general-purpose stuff that the Layout subclasses provide. My contention is that there are lots of similar use cases which can benefit from this approach.

So that's my suggested change, but I don't actually care how this gets done. If the Xamarin.Forms team were to ship 1.3 with my "child views without layouts" concept exposed in some other fashion, I would be just as happy.

Moving forward

The Xamarin.Forms.Layout classes still need to get faster. And they will.

But regardless of when this happens, the concept of "child views" deserves to exist on its own.

 

Stuff The Internet Says On Scalability For November 14th, 2014

Hey, it's HighScalability time:


Spectacular rendering of the solar system to scale. (Roberto Ziche)

 

  • 700: number of low-orbit satellites in a sidecar cheap internet; 130 terabytes: AdRoll ad data processed daily; 15 billion: daily Weather Channel forecasts; 1 million: AWS customers
  • Quotable Quotes:
    • @benkepes: Each AWS data center has typically 50k to 80k physical servers. Up to 102Tbps provisioned networking capacity #reinvent
    • @scottvdp: AWS just got rid of infrastructure behind any application tier. Lambda for async distributed events, container engine for everything else.
    • @wif: AWS is handling 7 trillion DynamoDB requests per month in a single region. 4x over last year. same jitter. #reinvent
    • Philae: If my path was off by even half a degree the humans would have had to abort the mission.
    • Al Aho: Well, you can get a stack of stacks, basically. And the nested stack automaton has sort of an efficient way of implementing the stack of stacks, and you can think of it as sort of almost like a cactus. That's why some people are calling it cactus automata, at the time.
    • Gilt: Someone spent $30K on an Acura & LA travel package on their iPhone.
    • @cloudpundit: Gist of Jassy's #reinvent remarks: Are you an enterprise vendor? Do you have a high-margin product/service? AWS is probably coming for you.
    • @mappingbabel: Things coming out from the AWS #reinvent analyst summit - Amazon has minimum 3 million servers & lights up own globe-spanning fibre.
    • @cloudpundit: James Hamilton says mobile hardware design patterns are future of servers. Single-chip offerings, semiconductor-level innovation. #reinvent
    • @rightscale: RT @owenrog: AWS builds its own electricity substations simply because the power companies can't build fast enough to meet demand #reInvent
    • @timanderson: New C4 instances #reinvent up to 36 cores up to 16TB SSD
    • @holly_cummins: L1 cache is a beer in hand, L3 is fridge, main memory is walking to the store, disk access is flying to another country for beer. 
    • @ericlaw: Sample HTTP compression ratios observed on @Facebook: -1300%, -34.5%, -14.7%, -25.4%. ProTip: Don't compress two byte responses. #webperf
    • @JefClaes: It's not the concept that defines the invariants but the invariants that define the concept.

  • It's hard to imagine just a few short years ago AWS did not exist. Now it has 1 million customers, runs 70 million hours of software per month, and their AWS re:Invent conference has a robust 13,500 attendees. Re:Invent shows if Amazon is going to be disrupted, a lack of innovation will not be the cause. The key talking point is that AWS is not just IaaS anymore, AWS is a Platform. The underlying subtext is lock-in. Minecraft-like, Amazon is building out their platform brick by brick. Along with GCE, AWS announced a Docker based container service. Intel designed a special new cloud processor for AWS, which will be available in a new C4 instance type. There's Aurora, a bigger, badder MySQL. To the joy of many EBS is getting bigger and faster. The world is getting more reactive, S3 is emitting events. With less fan fare are an impressive suite of code deployment and management tools. There's also a key management service, a configuration manager, and a service catalog. Most provocative is Lambda, or PaaS++, which as the name suggests is the ability to call a function in response to events. Big deal? It could be, though quite limited currently, only supporting Node.js and a few event types. You can't, for example, terminate a REST request. What it could grow in to is promising, a complete abstraction layer over the cloud so any sense of machines and locations are removed. They aren't the first, but that hardly matters.

  • It's not a history of the Civil War. Or WWW I. Or the Dust Bowl. But An Oral History of Unix. Yes, that much time has passed. Interviewed are many names you'll recognize and some you've probably never heard of. A fascinating window into the deep deep past.

  • No surprise at all. Plants talk to each other using an internet of fungus: We suggest that tomato plants can 'eavesdrop' on defense responses and increase their disease resistance against potential pathogen...the phantom orchid, get the carbon they need from nearby trees, via the mycelia of fungi that both are connected to...Other orchids only steal when it suits them. These "mixotrophs" can carry out photosynthesis, but they also "steal" carbon from other plants...The fungal internet exemplifies one of the great lessons of ecology: seemingly separate organisms are often connected, and may depend on each other. 

  • How do you persist a 200 thousand messages/second data stream while guaranteeing data availability and redundancy? Tadas Vilkeliskis shows you how with Apache Kafka. It excels at high write rates, compession saves lots on network traffic, and a custom C++ http-to-kafka accommodates performance.

Don't miss all that the Internet has to say on Scalability, click below and become eventually consistent with all scalability knowledge (which means this post has many more items to read so please keep on reading)...

Categories: Architecture

DON’T PANIC! (For Everyone Who Fears Failure)

NOOP.NL - Jurgen Appelo - Fri, 11/14/2014 - 09:45
Don't Panic!

It happened just after I told my friend Lisette never to panic. When something goes wrong during your presentation, your workshop, your travels, or in any other endeavor, DO NOT PANIC! Your panic is most likely to cause the thing that you fear most.

The post DON’T PANIC! (For Everyone Who Fears Failure) appeared first on NOOP.NL.

Categories: Project Management

A Simple Tool: A pep talk

It takes a good attitude to be a good leader.

It takes a good attitude to be a good leader.

As a leader of people is easy to become weary to your bones after trying to convince a reticent organization, team or person to become a butterfly, when all they want to do is to stay in their nice safe cocoon. The forces lined up against you can be daunting. Don’t work against yourself by making your attitude part of the problem. Your attitude is one of your primary tools to lend credibility to your message and convince people to engage and befriend you. There are three attributes you need to consider managing immediately: negativism, sarcasm and partisanship.

Negativism is a habitual attitude of skepticism or resistance to the suggestions, order or instructions of others. This includes change and the belief that change is warranted or even possible. Leading change requires that you believe that you can succeed to motivate yourselves and those you are trying to influence. Without a belief that you can succeed, it will be difficult to get up in the morning and impossible to motivate others. I must at admit that I sometimes find that it is easy to confuse being highly rational with negativism. In the wee hours of the night make sure you evaluate which side of the line you are on and make corrections if you have strayed.

Behavior such as sarcasm might be acceptable amongst friends, but the impact of sarcasm is even less predictable when people do not know you or might have a different cultural filter are involved in the conversation. How many time have you heard “hey can’t they take a joke?” The answer is maybe not if it is apparently funny to their point of view. Frankly, just dropping sarcasm from your portfolio of communication techniques might be the best idea.

Another critical mistake that can be traced back to attitude is a need to have an enemy to strike against. Creating a “we/they” environment creates barriers between groups will make finding common ground more difficult. There are rarely benefits when one side is forced to capitulate to another (it difficult to compromise with someone you view as the enemy). You must recognize that as a leader and a negotiator your goal is to find the best solution for your organization.

Negativism, sarcasm and partisanship will minimize your effectiveness as a leader in the long run, and will add to the burden you need to shoulder in order to make change happen. Leading change is not an easy job. Don’t make it harder than it needs to be. Your attitude can either a simple powerful tool or concrete block to tow behind you.


Categories: Process Management

Accelerate business growth with Startup Launch & Launchpad Online

Google Code Blog - Thu, 11/13/2014 - 21:08
Last June, we launched Startup Launch, a program to help tech startups at all stages become successful on the Google Developers platform and open-source technologies. So far, we’ve helped more than 3,000 entrepreneurs transform their ideas into burgeoning websites, services, apps, and products in 150 countries. Hear some of their stories from the Czech Republic, Poland, Kenya, Brazil and Mexico in our Global Spotlight playlist.

Launchpad OnlineToday, we’re bringing the program to a wider audience with a new web series called Launchpad Online, to share knowledge based on questions we’ve had from entrepreneurs using our products. The series kicks off with technical instruction from Developer Advocate Wesley Chun on getting started with Google developer tools and APIs and over time will expand to include topics covering design and distribution.
This show accompanies our established "Root Access" and “How I:” series, which bring perspective and best practices to developers and entrepreneurs on a weekly basis.

Launchpad EventsLaunchpad Online follows the curriculum set out by our ongoing Launchpad events, week-long bootcamps for startups in select cities. In 2014, over 200 startups participated in events in Tel Aviv, London, Rio de Janeiro, Berlin, and Paris, which consisted of workshops on product strategy, UX/UI, engineering, digital marketing and presentation skills. Check out our videos covering recent events in Paris and Berlin here.

You’re invitedIn addition to events and online content, the program offers product credits to participants, from $500 of Cloud Platform and AdWords credits to startups who are just starting off, up to Google’s Cloud Platform startup offer of $100,000 USD in Cloud Credit offerings to startups ready to scale their business. You can apply for these benefits, and to be selected for future Launchpad events, at g.co/launch. Startup Launch runs in conjunction with our Google Business Groups and Google Developer Groups on the ground. Together, these communities have hosted more than 5,000 events in 543 cities and 104 countries this year, helping startups connect with other developers and entrepreneurs. Attend an upcoming business or developer event near you. We hope to see you there!

Posted by Amir Shevat, Global Startup Outreach Program Manager, Google Developer Relations
Categories: Programming

Geometry Math Library for C++ Game Developers: MathFu

Google Code Blog - Thu, 11/13/2014 - 18:45
Today we're announcing the 1.0 release of MathFu, a cross-platform geometry math library for C++ game developers. MathFu is a C++ math library developed primarily for games focused on simplicity and efficiency.

It provides a suite of vector, matrix and quaternion classes to perform basic geometry suitable for game developers. This functionality can be used to construct geometry for graphics libraries like OpenGL or perform calculations for animation or physics systems.

The library is written in portable C++ with SIMD compiler intrinsics and has been tested on Android, Linux, OS X and Windows.

You can download the latest open source release from our GitHub page. We invite you to contribute to the project and join our discussion list!

By Stewart Miles, Fun Propulsion Labs at Google*

*Fun Propulsion Labs is a team within Google that's dedicated to advancing gaming on Android and other platforms.
Categories: Programming

INVEST “Slider”

Software Requirements Blog - Seilevel.com - Thu, 11/13/2014 - 17:00
In the Scrum view of the world, the Product Owner (PO) has accountability for the Product Backlog.  This includes the responsibility for the Product Backlog items to be clearly expressed, and be in the right order.  I’ve had the opportunity to work with several companies where the PO was located remotely from the Scrum teams […]
Categories: Requirements

The Obstacle Is The Way

Making the Complex Simple - John Sonmez - Thu, 11/13/2014 - 16:00

In this video, I review the book “The Obstacle Is They Way” by Ryan Holiday.

The post The Obstacle Is The Way appeared first on Simple Programmer.

Categories: Programming

Speaking in Australia - YOW! 2014

Coding the Architecture - Simon Brown - Thu, 11/13/2014 - 10:37

For my final trip of the year, I'm heading to Australia at the end of this month for the YOW! 2014 series of conferences. I'll be presenting Agility and the essence of software architecture in Melbourne, Brisbane and Sydney. Plus I'll be running my Simple sketches for diagramming your software architecture workshop in Melbourne and Sydney. I can't wait; see you there!

Categories: Architecture

Focus: Short-term Help

Getting work done is directly related to focus.

Getting work done is directly related to focus.

The discussion of hyper-connectivity and the techniques to combat the downside of hyper-connectivity has convinced me that in many cases we are dancing around the bigger workplace issue of how can you stay focused on delivering real business value in an environment that seems to be designed to promote making incremental progress on lots of projects rather than getting any one of them done. For those that are not steeped in the theory of lean, that translates to making progress on lots of tasks without finishing the bigger project to which the tasks belong. This focus on activity might be an artifact of workplace cultures that have been downsized and are attempting to get more done with less or the management by objective type behaviors that foster generating silo behaviors. Regardless of workplace I have observed this type of behavior different national cultures. For example, in conversations with Brazilian and Indian friends they have told me the same story of having to juggle multiple priorities and finding it difficult to stay focusing. The causes of the problem include: the after effects of downsizing, a belief in multitasking, lack of prioritization or plain poor management. These are important to understand for a long-term solution, however in the short-term, tactics are needed to generate focus in order to get into the flow! A few of the techniques I use or have been shared to help generate focus include:

  • Organize your workspace to avoid distractions – Clutter is not your friend. My desk is a hodgepodge of pictures, magazines waiting to read, piles of paid bills, several monitors, hard drives, microphones and an audio mixer. All sorts of cool and interesting stuff that screams for attention. I don’t do work that requires focus in my office anymore. The dining room table that no one uses provides an austere environment that promotes focus. I go back to my office to play.
  • Prepare to focus – A friend that writes for a living suggested that you have what you need close at hand before you start on a task. In other words, get that cup of coffee, tea or water before putting pen to paper or fingers to keyboard. Preparation includes making sure you laptop is plugged in or has a charge and literally visiting the bathroom upfront.
  • Have a routine – Frameworks like Scrum or Kanban have a very specific, built-in routine. Each project, release, sprint and day begin with a planning exercise. Time management technique like Getting Things Done (GTD) include planning specific next steps as soon as the previous step is completed. In recent Slate Working Podcast titled The “How Does a Cartoonist Work?” Edition, David Plotz interviewed Washington Post cartoonist, Tom Toles. Mr Toles said that he learned early on that routine was required to continually generate creative content. Routine liberated him from have to think deeply about mundane decisions that needed to be made on a day basis, allowing more time to be work on what really delivered value.
  • Plan – A corollary to having a routine. Plan and re-plan as needed. If nothing else, spend the first few minutes of every day planning the day ahead, and then re-plan as “stuff” happens.
  • Share your “rules” – If you work in a team and you are going to try techniques like the 20 minute sprint or the two email rule, let your friends, co-workers and boss know what you are doing. Also consider asking for their support in enforcing the techniques (thanks to Mauricio Aguiar for the addendum).
  • Airplane mode – While listening to an introduction to a speaker at the Brazilian Metricas 2014 conference, the conference chair suggest to the audience that turning their phones on airplane mode was a better choice than setting their phones to silent.  Airplane mode would ensure they were not interrupted so that they could pay proper attention.  Point well made.

In a response to Hyper-connectivity and The Illusion of Progress, Gene Hughson stated “The illusion of importance also applies in that the need for constant connection can be a conceit – “I’m too important to be out of touch, even for a minute”.” That conceit can lead to a reduction in productivity and effectiveness that hurts everyone. Re-focusing on focus requires sacrificing some of the distractions that make us feel that we are at the center of the importance universe (at least for 20 minutes at a time).


Categories: Process Management

Simple sketches for diagramming your software architecture

Coding the Architecture - Simon Brown - Wed, 11/12/2014 - 23:02

If you’re working in an agile software development team at the moment, take a look around at your environment. Whether it’s physical or virtual, there’s likely to be a story wall or Kanban board visualising the work yet to be started, in progress and done. Visualising your software development process is a fantastic way to introduce transparency because anybody can see, at a glance, a high-level snapshot of the current progress.

As an industry, we’ve become adept at visualising our software development process over the past few years – however, it seems we’ve forgotten how to visualise the actual software that we’re building. I’m not just referring to post-project documentation. This also includes communication during the software development process. Agile approaches talk about moving fast, and this requires good communication, but it’s surprising that many teams struggle to effectively communicate the design of their software.

Read more...

Categories: Architecture

【翻訳】マイクロサービス – 分散された大きな泥だんご

Coding the Architecture - Simon Brown - Wed, 11/12/2014 - 21:06

モノリシックがダメだからといって、マイクロサービスが解決策になるわけではない ソフトウェア開発業界は流行に左右されやすいという証拠に、今マイクロサービスが、いたるところで大騒ぎされています。”次の大ブーム”だと思う人もいるでしょう。また、(10年前に”上出来”と見なされたような)大型のSOA、サービス指向アーキテクチャが単に軽量化して進化したものだと捉える人もいるでしょう。私は現在のマイクロサービスアーキテクチャに関しては好意的に見ています。しかし、だからといってこのアーキテクチャは決して万能薬ではありません。言うまでもないことかもしれませんが、多くの人が間違った理由でマイクロサービスに飛び付いているように思えるのです。

Read more...

Categories: Architecture

EyeEm Improves User Engagement through Android Design

Android Developers Blog - Wed, 11/12/2014 - 20:39

By Leticia Lago, Google Play team

EyeEm is a global community for photographers that goes beyond sharing photos with friends: photographers can share tips, take part in missions, and sell their photos. To win more customers, a design that best showcases photos from the community is very important for this Berlin-based company.

With the idea of bringing a beautiful, simple experience to their fast growing base of Android users, the team recently embarked on a redesign of their app. Following the Android design principles, they stripped back the UI and simplified navigation. This allowed them to deliver a more streamlined app experience, along with a clean, crisp design that presents photos beautifully. And it paid off. According to Ramzi Rizk, EyeEm co-founder and CTO, “Our new design helped improve user growth and retention across the board, in every single metric we have.”

In the following video, Rizk and colleague Matias Castello, Product Head of Mobile, talk about their experience applying Android design to their app and the improvements in user engagement it has achieved:


Resources to help you with design

To learn more about how to design your apps for Android devices and achieve great user engagement and retention, be sure to check out these resources:

  • Android Design — all the information you need to understand and implement Android design principles in your app.
  • Design.Bytes — presented by the Google designers who created Material Design and apps, such as the Google I/O 2014 app, these videos provide a fun and informative introduction to Android design.
Join the discussion on

+Android Developers
Categories: Programming

Three Reasons You Probably Don’t Need Multi-Data Center Capabilities

This is a guest post by Nikhil Palekar, Systems Architect, FoundationDB

For many organizations that care a lot about strong consistency and low latency or haven’t already built a fault tolerant application tier on top of their database, adding a multiple data center (MDC) database implementation may create more complexity or unintended consequences than meaningful benefits. Why might that be?

Categories: Architecture