Tuesday, June 12, 2018

full time or freelance?

It has been quite a while since I took the time to write about work activities in my blog.

One of the reasons for my lack of writing is that I have been working as an independent consultant for some time now and I spend all of my time at client sites or trying to find new clients. Some people insist on calling me a freelancer instead of a consultant, which makes sense for some people where they fill a temporary role with a company that does not have resources to hire someone full time and needs help to quickly deliver functionality. I prefer to be called a consultant as I like to prove my worth by demonstrating how to implement correct processes to my teammates and to lead them as a mentor. My initial goal when starting at a new company is to find the biggest needs and help fill them myself or to encourage my team to work on them. My next goal is to become a domain expert as quick as possible as this knowledge and skill is always indispensable for any company. My personal goal is always to help improve the people around me and prove that every dollar spent on me can be tied directly to improvements in both processes and products.

After reading the article entitled "The End of Traditional Employment - The Other Gig Economy" I have come to learn about consulting on a whole new level. What would you do if you could depend on a large pool of super talented people? Part of the problem in finding contributors at the right time for the right rate is the right people just seem to never be available when you need them. Sure, in a perfect world it would all be planned way in advance, but as we all know we don't live in a perfect world. There are times when employees quit, and we need to immediately fill the void they leave. Next comes the thought to quickly find anyone to help instead of thinking long term in locating someone who can transform the company into something better.

An illustration comes to mind that illustrates this point. Suppose you need a prototype built which will be used to discuss with the end users in a customer visit in two weeks. Do you hire someone who just creates a couple of screens for you this visit, or do you bring in someone who has domain knowledge and can take over the design and prototyping for you from now on? It depends on several factors, but the latter person can be used for any future projects and is someone you can depend on when a time crunch exists as well as fill immediate needs. Now what happens if you need several of these people? Do you just give up in despair since it was difficult just to find a single User Experience person to help you? Often what is natural is to keep requesting the same resource when the need arises since they have always helped in the past. But what would happen if they were a resource bank of people just like the one UX person you love?

From a personal standpoint I really like the idea that I am not an island by myself and if a client needs more people like me or more specialized help, then I can easily refer to a large talent pool of like-minded people who I know can do the job for my client. I like to call myself a generalist who can perform any UX task, but sometimes a client requests an expert with a specific UX skill, like technical communication write or competitive analysis expert. A good example of different UX skills are listed in the following article "The 10 UX Deliverables Top Designers Use". This brings up a completely different set of problems.

What is the true role of UX? Are we just in the deliverables business or producing beautiful artifacts? With the advent of Agile, whether it be Scrum or Kanban we must be mindful to produce deliverables that result in an improved product. We need to have actionable items in every document we produce. If we have a heuristic evaluation, then the output needs to be a bulleted list of items that can be given to the development team to fix in priority order. If we run a usability study on a prototype, then it should be driving a refinement to our proposed design. Then comes the hardest part of our job, in working directly with developers so there is no misunderstanding between our concepts and final product that is shipped to customers to use. This can be done by inserting yourself in the development team to help all along the way to be available to answer questions as they arise. Also, as development tasks are completed, there is a QA task to ensure that the whole product meets the original UX design or improvements proposed along the way from monthly usability studies.

The goal of every UX designer should be a product that matches the mental model of the actual end users and helps improve their life.

Wednesday, June 24, 2015

printing photos half way across the USA

I finally had a great experience with printing a photo. While in Virginia last week I took a photo of my wife next the Smithfield Planation on the Virginia Tech campus. She send the photo to her mom by text, which prompted her mom to have a printed copy of it. While my wife had no problem texting photos, since that is a daily task for her, but printing off a photo from her iPhone was out of her comfort zone. I was called in to help find a solution.

I texted the photo from her phone to mine. I launched a web browser and immediately thought of Walgreens since it was right down the street from our house. I saw in the Google search results a match of "Walgreens Photo" and tapping on that brought up a sub-menu with "Prints and Enlargements" as an option. I did not have an account so I quickly created one and then saw a welcome site of an "Upload" button. I uploaded the photo of my wife from my photo library, selected the correct size. Then I saw this lovely button asking me to where I wanted to print the photo. Then it dawned on me that I could have it printed at the Walgreens next to my mother-in-laws house. For $2.99 I had the high glossy print in her hands without paying for shipping. Finally a use for a drugstore on every corner in America!

Monday, June 22, 2015

how painful can Windows updates be ?

Life can be apparently very painful indeed when deal with Windows issues.

Months have gone by since I had to deal with the Windows 8 laptop. I basically let it just sit there, knowing all along that the automatic updates are going crazy every Friday. So last week as work I decided to check on it. Somehow a nasty issue related to VirtualBox being installed by a nameless person at work made the wireless stop working and thus no automatic updates. Unfortunately VirtualBox was installed in the middle of April so that means 2 months of updates have been piling up. That can mean nothing but trouble and hours of wasted time.

First of all it took me over an hour to figure out why the Wifi and Ethernet did not work. All I saw was this weird icon in the system tray that indicated a warning related to Wifi. I tried to plug in the Ethernet cable and still not internet. Since there are many ways to do the same thing I tried checking the internet connection in both Windows Desktop and Metro but all I got was a message that the internet was restricted and limited. What in the heck does that supposed to mean? I had no internet instead of limited web access. I kept searching until I found a message in the Metro internet checker that I used in Ms. Google "windows 8 unidentified network" which found one useful match that I followed thru every suggestion to no avail. My favorite was "download the drivers from Realtek", which was a bit difficult if I could not get in the internet. Thankfully I have a real Apple laptop that I can use for searching or else what hope would there be with this single non-working Windows 8 laptop?

After exhausting all possible solutions, I took a lunch break to walk around the lunch room, vent a bit to those around and then went back with a fresh set of things to try. Finally I found more details on the unidentified network in the Metro advanced network tab that mentioned VirtualBox, that I hoped would be my key to internet freedom at last. I did a new search using the text from that message of "windows 8 .1 virtual box host-only ethernet adapter" and found my real solution at last. The really odd thing is what would anyone put VirtualBox on the Windows 8.1 laptop unless to test other versions of Internet Explorer? I did not care to learn the reason and quickly uninstalled VirtualBox and the second it was removed I had internet!

Sadly that was last week and I am still trying to get the Windows 8 laptop up to date as it requires many reboots and of course then I have to deal with the weekly Friday updates just when I think I am done. It is a never ending drudgery of working with Windows. Now it all makes sense why large corporations don't deal with this problem like I do. They have a dedicated team who vent patches and verify they work and then push them out to all of the corporate Windows machine nightly or weekly. I am glad I don't use Windows and don't have to work at a large corporation!

Monday, March 30, 2015

Ophthalmologist visit to discuss LASIK after affects

It has been a while since I posted anything on my blog so now is the time. Today was an interesting day as I finally decided it was time to visit an ophthalmologist to discuss my vision issues. This summer it will be 15 years since I had LASIK done on both eyes. Several years I blogged about the experience after a few years had passed. For around 99% of the people who have it done it is a great thing. That was not my case. It could  be worse as I knew many people in Saudi who got RK surgery done by the man who invented it. The ophthalmologist told me today that the people he sees that had RK done on their eyes have the most problems with starbursts (not eating the candy but in their vision) and bad night vision. My big deal is that I almost failed my driver's license vision test last fall. The other problem is that I don't see well at all when I am tired or driving at night. Watch out if I am tired and it is night as then I should probably not be driving. Another reason for visiting an ophthalmologist is that my mother has very bad glaucoma and since it is hereditary I need to watch for it. The good news is that I don't have glaucoma as the pressure in my eyes is just right. The ophthalmologist said that people who had RK complain about fluctuating eye sight like I do so he was a bit perplexed why I would have such issues as well. He did not get to the real reason but he did find out that I am developing cataracts in both eyes. I thought only old people had that problem, but I guess that is a sign that I need to wake up as I am old. The following images, one for each eye, prove that I have cataracts, besides just being cool photos. The primary reason in creating this post is just to show off these super fine charts...
Left Eye

Right Eye

Wednesday, December 31, 2014

Windows Updates that never seem to end

It seems like a very long time since I posted anything. I just checked my blog stats and I am 20,000 page views now, which is pretty good since I so infrequently post anything any more.

The other crazy thing is that every time I use a Microsoft Windows machine I feel like creating a new blog post to relieve the stress that was imposed on me by using Windows. I almost never use Microsoft products any more but this week I had to use both Windows 7 and Windows 8 laptops. I know several people who have had problems with their new 2014 MacBook Pro laptops, which makes me very sad. Even fighting those issues, they are still better than using Windows. Let me explain why...

At the customer site where I am working now, we have a Dell laptop set aside for running usability studies when we need in person on-site testing. We had not used that laptop since April of this year. I knew that was asking for trouble since I knew there would be many Windows updates. I just never thought there would be 81 of them and after 2 reboots and 2 hours later I had the laptop in working order. There are still a couple of old programs installed that are constantly sending notifications to the screen that I have to see but don't help me in any way. Too painful to even find how to uninstall them so I just let them be by ignoring them as they only show up each time I reboot and login. They will not appear during our usability study sessions so I don't have to waste any more time on that laptop.

Then came today when I had to add TechSmith's Morae Observer to a Windows 8 machine. It is the same machine I used last year, at this time, to create the Windows Store app that I blogged about during the  6 weeks. I seldom use the laptop but some of the guys at work use it to validate their web apps. I started that baby up today and alas there were all kinds of updates. It took me 3 reboots and 3 hours to wade thru them. Several of them were so slow that I thought the machine was completely locked up. I tried to be patient and finally I had a usable laptop. It has to be an accident that there is a direct correlation between the number of hours and reboots I have suffered thru on two different laptops.

Now I need to vent... One of the updates was to download the latest Zune player. I really thought iTunes and iPods had killed the Zune player, but I assume the latest Windows phones must have it installed. I am willing to try anything once I thought I would give it a try. It turns out that is just about the worst looking app I have seen in a long time. It kind of reminds me of the old Winamp audio player with a very bad skin. Some screenshots are in order...

The first bit of bad news is that I have to watch a very pink and orange progress screen for a long time as it took way too long to install this one app:


It is not easter and I don't need to see a magic trick of a bunny popping out of a hat when the install is finally complete:


The first subsequent screen presented to me is a wizard to help find music for me. Zune asked me to select the 3 music groups I like the best. I entered the great Jeff Beck as my first choice and then I got this error screen. I guess what they really meant was it would be magic if you can actually enter 3 but you can try if you like being a magician.


I needed a break and went to my Mac to Skype my buds at work and to relieve some Post Traumatic  Windows Stress Syndrome from this process. I came back to the Windows 8 laptop and then saw this confusing bundle of tiles. As you move the mouse over the Zune window all kinds of things happen none of which are helpful. I finally gave up as I realized I was never going to use Zune ever.



Saturday, March 8, 2014

Google Custom Search Engine

Finally after much work I have a Google Custom Search Engine working for a public site I am working on for a friend. In the past I have worked on many internal web sites or private forums so I did not need for them to be located in a public web search. I have many times wanted a way to search thru this content without having to write my own custom search. So this week brought me to the place where I wanted to try to create a custom search using Google.

This is where I started my adventure in googling. I also needed to know the format to allow image, video, audio and PDF files to be indexed in the search. I also need a nice summary that helps me thru the process so this article was so helpful. I then thought it would be nice to have a tool that just does all of this for me and google provides a list of validators and generators. I tried a couple of them and was not happy with the results. I found myself referring to video format page as it was the hardest one to solve. Since all of the videos are stored publicly, I found this page that explains how to add them from Vimeo correctly. The nice thing about that page is that it describes how to get this working in other video formats also.

I first started by creating my own Google Custom Search Engine and then add the top level URL as the main index page. I waited a full 24 hours to see what the Google found by default. The results were disappointing as it never found more than the initial 9 pages I had at the time when I defined the search engine. I tried and tried and could not find a way to get the new pages to show up.

My next attempt that to create a list of URLs by using an on-line site list generator. That gave me a list and after waiting 24 hours that gave me all of the pages showing up in my search, including content inside my text based PDFs.

My next attempt was to add a site map directly in the Google Custom Search Engine  control panel. But after waiting yet another 24 hours I found that it did absolutely nothing. That is when I realized I was not doing something right. I clicked on the grey question mark next to "Identified Sitemaps" and it had a linked to "Submit a Sitemap". That is when I learned about Google Webmaster Tools and the ability to validate my site map. The odd thing is that I had already validated it on a couple of sites and they both said the file was valid. When I loaded my site map to Google Webmaster Tools in order test it, I saw all kinds of odd errors. The list of error codes is always helpful as there is no way to get the site map XML correct the first time as I was creating it manually myself.


Finally I have a working site map, but it took me over a week working part time on weekends and at night. I have to wait until the video and images are processed so by tomorrow I should be done with this whole affair. I have to honestly say that it is not a love affair as I did not really enjoy the process and life is all about enjoying the journey so I need to find a another adventure that is more fun.

Protection by obfuscation?

Why did Apple make it so hard to build and deploy iOS apps for user testing? Why did they make the process so complicated that a lay person cannot understand it? I build and deploy seldom and when I do I never get it right the first time. It has been three years since I first deployed an iOS app for user testing. The process has changed three times, so even if you learn it once that does not help as you solve the immediate problem as you have to relearn the process over and over again. I am not talking about a couple of easy steps. Oh no, this is way beyond the short term memory of recalling seven things. It has gotten more simple over time which means a higher chance of success, but it is still way too many steps. If you get one step wrong then you are in trouble as the app will not load on the physical device and you get the deadly message that the app failed to load. Sure you can dig around and find the console log on the iPhone and see crypt messages like the following:
iPhone installd[62] : entitlement 'keychain-access-groups' has value not permitted by provisioning profile '...'

iPhone installd[62] : 0x201000 verify_signer_identity: MISValidateSignatureAndCopyInfo failed for /var/tmp/install_staging.CAh7po/foo_extracted/Payload/...: 0xe8008016

iPhone installd[62] : 0x201000 do_preflight_verification: Could not verify executable at /var/tmp/install_staging.CAh7po/foo_extracted/Payload/...

iPhone itunesstored[103] : 0x1f6f000 MobileInstallationInstallForLaunchServices: failed with -1

iPhone itunesstored[103] : ERROR: MobileInstallationInstallForLaunchServices returned nil
Apple might as well have just put an item in the log that says you failed, so try again. How can a company like Apple that prides itself on design and ease of use in it's consumer products, make something so hard and difficult? Could it be that by making this so complicated that they have protected the average person from having the patience to figure this out by obfuscation? I have to give them the benefit of the doubt and assume that the whole process was not designed for ease of use but was added as an after thought when the iPhone just took off and sold a gazillion units.

The other problem I have is that when you sign up for an Apple developer account for $100 per year, you only get 100 physical devices where you can deploy your prototypes. If you test an app with 10 people and then never interact with those 10 people again during the year, you just lost 10 of your 100 devices. Now you see why people don't do user testing with real apps outside the Apple Store. If you have the physical devices connected to your Mac then those do not count against this device limit. How is this helping UX designers do user testing?

Please quit reading now if you are tired as the following may wear you out by just reading it...


Let me summarize the steps to deploy a TestFlight build so you can user test a prototype:

1) create a TestFlight account on the web (http://testflightapp.com)
2) create a Team within TestFlight
3) invite people to join the TestFlight Team as testers by sending them an email that they have to read on their iPhone
4) wait for the people to respond and then go back into TestFlight and export all of the contact info from within TestFlight Team screen

NOTE: congratulations as that is the easy part - all you have now are the unique iPhone identifiers for each person, so now the real fun begins

5) you have to have an Apple developer account and the Apple development environment called Xcode loaded on your Mac
6) log into the Apple developer account (http://developer.apple.com)
7) select "Certificates, Identifiers & Profiles"

NOTE: this is a 3 step process as you need a certificate, valid devices and a provisioning profile (it will be 4 steps if you want to create a unique application ID but I am not going there as that is optional and only needed for deployed Apple Store apps)

8) select "Development" under "Certificates" section
9) "iOS App Development" should be selected by default and grayed out, which is already confusing
10) select "App Store and Ad Hoc" since you cannot continue without select a "Production" radio button even though we are not generating a production build, confusion is starting to really set in now
11) the next screen is a set of instructions that you must follow using the Keychain app on your Mac, I forgot to mention the obvious but you cannot deploy an Apple app without a Mac, but you are free to use iTunes to connect your iPhone to your Windows computer!
12) after following those directions, you then load the generated CSR file into the Apple developer web site

NOTE: only two more sections to go, but you are getting the idea that only the brave in heart can actually get all of these correct the first time and not give up as extreme patience is needed

13) select "Devices"
14) select "+" to add new devices
15) select "Register Multiple Devices"
16) select "Choose File..." button and select use the exported device list from TestFlight

NOTE: finally something was not so bad, but then we start the really confusing part

17) select "Provisioning Profiles"
18) select "Development" under "Provisioning Profiles" section
19) select "+" to add a new profile
20) select "iOS App Development" radio button
21) select the "App ID", which should be your default Apple account ID or if you really go crazy then it would be the new application ID you created just for this prototype
22) select the certificate that you already created as it should appear in the list
23) select all of the devices you already added - if you need to add another one you get the honor of skipping the first 12 steps and going thru the rest all over again
24) name the profile
25) select "Generate" which will save the "mobileprovision" file in your Downloads folder
26) double click on the file to load that into Xcode

NOTE: now if you did everything by the book and nothing bad happened then you are almost done - now the following is the MOST important step and the easiest to get wrong

27) select the Xcode project file and make sure the build settings have "Code Signing Identity" set to the same value as the Certificate added to your Keychain - I open the Keychain app and select "Certificates" and scan for "iPhone Developer" and look for the Hex value at the end of the name - this is the same Hex value that must be selected for everything including Debug and Release
28) clean the project and rebuild it
29) easiest thing to do now is to install the TestFlight app locally on your Mac and start it up so it is visible in the system menu as the archive build in Xcode will send a notification that can be send to the local TestFlight app running on your Mac
30) select "iOS Device" as the target and then select "Archive" under the "Product" menu
31) when archive notice appears, end it to the TestFlight app
32) following the steps to add a comment, select all of the devices and send an email notice (the first time you do this, it would best to not send out an email since chances of success are slim to none)

NOTE: each device in the distribution list will get an email and iPhone notification that the build is ready

The good news is that on success you feel like celebrating as this was a huge accomplishment.
The bad news is that if you have to do this a lot then you are motivated to find a way to automate this somehow.