Vacuum is Hiring!

Working here totally does not suck

Hey folks, some big news at The Vacuum! We have 2, count 'em, 2 job postings for your enjoyment. Designer or developer, take your pick. I know which one I'd choose!

Design Opportunity

First but not least, we’re looking to add a talented, friendly and dependable designer to our roster. You’ll be a key player on our small team and will have a hand in many phases of our projects. Our team is tight, we always have each other’s backs and we have fun. Our clients are super nice, and you’ll be working directly with them too.

You’ll be responsible for helping to conceptualize, design and execute projects across web and print mediums. Things like websites, posters, site banners, digital marketing ads, landing pages, email templates, social media graphics, corporate presentations and more.

Skills & Requirements

● A strong graphic design portfolio including web and print mediums
● Ability to ensure consistency of brand identities and messaging
● Strong communication skills, comfortable working directly with clients
● Ability to clearly present concepts to stakeholders and marketing teams
● Experience with data visualization and infographic design
● Creative strategy and concepting experience would be a plus
● Experience with B2B marketing and concepting would be a plus

Developer Opportunity

Second, but also not least, we’re also looking to add a super-talented, friendly and dependable dev to our roster. You’ll be a key player on our small team and will have a hand in every phase of our web projects. From planning & concepting stages through to dev, QA & deployment, you will help drive the process of creating effective interactive experiences.
Projects will skew towards frontend, but will also require backend knowledge eg. to install, develop & manage CMS sites, manage automated deployments with Git, set up TLS certificates, etc.

Our style includes plenty of nice UX, little animations & moments of delight.
Our team is tight, we always have each other’s backs and we have fun. Our clients are super nice, and you’ll be working directly with them too.

Skills & Requirements

● Battle-tested coding abilities. You’ve built real things for real clients, and learned new things & solved real problems along the way - cool, let’s see!
● Excellent semantic HTML, CSS & Javascript, skills, of course. Do you know Backbone? React? You do? Excellent. No? I bet you can pick them up with your Javascript experience, you’re good like that right?
● We’ve generally used PHP & MySQL on the backend, but Node is also pretty cool. You probably have some suggestions, too. Bring them with you.
● You are comfortable in Photoshop, Illustrator and Sketch so you can take design files and turn them into real projects faithful to the design.
● You should be comfortable in Greensock or a similar animation platform, and ideally have experience with Adobe Animate / Flash.

If either of those people sounds a lot like you, please get in touch!

Posted by kris
July 25, 2017 - 3:50pm

TAGS: jobs / vacuum


Liftopia - Agency of Record

A real life Press Release

We're Liftopia's AOR! You can read the full Press Release below, or see the PDF Version.

Squamish, BC, Canada, March 16, 2017

The Vacuum Design Inc, a digital creative agency based in Squamish, British Columbia, has been named agency of record for Liftopia.

Liftopia is the largest online and mobile marketplace for lift tickets and other mountain activities. Based in San Francisco, the Liftopia team is made up of dedicated, passionate movers and thinkers who sport a refreshing irreverent attitude. After all, one of their core values is “Create fun and get a little weird”.

Vacuum has the “getting weird” part figured out, having created unique, unlikely campaigns for over a decade. “We’re quite psyched to be working so closely with Liftopia. Our teams mesh together really well, they even appreciate the value of the 20cm powder day rule. We look forward to helping the Liftopia brand grow” said Nate Smith, Vacuum founder and Creative Director.

Vacuum is Liftopia’s brand design & execution partner for all major marketing campaigns (both B2C and B2B), as well as the digital development shop for web-based initiatives.

Rob Webb, Liftopia COO stated, “Vacuum has quickly become a valuable addition to our team. They have brought strong creative vision, flawless execution, and detail oriented relationship management into our world and we couldn't be happier with their work.”

About Liftopia
Liftopia operates the largest online and mobile marketplace and resort technology platform serving the ski and mountain activity industry. Skiers and riders can purchase lift tickets, equipment rentals, meal vouchers and more from more than 250 ski areas in North America on and via the Liftopia mobile app, with savings of up to 85% off walk-up window rates when purchased in advance. Founded in 2005, Liftopia is headquartered in San Francisco and backed by leading institutional and angel investors. Visit the Liftopia blog or follow the company on Facebook and Twitter.

About Vacuum
Vacuum has been around for over a decade, and have worked with fine folks like Fitbit, Arc’teryx, SRAM, Nike, ESPN, Puma and Toyota. More importantly, they’ve created a whole bunch of strong work that made clients happy, engaged their customers and delivered real results.
Based in Squamish, BC, the Vacuum team works hard to produce super-creative work for their clients, but still hits the outdoors to give’r every day. You’ll find them on skis, bikes, snowboards, playing hockey, and climbing.

Posted by nate
March 16, 2017 - 4:12pm

TAGS: Agency / Liftopia / Press Release



Campaign Concepting

This is a brand-new partnership, and like any exciting new relationship, we just wanna tell everyone! Our first order of business was campaign concepting for the Fall 2015 collection, and we recently completed Spring 2016. These projects feel a bit like time travel, especially since we’re still a year away from being able to show anything publicly!

Posted by kris
December 10, 2014 - 1:36pm

TAGS: Brand / News / Project


Bigfootage is live

Vacuum's very own Stock Footage site!

We've been working on Bigfootage as a side project for the last 2 years (yes, 2 years!) and it feels amazing to finally show it to the world. It's a high-end stock footage site, focusing on action sports, nature and more. The footage is exclusively in HD and RED RAW (R3D) formats.

A big shout out to our founding partners B4Apres, Sherpas Cinema, Switchback Entertainment, Reel Water and Nicolas Teichrob. These cinematographers are some of the best in the business, and Bigfootage wouldn't be much of anything without them. Thank you for believing in us when we weren't much more than an idea.

Bigfootage has heaps of stock footage including Skiing and snowboarding footage, Surfing, Nature and of course the ever useful Timelapse Footage for all those transitions from scene to scene.

Besides being a resource for stock video footage, Bigfootage shows Vacuum's capabilities in building a large-scale ecommerce site.

Posted by nate
August 9, 2013 - 1:50pm

TAGS: Brand / design / Drupal / ecommerce / stock footage


Drupal: Adding a Unique ID to a Themed List Wrapper

Or, how to style lists like a boss.

Well, well, well. We don't usually post much geeky tech stuff here. But rest assured, there's plenty of geekery going on behind the scenes here at The Vacuum. Let's crack open the door for a minute here & post something techy. Who knows, it might be just the thing you're looking for some day. Stranger things have happened.

The other day I needed to output a couple of lists from a custom Drupal 7 module using theme_item_list(), and I realized styling them properly would be much easier if they each had a unique ID on their wrapper div element instead of just the generic class="item-list".

Here's how I added an ID by overriding the function in my theme's template.php.

One gotcha: I was originally calling theme_item_list() directly, which meant my overridden function wasn't being called. As indicated here, I switched to calling theme('item_list') instead, and voila, custom IDs for my list wrappers. Also, don't forget to clear your cache!

function MYTHEME_item_list($variables) {
  $items = $variables['items'];
  $title = $variables['title'];
  $type = $variables['type'];
  $attributes = $variables['attributes'];
  // KM: Check for an item in the $variables array called 'container_id'
  // KM: If not found, default to a blank string.
  $container_id = isset($variables['container_id']) ? ' id="' . $variables['container_id'] . '"' : '';

  // Only output the list container and title, if there are any list items.
  // Check to see whether the block title exists before adding a header.
  // Empty headers are not semantic and present accessibility challenges.
  // KM: Add the container_id attribute to the list element container
  $output = '<div class="item-list"' . $container_id . '>';
  if (isset($title) && $title !== '') {
    $output .= '<h3>' . $title . '</h3>';

  if (!empty($items)) {
    $output .= "<$type" . drupal_attributes($attributes) . '>';
    $num_items = count($items);
    foreach ($items as $i => $item) {
      $attributes = array();
      $children = array();
      $data = '';
      if (is_array($item)) {
        foreach ($item as $key => $value) {
          if ($key == 'data') {
            $data = $value;
          elseif ($key == 'children') {
            $children = $value;
          else {
            $attributes[$key] = $value;
      else {
        $data = $item;
      if (count($children) > 0) {
        // Render nested list.
        $data .= theme_item_list(array('items' => $children, 'title' => NULL, 'type' => $type, 'attributes' => $attributes));
      if ($i == 0) {
        $attributes['class'][] = 'first';
      if ($i == $num_items - 1) {
        $attributes['class'][] = 'last';
      $output .= '<li' . drupal_attributes($attributes) . '>' . $data . "</li>\n";
    $output .= "</$type>";
  $output .= '</div>';
  return $output;

I use it like this:

$output .= theme('item_list', array(
    'items' => $typeList,
    'title' => $typeName,
    'type' => 'ul',
    'attributes' => array('id' => 'scope-list'),
    'container_id' => 'type-list-wrapper',

And here's the output:

<div class="item-list" id="type-list-wrapper">
  <ul id="type-list">
    <li class="first"><a href="/projects">All</a></li>
    <li><a href="/projects/residential/">Residential</a></li>
    <li class="last"><a href="/projects/commercial/" class="active">Commercial</a></li>

There you have it, a nice unique ID on our list wrapper, just waiting for some CSS to rain down upon it. Neat!

Posted by kris
August 28, 2012 - 4:31pm

TAGS: Dev / Drupal / Tech