Dedication to general fuzz

Posted Posted in Ich

The impact is so big I just had to write about it immediately. For a long long long time I am facing difficulties to find NEW music I really like.

There are some exceptions like soma.fm for example. The issue here is that unfortunately they too have limited selection and after some time one know their repertoire and artists by heart. When it happens, an era of repetition and mixing begins until…

I was watching some video on youtube.com with a background music that absolutely stunned me. Thanks to lord, some dude wrote it’s title and I went searching for it… boy I was surprised when I landed in internet site of original author of the song I heard… he offers ALL of his music FREE OF CHARGE to download directly from his site!!! That’s right, check out: http://www.generalfuzz.net/tunes.php

By the virtue of luck I browsed to the bio and blog of the general fuzz and besides his brilliant music I got an answer to why I have those difficulties finding music I like…

“Unsatisfied with the popular consensus that electronic music = techno…”

This and other thoughts of the general brought me better understanding of myself. Realizing that the most important thing in the music I listen is the music itself! It has to be rich with rhythm, sources, harmony and variation and it has to be about music.

I realized that I like instrumental music because voice overruns music with additional and different layer that has to be interpreted – the lyrics. Techno lacks variation, jazz – sources, modern jazz – oh so often groove or even rhythm. Acid jazz comes very close to what I really like, but when I listen to acid jazz I miss downtempo. Drum ‘n’ Bass although offers super rhythm, often lacks variation or groove… well I could go on and on with the list of “likes and dislikes” but the point is – music of general fuzz and his mindset matches to that of mine. When I listen to it sometimes I get the feeling that I have heard it already… in my dreams

Composite UI Application Block: Modules explained

Posted Posted in Software Development

I hope my article will at least add to common understanding on this otherwise so poorly covered theme.

Last week I was crunching module loading for a product of ours requiring dynamically replaceable customer specific (business) module. There are dozens of poor variations on GPSModule Quick Start from original Microsoft Composite UI Application Block package all poorly constructed and even poorer explained. The answers I was looking for I found in this excellent blog of Rich Newman where I found out how exactly does module initialization work.

Generally you do three things

1. Move relevant code into separate project (that will later be compiled into separate assembly);
2. Implement class specializing Microsoft.Practices.CompositeUI.ModuleInit. This class will provide entry point for module loading where you will do initialization, loading and binding events for example;
3. Add to shell application ProfileCatalog.xml that will define what modules to load

Simple huh? Well not really. There are number of dodgy things about loading modules which are not related to module loading itself but rather to how you properly initialize business related code within module. In particular I’d like to touch two themes…

I will use this code as an example:

public class CustomerListModuleInit : ModuleInit
{
private WorkItem parentWorkItem;

[ServiceDependency]
public WorkItem ParentWorkItem
{
set { parentWorkItem = value; }
}
[EventSubscription(“event://MyApplication/Administration/DisplayCustomerList”)]
public void DisplayCustomerList(object sender, EventArgs e)
{
if (parentWorkItem.RootWorkItem is MyApplicationWorkItem)
{
WorkItem customerListWorkITem = parentWorkItem.RootWorkItem.WorkItems
.AddNew<CustomerListWorkItem>();
List<IPresenter> presenters = customerListWorkItem.GetPresenters();
presenters.ForEach(delegate(IPresenter presenter)
{
customerListWorkItem.Services.Get<IWorkspaceLocatorService>();
IWorkspace wks = locator.FindContainingWorkspace(customerListWorkITem, presenter.View);
if (wks != null) wks.Show(presenter.View);
});
}
}
}

Access to Workitem during module initialization

Because property ParentWorkItem has a [ServiceDependency] attribute it is clear that it will be injected by means of service locator. But the true question is – what ParentWorkItem? The answer is that the WorkItem that is passed is the WorkItem that caused the module to be loaded. We can clearly see it in LoadModules() method of CabApplication that in turn is is called directlly in Run() method of CabApplication.

private void LoadModules()
{
IModuleLoaderService loader = rootWorkItem.Services.Get<IModuleLoaderService>(true);
IModuleEnumerator modEnumerator = rootWorkItem.Services.Get<IModuleEnumerator>(true);
if (modEnumerator != null)
loader.Load(rootWorkItem, modEnumerator.EnumerateModules()); // ROOTWORKITEM !!!
}

As you can see first parameter of Load() method of loader is rootWorkItem in default application module loading algorithm. The reason why property is still called ParentWorkItem and not RootWorkItem is that in some cases if you do hocus pocus you could delegate loading of particular modules to any workitem. So to keep code error free in the class specializing ModuleInit I used parentWorkItem.RootWorkItem notation. This allows me to ensure that I always have reference to the RootWorkItem even in the cases where ParentWorkItem injected by service locator actually is one of child work items.

Event subscriptions

Another interesting thing about module loading is the way one can wire-up events. I mean, in some typical application of yours you might have shell application with some basic (or if you like cross-cutting) stuff in it such as user administration, master layouts, main menu or main page, etc. The actual business logic of your application might be implemented in different modules such as customer management, product catalogue and invoicing. Now, let us assume you would like to move your customer management into a separate module. You do that by performing three steps I described above. After you’ve done this it is time to wire-up your freshly created module into main application. Typically, you’d have for example main menu item for showing customer list. When user clicks on this main menu an event is fired. For example like this:

[EventPublication("event://MyApplication/Administration/DisplayCustomerList")]
public event EventHandler<EventArgs> DisplayCustomerList;

Now, you would like to handle this event in your customer management module and upon firing of event, create customer list work item that would do the job of showing application user that list of customers.

It took me some time to understand where to actually place event handler (or in terms of CAB – EventSubscription) that will handle published event, create customer list work item and run it. The way I did it is shown in code of CustomerListModuleInit class above:

public class CustomerListModuleInit : ModuleInit
{
...
[EventSubscription("event://MyApplication/Administration/DisplayCustomerList")]
public void DisplayCustomerList(object sender, EventArgs e)
...
}

Why like this? Well, for starters EventSubscription method must be in a class that is instantiated when event is fired. RootWorkItem itself can not have this method since it has no reference to CustomerListWorkItem which is located in a module. To instantiate CustomerListWorkItem upon module loading makes no sense as well, since there is no guarantee that application user will use it at all in current work session. Thus the only logical place that remains is – CustomerListModuleInit that is instantiated unconditionally and per definition should contain code that ensures module wire-up with main application. As soon as I realized this, the implementation became obvious 🙂

FormsAuthentication HashPasswordForStoringInConfigFile in Windows.Forms

Posted 2 CommentsPosted in Software Development

Lord Jesus in the heaven! I refuse to reference System.Web in my Windows.Forms application… period! So i went to look for an alternative to HashPasswordForStoringInConfigFile. You need this if for example:

– in your win forms client you want to use same DB you are using in your web application;
– you use secure web-services which should authenticate user of your win forms client against her identity in DB of your web application;

Pretty much common scenarios, ey? I’ve still got sweaty armpits and bleeding nose from all the crunching through bazillions of forums and blogs. With no success.

Now, after two hours of putting bits and bytes together here’s WORKING version of the method in c# that will generate identical hash with that of HashPasswordForStoringInConfigFile from plain password stored in string:

Don’t get fooled by simplicity of this method, because it wasn’t simple at all to make it work. Here are pitfalls I falled into:

– (new ASCIIEncoding()).GetBytes(password); <- do NOT use unicode encoding here no matter that your password contains unicode characters cause that’s how FormsAuthentication method does it;
– encryptedPassword += b.ToString(“X2”); <- forget “2” in that format string and resulting hash will be ALMOST identical but not EXACTLY since FormsAuthentication generates with leading zero!
– no, the loop does not the same thing Convert.ToBase64String does, don’t even ask!

Knowledge in software development

Posted Leave a commentPosted in Software Engineering

Part of this interview “Ivar Jacobson on UML, MDA, and the future of methodologies” where Mr Jacobson comments on main differences between software development methods based on explicit knowledge and those based on tacit knowledge lead me to thoughts I am willing to express in this post on knowledge within software development (methodology).

I am not going to elaborate on definitions here since there’s an excellent article “Convert tacit knowledge into explicit knowledge to ensure better application development” describing differences and co-relations between tacit and explicit knowledge. Please check both, interview and article before reading this since you will need some preliminary understanding about subject.

So, considering above thoughts of the Mr Jacobson and considering argument of Mr Kuhn on conversion process I must say that statement of Mr Jacobson on shortcomings of methodologies based on tacit knowledge was incomplete.

To quote Mr Jacobson on problems with methods based on tacit knowledge – “how do you teach that?” “how do you know what it is?” “(in a team with tacit knowledge) how do you get them to agree on what to do?” “how can you possibly grow that knowledge?”

Well, I have actually answers to those hypothetical questions:

“How do you teach that?” – well you don’t that’s the whole point you show and then show again until other people get the point
“how do you know what it is?” – again, you don’t but that’s OK since you don’t have to articulate it, just show
“(in a team with tacit knowledge) how do you get them to agree on what to do?” – to have a consensus all members must have either same (tacit) knowledge or there should be dominant expert who forces his tacit knowledge upon rest of the team. If this is not the case, getting agreement on what to do will turn out to be lengthy and unlikely productive process, but – result would be an answer to the next question.
“how can you possibly grow that knowledge?” – i say, same way you’d grow explicit knowledge – in a evolutionary way! How do you grow explicit knowledge in first place? To grow any method one will have to add new stuff and because its new there is no information about it within existing method.

To rephrase Mr Kuhn – invention itself is conversion or articulation of tacit knowledge through which it is converted into explicit knowledge. In other words to create explicit knowledge you NEED tacit knowledge in first place.

The conversion process described by Kuhn is looped tho, that is – as soon as you create explicit knowledge, you need tacit knowledge to evolve or re-define that explicit knowledge. New and better definition of explicit knowledge emerges after so called “revolutionary paradigm shift”. Users of this new knowledge start to gain new tacit knowledge immediately in the process of working with explicit knowledge and eventually put explicit knowledge under question thus sooner or later forcing next “revolutionary paradigm shift” and so on, and so forth.

I may be too bold stating that establishment of this cycle actually gave human kind that edge against other animal species by allowing to overcome shortcomings of evolving only with tacit knowledge (because its too slow). Evolution only with explicit knowledge would be even impossible (since It’s tangible. There’s no need to gain experience. It’s something that has been converted to a rule).

Ergo

Well, my conclusions are:

– tacit knowledge actually does the job of evolving things based on that knowledge
– explicit knowledge does the job of formalizing, explaining (learning) and distributing tacit knowledge

Today, only together they give evolution the speed we are used to, the speed we are not willing to give up. Projecting this on software development methodology is straight forward – only method that uses both types of knowledge has a chance of fast evolution.

Since, as far as I know, there is no method yet that would explicitly base itself on both knowledge types I am happy to say that we still got a lot of work to do and a lot of new things to invent 😀

Femme fatale

Posted Leave a commentPosted in Ich

Originally, I wanted to write new post every two to three days. But something messed up my plan… it happened yesterday, November 4th 2008 at 03:45. Her name is Lina, she weighs 3550g and is one of the three hottest women of my life. Check out her pics:

Bring Emma to kindergarten: Requirements outline (2)

Posted Leave a commentPosted in Software Engineering

This Entry is dedicated to my project Use Case “Bring Emma to kindergarten”, Please read the project page first to get the general idea.

Here it is, formalized requirements outline from the previous post.

Requirements Outline

Chapter 1. Purpose and Scope
1a. What is the overall scope and goal? – Main goal is to bring Emma every working day between 08:00 and 08:30 to Kindergarten
1b. Stakeholders (Who cares?) – Chris, Reinis
1c. What is in scope, what is out of scope? – Starts with getting up and ends with leaving Kindergarten

Chapter 2. Terms Used / Glosary
Lunch – bread & fruits. Joghurt, pudding
Registration time – 08:00 – 08:30
Working day – Mo till Fr with the exception of school break, closing(?) days and comon holidays
KiGa – Kindergarten
Kindergarten – “zum St. Martin”, …. 92712 Pirk
Emma – child (daughter)
Lunchbox – pink, branded “Scouty” has picture of pony and sheep

Chapter 3. The Use Cases
3a. The primary actors and their general goals – Parents to bring Emma early and without the delay to Kindergarten; Child to meet her friends, play, masquerade; Kindergarten personell – to register child upon arrival
3b. The business use cases (operations concept) – Bring Emma to kindergarten
3c. The system use cases – Bring child to kindergarten

Chapter 4. The Technology Used
Household, municipal infrastructure

4a. What technology requirements are there for this system? – municiapal infrastructure should be maintained; household should have power, water, clothing
4b. What systems will this system interface with, with what reqruiements? – phone, baker, butcher

5. Other Requirements
5a. Development process – not applicable
5b. Business rules
Time – 08:00 – 08:30
Child is dressed
Child is not crying in process
Child has lunchbox
Acceptance of the child towards other actors
5c. Performance – use case should be completed in approx. 1 hour
5d. Operations, security, documentation – security on stairs, street, depending on weather conditions (e.g. umbrela oder gloves), health; respective clothing for operations
5e. Use and usability – possibility to parallelize some steps should be investigated
5f. Maintenance and portability – Emma should be periodically washed and fed. Dress and lunchbox should be maintained. Is this Use Case applicable for any child?
5g. Unesolved or deferred – none

Chapter 6. Human Backup, Legal, Political, Organizational Issues
Q1. What is the human backup to system opertaion? – Reinis back ups Chris; Christa back ups Reinis & Chris; Mrs Schwab backs up Christa, Reinis & Chris
Q2. What legal and what political requirements are there? – Reinis wants to participate only if he is not tired or dozy
Q3. What are the human consequences of completing this system? – not applicable
Q4. What are the training requirements? – traffic rules, dressing up Emma, lunch, brush teeth, timing!
Q5. What assumptions, dependencies are there on the human environment? – health, acceptance of Emma

End! Now, let us see what exactly is the purpose (besides obvious one of capturing requirements) of this artifact and what value does it add to our project.

Requirements Outline, what gives?

I already explained in my previous post that I was looking for a way to somehow capture all those social or, in general, human aspects I am unable to capture directlly in use case due to its behavioral nature. So does Requirements Outline serve this purpose?

Short answer – yes, but it needs to be adapted.

Long answer – we have special case of having just one use case defining scope of our project. This demands certain adaption for the requirements outline. Also the fact that the System is not computer based but rather social makes some of the chapters not really usefull or even meaningful. Let us check out some detail:

For starters, 1b. – why isn’t Emma stakeholder? Our motivation was that she does not always care. Sometimes she is willing to go to kindergarten, sometimes she really don’t care and sometimes she wants to stay in bed and is not willing to go to kingergarten no matter argumentation. The discussion on what place does Emma take in this use case we will continue again at some point. Is our assumption that Emma is no stakeholder correct? Is Emma an actor then or, maybe, she is even a domain object? I am not naging on definitions here, but rather trying to bring in clarity since without clear definition we will be probably unable to state clear requirements.

then there’s 1c. – we had a somewhat lengthy discussion about if preparations on the previous evening are within scope. Pro arguments were “well but we need to prepare that food for breakfast” or “if am not going to set alarm clock, we might oversleep…”. Contra arguments were “well but you have to buy food before you can prepare it – should buying be within the scope aswell?” or “you set alarm clock not only to get up on time to bring emma to kindergarten but also to get to work on time”. As you can see defining scope is not trivial at all, especially in cases where parts of process are taken for self-evident. I mean everyone knows that to get up early you have to set up alarm clock and how to do it or, that you have to brush your teeth or eat breakfast in the morning or dont you? I think there is no best practice that guarantees right result. Why did we left preparations on previous evening out of scope? Cause my gut feeling said so!

3a. – check out we defined an Actor for Emma (child). Is this descission right? I mean, aren’t we just driven by our social standarts that prohibit us from treating a person as (domain) object? Wouldn’t it be more appropriate to define her as a part of the system, to neglect her free will and to leave within scope only her attributes and part of behavior relevant to fullfilling given use case?

3b., 3c. – well, duh! Is it really worth writing system use case just to display that we could theoretically generalize Emma to child?…

Chapter 4 – I was about to say “duh!” as we started to write down Chapter 4, but then I realized that this chapter must be adapted before we actually can write something about “technology”. What technology are we actually using in this use case? Alarm clock, kitchen gear, phone, shower head (thats right!), shoe cabinet (technologically very advanced thing) – all very important to optimally complete use case but too general to specifically elaborate on any particular one. Those are all elements of infrastructure! Thus I come to conlusion that Chapter 4 should actually be called “The Technology and Infrastructure used” and should include also descriptions of what infrastrcutre elements are used to accomplish given use case. There is Topic 5d. “Operations, security and documentation” that kinda offers place for mentioning infrastructure still I belive that infrastructure is one of those fundamental aspects of use case and since technology chosen is very often co-related with infrastructure available those two belong together.

4b. – just one remark. See, we mention baker and butcher. It was very nice to instantlly see an added value of actually considering different aspects of requirements. We startet to discuss that we would have to interact mit Phone in those cases when Emma can not attend kindergarten. One of us suddenlly asked, but what about Mrs Häring our baker – we would have to interact with her aswell in case we would forget to prepare lunch for Emma or if our fridge would be empty. In the context – visiting Mrs Häring takes 5-15 minutes thus having serious impact on reaching performance goals of use case and thus should be part of the requirements!

5b. – “Child is not crying in process” say what?!?!? Those of you who were already confronted with bringing their children to kindergarten know what I am talking about. In first couple of weeks or every time after lengthy vacation (or visit at grandmas’) was crying and not calming down for hours on in. Kindergarten personell even called us (using phone system :)) and asked to fetch Emma early since she wouldn’t calm down. This resulted in us having phones placed close and mobiles switched on every time we leave house during kindergarten hours.

5d. – another reason to bring infrastructure to Chapter 4 is operations. We are using municipal infrastructure (pavement) which based on weather conditions or maintenance is not always really operational 🙂

5e. – I think we were unsure if we understood this topic correctlly. Any example or advice would be really appreciated. The only sentence we came up with you can see for yourself.

Chapter 6 Q2. – fact is that I am an “owl” and I must force myself to get up early. This is good to know since everytime Chris can not bring Emma to kindergarten she informs me in advance so that I can get to bed early and lessen “the pain”.

Summary

Finally, a decent best practice to structure all of the requirements. Did we really covered all of them? Again – time will tell as we advance with our project. Just reviewing initial conlusions I was able to draw from requirements outline I see solid base for further elaboration.

Bring Emma to kindergarten: Requirements outline

Posted Leave a commentPosted in Software Engineering

This Entry is dedicated to my project Use Case “Bring Emma to kindergarten”, Please read the project page first to get the general idea.

Although we discuss only one use case, Terms & Conditions still apply. And, since we have a social kind of use case where all the “human stuff” is very important because the SuD itself runs on humans, their behaviors and issues. I was looking for a Template to structure requirements in a way that would allow to consider this human part of our use case.

Well, I took that easy path and adapted… Requirement Outline proposed by Alistair Cockburn who adapted it from the template that Suzanne Robertson and the Atlantic Systems Guild published on their Web site and in the book Managing Requirements (Robertson and Robertson, 1999).

Unfortunately, I haven’t thought of putting behind Topic numbers their names in the paper version of the Requirements Outline as we wrote it, since the template was in front of us and I kinda didn’t realize I have to show it people that might actually have no access to it. That’s why (and also because I wanted to have an English translation) I will write it (outline) down one more time and attach original version for those who love my handwriting.

Since this posting has already reached a critical mass, I will move English version of outline along with my analysis to the follow-up.

Bring Emma to kindergarten: usage narrative (2)

Posted Leave a commentPosted in Software Engineering

This Entry is dedicated to my project Use Case “Bring Emma to kindergarten”, Please read the project page first to get the general idea.

Well, besides ugly handwriting what else can we say about two usage narratives from the previous log? Let us put side by side all the artifacts described in two narratives like this:

Artifacts from narrative I call “First version” Artifacts from narrative I call “Second version”
1. Every working day
2. Reinis
3. more often Chris
4. around 8:30
5. Emma
6. bring to Kindergarten
7. washed
8. dressed up
9. fed breakfast
10. 5 minute walk
11. crossing no streets
1. prepare breakfast on previous evening
2. prepare dress
3. set alarm before sleep
4. get up when alarm goes off
5. prepare flakes
6. Emma
7. wake Emma if she’s still sleeping
8. Emma eats breakfast
9. Emma goes bathroom
10. we dress us up
11. we make hair
12. brush teeth
13. pack meal
14. dress up
15. not later than 8:20 leave house
16. Kindergarten registration till 8:30
17. Don’t forget Lunchbox!

Table 1: Artifacts from both narratives

Things I expected:

– Overall granularity will differ. This is visible by simply counting number of artifacts;

– Overall focus will differ. Every actor/stakeholder participating in use case has different goals thus focusing on slightly things

– Scope will differ. Guess this is the main reason requirements management is such a tedious job sometimes

Things I didn’t expect:

– Overall granularity differs only little. Second narrative has 6 additional artifacts but if we look more closely at the content – artifacts 1, 3 are not even covered in first narrative and artifacts 2, 5, 7, 11, 12, 13, 14, 15 and 17 just add to granularity. In following table I have tried to group artifacts based on type and what I got looks to me a good base for a use case outline. We’ve got actors, trigger, pre and post conditions along main success scenario.

– Scope differs only little. I took liberty to define what artifacts describe pre and post conditions of the use case before we made an In/Out List just to illustrate how both narratives differ in definition of scope. As you might see, second narrative defines preparations on the previous evening (dress, breakfast, alarm clock) as part of use case. Final definition of scope will be defined by in/out list as soon as we make it 🙂

– In both narratives focus is on phase between getting up and getting out of the house. What I mean is this – process of bringing Emma to kindergarten is vaguely mentioned only in first narrative (artifacts 10 and 11), is not mentioned in second narrative at all, but period between getting up and getting out of the house is covered by 3 artifacts in first narrative and by 9 artifacts respectively in second one (10 if you count validation artifact 17). This is kind of weird since getting to kindergarten and actually delivering Emma in kindergarten are rich of content (e.G. one have to find Emma’s locker, undress Emma, bring her to the right room and formally inform kindergarten personnel about Emma’s arrival, same is true for moving from house to kindergarten).

“First version” “Second version” Artifact type
[not covered] 1. prepare breakfast on previous evening
3. set alarm before sleep
Pre conditions
1. Every working day 4. get up when alarm goes off Trigger
4. around 8:30 15. not later than 8:20 leave house
16. Kindergarten registration till 8:30
17. Don’t forget Lunchbox!
Guarantees
2. Reinis
3. more often Chris
5. Emma
6. Emma Actors
6. bring to Kindergarten 7. wake Emma if she’s still sleeping
13. pack meal
Scenario
7. washed 9. Emma goes bathroom
11. we make hair
12. brush teeth
Scenario
8. dressed up 2. prepare dress
10. we dress us up
14. dress up
Scenario
9. fed breakfast 5. prepare flakes
8. Emma eats breakfast
Scenario
10. 5 minute walk
11. crossing no streets
[not covered] Scenario

Table 2: Aggregated narratives

Summary

I say, narratives deliver us up front certain amount of analytical data. Participation of multiple narrators probably help even further since there’s material to compare and differences are likely to hint out stuff that should be particularly elaborated upon (such as what sub processes narrators concentrate on, how they define scope etc.) I am practically able to build Use Case outline with only those two short narratives.

The true added value of narratives we will see in upcoming phases where I get my hands dirty and churn out the detail. At the moment I am keen to see how much of the structure I extracted out of narratives will remain at the end of this project.

WordPress: those wicked “access denied” errors

Posted Leave a commentPosted in Miscellanea

Yes, I had those as well

wordpress failed to open stream: Permission denied in…

and those

Unable to create directory …/httpdocs/wp-content/uploads/… . Is its parent directory writable by the server?

And yes was searching web fiercely for a solution here: WordPress Support, here: WordPress Mu then here for a change: WordPress Deutschland ORG just to see all those guys suggesting chmod.

I mean, if I have a windows server am I banned to have no support, no community, no right to setup WordPress blog? 🙂

well I went to Plesk File Manager of my domain hoping to find some way to chmod that folder on windows server… and succeeded!

Here’s what you do:

1. Navigate to the folder where WordPress is installed (e.g. yourdomain.de/httpdocs/yourblogname):

2. After clicking on key-symbol and getting permission setting screen, just give FULL permissions to your Plesk IIS User (the account your IIS runs under):

That was it! After this change I could suddenly upload images, change theme template files, all the other things I wanted so bad and couldn’t because WordPress didn’t have sufficient rights!

enjoy

Bring Emma to kindergarten: usage narrative

Posted Leave a commentPosted in Software Engineering

This Entry is dedicated to my project Use Case “Bring Emma to kindergarten”, Please read the project page first to get the general idea.

Alistair Cockburn suggests

In this narrative, invent a fictional but specific actor and briefly capture the mental state of that person – why he wants what he wants or what conditions drive him to act as he does.

I want to test if its true that narrative eases one into the use case itself and, also, want to check out what sort of differences there will be in narratives of my wife and me. This is what we’ve got:

First version:

Second version:

I will give my analysis on the content in an follow-up until then – presenting the raw result…