Sunday, November 23, 2014

Config file editor

A project in works, this tool reads a config file and allows you to edit and save attributes (for now)

MrConfig_version_1

Version 2
* allows to overwrite file with changes
* allows to edit attributes and element values

What's Mr. Config?

For developers and administrators who are frustrated and clueless when they open a config file in notepad and then do a search and replace; Mr Config comes to the rescue!

Mr. Config visualizes any config file as a tree view. It allows you to edit element values and attributes right inside the tree view!

You can then save this file and as a sweet side effect, your config file is also rightly indented and formatted.

Mr. Config lets you search for the specific nodes using XPath search. You can expand or collapse all nodes within the view.

Download link (with Visual Studio solution) :
MrConfig_Version_2

Sunday, September 28, 2014

Dog Walker (short story)

Dog Walker


‘It’s just suicidal for your career. It’s stupid, it’s mindless, and it’s idiotic. You’re wrecking yourself! You’re acting like a total maniac. You’ll end up screwing your life.’

My friend (the boy) was getting an earful from my other friend. ‘Don’t worry…’ I paused, taking care not to let the sandwich fall off my mouth, ‘…all of what he said may happen except for what he said in the end’, I said coolly to the boy. ‘Thank you for your one line opinion in this two hour conversation. And thanks for making my half munched sandwich disappear too!’ the advisor friend lamented me. Well I had to admit, the guys at these coffee shop served the best corn sandwiches with mayonnaise graciously melted in between the layers. Besides, I wasn’t paying attention to their talk.

Apparently the boy, who was working in a reputed bank in the marketing division, had made up his mind to quit the job. You must be wondering why the advisor friend called this move as ‘suicidal, mindless, wrecking, maniacal decision’. Well, the boy wanted to advance his career of course; by applying to the post of a dog walker.

‘Well the money’s good, and I want to try something different too!’ explained the boy. Although there was no point for him to falsify the real reason before us; he kept on saying this as his reason to quit the desk job. Let me explain you the real motive in a few sentences. The boy’s office was in a plush business park cum residential complex. The advisor friend lived with the boy in a rented apartment outside the complex. The advisor friend’s distant cousin lived in one of the residential buildings. One fine evening, the two left the office and took the regular walk towards the bus stop outside the complex. On the way, they happened to see the advisor friend’s cousin, so they stopped by for a chat. The boy obviously had nothing to participate in this chat, but it here where he sees this girl…who is pretty, attractive, whatever you’d like to call. Now the boy gets the information from the advisor friend, who gets this information from his distant cousin that the pretty girl happens to stay in his building. And in a measure to get close to her, the boy gets this information from his advisor friend, who in turn gets this information from his distant cousin, who then gets this important piece of information from the security guard of his building, that a position for a dog caretaker has been just vacated and someone is urgently needed to fill in this post; for which our hero, the boy, is vying for. Whew! Now never ever ask me to explain anything in few sentences!

The girl. Light fawn in colour. Her hair was delicate, colour burgundy. She made herself quick pony, still hair strands or two fell and touched her forehead. Her shapely eyebrows looked like vertically mirrored tick marks; ones which your class teacher used to give on your test papers. Her eyelashes were similar in shape like the rooftops of temples in China. Her skin was flawless. Her lips were chiseled and it looked like she might have been born with a permanent apple shaded lip gloss applied. She wore a dark emerald top and her delicate arms looked prominent. She folded her slim, shapely legs, on top over the other. Suddenly she unfolded them and brought them close to each other. Probably some interesting joke or a message on WhatzApp made her do this.

Her mom was on her right. Her young brother looked shabby and was occupied with his PlayStation portable. And her dad’s pea sized mole, struck directly in between his chin was quite disturbing, as the boy was trying to pay attention to him; on his ongoing interview.

And so began the endeavor, the quest, to come closer to his love. During the interview she glanced at him once! He was happy at the progress. And he got the job too! The pay wasn’t bad either. He had to visit three times a day and had to take care of a friendly Labrador and an ugly looking Pug. He had to do all of the conditions and the duties that her dad yelled at him. That was easy!

The first morning, the dogs refused to eat, as they were not accustomed to the boy. The opportunist boy, got to speak with the girl on what can be done to convince the dogs, to which she plainly replied that she loves her dogs a lot, but doesn’t meddle herself in their caring. Other day, the boy got introduced to the girl’s shabby brother, when the boy had to wear shabby’s denim shorts. Well in an untoward incident, while bathing the dogs, the boy accidently touched those areas where angels fear to tread and got himself a scar on his face, and an attack on his left buttock, resulting in torn pants. ‘Keep them for yourself and don’t dare to return them’, the shabby brother said, resulting in additional humiliation and awkwardness the boy had to face when he had to go home wearing those tight denim shorts.

Things were getting a bit easier with the dogs as the days went by. The boy’s back problems aggravated as the Labrador weight pulled his spine with a force. The girl’s mother otherwise loathing him, this time showed her kindness by giving him an allowance, to go and visit a doctor, with the condition of not taking a leave.

And on that day, the girl finally spoke to him, herself.

‘I see your back pains have worsened,’ said the girl, not looking at the boy. She was multitasking; doing something on her iPhone. ‘Too bad for a guy with a desk job experience!’ she taunted. The boy sprang up. He had faked his resume (verbal) and had never mentioned a desk job or his previous work. ‘You may have deleted all your social networking profiles, but you forgot your LinkedInn profile!’ she said with a slight smile. The boy closed his eyes with despair, but kept cool. He jogged through the thoughts of how this gaffe might have happened; but the girl was way too fast for him.

‘Look,’ said the girl, this time looking at him directly. In this tension, the boy noticed the colour of her eyes. They were deep dark brown, like the chocolate fantasy they’d serve at the coffee shop. ‘I am aware of your intentions,’ she said, looking down, her lips pressed. ‘You seem to be a nice guy, but this is not going to go anywhere,’ she said, leaving the conversation dangling and left abruptly. The boy simply smiled. Then he took the dogs out for their evening walk, bearing the two pains he had; spinal and the heart break.

‘Come on laddie…want a kick on your butt? Out you go!’ said a stern, loud voice.

The boy came out, in the light. I was standing next to the advisor friend, as we looked at the boy. His face looked dry. He closed his eyes, took a deep breath and exhaled. ‘Feels great…,’ he said, looking at us, ‘Let’s go! Why are we standing here?’

We were in the coffee shop. The boy that day after the brief conversation with the girl had taken the dogs for their walk. An incident had let the leash get out of his hands, which triggered the dogs to run and get away, not to be found. The girl’s dad had got him jailed for 1 month and a certain amount of fine for the loss; one of terms of agreement he had stated when he accepted the job.

‘So, what’s next?’ I asked him, my subconscious chose asking the question over the temptation of the corn mayonnaise sandwich in front of me.

‘Down, but not out. I’ve just started!’ he smiled. There was a sparkle in his eyes and I had never seen such a wide smile on his face, until now.

Mangesh Nadkarni
28-09-2014



Sunday, August 24, 2014

(Short Story) The Girl who liked French Fries

The Girl who liked French Fries


By Mangesh Nadkarni (11/04/2010)

Sitting on seat number 36 while returning to Mumbai from one of my recent Pune trips, the bus halted at a food mall midway during the journey. I woke up from my partial doze. The headphones had gone misaligned, and my throat felt dry, which meant my mouth was open during my sleep. I cursed myself yet again for my embarrassment.

I didn’t get up although I felt the need of getting my face washed, to feel fresh. As a policy of my own I spend the first half sleeping and the next looking here and there. I avoid reading as I feel it is a primary catalyst for inducing sleep. Well the ‘real’ reason of not getting down the bus was this pretty girl who sat on the right corner of the two seats front of mine. Never mind I hadn’t drank much water and there was no real need to visit the loo, though sometimes we all do it for our ‘safety’. I sacrificed my ‘safety’ to have a look at her, when her boyfriend wasn’t around! “Mmmm..French Fries for me!” she wailed cutely at her boyfriend who proceeded to get down. I cried to myself why I wasn’t her McDonald.
She hadn’t streaked her straight hair, well that would look cute on her. Her ‘pinch able cheeks’ looked amazing on her not so chubby face. Mind you, the view was from her sideways. I never imagined how luscious one’s lips could look from that view. I cursed the caller who prompted her to pick up her mobile and talk, ruining my view. The call was short, presumably her boyfriend’s, asking “Do you want that extra cheese baby?” I never overheard that, but guessed it so, because of her obvious “no” to my ‘guessed’ extra cheese.

Tomorrow was Valentine’s Day and I so wanted her to be with me!! She looked outside the window and that wasn’t so good for my view. “Well let her look!” I said to myself in my mind. Then she picked up an Auto Car magazine and flipped few pages and threw it on the adjacent ‘boyfriend’s’ seat by force. It looked like she missed Femina or Cosmopolitan, oh sorry, Vanity Fair! Her bottle green top looked fabulous and I was lucky to admire her smooth hands. That was the closest my eyes could get thanks to the rift between two seats. My eyes were shamelessly (I thought about that afterwards!) fixed on her slim stable arm for a long time. Suddenly that fixation broke loose as her arm moved, as it grabbed a brown paper bag with McDonald’s logo. “Darn the delivery boy,” I said to myself.

The next thing I heard was a transition. Her cute voice had apparently gone for a vacation as she shouted, “You’re such a jerk!!” That was for her boyfriend. He had brought only one tiny sachet of ketchup. “You know I need more ketchup. Why do you always keep forgetting?” All other passengers had already occupied their seats and the bus left after the conductor’s checking.

And so the bus started on the conductor’s mark. After that it was all exercise for my neck and eyes. I thanked God for our fixed ears and wished for cat like ears. “Paani doge?” she asked her boyfriend. What followed after that question was lots of gunfire. He repented for having forgotten to buy the bottle. Twenty bucks could have suppressed her ire. Then after a brief silence she murmured, “You never take care of me…”, to which he replied, “I’m sorry Namrata…really I..” “Shut up!” she said in a stern voice, forgetting the fellow passengers around her. “Aah…Namrata” I said to myself looking at the expressway!
I was impressed by the guys coaxing and then began the dreaded public display of affection! They held each other’s hands, trying to find a perfect grip. I didn’t understand how I missed out the part where a fellow passenger uncle lent his water bottle to the guy to extinguish the fire. The chirping of the two sparrows was on and I could see her smile and laugh. “Why do you read such useless magazines?” she asked the guy, flinging the Autocar she picked up, at him.  “That’s because I love cars..” he replied back politely. “Typical of boys…all they like is unusual stuff, and forget about us, what we need” she said in a somewhat harsh tone, tauntingly referring the ‘untoward’ incident happened earlier. Mr. Boyfriend wore a dejected look on his face. “What’s the matter now? I’ve still allowed you to talk!” she pricked him. He kept quiet. “Brownie points for this guy for keeping his cool!” I said to myself!

We zipped past Panvel, Sion, and were now on the Western express highway. “Care to ask the conductor when is Andheri coming?” she irked the guy. Blinking his eyes forcibly, he went up to the conductor. “Few minutes…” he said to her, after coming back to his place. “How many minutes did he say?” asked Namrata. I won’t describe what followed next.

“So what are we doing tomorrow?” she asked him. He kept quiet and looked engrossed in some thought. After a brief moment of silence, she asked him gently, “Would you be my Valentine this year honey?”

“Nope”, we replied. The guy hadn’t uttered anything. Namrata and the guy sprung their necks, looking at me. In spontaneity, I had responded in a low tone, but I tried figuring it out who else shared my opinion. I found myself staring at a pretty girl at the window, sitting next to me!!

Friday, August 15, 2014

Slumber (a short story)


Slumber

‘You know something strange happened to me yesterday,’ he said to his friend. ‘What?’ his friend asked, keeping aside his phone, with which he was preoccupied with.

‘Well yesterday morning, I took my office bus as usual. It was running a little late, which is quite normal. The colleagues whom I see each day at the stop too boarded the bus along with me. The bus was quite packed, more than usual. I looked around for a seat, got one and sat.’

‘Was it a window seat?’ the friend asked.

‘No,’ he replied firmly. ‘I don’t like to sit beside the window. Dust, pollution, you know.’

Continuing his story he said, ‘so then I got settled, drank some water as per my habit. I saw the group of young boys and girls, frolicking and cracking jokes and patting each other candidly. They quite regularly board this bus. It is a very jovial group, but I don’t like the chaos they make.’

‘I hadn’t slept the night before and tiredness crept into my eyes. I don’t usually take a nap in the bus, but since the journey is about 2 hours, I thought it was a good idea to rest.’

‘The bus was pacing fast as there seemed less traffic than usual that day. I saw out of the window. Those underwear advertising hoardings that I see every day appeared. I find them awkward. The guy next to me was wearing dark glasses, which I found unusual as it was cloudy that day. He had placed his bag on his lap. On top of his bag he had placed his left palm, and had put his elbow next to it. His index finger pressed against his lips. It looked like he was in deep thought. But he also had his earphones on, so I think he might be engrossed in some audio book or some thought inducing music.’

‘My eyes began to heavily droop. Sleep was overtaking me; still my eyes were set outside the window, even as the bus sped fast, as if the driver was on some mission. I saw two cars coming out of a crematorium. Suddenly the thought of death and dead people struck me. I felt bad for those people in those cars. Then I thought about circle of life.’

‘My mind was going blank as overcoming sleep was almost impossible to me. The last thing I remember what I saw before my eyes shut down, was traffic signals, which surprisingly green each time; quite unusual for this time of the day. I could hear the laughing from the chaotic jovial group, faintly. It was airy. The thinker guy beside me was still deep in thought, looking outside. Then…I went dark. I felt completely comatose. I felt dog-tired. I felt as if I hadn’t slept for many days and I was covering up this huge sleep deficit. I was lost in sleep. But I was still feeling the wind gushing on my face. I did feel the bus was in motion, thanks to the potholes.’

‘I was in my siesta, but a strange feeling overcame me. Our bus has pretty good suspension, but as the bus sped more, the jerks became lesser. I suddenly didn’t feel a thing. Not even the blanket of gushing wind on my face. Feeling recharged, I opened my eyes, but the strong sunlight hurt my eyes and I closed them immediately. Then slowly I opened my eyes.’

‘I looked straight at the right seat ahead of me. It was empty. I remember, a girl from the chaotic jovial group occupying it. Hurriedly, I saw to my left. The thinker was nowhere to be found. I looked to my right. No one. I got up from my seat and to my amazement the bus was empty and still. My heart stared beating faster. Composing myself, quick thoughts came to me. It must have slept till the end and everybody must have got out of the bus and gone to office, but no one must have woken me up. I have seen that happen with some people in the bus, but why would anyone have not woke me up till now? Quickly I started getting down from the bus, with my back pack.’

‘What followed next was bizarre to me. The bus had stood still. There was no sign of the driver. Outside the entrance door of the bus I saw overgrown grass. I was looking at a land covered with thick grass and dense trees and leafy plants around me. I was in shock. Then I touched the bus, to get a grip of reality. I indeed feel the coldness of the metal. But still I saw the grassy land lay ahead of me. Ants and insects started creeping on my feet which was unprotected as I was wearing sandals. I ran towards the back of the bus and looked around. It looked as if I was alone with the bus in a jungle.’

‘I took out my cell phone which had no network coverage. I asked myself, what should I do now? Should I shout? Call out for help? What was happening to me? I got inside the bus again. It was still empty. I was puzzled and my mind was shattered. The only option was to keep walking and getting out of this place. But this thing was unexplainable. Why would I be stranded in a jungle with a bus. Where was everyone? Had there been an accident? These thoughts came to me as I took on a direction and kept walking.’

‘I kept walking on for some 15 minutes and my heart was pounding at a faster rate. Suddenly out of nowhere, I saw a short fence. It too was covered with grass as the path throughout. Then to add to the list of strange events happening to me that day, I saw people sneaking through that fence, which had an opening, deliberately made my some to break into. A bald guy with a back pack was making his move to sneak in. In a flash I caught him and asked where were all these people going? He coldly replied to me, the name of my office!’ I was aghast. My office! How could that be? In this jungle? I thought it was probably better not to question anyone now and I quickly sneaked in with others and followed them.’

‘The trail of about 3 minutes ended. I saw my office building; the exact same building which I go into every day. I turned opposite, to see the jungle from where I came from. I went to my desk in a state of shock. There were the regular people whom I work with on the floor.’


‘So, this is what happened to me yesterday. It’s completely unexplainable isn’t it?,’ he asked his friend. Strangely now, there was no one in front of him.

Mangesh Nadkarni, 15-08-14

Sunday, August 3, 2014

MultiDataTrigger : Handle OR condition


Building on my previous post on MultiDataTrigger, we saw that MultiDataTrigger generally works for AND conditions (all conditions should be true to fire the trigger to update the property)

What would you do to handle OR condition?

<Style x:Key="pricestyle" TargetType="TextBox">
            <Setter Property="Visibility" Value="Collapsed"/>
            <Style.Triggers>
                <MultiDataTrigger>
                    <MultiDataTrigger.Conditions>
                        <Condition Binding="{Binding AllowCheck}" Value="True"/>
                    </MultiDataTrigger.Conditions>
                        <Setter Property="Visibility" Value="Visible"/>
                </MultiDataTrigger>
                <MultiDataTrigger>
                <MultiDataTrigger.Conditions>
                        <Condition Binding="{Binding Action}" Value="SELL"/>
                    </MultiDataTrigger.Conditions>
                        <Setter Property="Visibility" Value="Visible"/>
                </MultiDataTrigger>
            </Style.Triggers>
        </Style>

Effectively you would need to write 2 multi data triggers to get this working.

Side notes (not related to this post topic)
http://stackoverflow.com/questions/17598200/datatrigger-binding-in-wpf-style
http://stackoverflow.com/questions/15814639/consolidating-common-wpf-styles

Saturday, August 2, 2014

MultiDataTrigger in WPF: an example

Here is the XAML
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:diag="clr-namespace:System.Diagnostics;assembly=WindowsBase"
Title="Window1" Height="300" Width="300">
<Window.Resources>
<Style x:Key="pricestyle" TargetType="TextBox">
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding AllowCheck}" Value="True"/>
<Condition Binding="{Binding Action}" Value="SELL"/>
</MultiDataTrigger.Conditions>
<MultiDataTrigger.Setters>
<Setter Property="Visibility" Value="Visible"/>
</MultiDataTrigger.Setters>
</MultiDataTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Grid>
<StackPanel Margin="20" HorizontalAlignment="Left">
<Label Content="Action" Margin="0,3,0,0"></Label>
<ComboBox Width="100" ItemsSource="{Binding Actions}" SelectedItem="{Binding Action, UpdateSourceTrigger=PropertyChanged}"></ComboBox>
<Label Content="Price" Margin="0,3,0,0"></Label>
<TextBox Width="100" Margin="0,3,0,0" Style="{StaticResource ResourceKey=pricestyle}"></TextBox>
<CheckBox x:Name="dd" Content="Allow" IsChecked="{Binding AllowCheck, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"></CheckBox>
</StackPanel>
</Grid>
</Window>

On acceptable values defined in the trigger (highlighted in blue colour), on selection of Allow checkbox and SELL from action combo box, the trigger gets fired and the price textbox gets visible.


One important thing to note here (which may get missed out). Note the text in red colour. It's important to set a default state of the property for which you want the trigger to be applied on (in our example, its Visibility property of the textbox)

Sunday, July 6, 2014


XAML to ViewModel creator.

This demo is in works. Currently it reads a XAML file (using XElement) and identifies Bindings and their controls.

Next i'll complete this by printing out a view model class with properties using the bindings that i've collected in a collection.

You may want to improve this; feel free!

Download Demo Code

Placeholder trial: Placeholder code
Update to placeholder: Handle events of a control within a datatemplate. Refer this link:
http://stackoverflow.com/questions/1800595/event-handler-in-datatemplate

Tuesday, July 1, 2014


WPF: Quick way to display columnar data for printing. The code below displays textblocks in 2 columns. You can bind this listview or place data in XAML as shown below.

<ListView SelectionChanged="ListView_SelectionChanged_1" x:Name="lview"> <ListViewItem></ListViewItem> <ListView.View> <GridView x:Name="gview"> <GridViewColumn Width="100"> <GridViewColumn.CellTemplate> <DataTemplate> <StackPanel> <TextBlock HorizontalAlignment="Stretch" Text="hello"/> <TextBlock HorizontalAlignment="Stretch" Text="hello"/> <TextBlock HorizontalAlignment="Stretch" Text="hello"/> <TextBlock HorizontalAlignment="Stretch" Text="hello"/> </StackPanel> </DataTemplate> </GridViewColumn.CellTemplate> </GridViewColumn> <GridViewColumn> <GridViewColumn.CellTemplate> <DataTemplate> <StackPanel> <TextBlock HorizontalAlignment="Stretch" Text="mangesh"/> <TextBlock HorizontalAlignment="Stretch" Text="mangesh"/> <TextBlock HorizontalAlignment="Stretch" Text="mangesh"/> <TextBlock HorizontalAlignment="Stretch" Text="mangesh"/> </StackPanel> </DataTemplate> </GridViewColumn.CellTemplate> </GridViewColumn> </GridView> </ListView.View> </ListView>


Things such as hiding column headers, setting column width if required need to be done.

2 column grid example

Sunday, May 18, 2014

User controls for clutter free forms in WPF

User controls for clutter free forms in WPF

https://sites.google.com/site/mvnworldinc/Home/UserControlTest.zip?attredirects=0&d=1

Exposing inner Control properties for binding in WPF

http://stackoverflow.com/questions/4169090/exposing-inner-control-properties-for-binding-in-wpf

http://stackoverflow.com/questions/18158500/usercontrol-dependency-property-design-time

http://tech.pro/tutorial/807/wpf-tutorial-how-to-use-a-datatemplateselector

http://stackoverflow.com/questions/3922908/changing-contenttemplate-based-on-listbox-selection

http://breakingdotnet.blogspot.in/2012/05/data-template-selector-in-xaml.html

http://jacobaloysious.wordpress.com/2013/08/19/mvvm-using-contenttemplateselector-in-tab-control-view/

http://www.experts-exchange.com/Programming/Languages/.NET/Q_28029825.html

http://zamjad.wordpress.com/2011/09/21/using-contenttemplateselector/

Demo of how user controls can have their own VM
https://sites.google.com/site/mvnworldinc/Home/UsercontrolVM_Demo.zip?attredirects=0&d=1

Tab Header with context menu button:

Sample

Sample 2

Tuesday, April 15, 2014

Wiring Views and ViewModels using DataTemplate in resource dictionary in Prism:


Replace square brackets with <> tags

1. In module Initialize() :

// Merge Resource Dictionaries
ResourceDictionary dictionary = new ResourceDictionary();
dictionary.Source = new Uri("pack://application:,,,/Project.AssemblyName;component/MainResourceDictionary.xaml ");
Application.Current.Resources.MergedDictionaries.Add(dictionary);

2. Create a main resource dictionary:

[ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:vw="clr-namespace:Project.AssemblyName"
    xmlns:v="clr-namespace:Project.AssemblyName;assembly=Project.Views"]
    [!-- Resource dictionary entries should be defined here. --]
    [DataTemplate DataType="{x:Type vw:VM_1}"]
        [v:View_1 /]
    [/DataTemplate]
    [DataTemplate DataType="{x:Type vw:VM_2}"]
        [v:View_2 /]
    [/DataTemplate]
[/ResourceDictionary]

3. In Views project, your user control:

[UserControl x:Class="Project.Views.View_1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     xmlns:Resx="clr-namespace:Project.AssemblyName"
      ..

Question posted:

http://goo.gl/MI1YCz

Others:
http://wpfthemes.codeplex.com/discussions/43074
http://transitionals.codeplex.com/releases/view/15792
http://stackoverflow.com/questions/9796174/load-usercontrol-in-tabitem
https://compositewpf.codeplex.com/discussions/30673

Saturday, February 22, 2014

A tutorial application in WPF

When you're new to some project and new to its application, a tutorial could be of use to quickly understand the application, its purpose, what its components do and what is the intention of the application. While there is no substitute for personal training, a simple tutorial app could get you started quickly. Plus there is always an advantage to look back at it whenever you want without any time limitation.

Here is a simple idea and its simplest implementation in WPF. It's just a starter.

Download Demo

Update:
I thought it'd be easier, faster and better if this were implemented in html using jQuery. I got a chance to learn jQuery because of this and ended up making a demo page. Hope someone builds up on this.

Download Demo in JQuery

Update 28/03/14: Intro.js is an amazing jquery library. Thanks to the developers.

Demo with intro js

TL_App_Concept