Adios Amigos….


An exciting journey at iWave Systems comes to an end today, more than 3 years of my tenure at iWave it has been very rewarding and enriching experience.

A lot of you probably are asking about my decision. It is difficult to explain. However, life has offered me different opportunity and alternatives which I find irresistible, and I was hard pressed to make a decision

Last Day@Work

Last Day@Work

The journey at iWave had been truly exciting with best quality work and smart lovable people around.

A fresh graduate from engineering with a passion for embedded systems, joining iWave Systems was one of the best offer you could ask for to begin your career. In a fast pace high-tech industry, iWave has made its mark as one of the top embedded hardware and software design house, and I believe it will continue its legacy of accomplishments in the years to come.

It was a Japanese Panasonic project to start with in July 2010, guidance provided by my first co-workers, Vamshidhar and Kishore is still fresh in my memories.
Working on a live project made me quickly realized that work at iWave will be both exciting as well as challenging with lot of continuous learning.

Journey continued with the GE project, joined a wonderful team under my ex-lead Aman, the task was to develop a medical device software. In the team then were John, Krishna, Veena and Sowmya, we all had a different skill sets, had fun at work and always loved to share the technical knowledge with each other.

Apart from technical work, I am thankful to iWave for accepting and appreciating my contribution in business promotion and technical writing. If i remember, Mohammad Saliya, MD of iWave and other senior colleagues never missed an opportunity to appreciate and encourage these skills, which illustrates true leadership spirit.

I was privileged to have worked under Zaid Noordeen – Ex-Manager of Software Division, a true master of technical expertise with amazing problem solving skills. Inputs on the team and customer handling from Dinesh who is a Project Manager at iWave and also an alumnus of IIM-A, has helped to leverage the needed support.

Gratitude and special thanks also goes to my other Project leads, Ravi and Naznin, for their support in respective projects.

Along the way have met some of the talented individuals@Work Raghavendra, Krishnaprasad Dhanya and Arshiya to name a few, It was always pleasure interacting with them. I wish them all the very best in their professional and personal life.

Finally thanks and best wishes to Altera team- Keshav, Nithin, Bruno, Shwetha, Surendran. They all are smart individuals, always felt a lot comfortable interacting with them. I still remember our team treats with Amma Pastries and dinner at Zyna Restaurant!.

A number of night outs (term used in IT when you work till late night!!!), joy of accomplishments when something is working and sadness when isn’t, these are some of the small but memorable events I will be carrying forward from iWave.

Can never forget the healthy, hygienic food of iWave Canteen…:). Your best option to put on some weight!

Needless to say, I am going to truly miss iWave and its wonderful people!

Advice to young programmers – Alex Stepenov

I really want to be regular here but it is in the office you will find me more often.

Yesterday was my first training session on Windows CE 6.0 Real Time Operating System(RTOS) to fresh joinees, it has brought back the memories of final year college days where i used to teach juniors on M-I.

Windows CE is the front runner in the list of Real time operating systems (RTOS) available for some very time critical product realizations. My previous project lead was in my mind during the session, from whom we have learned some of the very core Windows CE concepts. Missing him in office these days!!

Came across this wonderful speech from Alex Stepenov of Adobe Systems and thought of sharing it here. This guy highlights the very core ethics of computer programming.

Advice to young programmers

(This is the summary of speech Given by Alex Stepenov (Principal Scientist,
Adobe Systems) at Adobe India on 30 Nov 2004. )

Alex Stepanov

Alex Stepanov

1. Study , Study and Study
– Never ever think that you have acquired all or most of the knowledge which exists in the world. Almost everybody in US at age of 14 and everybody in India at age of 24 starts thinking that he has acquired all the wisdom and knowledge that he needs. This should be strictly avoided.

– You should always study basics and fundamentals. There is no point in going for advanced topics. When I was at the age of 24, I wanted to do PhD in program verification, though I was not able to understand anything from that. The basic reason was that my fundamental concepts were not clear. Studying ‘Algebraic Geometry’ is useless if you donot understand basics in Algebra and Geometry. Also, you should always go back and reread and re-iterate over the fundamental concepts. What is the exact definition of ‘fundamental’? The stuff which is around for a while and which forms basic part of the concepts can be regarded as more fundamental. Of course, everybody understands what a fundamental means.

2. Learn Professional Ethics
– As a CS Professional, you are morally obliged to do a good job. What this means is that you are supposed to do your job not for your manager but for yourself. This is already told in Bhagwatgeeta : Doing duties of your life.

– The direct implication of this is: never ever write a bad code. You don’t need to be fastest and run after shipping dates; rather you need to write quality code. Never write junk code. Rewrite it till it is good. Thoroughly test every piece of code that you write. Do not write codes which are “sort of all right”. You might not achieve perfection, but atleast your code should be of good quality.

– Let me quote my own example in this context. You might have heard about STL, The Standard Template Library that ships in with C++ compilers. I wrote it 10 years ago, in 1994. While implementing one of the routines in the STL, namely the “search routine”, I was a bit lazy and instead of writing a good linear order implementation of KMP which was difficult to code, I wrote a best quadratic implementation. I knew that I could make the search faster by writing a linear-order implementation, but I was lazy and I did not do that. And, after 10 years of my writing STL, exactly the same implementation is still used inside STL and STL ships with an inefficient quadratic implementation of search routine even today!! You might ask me: why can’t you rewrite that? Well…I cannot, because that code is no more my property!! Further, nobody today will be interested in a standalone efficient STL …people would prefer one which automatically ships out with the compiler itself.

– Moral is, you should have aesthetic beauty built inside you. You should “feel” uneasy on writing bad code and should be eager to rewrite the code till it becomes upto the quality. And to the judge the quality, you need to develop sense regarding which algorithms to use under what circumstances.

3. Figure out your Goals
Always aspire doing bigger things in life
– “Viewing promotion path as your career” is a completely wrong goal. If you are really interested in studying and learning new things, never ever aspire for being a manager. Managers cannot learn and study…they have no time. “Company ladder aspiration” is not what should be important for you.

– You might feel that you want to do certain things which you cannot do till you become a manager. When you become a manager, you will soon realize that now you just cannot do anything! You will have a great experience as programmers.

– Always aspire for professional greatness. Our profession is very beautiful because we create abstract models and implement them in reality. There is a big fun in doing that. We have a profession which allows us to do creative things and even gives nice salary for that.

– The three biggest mistakes that people usually make are aiming for money, aiming for promotion and aiming for fame. The moment you get some of these, you aspire for some more…and then there is no end. I donot mean that you shouldnot earn money, but you should understand how much money would satisfy your needs. Bill Clinton might be the richest person in the world; he is certainly not the happiest. Our lives are far better than his.

– Find your goal, and do best in the job that you have. Understand that what is in your pocket doesnot matter…what is in your brain finally matters. Money and fame donot matter. Knowledge matters!

4. Follow your culture
I have seen the tradition that whatever junk is created in US, it rapidly spreads up in the rest of the world, and India is not an exception for this. This cultural change creates a very strong impact on everybody’s life. Habits of watching spicy Bollywood or Hollywood movies and listening to pop songs and all such stupid stuff gets very easily cultivated in people of your age…but believe me, there is nothing great in that. This all just makes you run away from your culture. And there is no wisdom in running away from your culture. Indian culture, which has great Vedas and stories like Mahabharata and Bhagwatgeeta is really great and even Donald Knuth enjoys reading that. You should understand that fundamental things in Indian culture teach you a lot and you should never forget them.

Finally, I would like to conclude by saying that it’s your life…donot waste it on
stupid things…develop your tests, and start the fight.

If you think!

One of the best poems from Shiv Khera’s You Can Win! It was just beautiful..!

If you think you are beaten, you are.
If you think you dare not, you don’t!

If you like to win, but think you can’t,
It’s almost a cinch you won’t.

If you think you’ll lose, you’re lost.
For out in the world we find,
Success begins with a fellow’s will.
It’s all in the state of mind.

If you think you are outclassed, you are,
You’ve got to think high to rise.
You’ve got to be sure of yourself before,
You can ever win a prize.

Life’s battles don’t always go,
To the stronger and faster man.
But sooner or later the man who wins,
Is the man who thinks he can.

— From You Can Win!- Shiv Khera

Raspberry Pi:Programming machine for a new generation!

Imagine a Credit card size computer with all the standard computer interfaces with a version of Linux OS. All this for an amazing unit price tag of just 35$ or even a 25$ for a scaled down version.

Meet the Raspberry Pi computer!!

Raspberry Pi is a single board computer made available by a British Raspberry Pi Foundation, the primary aim of the foundation is to familiarize the computer programming and digital learning to students as well as computer enthusiasts. Professional developers are interested to the same extent to try their hands on this tiny yet powerful computer.

The amazing thing about Raspberry Pi is that, it can take on any PC system in terms of its specifications.

-700 Mhz Broadcom Processor with ARM11 CPU core
-128 or 256 MB of RAM
-VideoCore GPU
-Two standard USB ports
-RCA and HDMI for display
-Ethernet Port
-Audio out
-SD Card slot (Booting is through SD, as no SSD or HDD)

Just connect the board to a Television with a RCA or a HDMI cable, a keyboard and a mouse, a Linux bootable SD card and you are ready to use it as any other computing machine. It can even play HD videos boosted by built in Graphics processor.

In my opinion the Raspberry Pi can be a boon for engineering students working on their academic or hobby projects. It will definitively give them a taste of a real embedded system and help them to build some really smart applications. With such a small form factor it can eventually replace the conventional embedded devices made out of microcontrollers which supports lesser features. You wont be surprised to see some smart TV module or a network server made of Raspberry Pi in the near future.The biggest benefit for the people using this will be the huge online community working on the same platform and sharing their ideas/solutions. The power of Open Source Hardware!!

Open Source hardware has still a long way to go, the platforms such as Arduino (A microcontroller based platform) and Raspberry Pi is promising a bright future. Similar to Linux and other Open Source Software which has brought a wave of innovations in the way we use and share softwares.

The platform is already available for pre-order on element 14 India website, so go ahead and pre-order.
Buy Raspberyy Pi from Element14.com

Share your ideas on how best this platform can be used in the real world!!!!

Make WinCE application debugging easy!

Hello everyone..

Good to be back on the blog, with a technical stuff this time.
A blog post specifically for Windows CE Application developers on “How to easily debug the WinCE 5.0 or 6.0 device applications“.

In the context of software development, debugging can be considered as an art and as said “Every art is incomplete without good & sophisticated tools“, there is no exception in this case too.

We face lot of troubles when our application crashes due to unhandled exceptions/Invalid memory accesses. In the absence of good tools, tracking the exact cause of these software errors in the code will take up your lot of development time and effort.

Microsoft Visual Studio with Windows CE tools provides run time debugging support. This will come for a great rescue when you are facing Data abort exceptions or application hanging. Also step by step execution enables you to find some of known/unknown/hidden bugs which are very difficult to trace in a manual debugging method.

This post explains the step-by-step procedure on “How to use the Visual Studio debugging tool to run/debug your standalone C/C++ application build for Windows CE 5.0 or 6.0 devices“. Debugging is possible even when your application is deployed and running on your WinCE device platform.

So here are the 4 simple steps after which you will start analyzing your code like never before!

Note: It is assumed that the reader knows how to download a WinCE image(NK.bin) to the target device either through EBOOT or by any other means.

Step 1: Setting the Project Properties:
• Set the project properties by right clicking on your solution and selecting Properties.

• Select Deployment option under Configuration Properties. Select “Windows CE 5.0 device” as the Deployment device. Click OK to save the changes.

Step 2: Configuring the device options.
• Go to Tools->Options and select the Device Tools->Devices.

• Select Windows CE 5.0 device->Properties. Make sure the Transport is set as “TCP Connect Transport” and Bootstrapper is set as “ActiveSync Startup Provider”.

• Select the Configure and check “Use specific IP address”. Set this IP address as read from the target device. You can get the device IP address with “ipconfig” command.

Step 3: Preparing the device for connection
• Boot the device with your WinCE 5.0 or 6.0 image (NK.bin). Wait till default WinCE desktop comes up.
• Copy the following 6 Apps/Dlls from
C:\Program Files\Common Files\Microsoft Shared\CoreCon\1.0\target\wce400\armv4i
to
My Device->Windows folder in the target device.

1. Clientshutdown.exe
2. CMAccept.exe
3. ConmanClient2.exe
4. DeviceDMA.dll
5. eDbgTL.dll
6. TcpConnectionA.dll

• Start the connection by running following commands in sequence. Before that open the command prompt in the device and make your current directory as Windows with “cd windows” command.

Start ConmanClient2.exe
Start CMAccept.exe

After running CMAccept.exe, you should start debugging by connecting to the device.
• Go to Visual Studio IDE and Connect to device from Tools->Connect to Device. For the first time connection, a dialog will open asking for the correct device. Select Windows CE 5.0 device and press Connect.

• A dialog box with Connection Succeeded message should be displayed. If any error messages are shown, try following.
1. Make sure the IP address of the target device is same as that set in the Device Properties (Refer Step 2).
2. Run the ConmanClient2.exe and CMAccept.exe applications in the target device again. Then try reconnecting the device.

Step 4: Start Running/Debugging the application
• You can put breakpoints at any place in the application, just go to the line and press F9.

• Start debugging by Debug->Start Debugging or by pressing F5. This will compile your application again(if any changes) and load the generated exe to the target device and run.

• You can also do step by step debugging by pressing F10 or stepping into/ stepping over a block of code by pressing F10 and F11 respectively.
• You can stop the debugging by Debug->Stop Debugging.
• If there any run time exceptions, the debugger automatically points the place of exception with Call Stack details.

Hope this method helps programmers out there trying really hard to make their application stable on different processor platforms.

Please get back to me if you find any problem trying out this method.

Best of Luck!

Don’t Quit!

Came across a very good poem today. Thought of sharing it here. It was a real inspiring one!

When things go wrong, as they sometimes will,
When the road you’re trudging seems all uphill,
When the funds are low and the debts are high,
And you want to smile, but you have to sigh,
When care is pressing you down a bit,
Rest, if you must, but don’t you quit.

Life is queer with its twists and turns,
As every one of us sometimes learns,
And many a failure turns about,
When he might have won had he stuck it out;
Don’t give up though the pace seems slow–
You may succeed with another blow.

Often the goal is nearer than,
It seems to a faint and faltering man,
Often the struggler has given up,
When he might have captured the victor’s cup,
And he learned too late when the night slipped down,
How close he was to the golden crown.

Success is failure turned inside out–
The silver tint of the clouds of doubt,
And you never can tell how close you are,
It may be near when it seems so far,
So stick to the fight when you’re hardest hit–
It’s when things seem worst that you must not quit.

– Author unknown

Intel Parallel Studio 2011 for Parallel Programming

Its been quite a long time i posted here. Either busy with the work or did not find any good topic to write on.
A fine Sunday afternoon and a pretty good topic in mind, a perfect match for writing a blog post.

So i will be dealing with Programming in C/C++ for Multicore processors with Intel Parallel Studio 2011 Tool.

We can call this, to be a period of Multicore processors with every other PC equipped with Multiple core processors (Dual-Core, Quad-Core etc). Smartphones has also joined these segment with latest phones coming with Dual core CPU.

Programming for Multicore processor is the real challenge for C/C++ programmers. For making the most out of multi core processor, the programmers needs to smartly divide the individual software process into smaller units which can then be simultaneously/concurrently executed on all the cores. And this process is more difficult than it sounds….

Here comes the Intel Parallel Studio…

First, what’s Parallel Studio? It’s an add-in for Microsoft Visual Studio that gives you a large set of features for writing parallel code that targets multiple processor cores. It includes a new C++ compiler that gets run instead of the built-in Visual C++ compiler, allowing you to take advantage of several new features. Parallel Studio integrates with all the recent versions of Visual Studio: 2005, 2008, and 2010.

Parallel Studio 2011, which is the second version, is a significant improvement over the first version. The new features are:

Cilk Plus: New C++ keywords (called Cilk Plus) that simplify the writing of parallel, threaded code.

BPP: Parallel Studio includes an entire template library called Parallel Building Blocks (PBB). PBB is built on Threading Building Blocks 3.0, an open-source threading library that was also created by Intel, along with Array Building Blocks. This threading library includes several classes that are similar to the ones in the standard C++ library, with the difference being they are totally thread-safe and will, when possible, run simultaneously on multiple cores. This takes away a lot of the hard work of programming for multiple threads, and that’s one of the primary goals of Intel Parallel Studio 2011.

Intel Parallel Advisor: This is all new for 2011. (The earlier version included a “Lite” version.) The idea here is that you’ll receive guidelines for developing parallel code. What I found impressive with Parallel Advisor is how smart it actually is. The idea is that it monitors your running program and finds places where you could benefit from parallelization. It includes a workflow window that takes you through the steps

Pros and Cons
People are often surprised at the gains in performance, but some feelings are positive and some are negative. For example, some people had able to speed up a sample application three times by dividing the work up on a quad-core processor. But i had expected a much bigger speed difference. I was hoping to see double-digit or even 100-times improvements. However, the reality is that we were dealing with only Dual or Quad cores, and not everything can realistically be divided among the cores.

Perhaps one potential drawback is in the addition of three new keywords in C++. On one hand, these keywords greatly simplify the writing of parallel code. But the problem is you completely lose portability to other compilers. The reason this might be a problem is if you want to port your software to other platforms (such as handheld devices), then you might have problems. However, realistically, if you’re porting to handheld devices, you’ll probably be making lots of other changes to the code anyway, so having to work around these three keywords is probably the least of your problems. I would argue, then, that the additional keywords really aren’t a big problem.

Conclusion
This is a fantastic product, and the new version adds some amazing tools that will hopefully get everybody thinking about targeting multiple cores with their software. There is, however, a learning curve involved in the product, and sometimes you might be disappointed with the performance increase. The price also might be a little prohibitive to individual developers, but larger software houses should have no problem affording it. The 30-Day free Trial version is available for download.

Go get it…

Happy Multithreading!

Stay Hungry Stay Foolish…..

It’s been quite a long time since i read a good book, working as a software professional does not permit such a stupid thought too.
But somewhere i had read about Rashmi Bansal’s books and wants to try some of her books. Finally got one “Stay Hungry Stay Foolish”.

The very first thought that came to my mind is “Is this a dieting book? Do i really need this?”
By reading the summery i was confirmed that its not related to weight reducing, but rather a book on inspirational stories of 25 IIM-A graduates who took a different path from lucid jobs to start something on their own. The story of the believers who believed in their ideas and succeeded. Finally i got to know that Stay Hungry Stay Foolish is a book on entrepreneurs and not a book by a dietician!!

Rashmi Bansal herself is an IIM-A alumnus and an entrepreneur. One thing which was unique about the titles of her books was, they all were derived from the speeches of famous personalities. Stay Hungry Stay Foolish and Connect the Dots from the Steve Jobs Standford University Commencement address in 2005 and I have a Dream from the famous speech of Marthin Luther King Jr.

The whole book is classified into following three sections:

1. The Believers – This section contains ten stories where the people knew that entrepreneurship was the way to go. They took the plunge straight after MBA or after a few years of work.
2. The Opportunists – This section covers eleven stories where the people did not plan on it but snatched the chance when they got it.
3. The Alternate Vision – This section covers stories of people who are using entrepreneurship for social impact or their own creative expressions.

List of the twenty-five stories:

1. Sanjeev Bikhchandani, naukri.com
2. Shantanu Prakash, Educomp
3. Vinayak Chatterjee, Feedback Ventures
4. Ashank Desai, Mastek
5. R Subramanian, Subhiksha
6. Narendra Murkumbi, Shree Renuka Sugars
7. Chender Baljee, Royal Orchid Hotels
8. Madan Mohanka, Tega Industries
9. Sunil Handa, Eklavya Education Foundation
10. Vardan Kabra, Fountainhead School
11. Deep Kalra, makemytrip.com
12. Rashesh Shah, Edelweiss Capital
13. Nirmal Jain, India Infoline
14. Vikram Talwar, EXL Service
15. K Raghavendra Rao, Orchid Pharma
16. Jerry Rao, Mphasis
17. Shivraman Dugal, Institute for Clinical Research in India
18. Shankar Maruwada, Marketics
19. Ruby Ashraf, Precious Formals
20. Deepta Rangarajan, IRIS
21. Cyrus Driver, Calorie Care
22. Venkat Krishnan, GiveIndia
23. Anand Halve, chlorophyll
24. S B Dangayach, Sintex
25. Vijay Mahajan, Basix

I had started with Sanjeev Bikhchandani, the person who started naukri.com the way back in 90’s, the days when the word Internet was not even heard of.
24 more to go!

I will update the details and what i like the most soon……

Windows 8 is coming….

If the Microsoft CEO Steve Ballmer is to be believed, Windows 8 is coming! And its coming soon!
Microsoft will surely try to repeat the success of its previous desktop OS release Windows 7, which has received tremendous response from the users around the world.

One information is official that Windows 8 is going to support ARM architectures, hearing this from Microsoft is bit unconventional as it has been a strong follower of x86 architecture machines from Intel or AMD. It seems supporting ARM design is the only option left for Microsoft to catch up with the explosive growth segment of smartphones and tablets, where the ARM is ruling and its ruling quite successfully. Witnessing a windows 8 based tablet in the near future with ARM based processor is a highly probable.

Support for ARM architectures will make the portable devices more power efficient compared to the x86 architecture machines. With power efficiency being the critical factor in success of a smartphone or tablet these days, Microsoft take on ARM is a right decision.

Windows 8 with a separate version for x86 and ARM support will be what Microsoft will be looking for with its release next year (If rumours about its release to be believed). It’s going to add more fuel to the smartphone/portable computing market which has been dominated by ARM based machines with Android OS and iOS taking the lead recently.

A new beginning….!!!

“A Journey of Thousand miles must begin with a single step”.

Finally i had taken that step and decided to blog…

I know it sounds unusual considering we as software engineers are short of most valuable thing in the world, the “Time”.

But i consider blogging, the best way to express yourself personally and technically in the virtual world, where being offline sometimes feels that the person is no more alive ( It was a bad joke though!!!….).
Virtual world where i am miles away from my friends but yet very near to poke one of them on Facebook who is invisible for days.

Coming to the Ashfaque Speaks…, here you will find more about “Me, Myself and Embedded”.
The technologies i had so far worked on or working on. The posts related to Operating systems, Controller platforms and tools we use to make the embedded devices up and running.
So if you are a so called technology freak then the words like Microprocessor, Linux, RTOS, Android, smartphones, tablets etc etc will surely ring some bells in your minds. If it does not then don’t be disappointed, i will promise you that its going to be interesting as well.

I also consider this blog as a space to share my personal experiences with work and the journey called life.

I am still a newbie when it comes to blogging, so please feel free to post your suggestions and comments to make me a better blogger with each post.

Wishing you all the very best in your endeavors.

-Ashfaque Ahamed