Category Archives: software

LEAP Motion – my final comments

I am one of those early adopters who was very excited about the LEAP Motion technology and the potential. I started playing with LEAP on August 14th 2013 and finally i returned the device today. LEAP Motion is a good device but probably not for me at this time.

Here are top 3 reasons for me to return the device.

1) Free Apps: There are 23 Apps on the LEAP App Store (called AirSpace) for both Windows and Mac. I would not use some of them and I don’t want to buy apps. I have spent $70+ for the device and I am not ready to pay for the Apps. My favorite game “Fruit Ninja” is $2.99 on Windows. Unfortunately, in the era of the iOS and Android Apps ecosystem, I never paid more than $.99 for an App. I enjoy most of the Apps for FREE. In that context, paying anything more than $.99 is a burden on me.

I believe LEAP (or partners) should have created more Apps before this launch. I like to explore but without lot of FREE Apps, my options are limited.

2 )New HCI Paradigm : Of course, LEAP is all about the new human computer interaction that potentially creates multiple opportunities. It took me a while to get used to the hand gestures and how i control the screen.

No wonder, Steve Jobs is the genius to understand the users as well as the business sense when he introduced the iPhone and iPad. The user interaction is pretty intuitive, starting from 2 year old kid to 90 year old grand ma. The usage of the finger to accomplish any task on iPhone/iPad is the trick. Everything just works.

With LEAP Motion, I was not able to get the same intuitiveness and it just feels odd. Also, i work mostly on the laptop and it becomes very cumbersome to keep Leap on your lap and do hand gestures. Perhaps this is designed for people using the desktops.

3) Usecases : After playing couple of FREE games, I did not know what ELSE to do. Can i control my whole Windows 7 experience? probably not. Unless, i launch the AirSpace to start the App, I cant not do anything. Perhaps, I may have tried to explore more if i had more Free apps????

So ???? : As a Computer Science engineer and a MBA, LEAP Motion is freaking cool technology and has some cool usecases. Usage of the cameras, infrared sensors to create the 3D space and manipulating the apps is great. But, I (as a user) was not too sure what i can do with this device.

I would definitely imagine there are lots of use cases in the 3D modeling space. Especially in the Construction Industry, this can be used to do the BIMs (building information models) and model them collaboratively. I can also imagine the use of LEAP Motion in Education/Schools/Medical Schools, for kids to touch and interact with the virtual body parts. In addition, they can build great FREE Apps for kids. My daughter would love to interact with the objects in the air and dress up Dora and all her favorite princesses.

I will definitely re-visit LEAP in couple of months and hopefully I can find some compelling usecases. But for now, it’s not for me!

Gesture Recognition Leap In Action Leap Motion App Gallery

LEAP Motion – Interesting HCI paradigm

OK, finally i was able to play with my new Leap Motion . Pretty cool technology that detects your hand motion and transfer it to your computer screen.

Some notes on Day 1:
* Setup is freaking simple! Plug it in, install the Leap Motion and go!
* Leap Motion is small in size and fits on most desks
* This is a new way of interacting with the applications
* Current FREE Apps are *NOT* enough to explore.
* I would like to see more FREE Apps. I don’t want to buy Apps! No way!
* Hopefully I should be able to control the whole desktop (not just the Airspace App) with hands.

Am I excited now? Yes. Will I be excited the Day 10? Not sure yet.

Leap Motion and USB Connector Leap In Action Gesture Recognition Leap Packaging

Startups in India – a report

A country’s culture and background (a predictor of course) pretty much decides the direction of the growth in this modern world. India is a risk-averse country and people are not ready to take risks. The younger generation is coming out being more entrepreneurial but still it lacks the big impact on the society. I only wish that the politics and government policies become more open to embrace the modern infrastructure and standard of living. This will hopefully encourage the brain drain and helps smart people to stay back and for Indian origin people elsewhere in the world to go back to India. I am hopeful!

Below is a wonderful study and results on the Startups in India.

5 simple questions for a better Feature Prioritization.

A major part of #productmanager ‘s daily life involves a lot of communication, decision making and feature #prioritization among many. With multiple product lines and time pressure, the feature prioritization decisions could become very subjective.

Here are the 5 questions every #productmanager should ask before making a decision.

– Is there a lost revenue if this feature is NOT made ?
– Is there any other opportunity that is more worthwhile than doing this ?
– Did customers ask for this ?
– Does this capability bring you #differentiation in the market ?
– Is the benefit of developing this capability > the cost ?

As +Prod Mgmt group, do you have any other suggestions ? Any other best practices ?

My take on Android phone (Samsung Infuse) vs. iOS (iPhone 3gs)

I have been using iPhone since 2007 and thought of moving to Android. Unfortunately, this did not happen. After 2 days of playing with the Samsung Infuse with  Android, I returned this device in favor of iPhone 4.

Background : In the past 4 years many called me Google and Apple fan boy. In general, I am passionate about how technology changes our lives and Google and Apple definitely had their share in this world. With Google, I am a daily user of the GMail, Calendar, Docs, Chrome, Google TV, Sites, Picasa, Blogs, Youtube, Reader and especially in the past few days the Google+. As a user, i get much more out of Google for “free” (?). Yes, people might argue on this “free” stuff from Google, but that’s a separate discussion. The first time I bought an Apple product is in 2007 ( I know, i was introduced to Apple pretty late) with iPhone (EDGE). Then I moved from EDGE -> 3G -> 3GS, in spite of expensive upgrades from AT&T and Apple.

All these years, I used products from Apple and Google enough to form some opinions and evangelize my thoughts. The fact that Google was my “window” to Internet world and Apple was the inventor of “cool” gadgets, I never had them as competitors. Until the introduction of the Android mobile platform from Google. With Apple’s iPhone – “Software and Hardware engineered to work together” and with Google’s Android – “Mobile OS became a commodity”. With Android, technically any mobile phone manufacturer can come forward and start using the Android OS with their hardware.

I hated iPhone : Yes, right from 2007, so many people around me have this iPhone thingy that i slowly started getting “sick” of iPhone. Every year, there is a new release and if you don’t upgrade, you look like an old 70’s guy these days. As a user, I would like to have unique phone (at least in thoughts) or at least a phone that’s popular and not many people have.  With iPhone, this sense of “premium” is lost. I live in Bay Area and when you walk in the streets of San Francisco/San Jose, you will know what i am talking about. However, in the mean while, i never realized how i got used to the iPhone UX. Its not just the user interface, but the elements of hardware in iPhone is what i think is the novelty.

I loved Android : For many doing businesses, it is a intuitive part to think about “giving choices” to users. Yes, Android did that. You could choose from LG, Samsung, HTC and others as mobile vendors and any mobile carrier at least in US. The Android applications are raising in numbers fast enough to touch or surpass the iOS applications and of course many are *free*. Many phones that had Android OS had better features “on paper” compared to a iPhone 3GS or 4G. e.g. Camera resolution quality, front/back camera, video quality, integration with Google Apps and others. And then, I love technology and I am a java programmer. So, i thought that going to Android would give me the “virtual” power of choice, software upgrades, and play with the applications as and when i want.

Something Changed : Last week (06/30/2011), i got my Samsung Infuse and played with it for few days. Its a great phone with 4.5″ Super AMOLED Plus screen looked great with emails, pictures and in general the screen looks very bright and lovable. Its very light and thin that i can carry it in my jeans. Believe me, for the screen size of the phone, I expected a lot of weight. The 8MP still camera and 720p HD video camera are very usable as if i don’t need any camcorder or digital camera (which i love that idea). But it was not the same when i used it for the most what i do – email and phone calls. The biggest WIN for the iPhone is that i got used to it unconsciously to the “simplistic” approach of the UX.

Rest is a history and please see the below video to see why i say “UX of iPhone is a lot better than Samsung Infuse phone”. Again, these are my views. Not many people may use the phone as i use and not many may see UX differences. When i used Samsung Infuse, i realized what i love about iPhone and what i got used to with Apple’s UX design. Its not just the software but the hardware too (a single button interaction for all the 4 generations of phone).

I love both the companies Apple and Google for their novel products and the ability to bring in a lot of innovation. I love Android technology and iPhone for my personal use.

Samsung Infuse vs. iPhone 3gs

 

Can Skype change your life?

Well.. not exactly. Till now, video calling has been a luxury and expensive act that remained with in the corporate walls or riches. What Skype did is to bring this luxury to common man and small businesses. Yeah… you may say, this is not a big deal. Yes, i agree! But the recent Skype move to provide Video calling on iPhone 3G and Wifi is phenomenal.  Combined with the iPhone 4 face time feature it is just a great feature for the “globalized” families and businesses.

I have a iPhone 3GS model and this feature works as you expect with the back facing camera. You can just innovate the usage scenarios…

  • When i am on the move, or at restaurants or at grocery stores, i could just Video call from iPhone+Skype and ask my wife which specific flower bouquet she wants?
  • If i see a wonderful scenery, i could just call my daughter and show it to her.
  • It works great with Skype users in India too. I called my family in India to show them the nice misty and cloudy scenic I-680 route to Pleasanton.
  • You are walking along the Golden Gate Bridge and at a perfect sunset, call your parents in India (or anywhere in the world as long as they are a Skype user) and share the joy.

Thanks to 3G data speeds, Internet and Apple (iPhone) for making this possible. Thank you Skype. This is an amazing job!

Thanks for those invisible researchers/scientists who made this video compression techniques possible to travel across world.

Note : My AT&T signal sucks on iPhone (even on freeways). Good luck Verizon users.

Can you do effective Context Switching ?

Everyone in Software and IT industry are exposed to the what i call as “Context Switching” problem. Bosses are so adept in giving different kinds of tasks to the “makers”, they often dont realize whats involved in the context switching. Before i move on, i was reading a very interesting article from Paul Graham on the “Maker’s Schedule; Manager’s Schedule“. Indeed, he was right on to the point of where the programmers (aks Makers) and managers spend their time and what does “meetings” mean to each of them.

We very well assume that most of the programmer’s have 8 hours of work time in a day and schedule all the work according to it. What we very often forget to take in to account are the obvious and non-obvious tasks. As Paul says, programmers one piece of work/task is normally in the 1 day chunk  (for some at least, it’s in 1/2 day chunks) and any disturbance in that 4-8 hours of time proves to be very costly. We all want to concentrate and make sure that the entire program is in our head till the time we are done with it. This phenomenon is very well explained by Paul in his article “Holding a program in one’s head“.

When you start your brand new day at office thinking over a problem or a algorithm, your boss calls up and asks you for a status update because his boss asked for a team update. Well, that is the request you need to honor without a question.  Usually the calls will not be 5-10 minutes but goes for minimum of 30 minutes to 1 hour, because we are trying to solve a problem over the phone or in the meeting room.

  • Meetings,
  • Weekend vacation talk,
  • Extended Lunch and coffee time,
  • Status reports to manager,
  • Status report to customer,
  • Helping the Sales and Marketing Team,
  • Attending the personal calls
  • etc… (i am sure there are 100s of such things)

The tasks, your manager thinks of as 10 minutes actually takes 1hour and after sending the sweet report or tools comparison to him, you again head down to start writing your program and after 1hour you get a call to say that the report format should be changed so that he can submit it right away to his boss. Phewww…. you did that one too. Now the time is almost, 2.00pm and you really want to concentrate and do the REAL work. All in all, When i analyze the average programmer probably gets around 5 hours of quality time out of 8 hours in the day time. No wonder, we often end up working late nights just before the delivery. Many programmers has the similar habit of working in the dark/late hours. Yes, that works perfectly. No one to call you or ask for reports or for help. The only thing that you really think of is the problem before you.

I work on a project which has a very tight dependency with the environment(installed software on the machine) . Every thing installed on a machine matters and a lot of legacy code is maintained from past 15 years or so. The environment is so critical that if one installed the required software in anyway other than the prescribed order, you may need to burn the mid-night lamp to find some non-obvious, strange and scary system behavior. Of course, initially i was under the impression that the software system MUST not depend on the environment, but as i got into the system, i believe that some times the dependency just exists (due to several legacy apps and unimagined integrations of different products).

Context Switching is one project impedement that Agile Methododlogy and Scrum claims to remove. Scrum recommends the values where the team has a specified time for meetings and tries to decrease the buerocracy in th project against the traditional adhoc meetings  and untimely calls for context switching. Of course one can say they are following Scrum and still do the traditional way, but i have seen this working in my experience.

Did any of you have such problems of Contect Switching ? What do you do to come over it ?

Beware of writing regex and string functions

Recently i was involved in an issue took a week to come to know the root cause. In the end its an eye opener to many who does not give importance to string functions and regex. “Regular expressions and String functions are quite powerful in any language; however utmost importance should be given to such code.”

The issue is very simple. Set of Java Files need to processed to get some annotations and other proprietary stuff and also separate the main class names and inner class names. The customer created Business Entities which may contain inner classes and are passed through a pre-processor. Problem occurs in a particular case when the File name is “BlaSomeClassName_Bla.java” and it contains a inner class “SomeClass”.

–>Inner class name is SIMILAR to main class name.

Lets look at the following code and especially the line 6. This line tries to match the class names given by qdox (java source parser) with the java source file that is currently being processed.

1     if (classes.length == 1) {
2         _javaClass = classes[0];
3     } else {
4         for (int i = 0; i < classes.length; i++) {
5             JavaClass aClass = classes[i];
6             if (aSourceFile.getName().matches(".*" + aClass.getName() + ".*")) {
7                 _javaClass = classes[i];
8                 break;
9             }
10        }
11    }

This is the regular expression that took up my days and nights which rarely has any sort of consistency in execution. In the above example the source that is being processed is the “BlaSomeClassName_Bla.java” and the class names that you get from qdox will be “BlaSomeClassName_Bla” and “SomeClass”. And now probably you would have guessed. In the array “classes”, if the “SomeClass” comes as the first element you are screwed. The regular expression matches the “BlaSomeClassName_Bla” and the processing class is taken as “SomeClass”. Where as the right processing class is “BlaSomeClassName_Bla”.

This issue took quite a few days to really understand and get to the bottom of the code. Many many thanks to eclipse which enables a cool debugging. Conditional debugging is very useful in such scenarios where you would not want to wait for a long time to see the special case. Instead, introduce the right condition and rest is taken care by eclipse. This is what makes the eclipse my favorite IDE.

Do you have any such experiences with strings and regex ?

Consulting vs Fulltime job

Before you read this blog, i would request you to have a look at my site so that you get an idea of what i have been doing. I have been introduced to many challenges to choose between the consulting and fulltime positions when i moved to USA from Germany. I was with product development companies all the while and its little strange for me the “idea” of consulting. I did quite a bit of research on different companies and what kind of job should i choose. For the rest of my blog, i do not want to take any of the company names. I hope that you would be able to relate what i am saying to your own experiences. I would be glad to hear more experiences and your views.

Before i say anything, I want to clarify what i am referring to as a “consulting job”. You are working on the payroll of a consulting company, which does not have any product behind it, but just acts as a head-count machine. They do have some direct clients and you are placed with one of them. Its purely on your luck that you get a long-term contract and you are not fired from the job from time-to-time.

By “full time job” i mean, you are working with a Product development, Services, rarely some consulting companies on their payroll. You might work for their own product or might do services to customers. You can be “fired” at any point of time but atleast they will give you 2 weeks notice (i guess this is a norm).

And now i want to share few categories that i considered before i decided my path. Hope this helps to some of you who are looking for a change.

  • Work Experience
    • Fulltime
      • You work with a single product for a long time. You will get to see to see entire system and some times you might get a chance to build the system from scratch.
      • Depending on the companies technology direction and its vision, one need to constantly change their technology area.
      • You might some times consult your customers to implement your product, train them and others. Still it might be with the product of your company.
    • Consulting
      • You are with clients, helping them to achieve their goals.
      • You might not have any say on the product direction or what the customer is doing. You are considered purely as a resource who is supposed to execute their instructions.
      • Your are at the customer site because you are a specialist. If you dont meet their expectations, you need to search another job.
      • On the technical level, you will see different systems and get to learn customer’s environment.
  • Influence
    • Fulltime
      • You are given certain responsibilities and you as a fulltime employee and you have the right to influence your organization.
      • Every action you do, every decision you take has a direct effect on the organization.
    • Consulting
      • Mostly customers do differentiate the fulltime employees and consultants. Social life with fulltime employees might be difficult.
      • You as a consultant normally will not have any influence on the project.You are there to help the project. Thats it.
  • Compensation
    • Fulltime
      • On the industry average fulltime employees are paid less than the consultants counterparts with same technology and experience.
      • Some times waiting for bonus and performance reviews can be frustrating.
      • Compensation is the last thing that you would discuss with the company.
    • Consulting
      • Consultants gets paid more as their clients pay more on the hourly basis. Its very important to know that the “client” has absolutely no liability to wards the consultant. Client might do all his decisions according to his whims and fancies.
      • Its unlikely that you discuss about the exact compensation in the first call.
      • Your consulting company might not be able to pay you at the right time as there is always a lead time for him to get paid by the client. Unless its a big company which has life of credit, its difficult to trust.
  • Interviewing Process
    • Fulltime
      • Normally companies will post the job description on their own web site or some of the job posting sites. They do not prefer to go via vendors / recruiters.
      • Candidate takes a phone interview – HR, phone interview – Technical, personal interview – Technical, phone call to finalize the offer and then a complete background check.
      • The entire process is normally around 1-2 month duration. At the end of this, you can still say NO to the offer that the company made.
    • Consulting
      • You normally decide on the hourly rate in the beginning of the process
      • Your consulting company or other vendors first talks to you about the job and then they SUBMIT you to the client.
      • They insist you to have all the KEY WORDS that the client is looking for in your resume. If you dont have it, its a crime.
      • In the event of multiple vendors marketing you, its likely that you have multiple resumes. (you might not like it, but it happens)
      • You typically have a phone interview and then the client decides if you are in the project or not. In the ideal case, the consulting company has to SCREEN the candidate, do the BACKGROUND CHECK, get BEST of the available technical brains.
  • Miscellanious
    • Fulltime
      • I do see many people who got stuck in the companies in the full time positions.
      • If you stick to a company for a long time, be sure that you update your knowledge and also be aware of whats happening out side your company.
      • Some complain about the bureaucracy in the company and they are not able to grow for a long time.
    • Consulting
      • Its pity that some times your friends might suggest you to have a Java, Oracle and Microsoft certifications in your resume, where as you have not given those certification exams.
      • If you are of 1-3 years experienced and what to apply for a job via a consulting company, they might ask you to put a minimum of 6 years of experience. In the end if you see your time line in your life, you have more experience than what you can.

At the end of this exercise, its very important to understand that your priorities are very important. You need to decide what you want to do depending on your passion and previous experiences. All the topics and points i have raised are purely result of my study and 3 months of job search for some good project and good company.

I wish everyone — who is looking for a job — all the best and make a wise decision. Luckily i did make a decision and i am glad for what i did.