jay's old blog

this blog will be deleted soon - please visit my new blog - https://thesanguinetechtrainer.com

Developer tips - project diary for better efficiency

Perhaps the obvious causality of the apparently 'modern' world we live in, is the death of paper usage. Environmental concerns aside, there is something 'intellectual' about writing on paper. Ideas flow when you hold a pen and paper. Every time I architect a new project, nothing gives me clarity and viability of said project more than writing everything down and drawing everything down on paper.

I am saying all this because of the sad state of diaries. Yeah, nobody uses a diary these days because they think its lame. Sure, keeping  a diary of everyday events might sound lame but nothing helps you keep track of events like a diary does. I cannot request my fellow developers to use a diary in their personal life but I sure can implore them to use them in their work life. Software development is not a one way street. That is because (with all due respect to my past, current and future clients and business partners) the requirements change constantly. I can recall more than a dozen incidents where half an hour before the project is to be deployed, the client comes and says, 'hey man, there are some changes in the main page of the app or website or whatever'. Of course, I ask them to pay me double my usual hourly rate for last minute work, but the point is, requirements change constantly!

That is just the tip of iceberg. Each phase (or sprint, if that is the word you prefer) has a number of activities to do. Then, within that phase, the assigned tasks (which are in turn based on client requirements) can change any time. Then, the phases themselves change, like the order. Phases get deleted and get added. Sorted in extremely weird orders and it just keeps happening this way. Also, tasks take quite a while to finish. Tasks that you start today, may end after 2 days or 5. Within a task, there will be list of tasks to do (especially during the second of project development where you are doing both regular development AND bug fixing AND requirement changes by client which actually means deleting a lot of old stuff and redoing already done work). All in all, it is a cluster-flower or cluster-farm or cluster-fox (I hope you know the right word to replace here :P ).

There are many ways to do it. One way, I do it is to maintain a diary. As a consultant, I end up working on multiple projects and multiple assignments (and this whole task management diary is not limited to software development. Just as with development, even during training, a lot of things can change from the client and we should flexible enough to adapt to them. Of course, one may wonder, why bother? Well, two things. First, the client is paying me a lot of money, and I charge hourly. The more changes they make, the more I get paid. Second, hello, customer is always right. You 'discuss' with a client'. You never 'argue' with her or him) and so much of stuff is going on. Obviously, no woman or man is alone. That means, whether you are married, have two kids, two sets of parents (you know, regular parents and in-law parents) or single and ready to mingle, your personal life will always be complicated. Of course, I like to keep things simple (at least I try and mostly stay successful ) but a lot of developers I have seen simply cannot stop over-complicating their mundane life's (sucks for them, right?) and that means, with all this work stuff, personal stuff also gets mixed up.

I am so psychologist and cannot advise about people screwing up their own life's (and I have seen people do that every damn day) but I sure can suggest the things that make the developer part easy. A simply diary for everything. For every task, for every interaction and for every client change. Yes, this consumes time. Sometimes, I spend more than an hour after a client meeting, just filling up my diary. On the outset, this is a cost, a time cost. However, this saves me hours, days and even weeks of non-sense discussions later because the diary avoids disagreements. I learned very early in my life as a trainer that people argue endlessly because they are debating on bogus data. However, when you have a diary, the facts are in front of you. Your clients (and co-workers) have no reason to argue because the facts are in front of you, mentioned right there in the diary and backed up with email communication, call recordings and meeting recordings. When you place facts (or throw them in their face if the occasion calls for it) on the table, the endless arguments become quick 5 minute discussions and guess what? They also become productive.

Further, the diary allows you to keep track of the work you are doing. It allows you to give accurate estimates about work completion timings. Another reason why clients become upset (and starting shouting you, and then horrible name calling ensues) is when deadlines are not met. In this scenario, I usually blame myself and fellow developers instead of the clients. Clients are not developers and that is why they are hiring us to their work. That means, they depend on us to build the project timeline. That means, the onus is on us to give a proper time table for work. This timetable can become efficient, when there is a reasoning behind the calculation of total project work time. The diary with the notes, and completion status and all that totally helps.

The diary (at least for me, and I have been jotting down things for years now) acts like a personal time machine. Going back through the pages of your work (and personal) diary, allows you to look back and see what you did good. What you did bad. It allows you to quantity stuff that has happened, and by way of iteration and thoughtful thinking, make you a  better person. Further, if the occasion calls for it and with certain discretion applied to the diary pages, the diary becomes a fantastic to impress potential clients.

So, yeah. There you go. Go out there and get a diary. Although I started off by talking about paper diaries, digital diaries (with their multi device syncing and endless pages and search features and overall media friendliness) are better. My personal and professional choice is OneNote (the awesome service for Microsoft because it is awesome, free and ad-free and available everywhere) but a good second choice is Evernote (the free version is pretty limited, but the paid version is solid, I am guessing). Of course, you can also use standard text and word documents stored in the cloud service of your choice is also a good option. Lastly, if you are so inclined, you can also buy an actual paper diary, which is also a good option.

Trainer diaries - the smell of defeat - episode 1 of X

[Note 1 of 2: The story, all names, characters, and incidents portrayed in this narrative are fictitious. No identification with actual persons (living or deceased), places, buildings, and products is intended or should be inferred.]

This year, I celebrate the 4th year of my entering the world of training. Yup! 4 long years. The life of a trainer is one filled with adulation and adoration. It is also filled with disappointments and soul crushing incidents.

A standard degree (engineering or otherwise) does not run for more than 4 years. That means, a 1st year student I met 4 years ago, has now finished his or her studies and is now currently a potential tax payer. It also means, i am officially an old person.  Anyway, thanks to social media, it is almost impossible not to find out which student is doing what and where. Today, I narrate one of those stories, and no it does not end well.

The incident happened about 2 years ago. I was going through my usual day. I had just returned home from a lengthy training assignment. I was going through my travel bag, running through the list of things that need to be done (take care of garbage, call up house cleaning services, recharge batteries, replace items consumed in the travel and of course laundry) on a post it. Then, one of my phones rang and there was a frantic voice on the other end. I did not recognize the number (I only save the most essential numbers on my phone. Even as I write this, I may have like 15 contacts out of which 10 are utility numbers like bank and stuff) nor the voice.

It was a student of mine from an earlier workshop or training assignment I conducted way back. The student said that I must meet him, and that it is of utmost importance that I do it right away. I had no intention of riding on my bike (back then Uber was yet to become available in my city) after being on the road for almost a week. Still, I always had a soft spot for students (although, recent events have reduced the soft spot's diameter) and despite my protesting body, I took my trusty bike and drove down to the nearby restaurant that acted as my out of home office.

I recognized the student instantly, but there was something odd about him. He seemed to have not slept for days and all that sparkle from his eyes had left him. No sooner did I sit down, he started crying. I tried to console him, but there was no way I could stop him from crying. Eventually, he calmed down even as I ordered something for him to eat, and a beverage for him to drink. I, as usual, got a cup of tea. Then, he explained to me his situation.

He told me that, now that his college is over, (the exams had wrapped up a couple of weeks ago) he suddenly feels the weight of the world over his shoulders. He talks to me about his family, the many debts their parents took on to educate him. He tells me about his mom being sick. He tells about his father, who is pressurizing him to go out and earn money and take some responsibility. He tells me that he is ashamed to walk around in his own home because he is now an 'unemployed youth' and not the bright star of his family, which he was only a month ago.

I listen and listen, as he narrates the entire event for almost an hour. When he is finally done, I ask him if he thought about his career before today. He says 'no' and then he starts crying again. He admits that he should have planned his career out, and tells me that perhaps, he should have listened to me. He reminds me about the many times I implored him (and his class mates) to take up some kind of a skill training, get out there and do something productive during their student days. He finally just gives up and apologizes to me.

Through all this, I am at a loss of words. I have gone through 3 cups of tea. Then, as I order a fourth cup of tea (he has not touched the gobi manchuri or the fanta I ordered for him) he jumps and stands next to me. Then, he begs me. I was not expecting this. He begs me to help him get a job, so that he can start earning. He continues to beg for a few minutes. To me, this part was the most shocking event of the evening. In front of me is a fully grown man, and he is begging me, a complete stranger, someone he has not met in years. Heck, I still don't his name. Eventually he comes down, and I finally explain to him that I am in the domain of software and since he does not have any skills I can use, I cannot get him a job. At most, I tell him, I can get him a job as a delivery person in pizza or amazon or flipkart or perhaps in a call center.

Then, he stays quiet for a moment. Then, he stands up and tells me that he is an engineer and cannot work as a delivery guy. I wanted to tell him that he should have thought of this 2 years ago, but I did not. For a lot of people, facing the harsh truth is impossible. This young, broken and unemployed man, was one of these people. Besides, me telling the truth would not lift his spirits. Man, he may even punch me (his mental state was pretty unstable) for pointing out the obvious.

As I watched him drive away in an old two wheeler, my 4th tea had arrived. As i drank it (potentially harming my stomach, because 4 cup of tea is never a good thing), I think about him, his father and mostly his mother. I think about how his parents will pay the debt which they used to invest on this defeated man. I wonder if there was something I could have done for him. I think through the entire cup of tea, with no answer. Even as I write this today, I think about that day and realize that I still don't an answer. All I have is a smell of defeat, the same smell I had on that shocking morning. As a trainer, I have failed to help him get out of his current predicament.

[Note 2 of 2: Trainer diaries are narratives of a fictitious trainer who shares about his fictitious life and fictitious incidents. The narrative above is pure fiction. Brand names are used for reference purposes only. Each brand belongs to its owner. If there is something about this blog post that offended anyone, please contact me and I will take it down if proper reasons are given]

Thoughts on .NET Standard and its relationship with dot net framework, dot net core and xamarin

Despite my own feelings about some parts of Microsoft, I find myself continuing to be a developer, trainer and consultant who makes the bulk of his revenue from microsoft platform. Of course, this much is obvious if you read my blog regularly.

Now, one of the things that Microsoft has been trying for as long as I can remember, is to do the 'build once deploy everywhere' thing. This is particularly known to me because of my former strong association with windows phone. As far back as windows phone 8.1 and windows 8.1, MS has been trying to do some kind of a universal thing. Under ideal conditions, sure, things did become universal. However, under extremely practical conditions, things never got truly universal.

Now that the mobile game is lost for Microsoft, it finds itself in an odd place. At least in the home space, it is obvious that people will not abandon their mobiles (and tablets to some extent) and return to getting things done on the PC. Heck, if I was a construction engineer and not a software person, I would get everything done on an iPad instead of my PCs and laptops. So, now, Microsoft is tasked with coming up with something that should do 'build once deploy all' within its own ecosystem, but also across ecosystems like iOS and Android (the two most popular operating popular systems in the world).

To that extent, some definite movement has been happening. For instance, Xamarin (the tech that MS bought out a few months ago) allows a single code to be deployed on windows, android and ios, with a lot of caveats, of course. Then, there is the dot net framework which works very well whether you are building desktop windows applications or server applications or cloud applications. However, even within dot net framework, things that could be taken for granted on windows desktop, cannot be taken as such on server or web apps. There are some differences. Of course, if you were to build an application that is targeting Linux, you are out of luck when it comes to Microsoft.

However, some winds of change, either because that is the next step in a planned strategy or a reaction to the market or simply admitting to a lost battle, are blowing. I already mentioned Xamarin above, and then there is dot net core. Dot net core allows dot net applications to be developed and deployed on windows, Mac and Linux. This is fantastic news for someone like me. If i have to build applications that will be deployed on Linux or Mac, I will have to learn Java and objective C (I am guessing about this). However, I am already a somewhat decent dot net developer. I can leverage on my existing skills and still target Linux and Mac, which are currently not possible for me.

Of course, dot net core is still new. Like, totally new. Further, the task of ensuring compatibility which two widely different systems (I am clubbing Mac and Linux together because their underlying stuff is mostly same) is not easy. So, the dot net core comes with a basic set of libraries. This means, although I can target all three platforms - Windows, Mac and Linux, I am still limited to the libraries that are available. Further, if there is something I want to build and if that cannot be built by the available libraries in dot net core, then I have no choice but to abandon my plans for targeting Linux or Mac.

So, at this juncture, Microsoft has three different technologies that can sort of help me target every popular platform on the planet. The three are - the dot net framework (the big one which has been around for decades), the dot net core (which just started a few years ago) and Xamarin (which has been going good for a while, and now that its free, it could probably go even further). Since they are all Microsoft provide frameworks/platforms, as a dot net developer, I could involve myself in any of them or all of them. In simpler terms, the available tools at my disposal are pretty diverse and cover a lot of platforms. In even more simpler terms, as long as I keep myself updated with the latest developments of dot net, I should have no difficulty getting suitable earning opportunities as a trainer or a developer or a consultant.

Now, Microsoft (almost always trying to do something new and making big bets and this big bets is the reason I love this company) is still chasing that dream of 'build once deploy all'. As mentioned in the previous paragraph, Microsoft already provides the tools to target a wide array of platforms which no other company is currently doing. Everybody is doing the 'betting on one horse' thing and assuming they are invincible. Microsoft though, thankfully, bets on innovation and I love that. So, the next evolution in dot net is this 'dot net standard'. The blog (which is linked here) post from Microsoft, puts these things in a very succinct fashion. It lays out a path that opens up a lot of interesting opportunities.

The dot net standard calls for an idea that will merge the above three things (dot net framework, dot net core, xamarin) under a single framework. This is important because, right now, although the three (framework, core and xamarin) are MS technologies, you cannot switch between them seamlessly. Today, I am working on a dot net framework project, and tomorrow I cannot just work on a Xamarin project. The things I learned while building a dot net core project, may not transfer over to a Xamarin project. There is still a lot of differences between these three, Microsoft technologies. Dot net standard attempts to remove that by providing a common ground for all these three platforms.

The obvious question is, isn't this what dot net core is already trying to do? To me, the answer is yes. However, the key problem here is the question of time. Dot net core is probably pretty solid, but it will take ages for it to reach critical mass like the dot net framework. Will developers (and hence customers and by consequence, Microsoft) wait for that to happen? Very unlikely. That is why, dot net standard becomes the next logical evolution for its three predecessors - dot net framework, dot net core and xamarin.

The next question is, will this become real? Man, I don't know. I think it will become real because the blog post I have linked above looks very confident. Of course, dot net standard is only unifying the libraries. Other stuff will probably remain the same.

Still, a world where I can use a unified library to deploy on any platform I want. That's the stuff dreams are made of.

Follow me on twitter, facebook and instagram for more updates. Thanks!

changes to the blog

4 years ago, when study nildana was started, I believed that a day will come when interns will completely run the show at the technology club. 4 years later, certain events have transpired which have impressed upon me negatively. So, I have decided to turn this blog into my very own person blog. As a consequence, all blog posts made by students (to whom I continue to be thankful as ever) will be removed by the end of this month i.e. October 31st 2016.

Of course, study nildana continues to meet new students and hopefully, some of them would like to blog in the near future. In such a scenario, the plan is to give them their own dedicated blog sites assuming they are able to earn such responsibilities.

students who had blogged on this site are requested to make copies of their blog posts before October 31st 2016 and they are free to post them else where. Further, if necessary, technical help to run their own independent blogs for the former bloggers will also be provided.

Thanks.

Entering the world of web API and related stuff

Ever since this blog started, I have written what I believe are useful tutorials on android, web development and windows development. I must have written more than 150 blog posts in total (or may be more, I don't have an exact count). One common thread across all these tutorials is that they are all geared towards application development.

That means, unless you already have an external source of data (or your application connects to a database), the tutorials above will not help you much. Of course, in most real world, work type scenarios, you can be fairly sure that the blogs above will help you with the application development which is what is expected of you. However, what if you want to change teams? What if you also wish to build a data service to complement your application development? Further, perhaps, you don't wish to change teams but play on both teams. You wish to build a data service and also the application that consumes it. If you could do that, well, that would be incredibly cool.

That is what I plan to blog about going forward. I plan to build my own data service (for a project that I hope to start next year), and obviously I will blog about it. Of course, this year, I have taken up novel writing which is taking up significant amount of my writing time. So, the blog posts will reduce in quantity, at least till the end of the year, but I will blog as often as I can.

Update 1 : I will be using the information available at the official docs at asp dot net site.

Obsolescence and taxis and uber and developers and programmers and disruption culture

There is nothing more heartbreaking and devastating for an individual than to find out that there are no longer required in the grand scheme of things. This takes many forms, in personal life, in relationships, in business and of course career. Obviously, I cannot write about the personal stuff, but from a business perspective and from a career perspective, I sure can.

For starters, check out this interesting article " Court says yes to regulating cabbies, no to governing Uber drivers " on one of my favorite technology sites, arstechnica.

In the article, there are a couple of quotes. Both the quotes are extremely insightful, but the second one, I reproduce here in its entirety.

A license to operate a coffee shop doesn’t authorize the licensee to enjoin a tea shop from opening. When property consists of a license to operate in a market in a particular way, it does not carry with it a right to be free from competition in that market. A patent confers an exclusive right to make and sell the patented product, but no right to prevent a competitor from inventing a noninfringing substitute product that erodes the patentee’s profits. Indeed when new technologies, or new business methods, appear, a common result is the decline or even disappearance of the old. Were the old deemed to have a constitutional right to preclude the entry of the new into the markets of the old, economic progress might grind to a halt. Instead of taxis we might have horse and buggies; instead of the telephone, the telegraph; instead of computers, slide rules. Obsolescence would equal entitlement.

In a nutshell, the quoted paragraph implies that the passage of time (and the consequence i.e. innovation) stops for nobody. As programmers and developers (which are two different type of people by the way) who work in the computer science industry will have to deal with the challenge of obsolescence rather frequently. A very simple example would be, the amount of RAM our computers have. When I was a student, 128 GB RAM was a big deal. Today, my own work laptop has 8 GB RAM and I frequently complain that it is not enough. Do you see how much has changed?

I talk about obsolescence constantly, and have been talking about it as long as I can remember. My students are probably bored to death with it. Now, I am doing the same thing here. This time though, I am backing my claims with what some other person is saying. If someone is reading this blog post, especially my students, I beg you. Study the scenery in front of you. feel the direction in which the technology wind is blowing. Start researching the consequences of this upcoming change. Discuss with others like you. Then, finalize a plan. A plan that tells you how you can react and adopt when the hypothetical plan becomes a very reality. When the plan becomes a reality, be ready to change and adopt. Do not let age old customs and traditions stop you from adapting to changing realities.

Change is not easy. It hurts. It affects everybody around you, and sometimes it even breaks existing professional and personal relationships. Life is about survival. Change, I am afraid, is part of it. If you are unable to change, then all will be lost.

XML – stuff

Earlier, I blogged about web services where I mentioned the two most popular web services. One of them is XML, which is a web standard. Of course, microsoft uses it heavily and hence this blog. There should be a series on blogs on JSON as well, but that would come some other time.

With XML, we are looking at reading XML data, writing XML data. C sharp provides multiple ways of doing these things. First up, we are looking at a pair of classes that are meant for writing and reading xml files. Now, before we look into them, you need to understand the XML format. XML also called Extended Markup Language, is just like HTML. The difference here is that, in HTML we use the standard HTML tags like <P>, <img> and stuff like that. In XML, we create tags that allow us to ‘tag’ the data we wish to in our own tags. Perhaps that is where it gets the name ‘Extended’ markup language. You know, extend HTML to suit our needs. Very clever, whoever came up with that name.

Enough of my rambling, and off we look at the two classes that are useful for XML – XmlWriter and XmlReader. As you may have guessed from the titles, the former is for writing and the latter is for reading.

Writing object is created like this, and the reading object like this.

XmlWriter stream_object_xml_writer = XmlWriter.Create(stream_object_stream, new XmlWriterSettings() { Indent = true })

XmlReader xml_reading_object = XmlReader.Create(string_reading_object, new XmlReaderSettings() { IgnoreWhitespace = true })

Writing using these classes is a complicated affair, mostly because XML is all about tags and stuff. In addition that, you also have to keep thing about nodes, that have additional nodes, and contain some data or attribute. You will have to manually insert attributes, manually insert values. The whole thing takes a while to code. It’s like typing XML manually, but with methods. Of course, once you have a method in place, replicating becomes easier but yes it takes a while.

The same applies to reading. Navigating from node to node, manually, and picking up the attributes and values manually, and then collecting it or displaying it. You can find this in full action in our accompanying bit bucket code repo.

In addition to XmlWriter and XmlReader, there is another class meant for XML manipulation. This class is XmlDocument, which provides for faster XML writing and reading stuff. Then the question is, why not just use XmlDocument for everything? The answer is: choice.

As always, find the attached bit bucket to see all these three in action.

Serialize and Deserialize data and why

To understand serialization and deserialization, we need to understand what happens to data, when it is residing as part of an application and when it travels over networks. When data is part of an application, it is usually stored as part of an object instance. It would be an object representation, something that cannot be transmitted over a network.

The web transmits data in the form of text, words, and that’s pretty much it. This is part of that loose coupling that I keep talking about. The same happened earlier when we talked about streams, with different type of files. We convert the files from one format to another format, and then reconvert it back to the original type of file. In the case of serialization and deserialization, we are looking at converting object data into its equivalent string format, which would be serialization. Perhaps the words come from the series of characters to which data is converted into. Then, this string data is sent over the network, which is what networks do. Once the serial data reaches the destination, the string data is reverted back to its object form, thereby allowing the application to work with the data.

When you think about it, this is perhaps the greatest accomplishment of JSON. There are countless number of platforms today. You have web. You have windows. You have windows phone. You have android. You also have iOS. Then, there are so many platforms from the olden days, and so many platforms coming in the future. All in all, we have a real cluster-foxtrot here!

The behind JSON is that, it would be a simple string or in other words, serialized representation of actual data. That means, JSON can happily travel over the internet, establishing an useful and standard way of making things travel from source (data server) to the destination (client which is an application that runs any of the myriad applications I have mentioned above) and vice versa.

Our focus is clearly the dot net platform, so we have libraries that can readily convert object data into its serial format, and then back. That is what we are discussing here. Believe it or not, it is pretty straightforward. In fact, if you allow me to go off on one of my tangents here, I think today, we live in an excellent ecosystem for developers. Access to knowledge is easy and free. Development technology is mature and most of the time, free. It is easy to see mentors and it is easy to switch platforms. I would say, it is now possible to build large scale applications with extremely small teams. There is so much processing available for free or at a low price, to one person. It’s just…I don’t know wonderful. If only more students spent a little more time innovating, taking risks and less time texting, updating their chat app status and profile photo, the world will be better place.

Okay, so…serialization and deserialization. Right, here is how it looks in c sharp.

            using (StringWriter write_string_object_1 = new StringWriter())

            {

                //creating an instance of water bottle and initialiazing it with some values

                Water_Bottle temp_bottle = new Water_Bottle

                {

                    name_of_bottle = "bottle 1",

                    color_of_bottle = "blue"

                };

 

                //now serializing it and adding it into the string.

                //on the left side, the string stream that will hold the serialized data

                //on the right side, the object that needs to be serialized

                object_serializer_1.Serialize(write_string_object_1, temp_bottle);

                xml_string_1 = write_string_object_1.ToString();

            }

            using (StringReader read_string_object_1 = new StringReader(xml_string_1))

            {

                Water_Bottle temp_bottle = (Water_Bottle)object_serializer_1.Deserialize(read_string_object_1);

 

                //alright, at this point, I have obtained the deseriazed object

                //let me display the data from the object itself

                Console.WriteLine("Here is data from the deserialized xml and now in an object, data");

                Console.WriteLine("name of bottle - {0} color of bottle - {1} ", temp_bottle.name_of_bottle, temp_bottle.color_of_bottle);

            }

There you go, easy peasy. Of course, check our code for complete understanding of this concept.  

Directory operations

Once we have located the drives (read about it here), it’s time to do some directory operations. In simple words, directory operations boil down to the essential tasks

Creating directories

Deleting directories.

C sharp provides two ways of doing this. There is the static Directory class, and the regular DirectoryInfo class. The merits of using either one of these boils down to using a static class or a non-static one. So, I will leave to your interpretation of static and non-static classes to decide which of these two Directory operations classes you wish to use in your project.

I personally prefer to use the non-static class, and here is how you can create and delete directories.

            //lets create a directory object with a path

            var directory_object = new DirectoryInfo(@"C:\Users\Administrator\Documents\implementdataaccess\directory_playground\create1");

directory_object.Delete();

Now, do remember that these are directory operations. Since access to drives, and drive permissions can vary so much in an actual application real world scenario, there is a high chance of running into errors, so you are probably looking at mandatory try/catch code blocks.

Of course, you can find full code at our code repository.

wrapping up the exam 483 preparations - phase 1 of 6 complete and praying

As I mentioned yesterday (read about it here), I uploaded the last set of bit bucket code related to exam 483, thereby ending a journey that started almost 5 months ago. One of the many things I realized this year is that, the world is full of developers. However, how do we separate the good from the bad? That is where certifications come in. Certifications aren't perfect but they do give us a common yardstick to measure expertise.

One such certification is Microsoft certification. it's definitely top of the line. it's tough to break through, and it costs a lot. Not only that, it has international recognition and the certification actually covers the stuff that I use everyday in my work. So yes, Microsoft certification really makes sense for me, and by extension study nildana. Of course, as always, one should lead from the front. I wanted my students (well, at least those who believe in becoming the best in their lives and understand the sacrifices one has to make for the same) to become certified, and I believed if I could get one of these, they will follow me.

To that effect, I bought the exam 483 book. Not only did I study, I also made it a point to code everything I learnt. I built a bit bucket repository. Wrote extremely detailed comments. Then, I blogged each and every thing I learned. I did this for my own benefit, but also so that my students can have an easy time. So far, none of my students have taken the lead but a man can be hopeful. Either way, as of today, the blog and the code are ready, and that is phase 1 complete.

There are 5 more phases to go. Here it is in a nutshell

  1.  learn exam 483, blog what you learn and code what you learned. (COMPLETED)
  2. Revise everything. (IN PROGRESS)
  3. Take Exam. Clear it.(TO START)
  4. Get study nildana students to get certification. also pray to god that the students wont quit midway. and, offer prayers when one of them actually gets the certification. yes, lest i forget, pray even more that they wont quit. (IN PROGRESS)
  5. pray some more that students wont quit. (IN PROGRESS)
  6. pray (IN PROGRESS)

As I continue my mission to take things to the next level, I hope god in his infinite will help me out, with the phases to be completed.