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.
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.
Hashmi in S.C Bose attire, for Independence Day celebration at her school
Hashmi in S.C Bose attire, for Independence Day celebration at her school
Hashmi in S.C Bose attire, for Independence Day celebration at her school
Every one knows that, if your job is your passion then success is 100% guaranteed, but most of the time people really don’t know what their real passion is? Majority of the people never feel happiness about their job, and also they, aware that they are not performing to their peek potential, because the job they are doing is not their passion, also they confused what their real passion is. Here are few simple steps, explained in the following sites, which I felt real good material to share, explains how to identify your real passion.
http://www.oprah.com/living/lifemake/passionsteps/lifemake_passion_main.jhtml
http://www.entrepreneur.com/magazine/homeofficemagcom/2001/march/38294.html
http://www.lifescript.com/channels/well_being/meditations_motivations/find_your_passion.asp
http://www.lifehack.org/articles/lifestyle/how-to-find-your-passion.html
http://www.itstime.com/feb2000.htm
http://www.wikihow.com/Find-Your-Passion
http://www.briannorris.com/passion/what-is-passion.html
Statistics of beoue.com after hitting first page of digg.com
1100 digg votes still counting (source: digg)
93 Comments (source: digg)
~ 30000 unique visitors (source: weblogs)
~ Surprisingly 70% of them firefox users (source: Google analytics)
~100000 Hits (source: weblogs)
123 people bookmarked this site in del.icio.us (source: del.icio.us, majority of the people tagged it as : analysis, popular, statistics)
18 people so far written about this app in their blog (source: technorati) - Interesting one is here http://www.techipedia.com/2007/07/11/digg-api-tools/
Recent Comments