Silent Sea
My new painting
My new painting
1974 July 3rd - Born in small village of coastal TN,
1992 May: Completed School final, came school first in board exam, Electronics club secretary, Won many painting competitions, School pupils leader, Run different hobby clubs and organized philately exhibitions etc.
1993: Joined Engineering.
1995: Bought my first computer a 486 machine, for whooping amount at that time, which changed my passion from electronics to computer.
1997: Completed Engineering in Electronics and Communication from MS University, won quiz competitions, Active participating member of Electronics Club, won many painting competitions.
1997 Aug: Completed extensive training on Java, Visual C++, MFC from Vetri software, Chennai.
1997 Sep: Joined Whizel technology developed Ocean survey system Whizonar, in Visual C++. Can not forget the moments when we debugged our application in the middle of the
1998: Joined ProdEx technology, where I learned the art of building packaged software products in Visual C++ and MFC. Developed many applications in the domain of inteligent text analysis, application integration and data routing. Can see some of my work in eGrabber.com products like ListGrabber, ResumeGrabber, LeadGrabber etc. Unforgettable moments:
2001: Joined Intel as C++ programmer, started working on Enterprise Application Integration projects. First project was to build a bridge between TIBCO RV and BizTalk in C++. Attended many TIBCO Active Enterprise Training.
2002, 2003: Worked on project for building Universal portal delivery framework. Used TIBCO Portal Builder, Visual C++, MFC, JavaScripts and all other web technologies of that time ASP, SQL Server, Active X, etc.
2004: Worked on project for building eCommerce Platform for Intel, IT as Project Lead. Used Microsoft commerce server, BizTalk server, .NET (C#), MS SQL, used Extreme Programming for first time.
2005 - 2006: Got assignment to form development team for Intel EAI / B2B application development team, and became manager of the team. Gone through many management trainings on being good people and project manager, and learned how to build effective software development teams. We delivered many EAI/B2B applications for order execution and 3rd party logistics automation using TIBCO and BizTalk technologies.
2007 - 2008: Become PMI certified project management professional (PMP), Managing a mega project to migrate legacy EAI/B2B applications developed using TIBCO Integration Manager to BizTalk 2006.
2009 - ????
I always wonder is there is any way we can crack the algorithm of how a story is promoted in DIGG.com by looking at each user profiles who digging the story and how many story they submitted, their success criteria, which part of the world they are from and what time they are digging it etc. I wrote a simple prototype application in Flex (Also i want to try Flex for first time), to collect these statistics to find out a pattern. But long way to go.
The application is here , and this is the way it works.
1. Get a URL of a story which you wanted to track for how it get promoted. The url can be Digg URL or actual story url. (For eg- for each story Digg assign a url based on the category it is submitted).
2. Go to beoue.com tool here, www.beoue.com
3. Type the url in the text box given
4. Hit the “Get DIGG Stats” button.
5. Wait for few minutes, the Graphs start building up and the user details start falling down in chronological way how the story was digged.
At this point of time, This tool collect the story details and user profile details who digged the story using DIGG APIs
- Number of users who digged it
- Each users Popularity Ratio (This is computed in a recursive way to find out how many times each user’s stories are promoted vs how many story they submitted).
- The time it is submitted.
- Each users friends count. And DIGGed user is friend of the submitter or not.
These values are collected in a recursive and plotted as graphs against multiple parameters.
Try www.beoue.com and leave your comments here about the tool. I used Flex Builder 2, with Action Script 3 to build this application. Flex is pretty good technology for left brain people to create creative Flash application (I am not sure which part of the brain dominates me always…. some time left and some time right, i guess).
Graphs Explained
Chart 1. User Popularity Ratio (No of Story Promoted / No of Story Submitted by a particular user) VS User.

Chart 2. Popularity Ratio multiplied by number of stories submitted VS User

Chart 3. Total Story Submitted by Each user

Issues and bugs in this tool.
1. Submit URL of only promoted stories (Stories which become popular).
2. To run second time, refresh the page again.
3. Still not added GEO profile chart of the users.
Brian Cox TED Talks about LHC
Anand Agarawala : BumpTop - 3D Desktop user interface
Jeff Han unveiling great multi touch interface
Jeff Bezos on Innovation: We’ve not done yet.
Intel threading building block is a multi threading library from Intel, for C++ language. This library makes multi threaded application development easier, by abstracting low level threading details for better multi core performance. Parallel tasks in a programs no longer require manual creation of threads and overhead of thread synchronizations issues. TBB (Intel Threading building blocks) got program constructs which is easier to use to perform parallel tasks in a efficient way. Internal implementation of TBB is better than traditional parallel programming models and very much optimized for future many core processors. More over, for programmers it is easy to use and code.
Let me explain it with simple example I wrote a year ago to understand TBB (this is nothing to do with my work at Intel). Here is my problem, “I need to create 10 different files with different set of data. Each files data manipulation and IO write is independent of each other. Each file creation is independent task and can be carried out with out impacting other file creation tasks”.
Let us discuss different option available in front of us to achieve this tasks.
1. Sequential way (no parallel programming).
Write code in sequence manner where you create one file at a time and then go and take next file creation task. Probably little code can be reused here, for example pseudo code of this approach may be
BOOL CreateMyFile(Some Data)
{
//File creation code, data manipulation, and IO operations
}
for(int i = 0; i < 10;i++)
{
CreateMyFile(Some Data)
}
Here, each task is carried out one after other, This approach is not optimal if your machine is multi core and multiprocessor machine, lot of processing slots will be wasted and processor power is not utilized to its full potential. Also this application will take more time to finish all the tasks when compare to two other ways explained below.
2. Traditional Multi threaded code
In this case, each file creation task can be done by a thread. So for each task create a thread assign the tasks and wait for the threads to complete. Ideally if thread creation tasks are quick enough, all 10 tasks will be done in parallel. This way of programming will look like this way
//Thread function for each thread to execute to create a file
UINT FileCreationThereadFn(LPVOID someData)
{
//File creation code, data manipulation, and IO operations
}
//Thread creation function, as we need 10 threads, using for loop to start 10 different threads. For each iteration //new thread will be created.
for(int i = 0; i < 10; i++)
{
BeginThread(FileCreationThereadFn, LPVOID(SomeData));
}
This way of programming is better than first one, as because at any given point of time (after all the threads are started), all 10 tasks will be executed by 10 different threads in parallel. Thread scheduler will take care of identifying idle processor slots and utilize it all the cores and processors at same time.
3. Using Intel Threading building blocks
In option 2, we used ‘for loop’ to start different threads to execute the tasks. What if ‘for’ loop itself got option to execute each iteration in parallel, also in optimized way for current and future multi core processors? That is what Intel threading blocks doing, it got ‘parallel_for’, and each iteration of parallel_for will be treated as parallel task and executed independently. Just by using ‘parallel_for’, your program is optimized for parallel execution of the tasks for current and future multi core machines. The pseudo code may look like this way
BOOL CreateMyFile(Some Data)
{
//File creation code, data manipulation, and IO operations
}
parallel_for(range,CreateMyFile); // Range here is iterative values.
The simple above code will do the magic of parallel execution of the tasks. This is not ends here, Intel threading building blocks got many other algorithms and programming structs which solves many of multi threading programming and more importantly very easy way to optimize it for many core processors of the future. If your application demands huge parallel tasks and need to optimized it for future processors, then TBB is the way to program your app.
Above sample application written using C++ and MFC with visual cue for how tasks are executed can be found here.
Supporting presentation with animation explaining above three options can be found here
References:
Intel threading building blocks are open source now under GPL.
http://www.threadingbuildingblocks.org/
Introduction
http://msdn2.microsoft.com/en-us/library/aa663364.aspx
Then Start with
http://windowsclient.net/default.aspx
http://windowsclient.net/learn/
http://www.codeproject.com/KB/WPF/BeginWPF1.aspx
http://www.codeproject.com/KB/WPF/BeginWPF2.aspx
http://www.codeproject.com/KB/WPF/BeginWPF3.aspx
http://www.codeproject.com/KB/WPF/BeginWPF4.aspx
http://www.codeproject.com/KB/WPF/BeginWPF5.aspx
http://www.codeproject.com/KB/WPF/BeginWPF6.aspx
http://www.codeproject.com/KB/WPF/WPF3D_2.aspx
3D
http://www.codeproject.com/KB/WPF/WPF3D_1.aspx
http://www.codeproject.com/KB/WPF/WPF3D_2.aspx
Books
http://windowsclient.net/community/books.aspx
WPF Videos
http://windowsclient.net/learn/videos_wpf.aspx
Channel 9 Videos
http://channel9.msdn.com/Showforum.aspx?forumid=14&tagid=105
Bootcamp Videos
I didnt attend this boot camp, but found this videos very useful to start WPF programming. 3 day worth of videos…
Day 1
http://mschnlnine.vo.llnwd.net/d1/mix/6/2/5/Introduction_2MB_mix.wmv
http://mschnlnine.vo.llnwd.net/d1/mix/6/2/5/VS_2MB_mix.wmv
http://mschnlnine.vo.llnwd.net/d1/mix/6/2/5/LapAroundBlendUnni_2MB_mix.wmv
http://mschnlnine.vo.llnwd.net/d1/mix/6/2/5/IntroToWPF1_2MB_mix.wmv
http://mschnlnine.vo.llnwd.net/d1/mix/6/2/5/IntroToWPF2_2MB_mix.wmv
http://mschnlnine.vo.llnwd.net/d1/mix/6/2/5/IntroToWPF3_2MB_mix.wmv
http://mschnlnine.vo.llnwd.net/d1/mix/6/2/5/IntroToWPF4_2MB_mix.wmv
Day 2
http://mschnlnine.vo.llnwd.net/d1/mix/6/2/5/IntroToWPF5_2MB_mix.wmv
http://mschnlnine.vo.llnwd.net/d1/mix/6/2/5/IntroToWPF6DataBinding_2MB_mix.wmv
http://mschnlnine.vo.llnwd.net/d1/mix/6/2/5/IntroToWPF7DataBinding2_2MB_mix.wmv
http://mschnlnine.vo.llnwd.net/d1/mix/6/2/5/IntroToWPFDatabinding3a_2MB_mix.wmv
http://mschnlnine.vo.llnwd.net/d1/mix/6/2/5/IntroToWPF9Events_2MB_mix.wmv
http://mschnlnine.vo.llnwd.net/d1/mix/6/2/5/QAWithArchitects_2MB_mix.wmv
http://mschnlnine.vo.llnwd.net/d1/mix/6/2/5/AppliedWPF_2MB_mix.wmv
http://mschnlnine.vo.llnwd.net/d1/mix/6/2/5/3DTechniques_2MB_mix.wmv
http://mschnlnine.vo.llnwd.net/d1/mix/6/2/5/WPFPerf_2MB_mix.wmv
Day 3
http://mschnlnine.vo.llnwd.net/d1/mix/6/2/5/WPFandLegacyCode_2MB_mix.wmv
http://mschnlnine.vo.llnwd.net/d1/mix/6/2/5/Prism_2MB_mix.wmv
http://mschnlnine.vo.llnwd.net/d1/mix/6/2/5/HelloRealWorld_2MB_mix.wmv
http://mschnlnine.vo.llnwd.net/d1/mix/6/2/5/WPFInStyle_2MB_mix.wmv
http://mschnlnine.vo.llnwd.net/d1/mix/6/2/5/RealWorldWPF_2MB_mix.wmv
Review of “HTC touch phone”. HTC Touch problems
Positive: 1. Great sleek design: You never get these kinds of compact sleek pocket pc phones from any other vendor (at least in India). Comparable models from other vendors (HP, Nokia….) can not even come closer to the compact, light weight, stunning design of HTC touch.
2. Innovative touch interface: You can access majority of the phone feature from innovative 3D cube touch screen (see below, touch cube in action). Nice feature to ’show off’ to your friends.
3. Home screen: This is not big deal though, but still the default home screen from HTC touch is better than default home screen of other comparable models.
Negative:
1. It is slow: Most of the time the phone responds very slowly. After initial days of excitement, HTC touch really sucks. System memory capacity is very very low and that may be the reason for response speed!!!.
2. It hangs very often: It hangs simply during many operations (you make a call but you may not be able to cut the call, the phone will be in dialing mode forever…. need to remove the battery to bring it back to working condition… again the same story continues in almost all the applications.)
3. Weak Signal reception: Some time when you try to make urgent a call, your phone never makes that call, and simply will say ‘not enough signal strength available’. This is fine still fine but worst part is, most of the time you never receive any call (But your caller will be hearing ringing tone but your phone never show any sign of incoming call) I received so many complaints from my friends i didn’t picked up their call, but actually my phone never received the call, not even missed call notification.
4. Camera may not work: Your HTC touch phone never comes as handy whenever u wants to take a quick snap. Most of the times you get a message ‘not enough memory, close some running application to continue’ even if you don’t have any other application running. Only way to make the camera work is reboot the phone.
5. Poor support from HTC: I send few mails to their customer care about these problems via email but still waiting for their response (almost 15 days over). I called their support desk; the person who picked up the phone never understood my simple explanation of the above problems and my multiple attempts to contact them always failed.
My recommendation: I will not by any HTC phone again blindly. The credibility is lost, and it reminds me how important to go with well established brand for any new purchases (at least for the phones).
Oil on canvas… My favorite scenery
IMG_0129, originally uploaded by haja_maideen_m.
Bought this new HTC touch recently, can not wait that long for iPhone.
1. Light weight software development methodology for small to medium sized projects.
No need to follow complex processes and filling tons of documents for anything, save the precious time the mighty programmers have and relieve them from pain of documentation and Bureaucracy.
2. Work elbow-to-elbow with customer in all software development phases (Planning, developing, deploying).
Review and receive feedback from customer all the time, customer need to be aware of the state of the application any given point of time.
3. Release well tested software very frequently.
Shorter release cycles (weekly/daily/monthly), follow test driven development, automate your testing and deployment.
4. Follow Iterative software development cycles.
Start with what ever information available, refine and rewrite as things become clear in an iterative way.
6. Work very closely with the team, write code in pairs.
Two person, one computer, one task, quality of the work product will be better in the long run (lesser bug because two brains working on single task). If possible have bigger cubes, and have every one sitting closely together (including the customer).
7. Continuously improve the code to make it better.
Look for even simpler refinement in past release’s code, and continuously fine tune it.
8. Keep everything very simple and clear; keep it running all the time.
No need for detailed architectural design before starting coding, make it simple, show the result to customer, refine it in later iterations if needed.
9. Have fun.
Following xTreme programming is not that easy when compared to well planned, documented ‘Other’ methodologies, so do all the above without killing yourself and have fun.
10. Retrospect after each iteration.
Correct the mistakes, do course correction, and become better ‘extreme programming team’, after each iteration.
Carl Sagan was an American astronomer (1934 – 1996), popularized astrophysics and astronomy to wider audience with his COSMOS television series and followed by serious of books related to astronomy, evolution. His crystal clear voice and poetic language mesmerized many people (still mesmerizing), in explaining the complex scientific revelations about human origins and space.
Important events in his life:
Few of his books in my shelf (worth a read):
Important websites about him
Viral Videos of his work
painting-class-4, originally uploaded by haja_maideen_m.
My master piece! ‘WIP’ version of oil painting, Yet to complete two more classes.
painting-class-2, originally uploaded by haja_maideen_m.
My master piece! ‘WIP’ version of my oil painting. yet to complete two more classes.