News from March 2009
Knowing when to stop
March 31, 2009
There are “trouble spots” in all projects. These are the parts of the project that aren’t fully thought out, lack documentation or in general are just vague. In the programming world, they are also the parts of the project that you or your team doesn’t have experience developing or that the solution is unknown. I can’t tell you the number of projects I’ve been in where there is at least one feature of the project that can be described as a trouble spot. Try as I might, they always seem to appear.
So if all you saw in these trouble spots was bad stuff, wouldn’t you do everything you could to avoid them. Of course, but often these trouble spots represent the best parts of the project. They are the opportunities as well. They are the parts of the process that make you better at what you do. Sometimes the trouble spots are the best spots.
As a project manager, I’ve seen it many times. A developer, or myself, will start into one of the trouble spots, looking for an answer, and just keep going. The hours churn away. Sometimes you get it, sometimes you don’t. And as you travel down this path, while your interest is high and maybe you’re learning a lot, you are basically burning money.
How do we sort this out? The project still needs to be completed and therefore the problem still needs to be solved. I’ve got a few tricks that I use regularly to make sure I stay out of trouble.
First, I give myself a time budget. I estimate how long it should take me to solve the problem and drop it down by half. If a feature of a project should take 12 hours, my time budget is 6 hours. This is the hard ceiling of my time. If I don’t have an answer to the problem within sight by this time, I back out and start over. This may seem like a waste but it is better to waste half of the allotted time than burn through the entire amount and still have nothing to show for it. That’s the problem with programming issues—it’s nearly impossible to figure out the time it will take to solve a problem when the scope is completely unknown. Experience can help you estimate better but it sometimes doesn’t seem like enough. Usually at the end of 50% of the time, at the very least, I’ll have a complete sense of the problem and that makes the time spent worth it. With the remaining time I’m able to look at alternative solutions, different approaches or even outsourcing if the budget allows. The trick to this is to watch your time closely and to be ready to give up your current approach. I’ve seen many projects turn ugly when a developer or designer refuses to give up on a bad course of action.
Second, you can avoid these trouble spots by identifying them more closely. That means writing the necessary documentation and making sure you’re clear on what the problem is that you are trying to solve. An extra bit of diligence here makes a very large difference. You know what they say, “an ounce of prevention is worth a pound of cure.”
Third, and this only works sometimes, but you can avoid the problem in some projects. I don’t recommend this but there are times when a client asks for something really cool (yup, “really cool” is synonymous with “trouble spot”) and they don’t really want or need it. Sometimes these features can be dropped and everyone is better off.
Fourth, and this is the most fun, develop friendships with people that do the same work as you. Whether you use Facebook, Twitter, IRC, blogs or even just a telephone, people around you could help you solve the problem. I’ll be the first to admin that I’m not a great programmer but I have lots of friends that are. When I get stuck, sometimes all I need to pay for the answer is the cost of a beer.
Trouble spots will happen but if you watch for them and have a strategy for overcoming the problems, they can seem a lot less daunting and potentially you can turn them into the opportunities they are.
Don't be a copy cat
March 31, 2009
“Don’t copy your competitors… you end up with their bad ideas.”
When we start a project, we usually do some kind of competitive analysis to get our bearings on the client’s place in the market. The idea with this exercise is not to come up with a list of elements to copy, but to understand the world in where our client does business. Sometimes in conjunction with this exercise, we get a request (sometimes many) for a feature or design element and the only rationale is “some of our competition does it that way.” When this happens, we know we have to help fight the urge to copy.
The danger in copying is that we end up making the same mistakes as our competitors. Although it’s helpful to know our competitors, it’s never a good idea to do something just because the leader is doing it. Just because the leader in your industry puts a link in a certain place or gives their logo a particular effect, doesn’t mean it’s a good idea.
There are very few perfect marketing pieces out there. This is especially true when you’re dealing with the level of complexity that a large web project can have. Some of the best sites out there have miles of room for improvement. This is why we consistently try to bring our customers back to the big “why”. How will this feature, design, or piece improve what we’re doing and accomplish the goals we’ve set? When the only rationale is that the competition is doing it, we know it’s time to push back.
Seth Godin puts it this way:
Marketers (and all human beings) are well trained to follow the leader. The natural instinct is to figure out what’s working for the competition and then try to outdo it — to be cheaper than your competitor who competes on price, or faster than the competitor who competes on speed. The problem is that once a consumer has bought someone else’s story and believes that lie, persuading the consumer to switch is the same as persuading him to admit he was wrong. And people hate admitting that they’re wrong.
~ Seth Godin, from Be a Better Liar
The point here is that you need to pick the right battle. Rather than trying look at all the players in an industry and copy every possible feature and activity, it’s much more beneficial to do what you do better, simpler and more thoughtfully.
When figuring out what features you should put on your website, pick the handful that you can’t live without. Then pare that list down further. Trust me, in the long run, you’ll be happy that you did.
Inflight's Images: now more improved.
March 30, 2009
If you asked anyone in the office what their least favorite Inflight module was, the answer would be a resounding “Images”.
It’s kind of weird, really – we have this totally awesome photo management app, and the piece of our CMS that’s most neglected/disliked is the one that deals with images.
At any rate, no one really liked images – but we all realized that they had to stay there. Last week, Micah put me on a project that involved using it – and at that point, the decision was made. Images had to change.
This is what the main page for the images module used to look like:

…And this is what it looks like now:

As you can see, your images are just displayed directly on the page now – and if you need to filter them, you can click on a category in the sidebar. That makes it a lot easier to see your images, in addition to figuring out which are where – previously, you had to click into a category to see all the images inside it. As a developer who hates clicking, this was less than optimal.
Another long-awaited addition to images is the ability to upload more than 5 files at once: the boring ‘upload 5 images and then more’ screen has been replaced with a sexy multi-image uploader:

As you can see, images to be uploaded will get queued up – and you can even remove them if you make a mistake. Then, when you’re ready to upload, you just hit ‘Start Upload’ – and go do something else. You can also clear the queue if you’ve screwed up really badly and don’t want to upload any images.
We’ve still got a few more tweaks planned for images(I can’t say anything, but you may one day be able to ____ your thumbnails), but it’s a little easier to use now – at least, I don’t hear Micah complaining as much.
Make more crap.
March 27, 2009
I’m told that this story originally comes from Art and Fear:
On opening day, the ceramics teacher announced that he would be dividing the class into two groups: group A would be graded solely on the quality of the work that they produced, while group B would be graded based on the quantity.
The teacher had planned a simple grading system: on the final day of class, he would bring in his bathroom scale and weigh the work of group B. Fifty pounds of pottery would get an “A”, forty pounds a “B”, and so on. For group A, only one pot was required – but it had to be a perfect one to get an “A”.
The class progressed as most classes usually do, and the groups split up. The members of group A pulled their chairs together and started theorizing about what made a pot perfect, while group B fired up their kilns and started furiously churning out pots.
Eventually(probably too long for some members of group A), the class was over – and grading day came. The members of group B came with bags and bags of pots, and the members of group A each had their single pots on display. However, when the teacher sat down to grade each student, a curious fact emerged: the highest quality pots were all coming from the group that was being graded on having the highest quantity of pots.
While group A was theorizing about what makes a good pot, and how to achieve perfection, group B had been churning out piles of work – and learning from their mistakes. In the end, group B had more pots, and better pots – while group A was left with grandiose theories about perfection, and merely okay pots.
In the creative industries(and especially design, it seems), it’s easy to get caught up in the little details – tweaking that one little thing, or executing that project perfectly. But the reality is, your execution will never be perfect. There will always be something you want to change, or that you look back at later and go “wow…how did I make something so crappy?”.
Realistically, I’ve spent more time than I need to writing this; we’re hard-wired to try and not be crappy. But the reality is, you are going to make crap. Everyone does, and it’s what you do with the crap that you make that defines whether you improve, or keep making crap.
Your favorite creative? When they first started out, they made a lot of crap. And if they tell you that they didn’t, they’re lying because they’re embarrassed by how crappy their first work was. But they didn’t get to the point where they were someone’s favorite creative by designing crap – they got there by creating lots of crap, and learning from the process(and their mistakes).
You will make mistakes. You will also make crap. But if you aren’t making anything, you aren’t learning anything either – you’re just wasting time. So stop thinking about crap, and focus on making more crap.
Grid Designer
March 24, 2009
I Found this online Grid Designer tool a little while back and it has proved to be very useful for determining the grid size in layouts.
Alternatively you can print your own grid paper for old fashioned drawing
Simplicity Driven Projects
March 23, 2009
Often when I meet with clients to discuss a technology project, either ongoing or new work, we have to discuss a problem (or rather the opportunity to do better) and then we try to come up with an answer or solutions. We brain-storm, discuss, collaborate and sometimes argue to get to something we can both imagine would be the solution.
While this process works well, it really depends on a couple things that are not very dependable.
First, the person leading the conversation, usually me, has to be responsible to discuss both the possibilities and restrictions of the potential solution. Say we’re talking about a new project for a client. The client would suggest how we can do better than what’s currently available and usually there are restrictions (time, budget, resources, etc.). It’s up to me to keep these restrictions in mind, all the while suggesting the solution. It’s sort of an internal tug-of-war. I sort of imagine it as if I were Santa Claus and a tax collector rolled into one. I bring the presents and also take away the fun. As you can imagine, it can be difficult to walk this line.
The second thing that isn’t very dependable is that most of the time the clients don’t have the experience or the creativity to come up with the solution to their problem. They know the have a problem and that they need an answer and a lot of the time they have an idea of how this should be done. But, isn’t it my job to come up with something for them? I work on the Internet and look at dozens or even hundreds of websites each day, and I’m aware of the capabilities of my team, so most of the time a suggestion by me should be a bit more worthwhile to the project. The stuff that I get from clients is often simplistic or not fully formed. Worse, sometimes I get clients that are unwilling to let go of a really bad idea.
So how do we work around these two issues? This is where we look for simplicity.
While we’re in the process of analyzing the project, it’s important to keep asking the simple questions:
- Who is going to benefit from this?
- How is this going to be used? Or, how is this going to work with what people are currently doing?
- How much change will people have to endure if we do this? How much is too much?
- What are the steps of the process?
Notice there are no questions about what the solution will look like or even how it will work. We’re mainly try to figure out why we’re doing things a certain way. If we keep these questions in mind throughout the process, we’ll spend less time straying and spend more time on the project.
Additionally, if we find answers to these, it’s easier to discuss the solution with the rest of my team. It’s easier to say, “make the application do X then Y then Z,” compared to “the application should be better than our competitors and our audience loves the color red.”
So how do we do this? How do we get clients out of the narrow view?
Practice is part of it. Also, I’ve work with many clients and I’ve learned the value of sticking to my questions. Lastly, and this is the secret ingredient, I make it perfectly clear that we want what they want which is a successful project, and we’re working hard to make it happen.
To Toast, or Not to Toast?
March 20, 2009
“It would be awesome if saving a page also made you toast”, I will think as I start to write the code involved in wiring up a toaster.
As a developer, I have a lot of power over what features get built or not built, and how exactly they function.
One of the results of being in this position is that features for things sometimes end up getting done as I realize they’re needed, as opposed to when they actually are – and one of the problems with that is that I occasionally don’t have the best ideas for features.
“It would be awesome if saving a page also made you toast”, I will think as I start to write the code involved in wiring up a toaster to Inflight. After a half a day or so, the feature will be finished – and I’ll have a bunch of old, cold toast lying around from testing.
But at the end of the day, does having a nice, warm slice of toast for every time you save a page really improve things that much? What happens if you’re saving a page multiple times a day? Having some toast on every page save is great if you’re about to have a dinner(or toast) party, but perhaps not so good if you just want to update your content and be done with it.
While making toast every time you save a page seems a bit outlandish(although tasty), it’s easy to fall into the trap of thinking “it would be cool if…” when you’re discussing a feature. The moment that you start discussing a feature using “it would be cool” instead of “it would improve something”, you’re in trouble – you’ve started looking at the feature in terms of the tasty toast it will produce, instead of the time it will save or user experience it will improve.
“Toast-think” is dangerous. Having it happen too often means that you’ll spend time building things that no one actually wants – but everyone thinks is cool. As a developer(and the person responsible for building the feature), it’s unfortunately part of my job to say “I know it would be cool, but do we need it?”. Sometimes we do, and sometimes we don’t – but by asking the question of ourselves, we can stay focused on the things we do need, without getting distracted by the things we don’t.
Internet Explorer is a bad parent
March 16, 2009
I’m always researching the intricacies of different browsers. It’s my job to know their quirks and learn the techniques being used to keep them all in line.
One of the most frustrating things I run into working with CSS is the fact that there are so many new features in CSS3 (and even CSS2) that is not supported in all browsers. For example, pseudo classes are infinitely powerful when it comes to targeting specific elements (the first item of a list) or interactive states (a rollover).
Two simple pseudo classes would be :first-child and :last-child.
The other day I noticed that Internet Explorer 7 former, but not the latter. I felt obliged to let everyone in the office know about this nuance, so I said “IE7 supports :first-child but not :last-child”.
I got two responses.
“That’s just mean!”
And the reason for this blog post:
“That’s just bad parenting!”
There you have it. Proof that Internet Explorer is a bad parent.
Anti Aliased Text in your browser
March 13, 2009
Since owning a mac and seeing my type render nicely in my browsers I’ve been very frustrated with how type looks in Windows. I was checking on one of our sites the other day to see how it was looking in Explorer and was especially horrified at some italic text.
I’ve done some digging and for those of you on a Windows system there is hope.
For XP users: Go to your Desktop > Right Click > Display Properties > Appearance > Effects
Then under “Use the following method to smooth edges of screen fonts:” Select “Clear Type”
Try it out, You can see the difference it made for me in the image below. (Note: IE 7 has this built into the browser)

Heading to SXSW
March 13, 2009
I’m in the Denver airport right now en route to Austin for SXSW. lift was lucky enough to be asked to be a part of Digital Alberta’s delegation that is providing an Alberta presence at the interactive conference.
I’ll be spending the next four days taking in workshops, mingling and talking about lift and Parade.
Don't go crazy optimizing your website for search engines!
March 12, 2009
First, focus on your customers or your website’s visitors, rather than the technology.
It’s important to be found by search engines—no question, but it’s more important that your customers or potential customer find what they’re looking for first and foremost. Make sure the content of your website is accurate, up to date and easy to understand. Make sure the words and pictures that they are looking for are right there when they find the page. Don’t make them scroll through lots and lots of text to find what they’re looking for.
If you focus too much on making your website for search engines some things that you’ll do to accommodate search engines might scare away some of your potential business.
Here are some differences between pages for people and pages for search engines.
Lots of pages
Search engines love lots of pages, especially if they all have unique content, lots of links and important key words. However, when you ask people to look through lots of pages, you’re asking them to spend time looking for what they need when it should just be there. An important pages about a product or service could get lost in the myriad of pages built to make search engines happy.
Lots of content on a page
Computers have a tough time figuring out pictures but they love text. Humans, for the most part, are the opposite. If you want search engines to love your website, you want to put lots of text on a page and make sure it’s filled with key words and phrases. However, this will scare off a lot of your customers who would rather see an image and a short, clear description.
Links, links and more links
It’s fairly common practice to create pages filled with links as a way to build up your standings in search engines. It’s a bit unclear if this really works but for the most part, it’s accepted practice. Often these links are just to other pages of your website. It’s helpful to think of links, whether they are a part of your site’s navigation or part of the content of the pages, as exits. Too many exits and you lose your visitor.
The best strategy for optimizing your site is to do something useful.
If your site provides real information, regardless of all the SEO techniques out there, it will be found by people. Keep this goal in mind.
News: now more awesome.
March 9, 2009
One of the cool things about being a developer is that I get a lot of input into exactly how things work.
One of the downsides of being a developer is that I get a lot of input into exactly how things work.
Whenever I’m not working on client projects, I tend to spend time working on Inflight and Parade, fixing bugs and making changes wherever we feel that they’re needed.
One area of Inflight that really needed some love was the ‘News’ section, which I’ve just finished putting the finishing touches on. Here’s what it used to look like:

And here’s what it looks like now:

What’s different? Well, for one thing you can now schedule news posts – all you have to do is set their publish date to sometime in the future. As someone who tends to write in bursts and then get lazy, this is a must-have feature for me.
Speaking of must-have features, I’ve also added some filtering functionality into the backend. Now, you can click on an author name in the ‘Article authors’ list – and filter articles down to only posts written by that author. You can do the same thing with categories – and if you want to filter posts to ‘written by Eli, in the category Design’, it’s easy – you just click both.

As you can see, Eli needs to write a little more about Design. To remove filters, you can just click the handy ‘Remove Filters’ link that shows up if you’re filtering.
There are still some changes and tweaks that I want to make to the way that news works, and the next piece I’ll be working on is probably the way that comments work – but overall, I’m happy with the how this first part turned out.
Sandwich grilling party!
March 7, 2009
We’ve made an office purchase that has revolutionized our lunch hour: a sandwich press!

While living overseas a few years ago, I noticed that nearly every household had one of these brilliant contraptions. I vowed to purchase one when I returned home to Canada. Unfortunately, this didn’t happen as efficiently as I had planned. When, for reasons unknown to me, the idea popped back into my head earlier this week Seth took charge and made it happen. Way to go Seth!
Bring your own fixins!
Tap into your creativity
March 1, 2009
“creativity shouldn’t be compart- mentalized with certain types of people or fields of work”
Creativity shouldn’t be compartmentalized with certain types of people or fields of work. It’s needed in every job, at every level, for every function and it can be the key to success in today’s rapidly changing world…perhaps now more than ever. Process improvement, problem solving, recruiting, retaining and motivating employees, decision making, dealing with limited resources, keeping customers happy, and adapting to technology are all business realities that require creative solutions.
I found the an article online, called “Creativity for Success” by Kathleen J. Wheelihan (a professional speaker and consultant for AchieveMax®). Below is an excerpt from the article (borrowed with permission).
Somewhere along the line, many adults have forgotten how to use their imagination to think and solve problems out of the box. Roger von Oech, in his book “A Whack on the Side of the Head”, recounts a teacher’s exercise in examining creativity. The teacher drew a dot on the chalkboard and asked a class of sophomores to identify it. They responded with the obvious: a chalk dot. She noted that the day before she had asked a group of kindergartners, and they had come up with numerous examples of what it might be: the top of a telephone pole, a squashed bug, an owl’s eye, a cigar butt, a rotten egg, and so on. Somewhere between childhood and adulthood many of us lose the ability to be creative and search for more than one right answer.
So how can we as adults regain and maintain our spirit of fun and creativity? Here are a few tips:_
Be curious. Practice developing your curiosity by asking questions to get a better understanding, or to see things from a different perspective. Some questions you might ask:_
Celebrate and evaluate your failures. There are many inventions we view as essentials today that exist only because someone recognized their failure as an opportunity. Examine what can be learned from each “failure.” It may be an opportunity to create a new product, improve a process, or solve a problem.
Tap into your inner child. Look for ways to become a kid again. Watch children at play and remember what things brought you joy as a kid. For example, fly a kite, build a model train, gaze at the clouds to identify the shapes you see, go for a walk in the woods and look at the plant and animal life, or simply daydream. Taking time away from the pressures of a tense situation can help free your mind so you’re ready to see things more clearly and creatively.
A couple of months ago Micah was able to attend the How to Make Mistakes on Purpose workshop at the Banff Centre with Laurie Rosenwald, who has made a career from asking the question, “what could this be?”. Laurie doesn’t succumb to the pressure of making something great or beautiful. Instead, she looks for the beauty in splots, globs, scraps and even garbage to produce wonderfully creative and inspired works.
Below is an image from one of the creative exercises, where the attendees were asked to produce shape after shape with ink, paint, sponges and markers. Later, the group would sift through the piles of quick-made-art and let their imaginations take over. (He thought this one looked like an owl.)

Leave a comment and let us know how you practice creativity in your personal or professional life.