shift+control

76design’s blog

Archive for the 'Tech & Web' Category

National Speakers Bureau Open for Business

Posted by 76design on January 26th, 2009 Comments 2 Comments

Whatever the category NSB has your speaker

What does a retired General, a former Olympian and a man they call “Dog” have in common? If you said they’re all speakers available through the National Speakers Bureau, you’d win the big stuffed narwhal.

For over 35 years, the National Speakers Bureau has garnered a reputation as the source for event speakers. They are the sole agents for over 100 speakers, and they work with over a thousand others in North America and abroad.

They came to 76design with a request, upgrade their brand. This included a new logo and revamping their site. During our analysis of their brand, we felt that their existing website didn’t accurately reflect the class of speakers they had, nor did it “speak” (so punny!) to their great customer service.

76 updated their corporate logo, created a brand new site with a focus on bringing their speakers to the forefront, improving the speakers search functions, and we also created a new interactive module on the homepage. Overall, our goal was to facilitate the user experience, but also motivate potential clients to call one of their reps to assist them through the booking process. The new National Speakers Bureau site launched January, 2009.

Take a spin on NSB.com, and book yourself a speaker or two. On a personal note, I am awaiting the confirmation that Strombo is coming to my Super Bowl party. Fingers Crossed!

Present.ly trumps Yammer. Big time.

Posted by 76design on January 12th, 2009 Comments 1 Comment

For the past week, I’ve been using present.ly at work. Present.ly is a twitter-style “micro-blogging” tool aimed for internal use within organizations, much like TC50’s 2008 Winner Yammer.  Unfortunately Yammer has at least one major flaw: it builds its network based on the user’s organization name/email URL, therefore not allowing to join two organizations that use different emails.

So after no longer being able to cope with Yammer’s pitfalls anymore, Thornley Fallis and 76design’s CEO Joe Thornley had the insight to give present.ly a try, and actively encouraged both organizations to become part of this community. Here are my thoughts and feedback after our first week of use.

Ease of use

A handful of us are already avid twitter users, so the learning curve was next to none.  Many were newly introduced to Twitter lingo, but after a few tries, it was smooth sailing.

Luckily for all us there are also some great additional features in presently that we got to know :

  • Groups are a marvel;
  • “Highlighting” when people ask questions (?) or say something urgent (!!!) is quite useful;
  • Built-in media sharing.

The web interface is really straightforward, and logical.  In addition to this, present.ly also has a desktop AIR app and an iPhone-friendly interface.

However, things tend to behave just a little differently than they do on twitter, which can lead to some frustrating moments.  The behaviors aren’t bad, but I like my conventions!

  • No “delete” option: seriously, we all make typos;
  • Unlike Twitter’s web interface, the return key will send a message instead of doing a line break (This seems minor, but without a delete button, it’s a total pain.)
  • Another often mentioned issue is that of the confusion on how the “Groups” feature works.  If two users are members of a group, but do not “follow” one another, they don’t receive all the updates destined for that group.  This could lead to people missing out on part of the conversation. And also forces a user to follow pretty much everyone;
  • Multiple email activity notifications that are impossible to turn off.

None of these issues are significant enough to stop me from doing what I want to do with present.ly.  But to the folks at present.ly, if you’re listening – hear me out!

Is it all worth it?

After the first day on present.ly, many of us, myself included, questioned if this tool was worthwhile.  The entire day on present.ly had been spent sending silly messages and testing out the features.  It felt like a productivity killer.

I’d say that for the remainder of the week, a good lot of us realized the potential of present.ly and made a conscious effort to make it useful.  A few examples of things we’ve used it for:

  • Tracking any internal technical issues with hashtags;
  • Sharing news / ideas about development in our devSquad group;
  • Sharing business successes;
  • Status updates (what you’re working on, where you are, etc.);
  • Giving out bonuses (if you’re Joe)!

Overview

All in all, I think Present.ly is a great app, and it seems to have really “hit the nail on the head” in terms of what we needed as a inter-office communication tool.  I also envision it being useful on any “Enterprise” level, as it is reasonable secure and stable.  But as with any collaborative tool or app, we must always keep the ball rolling and choose to make it useful…

What do you think?  I’d love to hear feedback on some solutions that have worked for you, and have allowed you to communicate better at work.

Getting Around Browser Cache with .htaccess

Posted by Steve Lounsbury on January 9th, 2009 Comments Comments Off

It’s pretty common to tweak your website assets from time to time. This may be an update to a stylesheet, some javascript, a logo or any other file. When doing this, you may notice that you don’t see the changes right away. You might have to refresh the page a few times or clear your browser cache in order to get the new version of the file. There are a few reasons this can happen:

1. When your browser requests a file, Apache may report that the file hasn’t changed. You can see this with a tool like firebug, any files that come back with a “304 Not Modified” header will not be re-downloaded by your browser.
304

2. When you first requested the file sometime in the past, Apache may have sent an expires header with the file. This means that until a specified date, your browser will never re-download the file. Unlike the #1 above, it doesn’t even ask Apache if it should re-download the file.

Note: I’m sure I missed a few ways a file can find it’s way into the cache, but that’s not the point of this post.

All this caching is great for the performance of your website, but it sucks when you actually want your users to download the new version of the file. Putting up “our site has changed, please clear your browser cache” is obviously out of the question. So, what can we do?

When your browser encounters a file that it hasn’t seen before it will always go ask Apache for the file. So, one option is to add a version number to the filename and update your source to point at the new file. This works, but adds a maintenance overhead because you have to make sure you maintain the version number of the file and deploy it with the proper filename. So, style.css could become style-20090109.css.

The problem with the above is that you have to maintain the file version in two places, once in your source html and again when you update the css file. We can get around this using htaccess by pointing all reguests to style*.css to style.css. So, when a request is made for style-20090109.css you get the updated contents of style.css and since the filename is unique you get around the cache issues. Yes, you still have to maintain the reference to the stylesheet in your html source, but you don’t have to worry about how to name the file. Anyway, here’s how you go about doing this.

Create a .htaccess file in the directory where your style.css file lives. In it put the following:

RewriteEngine On
RewriteRule ^style(.*).css$ style.css [QSA,L]

Now, when you request style-20090109.css or style-monkey.css you’ll always get the contents of style.css. There are other solutions, but I find that this works best for us. Hope someone will find it useful.

Monitoring Websites with Pingdom

Posted by Steve Lounsbury on December 31st, 2008 Comments 2 Comments

I thought I would continue with the “Monitoring stuff” theme and talk about how we make sure our websites are running smoothly. Over the years, we’ve collected a pretty large number of sites. It’s pretty much impossible for us to check every one of them every day just to make sure they aren’t having any problems. Naturally, being developers, we look for ways to automate this process.

Our first stab at it was a home grown script. This was done in a few hours one afternoon and was setup on a cron job. It would ping a set of sites every five minutes, check the http response header and make sure we were getting a “200 ok”. This worked for the most part, but didn’t save any history and it would continue to pester us until the site was back up.

After our needs outgrew the homegrown script, we looked for something a little more sophisticated. There are several open source options. One being Nagios. It lets you monitor any server for standard services like HTTP, FTP, SSH, etc. Also, there are several plugins available that let you monitor load, database activity, etc. It produces pretty “management friendly” graphs and has a very flexible system for notifying you when something goes wrong. This is all great, but you have to set it up and maintain it yourself. I don’t have the time to do that.

Finally, I came across pingdom.com. Pingdom is a distributed monitoring service that does one job and does it well. You can monitor all the standard services, setup notifications over email and sms, see those “management friendly” graphs and even check for certain strings on the site you are monitoring. This makes it easy to write an endpoint that checks crucial services (db, filesystem space, etc) and produces an “OK” or “BAD” message. This way, pingdom can not only let you know if your site is up and responding, but if your database is up and running too. Overall, Pingdom is exactly what we need and best of all, I don’t need to do anything to maintain it.

I’ll leave you with an example of one of those pretty graphs:

Pingdom uptime graph.

Monitoring SVN commits with Twitter

Posted by Steve Lounsbury on December 11th, 2008 Comments Comments Off

Like a lot of developers, we use SVN on a day to day basis. I can’t imagine working without it. We’ve been using it for over a year now. Svnlook on revision 1 give me this:

[steve@76design ~]$ svnlook info /svn -r 1
steve
2007-08-23 18:23:03 -0400 (Thu, 23 Aug 2007)
23
Created folder remotely

And svnlook youngest gives me this:

[steve@76design ~]$ svnlook youngest /svn
6567

In a year we have over 6500 commits and many projects contained in that (now not so little) repository. Given that there are so many commits going on, we thought it would be useful to have a feed of commits happening in real time. If we had that, we could get a good feel for the activity in the office over the day. One obvious choice for a feed is RSS, and we have that too, but we thought it could be fun to have a twitter stream of our commits.

I did some quick googling and came across a Google code project called twitvn. Unfortunately, due to hosting restrictions, I was unable to get it installed on our svn server. So, like any developer would do, I wrote my own ;)

SVN provides you with some interesting ways to interact with it pre and post commit. I wanted to hook in on post-commit and fire off a twitter message with some details about the commit. Turns out it’s fairly simple to do.

After every commit, if a script is available at [svn path]/hooks/post-commit, SVN will run that script. Two arguments are provided, the svn path and the revision number of the commit. Using these two pieces of info, you can then pull out whatever details you want about that particular commit and choose to do what you want with it. Knowing that, here is the approach I took:

  1. Get the particulars about the commit using ’svnlook info’
  2. Get the modified files using ’svnlook changed’
  3. Determine the author and the project that was being committed
  4. Create a twitter message and send it using Curl

I decided to write it using PHP, mostly because it’s what I know and I wanted to get it done quickly. In order to determine the project, I assumed that the top level folder of the first modified file is the project (this will depend on your repository layout so your mileage may vary here).

The final script is called tweeter.php, grab it here.

In order to run it, drop your twitter account details into CMD_CURL_TWITTER and add this line to your post-commit file:

[path-to-php5-cli] [path-to-tweeter.php] “${REPOS}” “${REV}”

Let me know if you get some use out of it!

76design is growing mustaches

Posted by Brett Tackaberry on December 4th, 2008 Comments Comments Off

And they look great!

Thats right, we’re growing mustaches for Mustaches for Kids. This is the 4th year we have participated and it is shaping up to be the best year ever. Thank you if you have contributed and thank you in advance if you still plan on donating to M4K.

This year’s brave growers: