Skip to content

Feed aggregator

The Importance of Right-Sized Epics in SAFe

Agile Product Owner - Mon, 02/27/2017 - 07:14

Alan Shalloway, CEO of NetObjectives, a Scaled Agile Gold partner, is an SPC and a long-time community contributor to SAFe. With over 40 years of experience, Al is an industry thought leader in Lean, Kanban, product portfolio management, SAFe, Scrum and agile design. Al always has unique and insightful observations about software and systems development. Recently, Al and I were collaborating on how to tackle some important SAFe implementation challenges, and I was excited to learn about a new blog he wrote about the importance of right-sized epics in SAFe.

In his blog, Al starts off by recognizing that SAFe stresses the importance of building incrementally, and prioritizing epics according to value, using WSJF.  He reminds us that the essence of WSJF prioritization is to realize the greatest value, over the shortest period of time.

Using WSJF to simply compare epics to determine the order of implementation has great value, but he goes on to say “it’s not enough to compare which epics are most important, it’s critical to discover which parts of an epic should be built, deferring the rest for later.”  After all, he says, “the point of splitting epics is not to deliver less, but rather to deliver the highest value part of the epic and deliver that as soon as possible. And then to discover the next most important part of the epic and deliver that. And so on, as long as there is value to be realized relative to other opportunities.”

You can read the rest of his blog by clicking here.  It contains many other good insights, such as these and more:

  • The importance of the right-sized epics is to realize value quicker.
  • The smaller the epic, the more alignment can be achieved.
  • Split epics to discover the portion with the highest value.
  • Align everyone on completing those right-sized epics first, before going on to the next one.
  • A common approach to splitting epics involves identifying the most important features. Move the focus from “how do we implement this feature” to “what part of the epic will enable us to realize business value quicker.”

I hope you find this blog as interesting and useful as I did.

Always be SAFe,

Richard Knaster and the SAFe Framework team
@richardknaster

Categories: Blogs

Fixing “HNS failed with error : Unspecified error” on docker-compose for Windows

Xebia Blog - Mon, 02/27/2017 - 01:44

The past few days I worked quite a lot with docker-compose on my windows machine and after something strange happened to my machine that crashed it, I was not able to start any containers anymore that had connectivity over the network with each other. Every time I used the command-line docker-compose up, I would get […]

The post Fixing “HNS failed with error : Unspecified error” on docker-compose for Windows appeared first on Xebia Blog.

Categories: Companies

Virtual Workshops Registration Open

Johanna Rothman - Sun, 02/26/2017 - 19:56

I offer three online workshops for your writing and product ownership pleasure. All three are open for registration.

Any questions? Email me or post a comment. I would love to work with you.

Categories: Blogs

Azure Hidden Gems: Resource Policies

Xebia Blog - Sun, 02/26/2017 - 17:30

Today I want to show a really useful Azure feature to help you with the governance of your Azure Subscriptions: Azure Resource Policies: Resource policies enable you to establish conventions for resources in your organization. By defining conventions, you can control costs and more easily manage your resources. For example, you can specify that only […]

The post Azure Hidden Gems: Resource Policies appeared first on Xebia Blog.

Categories: Companies

Reflecting on the Tech Lead Skills for Developers Course in Brazil

thekua.com@work - Sun, 02/26/2017 - 16:33

Earlier this month, I visited our Brazilian offices to run some internal training, called Tech Lead Skills for Developers. The trip felt a bit full circle as I had visited Brazil several years ago for the same reason and needed to develop the material. Instead of the handful of people I coached, I ran two full classes with a mix of people currently playing the Tech Lead role and those who might be stepping into the role.

The course I run uses a mix of training styles (short presentations, lots of time for story sharing, discussions, interactive exercises, brainstorm and lots of time for question time). In general I’m really happy with the overall result with a good balance of covering lots of material, making it personalised and relevant, and giving people an opportunity to practice, gather feedback and have a go at applying it. The feedback for the course was quite consistent with those in the past, telling me that the balance was just about right.

One of the great opportunities I have had, running this course in different places is seeing some of the cultural implications and differences between continents. I learned, for example, that Brazil (traditionally) has a higher Power Distance Index (PDI on the Hofstede Dimensions), which means that, at least compared to the United Kingdom or America, authority is viewed a bit more strictly. In practice, this meant that a lot of the developers, working in more collaborative environments seemed to almost take an extreme anti-leadership position, where any mark of authority was viewed poorly, or that there was a reluctance to be seen taking on a title.

I also discovered that the word delegate in Portuguese had a negative association. As we discussed how effective leaders scale themselves through effective delegation, it was almost interpreted as a manager telling people to take care of the bad tasks – which, of course, wasn’t the intent! In the end, I tried to express effective delegation as a way of ensuring that all important responsibilities were being taken care of.

I am running this course again later this year in both Thailand and Singapore and look forward to seeing some more of the cultural differences that emerge during the discussions.

Categories: Blogs

Self-Alignment in Organisational Design

Agile Thinks and Things - Oana Juncu - Sat, 02/25/2017 - 21:16
from torbenrick.euThe 1st step to organisational change is the abiliy of leaders to align their actions with their own honest intentions. Often, the installed culture they are part of don’t let them see the misalignment between their true intentions and how they are responding in day-to-day decision making. Narrative theory says  all story starts with heroe's tension between the status quo and her aspirations. One day, a trigger event gets the story going: the hero decides to leave the status quo. Organisation's Agile and the like transformation stories follow very much the same path. People (leaders, teams, etc.) decide to work differently. We want a better place of work , so that work becomes inspiring. We want a working place, where we are proud of what we deliver to our delighted customers. These wishes are genuine. When they meet organisation's current eco-system and culture, unpercieved misalignment between intentions and actions sneaks in.  From Reason To Purpose The trigger of any story, including a new organisational design one, is its "why".  "Why" question is time related. The answer is depended on how the question is connected to the "now" moment. It  can head both ways: it may search an answer backward to the root reasons of the tension:"Why the current status quo is not for me/us?" AND it may aim forward to the purpose of the story :"Why (what for) should I/we change the status quo?"
I think both questions are valuable as long as they are loaded with good will, and answers provided helps people in the room (well, I mean organisation). What is the answer has its importance, but what is the most important is remembering to ask the question. To all the people in the room ( well, I mean organisation). If you are tempted to ask it only in some workshops with selected managers and a bunch of consultants, resist! If ever you didn't notice it yet, at this moment, I'm giving you the trivial advice, you've  went through in another billion of blogs: "start with why".
I hava had some very interesting conversations Sylvaine Pascual , who's a professional coach, and  says that we have different needs, therefore for each of us one of the questions might be more important : some people need to know the "why" to move forward, but others need the "what", and others the "how". She says that saying that "why" is the most important is considering only the needs of the "why" people. I'm absolutely fascinated by her approach, because it is inclusive, supports diversity and allows us to step-down from  main stream thinking.
Nevertheless, I still recommend to start any transformation/new design of organisation... initiative with the why question.  Regardless of our personal needs,  making gathering some insights on the "purpose of (our organisation) life" is rich.  Most important, every story starts with "why the hero has stepped into this particular story".  Regardless of our personal needs,  our brain is story wired. We need a story to make sense of anything.
Culture In Organisations' Trenches 
 We start with "why", we acknowledge a dream, we state a purpose. But wait, there is more! We may invest a lot of time to create or even co-create the visible part of a common purpose and fill the room with energy and hope. Unfortunately, if  we have little courage to dive and inspect the invisible rules, beliefs and underling assumptions, the vision, strategy and structures are airy. Or they turn into dust.  If our collaboratively co-created initiatives are not aligned with the invisible culture, more inspiring our initiatives will be, greater the delusion when they will  last no longer that the time of an workshop or a pilote project. Once again, invisible culture have swalllowed  strategy along with our "change forum" breakfast.
Ok, what can be done to avoid that the only transformation that happens is that of delusion turning in perpetual resignation? The tricky thing about invisible culture is that it is of course ... invisible.  You may notice that there is no vision accuracy, chemistry or microscopic technology that will help us here. So what does this  invisible really mean? It means filters of or mind.  Our brain makes invisible, things that it decided it already knows, and you don't have to bother about any more.  Our brain thrives for learning. It's its main activity. As it is VERY smart, it also optimise learning. So what you've "learned" becomes a habit. Or a belief. It becomes "the way we do things here". It becomes blind to our awareness. It became "invisible culture".
What's the magic potion we can throw on invisible culture and make it glitter?  Question everything. I'm giving just some examples, you can feel free to find a lot more that fit your eco-system:
Why are you doing it? Who will benefit from it? What benefit will that be? How did something improved because you've done? If you don't think useful to do it, why do you do it?
And one more thing: regardless of the questions you ask, if the answer is "it's just the way we do thing here", BINGO! You've hit one element of invisible culture. While looking at it, how do you like it?

System Thinking To Help Leaders Self-alignmentNowadays, many transformation and change are supported or initiated by organisational leaders. They are visionary people want want to make organisations they lead the best place to be for the  people who are part of.  I'm a fan of the Principe of "retrospectives prime directive" and rule believe that anyone does her best. Nevertheless, even if leaders are very supportive to create a learning collaborative organisation, it might end-up in preoccupied confusion. Why does that happen?
Noooo, it's NOT because people need, at the end of the day to be told what to do. This belief, by the way a crunchy piece of "invisible culture".
There are a couple of things leaders are often not aware of. One is they are part of the transformation they make: they are participants, not only "advocates".  The second is that culture is "invisible" to them also. They are part of it.
The invisible culture is how an organisational system reacts when we are in the system.
I believe one of the reasons of failure of  organisational change are leader's misalignment with themselves, as they reflect well the culture iceberg. I also believe they are pretty unaware of this. I believe acquiring awareness about that I not easy, and I believe the best help comes from system thinking.   To overcome  the unwise side of "the invisible culture", leaders may try to be system listeners, who observe their organisation at their limits without judgment.
Organisations need time to change sustainably and resiliently.
"Invisible Culture" always have all the time in the world. It's the system itself, it's stable. Leader who will successfully contribute to change the organisation,  have time. The time belongs to us. Only ourselves decide what to do with it.
"Invisible culture" is the stable system. A world who goes fast does not make any sense to it. To change isn a system that pushes back any change, people need a safe place to  experiment those changes.  Leaders will successfully contribute to change the system will simply take part of the experiments. And get credit of their outcome, just like any other participant: It went well.It went wrong. We have learned. We are continuing to experiment.

Invisible is also Wonderful  We often address the "Invisible Culture" as something evil to be fought with. While, there are surely some bits we, as part of an organisation, will not be proud to look at, if a mirror of truth will be shown to us. "Invisible" is a word that gets our best friend, our brain ( yep, once again!) VEEERY preoccupied, because unknown means  danger around the corner!
But revealing something invisible is also a moment of grace. Revealing what makes us great together, what actually keeps me coming to work each day have a long lasting wow effect. Just like an Aurora Borealis in a frozen landscape, our invisible culture has its breathtaking characteristics.
WOW!from Travelminds.frRelated Posts 
Manage like A PirateFrom Listening To AwarenessThe Cost Of Fear Why I Am Not A Change Agent
The answer to Why is Ahead 


Categories: Blogs

Re-Thinking “Eliminate Waste” and “Last Responsible Moment”

NetObjectives - Sat, 02/25/2017 - 15:08
Re-Thinking “Eliminate Waste” A common refrain in Lean-Manufacturing is “eliminate waste.”  However, this can be very misleading when applied to software development (product or IT).  There are two main reasons for this.  The first is that manufacturing involves trying to refine a single repeatable process.  The other is that because manufacturing exists in the physical world (whereas software...

[[ This is a content summary only. Visit my website for full links, other content, and more! ]]
Categories: Companies

Who wants to try a Personal Daily Scrum?

Scrum Breakfast - Sat, 02/25/2017 - 11:25
Thanks to My Priorities Map, I know what I want to accomplish every week, but it's still a challenge to focus each day. My inbox, twitter, linked in, facebook, reddit, google news and clowns and criminals in high office all offer huge potential distraction, enticing me to waste the day away. Not to mention there are things I like to do, and things I don't.

Yesterday I tried something new. I changed how I do my "daily scrum". In my calendar, I have an appointment with myself, every day except Sunday. Here's the agenda:

  1. What did you accomplish yesterday? (Give yourself a high-five!)
  2. Of all the things you want to you get this week, what is the most important thing to accomplish today?
  3. Are you having difficulties doing this? If so, who can help?
Yesterday, it really helped! So I have set up my calendar to send me an email with these three questions every morning at 8:30 for the next week. A friendly reminder to celebrate and focus. I am going to try it for a week and I have asked a colleague to do the same. We want to see if this helps!
Do you think this might help you? If so let's try it together. Drop me a line here (my contact form), and I'll let you know how you can participate! 
Categories: Blogs

Highlight Risks When Reporting Defects

Johanna Rothman - Fri, 02/24/2017 - 19:40

A reader asked me this question:

“How do I report on the 1000 (or so) defects in our system? I have 10 minutes on the status call.”

If you are working on a legacy application where the team was not able—for any number of reasons—to maintain technical excellence, you might have a problem like this. So many defects, so little time to discuss.

Let’s take the status-reporting problem. You could report the defect trends: number open last week, number closed and number remaining. See Figure 8 in Are We There Yet? That chart (and most of those on the page) are for the project team, not management.

When managers want to know about defect status, they actually want the answers to these questions, the impact of the defects:

  • Will this problem affect our customers’ perception of the product, enough so they would not buy or recommend this product?
  • Will this problem affect our ability to gain revenue?
  • Will this problem affect our ability to retain or attract customers?

If you can frame the problems as answers to these questions, you can provide a reasonable status in 10 minutes (or less).

Here’s how this might work in four scenarios:

Scenario 1: You have hundreds of typos, inconsistent-looking screens, and general sloppiness. You think that the team should fix all of these, and it might even take a couple of weeks to do so. You say something like this:

“We have x number of problems, none of which is a real issue by itself. However, when we take them all together, the customers appear concerned by our inconsistent look-and-feel. Can we live with this? Maybe. I am worried about customers willing to be reference accounts or even having them look for another alternative.”

Scenario 2: You have two horrible problems, and they occur rarely. The consequence of occurrence is total loss of customer data. You don’t think you should let the product near the customers with these problems, even if they are a rare occurrence. Here’s what you say:

“We have 2 big problems, aside from a number of small ones. I’m going to focus on problems 1 and 2. If a customer encounters either of these, they will lose their data. We can’t recover the data. They will be quite angry. The possible outcomes are revenue loss from these kinds of customers, and worse, possible reviews that tell other people about our problems.”

Scenario 3: You and your folks are transitioning to agile. You have build and test automation debt, as in the build takes hours and you don’t have enough test automation. You are worried that you haven’t tested enough, even though the team marked everything as done. You might try something like this:

“We have unknown risks in these areas (the places where you have insufficient test automation). Yes, we marked features in these areas as done, and we don’t know what we don’t know. Unknown risks have a habit of creating problems. (Remind them of the last time this occurred.) I recommend we release this as a beta release and spend the next two weeks working on our backlog of test automation and build time reduction so we know faster what’s really going on. That way, we don’t have a problem with customer acquisition or retention. And, we don’t have potential customer problems with data loss and therefore losing that customer.”

Scenario 4: Your team is not getting to done on features. Maybe that’s because you have staggered iterations, or your team depends on other people or teams to finish features.  In that case, you might say this:

“Although we are finishing our work, we can’t finish the features because we don’t have the necessary people integrated into our team. (Say who those people are.) I’m not blaming them—I am sure they want to finish this work, also. However, I am worried about the risk of release without the testing being done (or whatever the risk is that you see). I am worried we will lose customers and therefore revenue. I’m worried we won’t get reference accounts. I’m worried we will miss our release date and lose potential revenue.”

In each of these scenarios, you’ve done your job. You explained the impact of the problems. It’s up to your managers to decide what to do.

When you want to influence people—which is what you’re doing with a project status report—you explain how the problem affects them. You offer possibilities that you can then discuss.

If you want to learn how to do this, especially in the context of an agile transformation, please join us at the Influential Agile Leader.

Categories: Blogs

Going Beyond WIP Limits for Ever-Higher Organizational Performance

You’ve probably heard the big news: multitasking is a myth. And yet, virtually everyone is guilty of...

The post Going Beyond WIP Limits for Ever-Higher Organizational Performance appeared first on Blog | LeanKit.

Categories: Companies

Big Data for Little Problems

Agile Complexification Inverter - Fri, 02/24/2017 - 18:18
Big Data for Little Problems

-OR- What happens when the customer has better data about the service than the provider and has better networking, better press coverage, better clout, better market reach and reputations?


(Feb 23) My good looking wife just spent 2 hours trying to straighten out Frontier's billing machine... it's not easy.  The amazing thing I observed for my recliner while sipping an adult beverage was her influencing techniques.  Now another amazingly disconsernation (not a word) is that Frontier has some awesome support people.  But oh-my-god do they have a tough job.  It's the system that has failed.  And they have to figure out how to make some legacy piece-of-crap work.
But it's not going to lead to happy satisfied customers (testify).

Her father, Jim, moved into the home with us in December, he loves Western movies, and is an encyclopedia of knowledge better than IMDB.  So we called up Frontier (our FiOS provider for 6 years) and added cable and a voice line for Jim.  We cut the cable some years ago.

That's when the troubles began, December 28th.  A techie came out to the house and worked 6 hours, all the while on a phone line to his partner back at the home office (I now understand why it required this constant contact to install the new system).  When he left we had higher speed internet (from their 50Mbpm to 150Mbpm service), cable channels - Stars Encore Western premium channel, and a voice line (old school) phone tied to a wall socket.  Most every thing seemed good.

But the ability to login to their Frontier web site and get a TV guide didn't function, as well as some other issues of seeing our account info online.  We were told to wait a few days as the data took a while to move through their systems (in Frontier's universe data does NOT move at the speed of light).

I noticed that if one tries to take their Frontier problem to Twitter, @AskFrontier is an effective defensive machine that kicks in to appease the person.  They cannot do anything except type into a twitter post, and escalate your issue to a thing referred to as "an Account Manager".  I tried that technique and received a call one week later - yes over 6 days to address an issue raised on a social media platform know for instant messaging.


@davidakoontz If you would like an Account Manager to assist you, please send us a DM. ^KLB— Ask Frontier (@AskFrontier) February 24, 2017 Once burned - twice shy... I didn't fall for this in February.

We found out last night that while we have been paying $193 for a basic plan and the Stars Western channel - that Frontier would be happy to offer us ALL their premium channels for $198.  Something that the competition Spectrum is quoting online visible with detail for about $150ish (yes I'm writing this from memory of my influencing wife's exasperation attempting to get the support person to recognize her point of view at being fleeced by Frontier).  Frontier's business model includes an interestingly complex system of quoting the cost for a service.  They encourage one to call in to talk to their pleasant but hamstrung  sells reps.  Who can only read from a screen that may change any day now on the pricing that appears to be very time dependent (you never know if tomorrow they will have a sell and better price for what you will be receiving everyday for years to come).  Now the prices and "packages" you agree to buy will not be the names and labels on your bill.  Those will be completely different and if you can find a subset of items on your bill that sum up to the $198 you thought you had agreed to - well you should work for the IRS.

After that 2+ hour conversation with a great Frontier support specialist, my very intelligent wife influence her way to some deep refunds, and what we hope will be all the movie channels that Jim could watch in a week.  Yet after 2 solid months of working with Frontier's business model - we are done.  We plan to see what the next bill shows (it's a mystery)... and when the dust settles switch to Spectrum.

The phone logs for ONE month - let the Record show:

Frontier Customer Support Line is 800-921-8101

779 minutes of my life... give or take a migraine

Jan 25, 2017
     6:45pm Outgoing Call 2 hours 25 minutes
     1:53pm Incoming Call 1 minute
     1:28pm Outgoing Call  18 minutes
     1:16pm Outgoing Call.   9 minutes
Jan 24, 2017
     10:39am Missed Call
       7:11am Outgoing Call  54 minutes
Jan 23, 2017
     4:59 pm Outgoing Call 2 hours 10 minutes

Jan 22, 2017
     11:00am. Outgoing Call. 2 hours 22 minutes
     10:34am  Outgoing Call  22 minutes

Jan 22, 2017
     10:08am Missed Call
     10:06am Missed Call
     10:00am Missed Call
      9:59am Missed Call

Jan 21, 2017 Saturday
    8:19pm Outgoing Call. 37 minutes

Jan 16, 2017
    7:00 pm Outgoing Call. 1 hour 17 minutes
    6:38pm Outgoing Call. 58 seconds
    3:59pm Outgoing Call. 40 minutes

Dec 28, 2016
     7:41am Outgoing Call  31 minutes

Dec 27, 2016
     4:09pm  Incoming Call. 43 seconds

Dec 24, 2016
     11:18am. Outgoing Call. 14 minutes

Oh - why oh why - did Steve Jobs died before he fixed the living room TV problem?  There is no GOD.  Can an 85 year old man learn to use this complex thing call a cable box remote from his recliner and almost infinite time?
 My experiences say NO, Freaking WAY!  Hell, I can't figure this complexifictor out and I've got 30 years in the computer industry making these complexifictors for companies that say the want customer satisfaction.

Categories: Blogs

Greek Tragedy in Continuous Integration

NetObjectives - Fri, 02/24/2017 - 14:21
A business leader approached my colleague and complained, "I invested $50 million last year in new testing environments for Continuous Integration - It was a waste, we are hardly getting any benefit from it." How is it that an organization could establish a solid beginning for CI, investing in the environments, tooling and test automation and yet get little benefit. Sadly, we've seen this movie...

[[ This is a content summary only. Visit my website for full links, other content, and more! ]]
Categories: Companies

How can the individuals lead change?

Manage Well - Tathagat Varma - Thu, 02/23/2017 - 10:11
How does an individual contribute to change? While everyone expects them to simply participate in the organizational change, we mostly fail to recognize why they would be motivated to participate and how can we influence them appropriately to see the change as something that helps their own careers?
Categories: Blogs

Links for 2017-02-22 [del.icio.us]

NetObjectives - Thu, 02/23/2017 - 10:00
Categories: Companies

A Read-Eval-Print Loop for Ansible

One must have tool for any language is the availability of a REPL to quickly check out the syntax of an API or test out an idea really quick. Ansible is no different, especially since sometimes you might have a very long running playbook and it may be difficult to wait for it to run before discovering you had the syntax for something off at the end.

Luckily, ansible comes with the lesser known ansible-console command. You can use this to execute any one of the modules included in ansible to roughly test something out and can run it against a local or remote host.

vagrant@monitor:~$ ansible-console localhost
[WARNING]: Host file not found: /etc/ansible/hosts
[WARNING]: provided hosts list is empty, only localhost is available
Welcome to the ansible console.
Type help or ? to list commands.
vagrant@localhost (1)[f:5]$ setup
# very long json of facts omitted
vagrant@localhost (1)[f:5]$ debug msg=”distribution version reversed is {{ ansible_distribution_version | reverse }}”
localhost | SUCCESS => {
“msg”: “distribution version reversed is 40.41”
}

You can also run ad-hoc commands on the machine through it as well.

vagrant@localhost (1)[f:5]$ ls /tmp
localhost | SUCCESS | rc=0 >>
ansible_busvWC
vagrant-ansible
vagrant-shell

This also doubles as an easy cheap REPL for jinja2 as well if you need to test some jinja2 syntax out.

A Read-Eval-Print Loop for Ansible was originally published in James Carr on Medium, where people are continuing the conversation by highlighting and responding to this story.

Categories: Blogs

Neo4j: How do null values even work?

Mark Needham - Thu, 02/23/2017 - 01:28

Every now and then I find myself wanting to import a CSV file into Neo4j and I always get confused with how to handle the various null values that can lurk within.

Let’s start with an example that doesn’t have a CSV file in sight. Consider the following list and my attempt to only return null values:

WITH [null, "null", "", "Mark"] AS values
UNWIND values AS value
WITH value WHERE value = null
RETURN value

(no changes, no records)

Hmm that’s weird. I’d have expected that at least keep the first value in the collection. What about if we do the inverse?

WITH [null, "null", "", "Mark"] AS values
UNWIND values AS value
WITH value WHERE value <> null
RETURN value

(no changes, no records)

Still nothing! Let’s try returning the output of our comparisons rather than filtering rows:

WITH [null, "null", "", "Mark"] AS values
UNWIND values AS value
RETURN value = null AS outcome

╒═══════╤═════════╕
│"value"│"outcome"│
╞═══════╪═════════╡
│null   │null     │
├───────┼─────────┤
│"null" │null     │
├───────┼─────────┤
│""     │null     │
├───────┼─────────┤
│"Mark" │null     │
└───────┴─────────┘

Ok so that isn’t what we expected. Everything has an ‘outcome’ of ‘null’! What about if we want to check whether the value is the string “Mark”?

WITH [null, "null", "", "Mark"] AS values
UNWIND values AS value
RETURN value = "Mark" AS outcome

╒═══════╤═════════╕
│"value"│"outcome"│
╞═══════╪═════════╡
│null   │null     │
├───────┼─────────┤
│"null" │false    │
├───────┼─────────┤
│""     │false    │
├───────┼─────────┤
│"Mark" │true     │
└───────┴─────────┘

From executing this query we learn that if one side of a comparison is null then the return value is always going to be null.

So how do we exclude a row if it’s null?

It turns out we have to use the ‘is’ keyword rather than using the equality operator. Let’s see what that looks like:

WITH [null, "null", "", "Mark"] AS values
UNWIND values AS value
WITH value WHERE value is null
RETURN value

╒═══════╕
│"value"│
╞═══════╡
│null   │
└───────┘

And the positive case:

WITH [null, "null", "", "Mark"] AS values
UNWIND values AS value
WITH value WHERE value is not null
RETURN value

╒═══════╕
│"value"│
╞═══════╡
│"null" │
├───────┤
│""     │
├───────┤
│"Mark" │
└───────┘

What if we want to get rid of empty strings?

WITH [null, "null", "", "Mark"] AS values
UNWIND values AS value
WITH value WHERE value <> ""
RETURN value

╒═══════╕
│"value"│
╞═══════╡
│"null" │
├───────┤
│"Mark" │
└───────┘

Interestingly that also gets rid of the null value which I hadn’t expected. But if we look for values matching the empty string:

WITH [null, "null", "", "Mark"] AS values
UNWIND values AS value
WITH value WHERE value = ""
RETURN value

╒═══════╕
│"value"│
╞═══════╡
│""     │
└───────┘

It’s not there either! Hmm what’s going on here:

WITH [null, "null", "", "Mark"] AS values
UNWIND values AS value
RETURN value, value = "" AS isEmpty, value <> "" AS isNotEmpty

╒═══════╤═════════╤════════════╕
│"value"│"isEmpty"│"isNotEmpty"│
╞═══════╪═════════╪════════════╡
│null   │null     │null        │
├───────┼─────────┼────────────┤
│"null" │false    │true        │
├───────┼─────────┼────────────┤
│""     │true     │false       │
├───────┼─────────┼────────────┤
│"Mark" │false    │true        │
└───────┴─────────┴────────────┘

null values seem to get filtered out for every type of equality match unless we explicitly check that a value ‘is null’.

So how do we use this knowledge when we’re parsing CSV files using Neo4j’s LOAD CSV tool?

Let’s say we have a CSV file that looks like this:

$ cat nulls.csv
name,company
"Mark",
"Michael",""
"Will",null
"Ryan","Neo4j"

So none of the first three rows have a value for ‘company’. I don’t have any value at all, Michael has an empty string, and Will has a null value. Let’s see how LOAD CSV interprets this:

load csv with headers from "file:///nulls.csv" AS row
RETURN row

╒═════════════════════════════════╕
│"row"                            │
╞═════════════════════════════════╡
│{"name":"Mark","company":null}   │
├─────────────────────────────────┤
│{"name":"Michael","company":""}  │
├─────────────────────────────────┤
│{"name":"Will","company":"null"} │
├─────────────────────────────────┤
│{"name":"Ryan","company":"Neo4j"}│
└─────────────────────────────────┘

We’ve got the full sweep of all the combinations from above. We’d like to create a Person node for each row but only create a Company node and associated ‘WORKS_FOR’ relationshp if an actual company is defined – we don’t want to create a null company.

So we only want to create a company node and ‘WORKS_FOR’ relationship for the Ryan row.

The following query does the trick:

load csv with headers from "file:///nulls.csv" AS row
MERGE (p:Person {name: row.name})
WITH p, row
WHERE row.company <> "" AND row.company <> "null"
MERGE (c:Company {name: row.company})
MERGE (p)-[:WORKS_FOR]->(c)

Added 5 labels, created 5 nodes, set 5 properties, created 1 relationship, statement completed in 117 ms.

And if we visualise what’s been created:

Graph  15

Perfect. Perhaps this behaviour is obvious but it always trips me up so hopefully it’ll be useful to someone else as well!

There’s also a section on the Neo4j developer pages describing even more null scenarios that’s worth checking out.

The post Neo4j: How do null values even work? appeared first on Mark Needham.

Categories: Blogs

14 extensions that can enrich your daily VSTS usage

Xebia Blog - Wed, 02/22/2017 - 23:54

Using VSTS on a daily basis I find that I add a regular list of VSTS Marketplace extensions to my VSTS environment. I find them convenient and helping me to get the most out of VSTS. The list below is primarily focussed on the Work and Code area and not so much on the Build […]

The post 14 extensions that can enrich your daily VSTS usage appeared first on Xebia Blog.

Categories: Companies

The Eupsychian Manager

TV Agile - Wed, 02/22/2017 - 17:24
The word eupsychian (pronounced ‘you-sigh-key-un’) was coined by Abraham Maslow. It comes from ‘eu’ meaning good (e.g. euphoria) and ‘psyche’ meaning mind or soul. Eupsychian means ‘having a good mind/soul’ or ‘towards a good mind/soul’. Maslow’s research into organisations in the 1960s showed that productivity is directly linked to the level of safety and self-actualisation […]
Categories: Blogs

Continuous Improvement: Clarity Before Speed

Scrum Expert - Wed, 02/22/2017 - 15:45
Learn which building blocks help you to create the culture of systematic improvement in a software development organization and a Scrum team. This talk discusses how the Deming cycle –...

[[ This is a content summary only. Visit my website for full links, other content, and more! ]]
Categories: Communities

New features in Xcode 8.2 Simulator

Xebia Blog - Wed, 02/22/2017 - 15:01

In the release notes of Xcode 8.2, Apple introduced features for their new version of Xcode. In this blog I will explain how to use these new features. Read more

The post New features in Xcode 8.2 Simulator appeared first on Xebia Blog.

Categories: Companies

Knowledge Sharing


SpiraTeam is a agile application lifecycle management (ALM) system designed specifically for methodologies such as scrum, XP and Kanban.