Wednesday, June 29, 2011

BroadcastReceiver, BOOT_COMPLETED, and the Emulator

There are plenty of helpful pages out there on how-to's for having your application run on the startup of your Android device. Here are just a few:

http://www.androidcompetencycenter.com/2009/06/start-service-at-boot/

http://stackoverflow.com/questions/2784441/trying-to-start-a-service-on-boot-on-android

http://www.helloandroid.com/tutorials/running-code-phone-boot

What the pages didn't tell you was how you can make sure you have your code setup right with the emulator. For starters, I'm not sure if others have this problem but the power off button on my emulator doesn't even work. It just hangs on the message that reads "Shutting down".

When you try to debug your project from a clean emulator, well your app isn't on there yet when the emulator is loading so you kinda miss the boat.

The message boards indicated you have to run the emulator from the command-line with the app already loaded on it.  Well, I tried that but lazily, I didn't want to go back and figure out what my command-line parameters needed to be to launch it.

So instead, from Eclipse I just went into the Android SDK and AVD Manager (under the Window Menu) and started the emulator from there. I did this of course after loading the app into the emulator. I start the emulator and my BroadcastReceiver on boot works just fine. There was no need to go to running the emulator at the command line.

Tuesday, June 28, 2011

Delta's Mobile Boarding Pass

I thought I'd take a few minutes to talk about my experience with Delta's Mobile Boarding Pass since it was less than perfect. My first time using the mobile boarding pass was an accident. When I checked into my flight back from Sydney Australia, and asked for my final destination, I told the check-in agent that it was Los Angeles (LAX) because I booked the flights separately. Even though I booked the flights separately I could have said my final destination was Tampa and I would have gotten all of my boarding passes at once.

After going through customs when I got to Los Angeles, I had to recheck my luggage for an LAX to Atlanta (ATL) flight. I did not have a printed boarding pass, but the person responsible for checking the luggage wanted to see one before taking my luggage. I didn't have it. Almost instantly, I thought of the mobile boarding pass, so I  fired up the Fly Delta app on my Android phone, and after a small wait with the horrible cell phone signal (more on that later), I was able to check-in and get a mobile version of my boarding pass. I gave my phone to the luggage person and was able to get my luggage checked.

After checking my luggage, I had to go through another customs screening area that required me to have my boarding pass. Here is where the less than perfection begins. While I was online toying with other applications, my boarding pass was no longer easily available since it was no longer an active application on my phone. I had to relaunch the application. Well, this time when I went to recall the app, I had no cell phone signal since I was a few levels below ground in the LAX customs check-in area. Without a boarding pass, and approaching security, I nervously kept waving the phone until I got a signal. After a few minutes wait, I finally got an adequate signal and was able to recall my boarding pass. At the security checkpoint, I put my phone under the scanner and the scanner confirmed my mobile boarding pass. All is good.

With a three hour wait until my flight to ATL, I spent a lot of time on my phone. So much time in fact, my battery was getting low. Without a battery charge area around, I started to get worried that my mobile boarding pass wouldn't be available because the battery was going to die on my phone. So at that point, I decided to turn my phone off not thinking about when they board, I was going to have to reboot my phone, which takes several minutes, relaunch the app, and bring up the mobile boarding pass again. So again, as we are boarding the plane, I'm impatiently waiting for my phone to boot so I can launch the app to recall my boarding pass. With another weak signal in the airport, it took several minutes to load the mobile boarding pass. I was able to load it, scan it, and gain access to the plane. So, I guess this is a good opportunity to lay out some tips with the mobile boarding pass:

1. Make sure you have enough battery power.
2. Make sure you have a strong enough data signal.
3. Don't drain your battery if you are set on using the mobile boarding pass.

I probably won't continue to use it because I won't want to have to worry about these three tips.


Wednesday, June 22, 2011

Swimming in Sydney - The Ian Thorpe Aquatic Center

I've been staying in Sydney, Australia for about 6 days at the time of this writing and have only now made it to the the Ian Thorpe Aquatic Center.  The Ian Thorpe Aquatic Center is at 458 Harris Street in Sydney. I'm staying about an 8 minute walk away at the Holiday Inn at 68 Harbour Street near Chinatown. The walk to and from feels safe. I've always been kind of reluctant to wonder from my hotel in unfamiliar cities because I have no idea about crime rates, good vs. bad parts of town, so I usually just stay close to my hotel so going here was perfect.

It is the peak of triathlon training season in Florida, United States so I had to be sure to get some swimming in during my 2 week trip.

The Ian Thorpe Aquatic Center is open from 6:00 AM to 8:45 PM during the week and from 6:00 AM to 8:45 PM on the weekends. The gym is a YMCA but don't expect your United States YMCA card to get you in, they won't accept it. I had to pay $6.20 AUD to get in.

The swim area alone is very impressive. There is a giant wade pool for kids and plenty of change areas both around the pool and in one of several locker rooms.  The pool has a 50m length. So for you newbies, hopefully you can swim this distance without having to grab the side of the pool to take a break. Some lower lanes were broken into 2 25m halves.  Each lane had a marker up to indicate Slow, Medium, or Fast speeds and the lanes are cycle swim at all times. Even though I consider myself a below average triathlon swimmer, I found myself swimming in the fast lane.

After getting in my laps and changing back into my clothes, I took a walk around. Among the things I saw in the center were  a small gift shop, a small inside/outside eating area with an excellent view of the Sydney skyline. The gym was broken down into two levels with the other level having a complete exercise area. The exercise area was fantastic with plenty of free weights, weight machines, and cardiovascular machines such as bikes, treadmills, ellipticals, etc. The exercise area was probably the most spacious workout area I have ever seen, very impressive.

Below are some shots of the center, the pool area and skyline from the outside eating area.



Tuesday, June 21, 2011

Phases of Usability

As a software developer and product manager, I've spent plenty of time writing software applications, and spent plenty of time with customers using new software products. Recently, I attempted to get some feedback on the customer's experience with a software package and did not get a single response. At first,  I thought maybe the product was perfect and that there were no improvements to be made. But then I took a moment and thought back at all of the customer interactions I've had and realized some of the customers had feedback, some didn't, and those that did have feedback, had different types of feedback based on their level of experience with the software. Since then, I've conceived three different phases of usability based on their level of exposure and experience with the software. These phases are: Learning, Feature Opportunity, Settling.

Learning

The learning phase of usability for me seems to come during the first few days of training one user or the repeat trainings of multiple users of a system. Right away you start to notice how a given user persona interacts with an application. Almost instantaneously they uncover new usability opportunities because they  navigate to and from certain activities within the software application in ways that the engineers or designers did not intend. I see this as a great time to seek out opportunities to improve usability because if the user finds your product instantly easy to use than they will be more willing to adopt it as part of their workflow or process.

Feature Opportunity


I consider the second phase of usability not really a phase directly tied to usability, but one that can yield great product feedback for future improvements in either user interface development or functionality.  I've seen that after a user becomes familiar with the product they are learning, if you are lucky enough to be in their presence, they begin to relay great feedback.

"It would really be great if once I've completed this task the software, ...."

"Why is it that once I do this the software....." "It should really....."

Comments like these set flags of opportunity. The user is giving you feedback on how you can improve your product and add value to the customer.  However, keep in mind that one users feedback isn't enough. This user feedback should be collected into a repository and checked against additional user feedback to uncover trends and potential new feature opportunities.   Nonetheless, I see that short window of time after a user becomes comfortable with a software application as an opportunity to get great feedback. It's also a good idea to have a good feedback mechanism in place if you don't happen to be there when the users reveal their feedback.

Settling


Once the user has moved past the initial training experience, and flushed out all of their great ideas either internally as thoughts, to you, or using your feedback mechanism, the user gets to the day to day use of your application. At this point, the user just seeks their own means of efficiency with your software. That  quest for efficiency could typically mean that a user simply gets used to the way your software behaves, or simply does not have the faith to believe that you are responsive in delivering new innovative ways for users to be more productive using your application. At worst case, their feature opportunities overwhelm them too much and they simply seek out another piece of software that will solve their problems based on their new found experiences. At best case, they will find workarounds because they simply need to get a task done and your software while not the best possible solution, provides them with an adequate means of getting things done.

In short, after training or releasing a new version of the software, make sure you get involved with your users experience early because that could be the best and most opportune time to get the feedback you need to take your software to the next level.

Monday, June 20, 2011

Is LeBron James The Ultimate Generation Y'er?

When the Miami Heat lost to the Dallas Mavericks in the 2011 NBA finals, I must admit I was elated. Half of my elation stemmed from Dirk Nowitzki and Jason Kidd winning their first NBA championship.  The other half of my elation came from watching LeBron James go another year without winning an NBA championship.

Perhaps LeBron is right when he says that we have to go back to our boring day-to-day lives now that the finals are over but he left me with much to think about.  As I watched the NBA playoffs this year and read about all of the post game follow ups and comments, I can't help but wonder if LeBron's lack of leadership could be correlated with what is defined as the "Generation Y" employee in the workplace.



Generation Y, from a date of birth perspective could most easily be summed up by including anyone that is less than the age of 30 at the time of this writing.  Generation Y is labelled by some as a generation that has been spoiled and babied by everyone from parents to school teachers. In LeBron's case he could very well have been pampered by everyone in his life. After all he is dubbed as the "chosen one", or "the king".  Generation Y's have grown up questioning the authority of their parents, and maybe now in the case of LeBron, Heat coach Eric Spoelstra.

Generation Y'ers also can't help but to speak their mind. Which might be the reason LeBron seems to have such a hard time keeping his mouth shut in front of media or over celebrating small victories.  I saw LeBron acting like he won the championship only after only beating Boston in the second round.  The other surprising act was when he and his side kick Dwayne Wade were making fun of Dirk Nowitzki being sick during the finals.

One positive about being a Generation Y'er is they tend to have financial smarts. Perhaps that is why LeBron at times seems more concerned about his brand or his business ventures than his basketball play. Why do we need to hear about his investments in soccer clubs or his promotion of energy strips during the season? Shouldn't we be hearing about his domination on the basketball court?

Will we be learning about LeBron's striving for a healthy work-life balance when the next Olympics come around? Or will he just skip the tournaments leading up to it? Generation Y'ers don't seem to put in the same number of hours at the office as other generational employees as they seek their balance. In my opinion, becoming champton is instantaneous balance.

Generation Y'ers as a whole don't like to stay at one job too long and change companies more often than other employees. Could this be linked to LeBron abandoning Cleveland and heading for Miami and thus igniting this entire correlation? (At any time feel free to revert back to "The Decision" and trace that back to that sense of entitlement.) I thought Generation Y wanted to be challenged from day 1. LeBron was definitely challenged in Cleveland.  But I guess that means you can just leave if you get bored.

Maybe the answer to LeBron's question as to when he will win a championship will only be answered once managerial theorists start to write about the type of employee Generation Y'ers will become once they are in their forties. Will their feelings of entitlement and outspokenness diminish, or will they become more profound and instead of getting closer to being number one, actually get them further from it? Or will LeBron become a champion and the poster child of a generation in the workplace?