Friday, December 9, 2011

VALID what!?

When you last used your debit card at a grocery store, what was the message the debit machine gave you? Or how about when you filled up your car and used your credit or debit card, what was the message the machine said to you? Unless it said “Declined”, I am guessing you do not remember. If so, that was a well designed system. You would be surprised the amount of effort, studies and testing that is put into designing user messages that are seamless to the user. It is an area called Usability. I once met a gentleman with a PhD in Usability, who knew? He was extremely passionate about it. He explained to me you should never say thank you or please in a user message, especially when requesting a user to enter required information, please makes it sound as if it is optional. He pointed out, a stop sign does not say Please Stop; it just says Stop. When I was developer I was notorious for long user messages that would always get edited down in user acceptance testing (UAT). I prided myself on my thank yous and pleases, I had no idea I was violating several “usability laws.”

Well, there is one user message that should be written a big fat ticket for completely violating “usability laws.” If you have driven over any bridge in Northern California, you know this message. For my FasTrak riders , what does it say when you go through? Valid ETC. I get the “Valid”, but “ETC”, really? What is ETC, estimated time of completion, etcetera? This is such a poorly designed message, it is not intuitive and it stays with the user waaaay to long. I mean, “Hello, I am blogging about it!” I remember when I first saw it; I was completely confused and upset, thinking that makes no sense! So, I finally researched it and found out what it meant, ETC – electronic toll collection. Ooooh, ok now that makes PERRRFECT sense, what was I thinking. I am sure some developers are giving each other high fives thinking wow this is so cool. Well, they clearly did not do UAT, because there is no way anyone outside of the toll collection industry would make that connection. I would rather go through the cash lane and have the toll taker throw my change at me after I say “Thank you, create a great day” or roll their eyes when I give them a hand full of nickel and dimes ; while these are not necessarily user friendly messages, I completely understand them.

Here is a user message that has something for everyone

“Happy Chriskwanzaka” *

*(combination of Christmas, Kwanzaa, and Hanukkah)

Friday, November 11, 2011

It's On!!


What is all the hype about 11/11/11? For starters, 111111 is the last number on the binary numerical system. But what is bittersweet for me, is this is the first and most likely last binary date of my life. Hence the reason I took a page shot of it on my computer. The next time that a date will look like the last binary number will be 100 years from now and chances are I won’t be here even though I will be a young 125 years old (smile wink).

Binary is a numeric system that uses 1s and 0s, on and off, to represent real numbers going from 0 - 111111. Your keyboard strokes and computer languages get converted into binary language for the computer to understand. Think of your computer being made up of a bunch of light switches and each switch controls one light bulb. You control the switch by setting it to 0, for off and 1 for on; 111111, would translate to all the lights being on.

111111 converted to a number is 63; which converted into a character is “?”, which leaves me with the question, do you think a hundred years ago, they were celebrating such a monumental occasion? Of course, for as long as there was life, Geeks roamed the planet.

I had a friend tell me "11/11/11 11: is binary code for 'Get a Life'". My response was, "Actually, 01000111 01100101 01110100 00100000 01100001 00100000 01101100 01101001 01100110 01100101 is 'Get a life' in Binary". I showed him!


Friday, November 4, 2011

Stop Jumpin on GrandMa's chair , it's complicated!

I read an article the other day on Levels of Complexity. It encouraged me to define complex vs. complicated within systems and even within the “Occupy” movement in the Bay Area. Stay with me, I promise I will make a connection.

Let’s start with a simple system. In a simple system, there are minimum inputs and the end result is predictable. For example, when you login into your email account and send an email. Same actions render same results, of course given you type in the recipients email address correctly.

A complex system requires more inputs and may have many other input factors unbeknown to the user. Regardless of the different moving parts and multiple inputs factors, the system has a rather understandable pattern and predictable output. Have you ever submitted an expense report or applied for something online such as a school application, credit card? There were several inputs to the system beside the information you gave as well as conditional logic to the process; i.e. expense report greater than $150, then need to be approved by person A, B and C, if less than $25 only person A, etc. Nevertheless, the system typically has a clear pattern and rather predictable outcome, approved or rejected.

In my mind, a complicated system is not something people design or aim to achieve; it is born out of neglect or lack of long term vision. It is typically a system that started off simple and grew to complex. Then to due years of short term maintenance fixes, (which I refer to as band aid code - just fixing symptoms of the problems instead of identifying and fixing the problem) and no real love, the system becomes complicated. We have all worked with or been a part of such systems. Remember when your company moved to the new payroll or benefit system? The old system never went away; they just created multiple interfaces from the old to new, ultimately creating one big complicated system. Hence the reason your paycheck had too many or too little dedications or your benefits had a glitch; all signs of a complicated system – unknown outcomes.

I then aligned these 3 types of systems to the “Occupy” movement in the Bay Area.

Occupy Danville/Blackhawk – simple- never will happen.

Occupy SF – complex – protesters will cause disturbance to commuters, shut down Market St. for a minute, no longer, cops will show up, maybe even in riot gear; outcome typically a peaceful protest.

Occupy OAK – complicated – protesters show up to a city that lacks strong leadership, police force understaffed and operates gorilla style, ranks in the top 10 of highest crime (http://www.abetteroakland.com/wp-content/uploads/2010/11/2010CrimeRankings.pdf); outcome teargas (not predicated) ,violence and looting (somewhat predictable to those that pay attention)

To step outside of my geek speak for a second and give a basic analogy, Oakland is like that old chair at your grandmother house. It has been there for a while, had some wear and tear. It even was reupholstered a couple of times, but the structure has never really had any maintenance, so it has 1 good leg and 3 shaky legs. Then the grandbabies (protesters) come through and start jumping on the chair and the chair gives out. The kids look at the chair and say in their Steve Urkel voice “Did I do that?” I saw on the news this am, the Oakland protesters saying they do not want to be associated with the violence that broke out. When you come to Oakland, a complicated system (see I, couldn’t stay away from geek speak too long) and start forcing it take on more, when it barely can operate with its daily load, what did you expect? While yes, some of them may not have taken part in the violence, they enabled the situation. If they cared about Oakland, they would have recognized it is a complicated system that needs to be overhauled and given some love. Work to better the infrastructure of the city, from helping disenfranchised youth in East Oakland, to HIV education in West Oakland. As long as grandma’s chair does not get an overhaul and folks are allowed to jump on it, this complicated system will always crash.

Monday, October 31, 2011

Not a Choice; Operating as Designed

I was giving the twins a bath and as they splashed around, I filled up a cup with the water and said “Look the cup is full”, then I dumped the water out and said “Now the cup is..”, nope, I did not say empty, I said “Null”. Ok, crazy, right? It didn’t faze the babies, so I kept it to myself and continued with bath duty. Another day, I told my oldest, in order to watch TV he had to clean his room, finish his homework and take the garbage out. When I saw him kicked back watching TV, I proceeded to ask him if he had done all 3 things. He said he did not take the garbage out. I then broke it down in an “If-Then” statement. “If your room is clean AND your homework is done AND the garbage is taken out, THEN you can watch TV”. I then yelled “this was not an OR Statement, it is an AND all arguments must be true!!”. My poor son looked at me completely bewildered and quickly took the garbage out. I thought, oh no I am doing it out loud “Geek Speak!” I often think in that way, but have enough common sense to filter before speaking; however, kids will do things to your brain you cannot explain.

For years, I knew. I knew deep in my soul when my dad bought me my first computer, a Commodore Pet 2001 with a cassette player (http://en.wikipedia.org/wiki/Commodore_PET ) , when in high school everyone would come to me to create banners for their parties, since I had coded a computer program in BASIC to create them, when in undergrad I decided, with the help of my Prof. Dad, to switch majors from Dance to Computer Science , when in Graduate school my thesis included an Avatar as part of an online training programming (http://www.lcfinalproject.com/) I knew that I was a nerd/computer geek/geek, whatever you want to call it. For years, I convinced myself I did not meet the stereotype of a nerd; I’m female, African-American, a wife, a mother, part time dance instructor, somewhat fashionable and very social, none of which equates to a geek, in my mind. Yet, as one grows older you realize you cannot suppress what is innately part of you.

It is no surprise that I am a technical trainer and get to talk “geek speak” to others that speak the same language and many that are far more fluent than I. However, some of my students are not as technically savvy and in order to be effective I have to find a way to get across very technical abstract concepts in a way that is digestible to them, which is one of my greatest abilities. For example, I use the analogy of Human as a Class and each of us as an Object from the Human class, when I teach the concepts of Classes and Objects in my Intro to OOPs (Object Oriented Programming) class; or when I talk about efficiently managing memory when coding, I refer to it as the “Green” way of coding, using only that which you need. Unlike others, I seek to see how technology mirrors real life. I try to eliminate the separation between virtual and real world and identify how they operate under the same universal laws for the most part. I see it that way because that is the way I am wired, I suppose.

For awhile I thought I was a little “different”, but I have accepted that I’m operating as designed. This blog is my journey to embracing my inner geek outwardly by sharing thoughts that may have been spurred on from a conversation with a student, something I read or just came into my mind 5 am as they often to do. I also hope to dispel the stereotypes of geeks because we come in all shapes, sizes, colors, who knows you maybe one too and begin to chant “Say it Loud, I’m a Geek and I’m proud” Happy reading.