Tuesday, July 8, 2014

I Moved.

Hey everybody, I moved! You can now find my blog at http://theostrichproject.com. Please update your bookmarks and tell your friends. See you there!

Friday, June 6, 2014

Experience Continuity Design®

For nearly two years, I've been working at an awesome little shop that builds nearly everything on WordPress. And for over two years, I've had some strong opinions about web design. Do you see all of the irony here? My blog is on Blogger and I have no credentials whatsoever for web design. That doesn't keep me from opening my mouth though. Ha! Anyway, this seems like the perfect opportunity to put big mouth to the test.

For over a year, I've been contemplating porting my blog to WordPress because it just makes sense. I work with WordPress every single day. I like WordPress. It seems like the right thing to do. And of course, I don't want just a regular old boring WordPress theme that looks like a million other blogs out there so I started coming up with my own design.

I came up with something that I call, Experience Continuity Design®. I'd like to think that this is nothing new but I wouldn't be surprised if no one has ever thought about web design in this way.

So the old school method of web design seems is what I call "The Least Common Denominator" method. Basically, the lowest resolution screen on which someone will view a website on is 1024 pixels wide. So to ensure that everyone can see your website, make a template that 960 pixels wide and just don't do anything wider than that. This really, really, really sucks on full HD widescreen monitors.

With the advent of the smartphone, that method has evolved, but only ever so slightly. With responsive design, you focus on what's most important, display that at the top of your narrowest resolution (~320 pixels) and then let everything flow out as you get larger. It seems like things still max out at a width of about 1200 pixels and really isn't all that different than it was, just slightly less wasteful.

The problem is that design hasn't adapted to the fact that users, in a "desktop" environment (so not on a phone or perhaps a tablet) almost universally have wide screen monitors. That's why there's always wasted space on the edges of most websites. Figuring out how to use that extra space necessitated a different approach.

Instead of finding the least common denominator in screen size, I latched onto the fact that desktop users' view port is essentially the same rectangle. Some are a little wider than others but basically everyone views web content through a rectangular frame. With that in mind, I mocked up my design so that all users would see the same content and layout regardless of the size of their rectangle, thus creating a continuity of experience. So whether you're on a 1280x800 Macbook Pro or have a WQHD monster, you will have the exact same experience.

Full screen @ 1920 pixels wide


And then at 1024 where I felt it was time to respond to a 4:3 layout.

All of this was accomplished using some magical CSS by incorporating lots of percentages, vw's, and vh's. A year ago when I started this mockup, which has collected dust since then, browsers weren't all that happy with the vw and the vh but I think they might just be ready. And I'm hoping that by me actually publishing this, I will be motivated to make something happen. Of course, I don't have the PHP skills to execute but that's just a minor detail, right?

Does this not make amazing sense? Let me know what you think, please, in the comments.

Thursday, May 1, 2014

The Testing Burn

This last Sunday afternoon, I went to spend a few hours with some friends at the beach. Interestingly in Long Beach (a city with "beach" in the name), going to the beach is entirely a land activity because the water is so polluted but that's beside the point. Anyway, it was a beautiful, sunny day and I knew I needed to protect myself from the deadly rays of the sun.

I applied sunblock.

I put it on my face. I put it on the edges of my ears. I put it on my neck. I put it on my hands and arms. I put it on the tops of my feet.

Fast forward a couple of hours... I came home with a sunburn.

But how and where, you wonder.

When I was applying my sunblock, I was sitting on the couch in my living room, watching TV. My experience from times when I've gone out without sunblock told me to get the edges of my ears and the tops of my feet and of course my face, neck, and arms. So I have a burn on my forehead and the insides of my knees.

Evidently, when I was applying the protectant to my face, I thought I went all the way up to my hairline, but it must have been my idealized hairline and not my actual hairline because there is a very distinct demarcation between healthy and burnt skin. If I had been in front of a mirror, I likely would not have made this mistake. And as for my knees, that was poor planning. I imagined myself as being up and about rather than sitting.

I actually have a point with this.

When we testers are doing our job, we like to think that we're covering everything, or at least all of the essential elements. But how many times doesn't a product (or in my case a website) launch and you get burned? Glaring red spots that seem obvious in hindsight. And of course they hurt and peel and are an embarrassment until they heal.

Testing is something that we do without being able see the entire picture. There's no magical tool (mirror) that we can look into and see where we haven't applied our skills. Testing coverage is mostly verified by feeling. We can draw on our previous experiences. We can understand the landscape by looking at other similar projects. We can be well versed on the documentation relating to the project. But no matter what, there's always going to be some spot that you can't see.

And sometimes there are spots that you didn't plan for. You plan for shorts day at the beach and then when you get there, you're handed a Speedo and told to change. We take calculated risks because of limited time and money... and then the unexpected happens.

Hopefully you don't get burnt but when you do (and you will), hopefully you learn from it. I know I'll definitely be more careful about applying sunblock to my face down the road.

NOTE: There are no pictures of the burn described in this post. Don't ask.

The Long Silence

So it has been almost a year since I posted to my blog. I've missed writing but I haven't felt like I've had anything to write about. In the past, most of my posts have been inspired by the mistakes and bad attitudes I've observed at the companies I've worked at in the past. And while, I'm not saying my current employer is perfect, I have been genuinely content.

The last year has been one of great personal change. For the first time ever, I was fired from an unrelated contracting job. I got caught up in an emotional situation and traded in my beloved Eric (2006 Accord V6 6MT Sedan) for a car that I really didn't like. I got out of a severely dysfunctional relationship. I moved to a new city and I've started fixing all of the broken pieces of my life. Looking back on this makes me realize that maybe I have things to say that aren't just responses to what's wrong. I won't know if that's true until I actually write it but it's time for a new motivation for writing about testing and I think I've found it.

Yay testing!

Friday, May 24, 2013

7 Deadly Sins of Technology

1. Turning off without shutting down

Years ago it was actually possible to damage your hard drive by simply turning off your computer rather than shutting it down. Technological advancements have made that risk negligible. However, turning your machine off can still cause data issues. If you're in the middle of a critical operation, such as a software update, you can cause big problems by cutting the power. Think of it like performing open heart surgery and then turning off the heart bypass machine in the middle.

2. Opening emails/attachments/links from an unknown source

When you do this, it's like licking the handrail descending the steps into a subway. If you get sick, it's your own fault.

It's generally not entirely possible to completely ignore emails from people you don't know since email is such a ubiquitous form of communication. A couple of rudimentary ways to weed out the illegitimate emails: Does the sender address look real? Is the sender name properly formatted? Is the subject about sex, trying to sell you something/asking for money, or promising a prize?

If you open an email, do not open attachments unless you know the sender. Do not follow links unless you know the sender. Even if you know the sender be wary if the content raises any flags such as unusually bad grammar or advertisements, solicitations, etc. Before following links, make sure they point reputable domains.

3. Not saving often or creating regular backups

The universe conspires against you when you're working on something vitally important and under a tight deadline. It's not just in college. Backing up data has become so much easier in recent years. Many routers now have simple to use network storage options for USB hard drives. Dropbox, Amazon Cloud Drive, and Google Drive have very simple solutions for storing your data in the cloud. They work automatically once configured and you can access your stuff from anywhere. I recently started using AeroFS which allows you to create your own private cloud on your own hardware. It's very simple to set up and use. While it lacks the web file browsers of the aforementioned cloud drives, there is no monthly service fee (for up to three users) and I'm only limited by the size of my hard drives.

4. Using insecure passwords

Passwords don't have to be hard to remember in order to be hard to crack. Several years ago, Thomas Baekdal wrote a great post about this, which can be summarized as put 3+ random words together. That's it! "Windows ostrich Mountain Dew" would never ever be hacked but is easy for me to remember: my OS of choice, my blog, and my fuel. Of course a lot of sites that require a password are lame and would say that's not secure, even though it is. So come up with something shorter and make sure to use a capital and a number. "p1anoplayYes"

UPDATE: What makes a password secure just got more complex. This post at Ars Technica explains how hackers go about figuring out passwords. Page 3 of the article is particularly revealing.

5. Not installing updates as they become available

Installing updates can be really annoying, especially Flash. It seems like they always pop up at the least convenient time, you never know how long they'll take, and they often require a reboot. So we don't install them. Updates keep your system and applications working smoothly and, more importantly, securely. Failing to install updates is like having your front door smashed in and you just don't have it repaired. Sure you know everyone in your neighborhood by first name but that doesn't mean you're safe. Just do it though. Maybe not the minute the notification pops up, but within a couple of days. If you do it at the end of the day, it won't inconvenience you.

6. Not keeping up with changing technology

I'm talking to YOU, Mr. Still-Running-Windows-XP (or old version of OS X). For one, you're opening yourself up to security vulnerabilities that Windows 7 and 8 (or OS X "moon cat") protect against. The longer you wait to adopt newer technology, the harder it will be for you to adjust. You'll have a better user experience, guaranteed.

7. Being an early adopter

Wait, didn't I just say to keep up with new technology? Yes I did. What I'm saying though is that it's okay to wait for the technology to become mainstream first. Jumping in early can cause at least three different issues.
  1. Remember HD-DVD? Some technology fizzles out before it goes anywhere. 
  2. Sometimes the technology isn't quite ready for big time when it's first released. Windows 8, for example, took the OS in a completely new direction. The visual design is gorgeous (definitely 10 years ahead of the ugly, out-dated OS X), but even I think the the user experience is disjointed. Windows 8.1 is hopefully going to make that a lot better. 
  3. New technology usually costs more than established  tech. Sometimes it's fun to be on the cutting edge, and there's nothing wrong with paying a premium to have the latest and greatest, just don't be ignorant of that fact that that's happening. Sometimes waiting can save you big bucks.

Wednesday, May 22, 2013

A Common Vocabulary

A while back I asked if ignorance and close-mindedness meant the same thing. Admittedly, I asked this question to prove [to myself] that I was right and someone else was wrong. With the passage of time, that motive has all but vanished leaving behind a stellar example of a necessary component of communication: a common vocabulary. When this component is missing, communication can't happen. It's like taking your hair dryer to Europe and plugging it in with your converter set incorrectly. The appliance tries to run for a few moments and then the motor burns out because it's being supplied with the wrong voltage.

This all started on Facebook when an acquaintance of mine posted the following:

It struck me as odd that he should be so perturbed by ignorance. I have a very distinct memory going back to the start of my sixth grade school year. My teacher that year was quite the literary scholar. A few days before the start of school, the teacher held an informational meeting for all of the students and their parents. It was a means for everyone to get to know each other a little better and go through the daily schedule and other things about the impending term. I have no memory about the context anymore but somehow he was explaining ignorance. He said that there was nothing wrong with ignorance; it was simply not being knowledgeable about something. For some reason this has stuck with me all these years.

I asked my acquaintance if he really meant close-mindedness rather than ignorance and explained how I believe that those two terms express different meanings. This sparked a lively debate in which he contended that they mean the same thing.

This one word, just 9 letters, caused a communication impasse. This was just a Facebook post that had no weight of importance whatsoever. Just imagine though the implications of how a one-word communication misalignment can affect an outcome between a supervisor and employee. What about in a contract between client and vendor?

Verbal communication is a pretty complicated process and even though we start it at a very young age, it's still easy to muck it up well into adulthood. If my manager says she wants something done "right away" that could mean
  1. Stop what I'm doing now and switch to that other task
  2. Finish what I'm doing and then switch to the other task next
But it also has to be taken in context. Should I work through lunch or stay late? Is there a client call schedule for later in the day? Is the developer going to be out of the office tomorrow?

I think the key principle here is to eliminate ambiguity whenever and wherever it is perceived. Ask questions. Be explicit with expectations.

With my conversation above, six out of six respondents to my survey said that ignorance and close-mindedness did not mean the same thing. But there is that seventh person out there that has a different understanding, regardless of the situation.  He might be someone new that the client brings onto the project after the contract has been written. We don't always share a common vocabulary but by being proactive about the seventh person lurking out there and then being as descriptive as possible, even of that which seems obvious we can ward off problems before they happen.