Our Blog
  • Launched and Live: Our Most Recent Websites Powered by HiFi

    Over the past few weeks we've been really pumped to start using our new Content Managment SystemHiFi, on a few of our client websites and the results have been great! Our designers and developers have been able to take designs and accurately replicate them online without system restraints standing in their way. Our clients have been able to easily update and add new content without getting lost or overwhelmed. HiFi is supposed to make the job easier for everyone involved, and so far, it's doing just that. 

    Our recently launched sites include Alice Bordsen for State Rep, Georganna Sinkfield for Secretary of State,  Joystick Labs, and Ariana Kelly for Delegate. Be sure to check them out and let us know what you think!

    Here are some shots of the CMS in action and the sites they control:

    Creating and editing a form:

    Page Editor:

    Homepage of Sinkfield 2010:

    Organize content through the site tree:

    Alice Bordsen for State Rep:

    Putting these websites on HiFi has allowed us to not only demonstrate to clients the possibilities HiFi offers, but it also lets us know areas that we can make even better. Overall, we're really happy with how HiFi is coming along and excited to hear great feedback from the clients who have began to use it. 

    Categorized in: ,

  • The Hidden Costs of an Open Source CMS

    When it comes to building your new website, one of the most important decisions you and your web development team will make is which content management system (CMS) to use.

    Open Source

    Open source solutions such as Wordpress and Drupal ar e increasingly popular options. As with other open source projects, they offer some compelling features—a library of community-developed plugins and modules, no licensing fees and access to the source code. These perks are certainly attractive, but make sure to also consider that while open source solutions may be free and open, and therefore possibly more attractive than a proprietary or “closed” solution, that doesn't mean they don't come without a price. In other words, there are often hidden costs or compromises behind the veil of “free”. 

    Here are a few of these important factors to consider before you choose an open source solution.

    The Oh-Crap Moment

    When something goes wrong on your site or you need a quick turnaround on a new feature, you or your developers may find yourself at the mercy of an expensive learning curve or unorganized and often out-dated online documentation. Also, consider that open source projects don’t come with a support line—not without a cost, at least.

    Double-Edged Sword

    The most intriguing attributes of open source solutions can also be the scariest—you have access to a community of developers who are constantly developing new code. On the one hand that sounds great—a free workforce! On the other hand, some 10 year old 10,000 miles away may write an unstable "hello world" plugin that eventually gets installed on your enterprise website. That's not just scary, it's a liability for you, your business and your customers.

    (Planned) Change is Good

    With open source, changes in the software are always available, but they're also inevitable—which isn't always good. When Wordpress 2.7 (Coltrane) came out, it brought with it a new interface. Most people would agree that the changes were a welcome improvement, but beyond that is a deeper concern—it's a change that was out of your control and one that forces you to update your CMS interface or risk running an older version, which often has security concerns. This could also lead to training needs for your staff, the need to update incompatible plugins and other hidden maintenance costs.

    Our Approach

    At New Media Campaigns we decided to build our own custom content management system from the bottom-up—one that we know like the back of our hand and that we can bend to our will, usually with very little effort. It's the result of years of development and the product of our experience with launching hundreds of websites of all types, kinds and sizes. It may not be the right solution for every site and it does come with a cost. But, in my experience, you get what you pay for. If you decide to use open source CMS solutions, make sure you know what you're paying for—and perhaps more importantly, what you're not.

    Categorized in: ,

  • A Look Back at What's Ahead

    Some people say that you'll instantly know if a job is right for you—those people don't know what they 're talking about. At a minimum, I think it takes a good six months to have a good feel for a new position and if it's really going to be a good fit. So, as my first two weeks at New Media Campaigns draw to a close, I don't know what the future holds, but I have picked up (or confirmed) a few things since I've been here.

    It's all about the team

    With any job, the people you work with make a big difference. Surround yourself with the right people and, more often than not, things will work out just fine. Such is the case with this group—from top to bottom, the NMC crew is an all-star cast. How did they assemble this A-Team? Although I secretly suspect that Mr. T is kept on retainer for HR consulting, I've been unsuccessful in my attempts to confirm that. I have, however, noticed a few consistent philosophies that seem to have resonated with the group: trust your employees, give them the tools and direction they need to succeed, keep them inspired, and then step aside and let them do what they do best

    Great service and a strong product go hand-in-hand

    With only one of these you may survive, but you'll never prosper. Exceeding expectations and consistently delivering results leads to happy, repeat clients—the type of clients (and partners) that become evangelists for your company. It's simple to understand but much harder to execute. Lucky for me, it's something that this group figured out some time ago.

    Never settle

    The strong product that I spoke about above—it's more than just a good-looking new website, it's often what's behind the curtain that really sets a site apart. Our current CMS powers hundreds of websites and provides our clients with full access and control over their site. It'd be easy to rest on the success of that system and focus our development resources on building new sites, but that's part of a "if it's not broke don't fix it" mentality that stands in the way of innovation. Enter HiFi

    Having used (and cursed) a number of different content management systems, I'm really excited about HiFi and what it means for our clients. Behind a polished and intuitive interface, this system boasts some exciting and powerful options for building websites. I really believe it's a system that will take our sites to the next level. If you haven't already, head over to the gethifi.com and check things out. While you're there, don't forget to drop off your email for updates on the system as they're rolled-out.

    So, is that it? No, but what do you expect from the new guy?. After all, my time here has just begun.

    Categorized in: , , , ,

  • Following content management's core concepts with your CMS

    Content Management is nothing new, but it does have its fair share of growing pains as it relates to the web. With the number of options readily available, it is easy for designers, developers and clients to lose sight of content management's core principals:

    1. Sorting 'Stuff' — content defined by an end-user — into a content repository.
    2. Support the workflow of the end-user.

    The web community has the first principal down thanks to relational databases, but we really struggle with the second. Since the end-user can vary from an individual with varying skill sets to a large corporation with endless resources, demands on a Content Management Systems and its specific workflow have create countless options in the marketplace.

    With each options comes a list of pros and cons, fanboys and detractors which ends up creating some misconceptions. Here are some misconceptions I've read repeatedly in the last few weeks that neglect to take these core principals into account:

    One type of system is better than other.

    Is it better to go open source, third-party or proprietary system? Truthfully, there is no right answer because each option can meet your goal of publishing content to the web but could create a potential workflow nightmare.

    I use to advocate for using third-party software. I preferred working with a system that offered continuing support thanks to its customer base. If I was unable to continue to help client with maintenance there was always someone within the community. Now a client would never feel like they've wasted their investment on piece of technology.

    That philosophy helped me in large part but I'm not sure it was in my clients best interest. When I started using other technology that better suited their workflow needs, I found myself getting more projects in the long run. Just because a company can afford an expensive system doesn't mean Wordpress isn't the best solution for their needs. 

    With the volume of clients and sites we work on, our proprietary system has proven the best option over time and I realized that within my first few days here.

    CMSs should be more open to customization.

    I think there is a false perceptions in the title 'Content Management System.' People seem to infer that they should have more control over the system itself and this can lead to people neglecting the content itself. Not all systems are created equal, so you can't be under the assumption any system will meet your needs.

    If you feel like your system can't be customized, you have either chosen a system that doesn't fit into your workflow or you didn't define your content before development began on your system (I'll discuss defining your content in a future post). By ignoring your content from the start, you won't have a clear understanding of the work needed to publish your content and you will feel limited by any system. 

    Buying into a system means that you are committing to a set of standards, like a fixed design, so that you can produce and manage content quickly be streamlining your workflow. If you can't conform to any set of standards, moving to a CMS isn't in your best option.

    I don't need to learn HTML now that I have a CMS.

    The point of moving to a CMS is to avoid coding and/or reduce the reliance of a developer to speed up your publishing process, creating a better workflow. So why would I have to learn HTML when I have a WYSWYG editor to do the work for me?

    You don't.

    While there is no need to learn the syntax of a web language like HTML still you need to have an general understanding of how it works. You need to realize that pasting source code info your CMS from an e-mail newsletter is going to break your page in all likelihood. You need to realize when something is outside of the workflow of publishing content.

    CMSs are bad for SEO

    This goes back to the same ideas with customization: If you don't make SEO part of your workflow and create/use a system with it in mind early, it's going to make it harder to have good SEO. If that's the case, is it the systems' fault or yours?

    Conclusion

    The success of any CMS is tied to its ability to conform to your workflow. Most complaints with specific systems can be drawn to the fact they weren't developed with your particular workflow in mind. After all, the end goal of using a system is to publish and management content easily and quickly. Most systems can accomplish that, which is align with the first principal. 

    Having only worked with our in-house system for a few days, I can tell the team put careful thought into the workflow and it seems to be paying dividends.  

    Categorized in: ,

  • Getting content from a remote server using Smarty

    Although our CMS is designed to handle most of the requirements of our clients, occasionally we find ourselves needing to include information that is stored in another system. One such project (the details of which I can't reveal yet) was just such a case. The client has a legacy e-commerce and CRM system running on a Windows server, which they are tied to for various reasons.

    Ideally, we would interact with the remote app by using public APIs to fetch data and do any processing and formatting on our server before outputting it in a Smarty template. This particular system, however, does not provide an API.

    Fortunately, PHP provides several ways to get the text of a remote file and manipulate it as you would any other content. The easiest of these methods, and the one we decided to use, is file_get_contents. Given the name of a file, this function returns its entire contents as a string, easy as that. Now we can just output that string into the content area of our template, surrounded by the same header, footer, and navigation as the other pages on the site.

    Is It Really That Easy?

    Unfortunately, there are a few caveats. The first is that you either need to have access to the templating system of the app you are pulling from—so you can remove everything but the actual content—or you will need an HTML parser to pull out the section you want to use. Dropping an entire html page into your template will give you a huge mess, as you will have duplicate <html>, <head>, and <body> tags, which is most definitely not allowed.

    The second issue is that any relative urls in image or link tags will now be broken. We are using a regular expression (created using our handy new RegEx Tester!) to find all the relative urls and replace them with absolute urls pointing back to the original server.

    Smarty Plugin

    I have wrapped this whole process up in a Smarty plugin. Just download the plugin file and drop it into the plugins folder inside your copy of Smarty. There is no configuration or installation: you're ready to go.

    Usage

    {get_remote url="http://www.test.com/page.html" [default="Text to show if the file isn't found"] [fix="href|src"]}

    Parameters

    • url: The remote url to fetch. This is the only required parameter.
    • default: Text to be shown if the remote file couldn't be found or if no url is passed in. Defaults to "Not found".
    • fix: Pipe-delimited list of html attributes that will have their contents checked for relative urls. Defaults to "href|src|action".

    Warnings!

    Smarty evaluates PHP code that is included this way! Generally, this shouldn't be a problem, since the remote server will have already processed the php code and given you the results. However there is the potential for serious security issues here if, for instance, the remote server doesn't have PHP enabled and gives you the raw source code. If you don't trust the remote server, you probably shouldn't be using this plugin.

    This is a beta release. There are likely still bugs in it. If you find any, please report them in the comments.

    What is still to do?

    Caching is the main thing. I plan to add that capability within the next few weeks. I would also like to implement more flexible url replacements at some point (i.e. not just in html attributes), but that is a fairly complex problem.

    Categorized in: ,

  • The 8 Minimum Requirements for SEO Features in a CMS

    The most important thing you can be doing to improve your search engine results is generating great content. Even an old, poorly engineered web site can show up in the results if it contains quality, relavent content.

    That said, by doing a few technical things right, it is a lot easier to achieve results. The easiest way to get these things right is to use a Content Management System (CMS) that takes care of the technical things for you. When shopping for a CMS, here are the minimum features you should be looking for:

    Things you should be able to edit on each page:

    1. Title Tag

    title tag

    The title tag is perhaps the most important thing you can do to improve the results of a page. It should be unique, have the keyword towards the beginning, and be no longer than 70 characters. This is the text that shows up as a link in Google results.

    2. Meta-Description

    meta description

    The meta-description is designed as a summary of the page for search engines. It should be no longer than 150 characters. This is the text that shows up as the description in search engine results.

    3. URL

    pretty url

    Many Content Management Systems auto-generate urls for each page that are not human-readable. For example:

    http://www.website.com/index.php?category_id=142&page_id=15
    

    When a search engine crawls this page, it cannot learn anything about the contents of the page from the url. A good CMS will let you build a more readable, pretty URL like this:

    http://www.website.com/pets/golden-retriever-puppies

     

    4. Semantic Headlines

    semantic headlines

    Headlines are usually printed larger and bolder than body text to indicate their importance. This works great for humans, but doesn't help search engines much. Instead, the ability to use heading tags is important. There are six levels of headings, from the most important, <h1>, to the least important, <h6>. Using these appropriately with just a single <h1> on each page will strongly indicate what your page is about to search engines.

    5. Alt-Text on Images

    alt text on images

    The content of an image is largely lost to search engines. To improve the accessibility of your site to both the disabled and search engines, it is important to use alternate text with your images.

    Sitewide SEO Features

    6. Robots.txt Control

    robots.txt

    Robots.txt is a file that allows you to control what areas of the site search engines are allowed to look at. If you have staging areas of your site, or places that shouldn't be indexed by search engines, that needs to be controlled in the robots.txt file.

    7. 301 Redirects

    301 redirect

    There are two (major) types of redirects. A 302 Temporary and a 301 Permanent redirect. When using a 301 redirect, the SEO credit of one page can be passed to another. As an example, lets say you have a page that ranks well for "Golden Retriever Puppies" but want to change its URL. To do this, you would create the new page with a new URL and direct the old URL to the new one using a 301 redirect. Since this is a "permanent" redirect, Google will pass the SEO credit along.

    8. Ability to add Analytics

    analtics

    A good CMS will make it easy to add analytics that let you track your site visitors. Much can be learned from user behavior -- epecially what is popular and what is being searched for.

    Final Words

    All of the above features are the basics for a CMS in 2009. There are many other more advanced features that should be considered as well. Additionally, a good CMS will allow for arbitrary markup so that any design can be made SEO friendly.

    Categorized in: , ,

  • Resizing Images On The Fly in Smarty

    When I started working at New Media Campaigns last month, I immediately set about learning our custom-made content management system. Although it is generally very well-made and easy to use, I did find that there were things I missed from the other CMSs I have used in my freelance career. High among those was the ability to resize images to particular dimensions within templates. It seemed silly to be creating thumbnails manually for every photo gallery, or explaining to clients that their sidebar images must be 300 pixels wide or the layout would break. Expression Engine has a wonderful Image Sizer plugin. Wordpress and Radiant let you specify a couple of thumbnail sizes per-site that will automatically be created. Why coudn't we do the same thing?

    Our CMS uses the Smarty templating system, which I had never used before starting at NMC. This seemed like a good opportunity to dig into the Smarty plugin structure and create a custom function that would take an image file and the desired dimensions and would resize and cache the image.

    If there are other options you would find useful leave your requests in the comments section...I will incorporate them if possible. And, of course, if you find any bugs please let me know.

    Usage

    {imagesize src=$imageUrl [width=200] [height=100] [crop=true] [bw=true] [colorize="#ff0000"] [radius=10] [forcepng=true] [background='#000000'] [alt='Alternate Text'] [title='Image Title'] [class='className'] [id='idName'] [style='inline styles']}

    The only required attribute is src. This is the absolute or relative url to the original image file that you want to use. You can optionally pass in alt, id, class, or title attributes, which will be output as they would in a normal image tag.

    Finally you will want to give it either a width or a height (if you don't, it will just output the image at its original size). If you specify only one of the two dimensions, the image will be resized proportionally. If you specify both the width and the height it will be resized to fit within those dimensions. Additionally, if you include crop=true the image will be cropped to the exact size you specify. This last option is very handy for creating square thumbnails, for instance. Update: You can now use bw=true to convert the image to black and white, or colorize="#ff0000" to output a monochrome colorized image. radius=x will round the corners with a radius of x. If you give it rounded corners and the file is a JPEG or GIF, you can also use background='#ff0000' to specify the background color, or you can use forcepng=true to ensure the image is saved as a 24-bit PNG with full transparency.

    Installation

    Download the plugin file and put it in the plugins folder inside your copy of Smarty. That's all you need to do!

    Caveats

    This is still beta software! I have tested it on several systems, but if it deletes all the images on your server and sends an insulting email to your mother we are not responsible. Please backup before you install.

    • You will need to be running the most recent version of Smarty to use this plugin. The plugin interface changed recently to allow plugins to access the $_SERVER variables we need to figure out the path to the cache folder.
    • In some cases when you are using mod_rewrite on your server and a relative image url you will get an error because it can't calculate the cache folder. If this happens, try using relative urls.
    • Depending on how your server is set up, you may have to manually create a cache folder in the same folder as the image you are trying to access.

    Changelog

    • 0.9: Initial public release. (7/22/09)
    • 0.91: New crop attribute, no longer caches images that don't need resizing, code is better commented. (7/23/09)
    • 0.92: Fixed the issues Ron reported in the comments. (7/24/09)
    • 0.93: Added style attribute. Better handling of backslashes. (8/25/09)
    • 1.0: Added bw, radius, and background attributes. (10/27/09)
    • 1.0.1: Added forcepng attribute. (2/3/09)
    • 1.0.2: Added colorize attribute. Better error reporting: errors are now written as html comments, so as not to break your design if an image is missing. (2/3/09)
    • 1.0.3: Fixed bugs introducted in previous update. (2/4/09)

    Categorized in: ,

  • Reflecting on Three Years of Business

    Just last week on May 5, to little fanfare around the world (except for a few tweets), our firm celebrated its third year in existence.  It has been an exhilarating and rewarding few years, which has seen us grow from a bootstrap funded startup to a successful full service web design and development firm that has launched over 200 websites for clients ranging from public corporations to national non-profits.

    Over time we have grown in number, have had a couple of different offices, have adjusted our business model, have won awards, and have made plenty of mistakes.  However, we have also always stayed true to our core business philosophies:

    • Empower our clients with powerful technology that meets their needs to solve specific problems.
    • Create beautiful websites that set our clients apart from their competitors.
    • Provide unparalleled personal service, always making ourselves available to our clients and going the extra mile for them.
    • Have a lot of fun in the office and make NMC a truly enjoyable place to work.
    • Do all of the above at an extremely affordable price for our clients, allowing them to successfully leverage the web at a fraction of the cost of our competitors.

    Challenges and Decisions Along the Way

    When we first launched, we envisioned ourselves as only a political web design firm, solely focusing on that niche.  As it stands today, a little over one third of our total business is political, and the rest is non-profits and corporations.  This is due to the fact that within weeks after launching, our political clients brought us non-political business; rather than reject these clients, we embraced the new niches and expanded into new regions.  This decision ended up being a major revenue driver and likely kept our company alive through off-election years.

    Similarly, when we first launched the company, we didn't foresee acting as a web development partner for ad agencies, and that is now our most explosive area of growth.  The idea makes total sense.  Ad agencies are amazing at strategy and creative; we have special talents with technology and understand the web.  Why not marry the two knowledge bases to provide clients with the best of both worlds and no added overhead?!  It seems so straightforward now, but it was a space we looked over in the frenzy of our initial launch.

    This ability to wholeheartedly embrace change within our company and shift on the fly ultimately helped us become a stronger company with a deeper body of work and a more steady revenue stream.  To this day, we're constantly trying to think of ways to evolve our business into other disciplines that strengthen our overall offering to clients and also grow our company.

    Separating Ourselves from the Pack

    We have progressively grown every year that we've been in business, in terms of volume of work done and company revenue.  The number one thing attributing to that growth are referrals.  We pride ourselves on being passionate about our clients and truly wanting them to succeed online, and they have rewarded us by sending new business our way.  

    In addition to our service, another reason our clients remain happy with us is our view on project-based billing vs. on-going hourly fees.  We're not here to milk every billable hour out of each client, in fact we try to avoid hourly charges to clients all together.  After we have priced out, built, and completed a project, over 90% of our clients never incur an hourly fee; however, just about all of our clients reach out to us for help or advice sometime in the future...we just don't bill them for those requests.  

    It's a pretty novel idea in the world of interactive agencies and most of our clients are initially skeptical, but it boils down to our core principles of empowering our clients with powerful technology at a good price.  We want them to succeed, and we know that if we do that without unnecessary fees, the long tail of the relationship will be much more lucrative than billing for our time on a phone call.  This approach has worked well for us and our clients, and I'm surprised that more agencies aren't moving in the same direction.

    Where We Are Now

    These decisions and procedures have helped us stay viable and become the company we are today, all along without ever deviating from the core principles outlined above.  As it currently stands, we're one of the top political web design firms in the country, have a renowned Content Management System, and have built a prestigious client list.

    None of this would have been possible without facing the adversities listed above or without the dedication of our staff and partners.  It's been a great ride over the past years and we have learned a lot; we're also focusing on continued expansion over the next year.  2009 has already been the strongest year in our company's history, and it's much thanks to the leg work we put in the past three years.  At times, it was a slow growth curve to get here, but it has continued to be worth it, by allowing us to do quality work and have fun.

    Happy Birthday to New Media Campaigns and congrats to our team for some great work, and a special thanks to all of the clients that have made this possible!

    Categorized in: , , , , ,

  • New Website Launched for Recess PHP Framework

    Kris Jordan, creator of the Recess PHP Framework has been a part of the NMC team since January of this year. While here, he has largely been focusing on enhancing the framework, working on our Content Management System, and building custom tools for our clients.

    Recess has quickly been gaining steam in the PHP community; it now boasts hundreds of downloads by developers from across the world and has had dozens of ""commits" in Github":http://github.com/recess/recess/commits/. We've been really excited to see the progress of the framework and expect it to continue bounding ahead.

    However, we were worried that the framework's old site was hindering Recess's progress by making information too hard to find and not conveying the core benefits of using Recess for PHPprojects. Kris and the rest of the team here began designing a face lift several weeks ago and we're proud to show off the new site.

    Outside of the overall redesign, the most notable new feature is the nine different one minute demo videos on the homepage. One of the biggest benefits of Recess is its ease of use and simplicity, so Kris wanted to highlight these features through quick, easy to process videos on the homepage.

    Too many companies, frameworks, and products bog their homepage down with five minute or longer videos; we know that no one wants to sit through those, so we tried to streamline the learning process with these short demos. It seems as if the strategy has paid off, as the ""Start a New App in Recess"":http://www.recessframework.org/page/starting-an-app-in-the-recess-php-framework video has been the third most trafficked page since the site launch.

    Another unique feature is the developer spotlight in the top right. The nametag scrolls through the names and bios of developers using Recess for different projects. One of the largest barriers to adoption of a new framework is the fear that there's no community; we wanted to quickly assuage this concern by prominently featuring real, live, dedicated Recess developers and their projects. It is also a great way to give back to the community that has already given so much to Recess.

    The homepage also features a comparison chart of Recess vs. other popular PHP frameworks, a feature breakdown, several quick download options, and more.

    The new design has already been a great success, helping new visitors quickly learn about the framework and its benefits. If you haven't checked it out yet, you can download Recess here. I encourage you to check the site out and let us know your thoughts on the design and the framework.

    Categorized in: , , ,

  • Content Management Systems Continue to be a Good Investment in a Bad Economy

    According to a recent CMSWire article, a Forrester study demonstrates that Content Management Systems continue to have a strong ROI in a weak economy. The Forrester's 2008 fourth quarter web content management survey forecasts continued growth in the Content Management industry in upcoming year.

    Some of the highlights from the report:

    • 72% of respondents plan to increase their CMS investment
    • 64% plan to add a level of personalization to their sites over the next year
    • 55% plan to incorporate audio and/or video in their sites over the next year

    As a company that specializes in equipping all of our sites with our own Content Management System, it seems like a no-brainer that the sector is going to continue to grow, especially in a tough economy. A CMS truly maximizes an organization's ROI on its website. It allows organizations to fully leverage their site, engage visitors, keep the site fresh, add new features, participate in inbound marketing, and much more.

    Content management continues to become more ubiquitous and affordable, and as the CMSWire article states: "by cutting back on WCM [web content management] initiatives, enterprises risk failing to meet customer needs and losing Web momentum to competitors." So far, we've seen spending on our CMS remain strong during the recession, confirming our beliefs and the research from this article. Do you plan on purchasing a CMS in the next year? If you're a web developer, are your clients still continuing to spend on content management solutions?

    Categorized in: ,