cnp_studio (cnp studio) - An interactive division of Clark/Nikdel/Powell

A unique mix of technology, creativity and human interaction makes cnp_studio a Web development firm focused on connecting people. Creating simple, useful Web sites is what we do. Learn more about us.

cnp_studio Blog

cnp_studio Blog

Archive for July, 2007


:attachment_fu and Amazon’s S3 For File Uploading

Monday, July 30th, 2007

Most of the Rails sites I have been developing lately have been using a plugin called attachment_fu by Rick Olson - one of the core developers of Rails. attachment_fu is easily and effortless - allowing me to add the ability to add "attachments" or uploads to any model within my application. After reading the excellent tutorial by Mike Clark, I was up and running in no time.


class Download < ActiveRecord::Base
  has_attachment :storage => :file_system,
    :path_prefix => "/public/downloads/",
    :max_size => 30.megabytes
end

And in my view(s):

 
<td class="input_field">
  < %= f.file_field :uploaded_data %>
</td>
 

But after a while, downloads started to build up in size consumed, and backups were using valuable bandwidth (since backups moved the files off the server). I remember reading on the excellent tutorial by Mike Clark how easy it looked to change the storage to use Amazon's Simple Storage Service (S3). I installed the AWS::S3 Ruby library, and even played around with s3sh - the interactive shell utility that comes with the AWS::S3 library.

Revisiting the tutorial, I changed my Download model to:


class Download < ActiveRecord::Base
  has_attachment :storage => :s3, :max_size => 30.megabytes
end

And created my config/amazon_s3.yml configuration file:

 
production:
  bucket_name: my_bucket
  access_key_id: XXXXXX
  secret_access_key: XXXXXX
 

After a few quick tests, everything was working perfectly. Now the only problem I had was moving the existing downloads into the S3 account. I figured the best way to go was to integrate a rake task to help me out.


desc "Move all downloads to Amazon's S3"
task :move_to_s3 => [:environment] do |e|
  require 'rubygems'
  require 'aws/s3'

  AWS::S3::Base.establish_connection!(
    :access_key_id     => 'XXXXXX',
    :secret_access_key => 'XXXXXXX'
  )

  Download.find(:all).each do |d|
    AWS::S3::S3Object.store("/path_on_s3/to_new/download",
      open("/path/to/where/current/file/is_located"),
      'my_bucket',
      :access => :public_read)
  end
end

All done. Total cost to move all this stuff over to S3 was about $.10 .

Also, if you're interested, check out S3Fox - a plugin for Mozilla Firefox that allows you to browse, organize, and store your files into your S3 account - all through Firefox.

User Generated Content - The Mullet Strategy

Sunday, July 29th, 2007

Personally, I can't resist a good mullet reference (especially when you can tie together mullets and user generated content). Perhaps it's the abundance of mullets in our area (Polk County, Florida).

From BuzzFeed - The Mullet Strategy:

The biggest sites on the web are all embracing the "mullet strategy" - business up front, party in the back! User generated content is all the rage but most of it totally sucks. That is why sites like YouTube, MySpace, CNN, and HuffPost are all embracing the mullet strategy. They let users party, argue, and vent on the secondary pages, but professional editors keep the front page looking sharp. The mullet strategy is here to stay because the best way for web companies to grow traffic is to let the users have control, but the best way to sell advertising is a slick, pretty front page where corporate sponsors can wistfully admire their brands.

New Site: Kelly Homes

Friday, July 27th, 2007

We are very pleased to announce the arrival of the Kelly Homes site! Many months in the making, the site features a powerful, custom-developed content manager - allowing check-in/check-out of content, a content approval system, and Textile formatting capabilities. The site also boasts interactive floorplans, that allow any user to "design their home" by toggling different options on the floor plan of their favorite home. Thanks to Mike and Pete for a job well done on the tedious, and extensively detailed interactive floorplans.Kelly Homes Home Shot #1Kelly Homes Interior Shot #2Kelly Homes Interior Shot #1Keep an eye out for the Kelly Homes site in the portfolio soon.

Heading Back from California and WordCamp 2007

Monday, July 23rd, 2007

As I sit here waiting for my flight to leave the San Francisco Airport I figured I'd take some time to get an updated post on the cnp_studio blog. Just finished up a trip in California for client meetings and was also able to squeeze in a trip to this year's WordCamp. For those of you unfamiliar with WordCamp, here's a description from the WordCamp site...

WordCamp is a 2-day conference for WordPress users and developers. The first day will focus on how to be a better blogger, the second on the development and future of WordPress. 

More and more we are using WordPress in our business here at cnp_studio. We have been using WordPress in its traditional sense as a blog platform (Sony, Winter Haven Chamber), but also in the less traditional sense as a content management system.There were definitely sessions at WordCamp that I was able to take more from than others. A few of these sessions were:

Whitehat SEO tips for Bloggers - Matt Cutts, Google

Matt's tips weren't just for bloggers. Anyone with a Web site can benefit from what he has to say. Since Matt actually works AT Google, you can really take to heart the tips he gives. A few main points:

  • Dashes are the best word separator when making URLs
  • Pick whether you want your site to be located at www.domain.com or simply domain.com. These two URLs can be treated as two different sites and can be a point of confusion
  • Switching your Title tag around on interior pages of your site helps search engine relevance. For example, the title of the homepage on our site is cnp_studio. The Portofolio page of our site should then be "Portfolio - cnp_studio" rather than "cnp_studio - Portfolio." You'll notice we're currently not doing this, but will be soon.

Barry and Matt's HyperDB and High Performance WordPress

An interesting take on how to increase the performance of any WordPress site. Since we've been working on some higher traffic sites as of late, this is extremely helpful. We were already using wp-cache, so there were no gains to be made there, but the main helpful piece was learning more about HyperDB which we currently are not using on any of our sites (and honestly do not need at this point, but in the future very well could). As we see traffic increases, the ability to spread this load across servers can be extremely helpful. A little bit more on what HyperDB supports:

  • Replication
  • Failover
  • Redundant (public/private) networks
  • Local and remote datacenters
  • Partitioning
  • Different tables on different DBs
  • Advanced stats for profiling

Liz Danzico's Usability Analysis of WP

This session was great to hear about what we can expect to see in WordPress 2.4 (at least on the administration side). WordPress 2.3 should be out in September, supporting things like tagging, but it seems that the 2.4 version with a completely redesigned administration will come with many welcomed updates including:

  • An updated dashboard (hopefully with less WordPress news and more news about your actual site)
  • An updated navigation that will hopefully solve the space issues presented with the current horizontal navigation (as more links are added it gets harder and harder to find things, especially when the navigation goes down to a second or third line)
  • An updated "Drafts" list in the post management area. This is much needed and long overdue in my opinion. The current laundry list that appears above the post listings in the current administration becomes slightly cumbersome once you get a few posts in it.

These were my standouts. Due to the nature of sessions being split between a blogger and a developer focus everybody that attended will have sessions that were more meaningful than others.

Web Design by Committee

Monday, July 16th, 2007

Speak Up, a graphic design blog I regularly read, recently posted an interesting article on the dreaded "Design by Committee" and it got me thinking about this subject.

It is generally thought in our industry (and really any industry that involves providing visual design for others) that the more individuals involved in the decision-making process on design, the more likely the integrity of the project is shot. That is to say, the more people you have saying...

"I like this."

"No... I like this."

"Well, you both are wrong, because I like this."

Means you will never gain a consensus and rather end up making a Frankenstein concept with bits and pieces that everyone likes, but no one loves. It takes an article like the one by Armin Vit over at Speak Up to bring me back around to what is truly reality.

If your vision of a career in graphic design does not involve clients and you have the resources to maintain a sustainable practice of self-initiated projects then you don’t have to worry about committees. Lucky you. Otherwise, your work life hinges on the rapport and dynamic between you and any given committee. Mythically, the committee is the evil association of people sarcastically portrayed in the previous paragraph, faceless drones that eat away at good graphic design like termites at yummy wood. Realistically, they are the group of people you work with, to varying degrees of involvement, from the start of a project until the end. Whether they are note-takers, brand managers, vice presidents or CEOs, they are the people that you talk to and e-mail with, they are the ones that brief you on the project and sit through the presentations of your work, they are responsible for informing your process and ensuring that the work is beneficial to their organization… they are the ones you celebrate with once the project is completed. They are real and they make or break your days, weeks, months and years. And this is why using “designed by committee” as an insult or an explanation for poor work, even if meant as a joke, is detrimental to our profession, and perhaps an underlying thread of why graphic designers are less prone to be taken seriously — if we don’t respect the decisions made by those we work with, why would anyone want to respect ours?

Read the rest of The Perils of “Designed by Committee” as a Pejorative

Being Productive

Wednesday, July 11th, 2007

I've been working at cnp for a little over a year now and I am impressed with how much we've produced over that time. All of my previous experience was in the corporate world with development teams more than quadruple the size of cnp_studio. Yet, in the past year I believe we've more than tripled the output of what I experienced in those other environments. So what is it about the environment here at cnp_studio that makes us more productive?

Team Size
Lets face it, the amount of turnover in a company increases as the size of the company increases. This means that most of the stronger employees are spending their time bringing new hires up to par. Yes, your company may be hiring some great people. However, every work place has different procedures and no matter how smart or talented an employee is, it still takes time to learn those procedures.

Better Tools
This is one of those things that larger corporate companies can easily fix, but for some reason don't. Getting your employees the latest IT tools is expensive, however, the return in productivity is well worth it. At a previous employer I started working with a computer that was more than 4 years old with a single 13-inch CRT monitor and only had a software license for the operating system. This left me spending hours and hours not only waiting on my computer to do the simplest tasks, like minimizing a program, but also searching for decent open source software to work with. It wasn't until I had been with the company nearly 2 years that I finally inherited a newer computer that happened to already have a license for Zend Studio from a higher up developer that was leaving. Needless to say, my productivity from that change alone more than doubled.

When I first started at cnp_studio I had an up-to-date computer, two 17-inch LCD monitors, and all the software tools I needed to do my job well. Here I've never had an issue getting new software to complete projects. This meant that I can sit down and do the work I'm here to do; not sit here and wait for my computer catch up with me or spend my time switching between programs because a) my one monitor is too small to fit what I need to see on it and b) the software I'm using doesn't provide all the functionality I need to be productive.

Interuptions
Being a developer takes a lot of concentration. We're tossing around a lot of variables and functions in our heads while we're working. Getting a quick question from a manager may only take 5 seconds of the managers time, but it takes an average of 15 minutes of the developers time to get back into the state of mind s/he was in before the interruption. On a corporate IT team, unless you have your own office building apart from the rest of the company, interruptions are unavoidable. You're just too close to the end-user. While being close to the end-user does speed up the development process when you're trying to gather project requirements, which Nick does a great job at in spite of the separation, it means that you're always going to have an "emergency" someone wants to tell you about. Six to 8 little emergencies a day isn't abnormal, which ends up being an hour and a half to two hours lost every day.

Successful User Experience

Monday, July 9th, 2007

Successful experience design is invisible… which can create a problem for developing your portfolio. ~ Jared Spool at Web Design World today

Social Participation on the Web

Thursday, July 5th, 2007

Forrester Research, Inc. recently published some figured on social participation on the web (i.e. Blog readers, blog authors, blog commenters, etc) and the percentage of these people using Apple vs. Dell. Note to inactives, people are talking about you.

Here's how the data breaks down:

Social Group Description Apple Dell
Critics Comment on blogs, post ratings and reviews 25% 19%
Collectors Use RSS, tag Web pages 24% 14%
Joiners Use social networking sites 26% 19%
Spectators Read blogs, watch video, listen to podcasts 55% 30%
Inactives Don't participate online 34% 54%

Progress Energy Thinks You’re Stupid

Tuesday, July 3rd, 2007

Last week I sat down to pay my usual end of the month bills. My power company is Progress Energy.Upon logging into the web site, I click "One-Time Payment". I'm presented with a screen that clearly states my account number and an option to start the payment process. So I grab my account number and copy it to the clipboard because I know I'll need it, and click "Pay My Bill Using EasyPay".I am then presented with a screen to provide my account number and my zip code to verify who I am. I paste in my account number, type in my zip code and click "Validate". And then...

Customer validation failed. Please enter valid customer information.

So what went wrong? The wrong account number, the wrong zip code? The box says to put all 10 digits of my account number in, but to leave off any leading zeros. Where can I go for help? Other than the submit button, there isn't any other links on the page. It just reeks of thoughtlessness for the user, un-professionalism and plain stupidity from whoever developed this system during their "Intro to Computers" class.After several repeated attempts to re-submit by changing the account number and making sure I copy pasted it right, I finally give up. Being 150% positive this problem was no fault of my own, I sent them an e-mail through their "Contact Us" section on the web site.Today, I received a response:

Thank you for contacting Progress Energy Florida.I do apologize for any inconvenience you are experiencing, please make sure you log out completely and re-type www.progress-energy.comIf you have any further questions or concerns, please reply to my e-mail or you may also call Customer Service Monday through Friday from 7:00 am to 9:00 pm, toll-free at 1-800-700-8744.Thank you for using Progress Energy's online services.Ms. XXXXXXXXCustomer Relations

Really? That's it? Log out, re-type the URL, and log back in? Wow, I must be stupid. I don't develop web sites or anything, and I'm definitely not familiar with copy-paste.And what if I wasn't savvy enough to know that I'm not in the wrong? The e-mail offers no real support answer other than to call and talk to some drone who will read predetermined responses from a computer screen - an experience on par with walking through the ever-worthless 'Windows Add New Hardware Wizard'.So what can I do? Pay it by phone, sure. I have nothing better to do than spend 10 minutes doing something that takes me less than 2 minutes. In all seriousness, I'm probably not doing anything that important that I couldn't spend 10 minutes to call the payment in. But it's the point. It's $1.00 more to pay by phone - something they call a "Convenience Fee" - although I don't think anyone knows who this is convenient for. But that doesn't bother me, it's the point.I could write to Progress Energy, but at the end of the day I'm just a price-tag and they just don't care.I could not pay my next bill, but then I wouldn't have power to charge my laptop so I can write such enthralling posts like this.

Latest Comments

andrew:
hey mike -- thanks for the reply, let me clarify what i mean.... I know that PHP fu...

nick:
Hi Jeff, Thanks for the heads up on the link. It's all fixed now and you should...

Jeff:
I would love to try your plugin, but the download link appears to be dead again. Ca...

mike:
@Denise: 1. The image is selected randomly each time the code is run. So normally ...

andrew:
hey -- great plugin and would like to use on several different pages, not just the ...

Categories Archives