Conrad Akier

05/06/2013

WhirlyBall’s Return…And Revenge?

Conrad Akier // in Vodori Culture

The second annual Vodori WhirlyBall Extravaganza was greeted with high expectations from those who excelled at the prior Extravaganza and determination among the newbies to make sure those same expectations would go unrealized.

WhirlyBall is just one of the many extracurricular activities that help the growing team at Vodori learn about each other and maintain our relaxed office environment. If you don’t know what WhirlyBall is, I urge you to check out the many YouTube videos and websites dedicated to the cause. Think of it as a mix of bumper cars, lacrosse, hockey and basketball, with the noise level of all sports combined.

Dozens of Vodorians buckled into the red and black bumper cars of WhirlyBall Chicago's Court 1 on a recent Thursday evening with little regard for the vehicles and their occupants.


"Nothing in life is better than crashing a speeding bumper car into the blind side of a coworker,” explained business analyst Mike Kinney. “The cursing and screaming caused by a well executed t-boning is as good as it gets.”

As one of the highest scoring players in last year's event, senior developer Travis Stom was among the most targeted of Vodorians. Described in company-wide emails as a "stone-cold WhirlyBall assassin" and "the Sterling Archer of WhirlyBall," Travis had much to live up to. 

Unfortunately for Travis, the will of his coworkers to unseat him was too great. Reflecting after the event, he remarked, "I didn't score at all and only had one chicken finger. All in all, I'd kind of like a redo on the whole night."

 

For our Vodorians who want that second chance to show off their athletic prowess, they will have more opportunities with the Vodori beach volleyball team in the Chicago Sport and Social co-ed summer league. While the company's performances over the past two seasons could be best described as woeful, they provided an excellent excuse to enjoy a number of Chicago's limited beautiful summer days outside. So stay tuned for more adventures from the Vodori team!

Check out more WhirlyBall photos here!

 

Share Article

The face of Vodori.

04/17/2013

How to Be Successful at a Career Fair

The Vodori Recruiting Team // in Vodori Culture

 

 

 

 

 

 

 

A couple of weeks ago, our Vodori recruiting team headed to Chicago UNCUBED, a job fair that links talented people with cool companies.  

This wasn’t your typical suit and tie affair. UNCUBED featured a wide range of Chicago companies, from technology firms like Vodori to catering companies to human resources firms. We had a great time at the lively event, where there were plenty of distractions to pique one’s interest other than employers, including loud music, coffee and beer bars, inflatable llamas and popcorn machines.

As Vodori recruiters (who are also fellow employees) and experienced career fair participants, we have a good idea on the types of talent we meet and hire from such events. With that in mind, we’ve collectively come up with advice to help all career-seekers find success at job fairs:

 

Be prepared

Job fairs make us feel like the most popular kid at school. We are always thrilled to talk to everyone and appreciate those who are patient enough to wait in line to talk to us. To keep the line moving, we usually try to limit our conversations to five minutes or so. So make those minutes count and have an objective in talking with us, whether it’s to ask a question about the company or to explain why your talents and skills are exactly what we need.

Make an impression.

We often don’t have time to take detailed notes during job fairs, so it can be hard to remember all the names and faces that we meet. Figure out a way to make yourself memorable to us – whether it’s our common bond over finding the best tacos in the city or how you developed an app in college. Make sure to mention that differentiator in your follow-up email. (See follow up tips below)

Be presentable.

Wear the clothes you’d like to wear at work. We are always Friday casual at Vodori, so if you are wearing jeans and a t-shirt – you’ll fit right in. And if you are all dressed up in a suit and tie because your mom told you so – we’re cool with that, too (and you might earn some bonus points). What we’re not cool with is bad hygiene. Make sure you take a shower that day and that you have a mint or two in case you had garlic bread at lunch.

Follow up.

This goes for on-site at the job fair and online. Make sure you give us your contact information, such as a business card or resume. We also give huge bonus points for candidates who follow up with us after the job fair. Just send an email to remind us of who you are and how we met. We also like it if you provide a cover letter and resume for the position you want to apply for.

Make it personal.

We wear name badges at most job fairs so it should be easy to address your email to a human being. And it’s OK if you can’t remember our names, but at least make sure your email is personalized to Vodori and what we do. We usually can tell if you are sending a generic email when it uses the phrase “I spoke to a representative of the company”.

Contact us if you don’t hear back.

But do it once and do it politely. We get busy from time to time, so it’s perfectly fine to send us an email a week later to ask where your resume stands.

Most of all, be a human being.

We know from numerous job fairs that this advice is easier said than done. Social situations can be difficult for some people, especially when you are in a high-pressure situation of trying to find a job. So don’t try hard to be something you are not. And don’t overthink it. We’re friendly people and we want to talk to the “real you.” What we ultimately care about and want from a future Vodorian is that you are curious about what we are doing and you desire a job that you love. It’s that simple.

We can’t wait to meet more of you at future career fairs and hope that these tips help you for any job you seek. And if you can’t meet us in person, check out our Careers page.

 

Share Article

Staci McNelis

04/11/2013

Better Know A Vodorian: Staci McNelis

Staci McNelis // in Vodori Culture

Part of an ongoing series to get acquainted with the citizens of Vodoriland. Collect them all!

Name: Staci McNelis
Title: Developer
Specialties: Java and back-end development, but I have become more and more front-end savvy!

So, what exactly do you do around here?

I work across a number of different clients and projects doing both back-end and front-end work. Since I started last summer, I have been mostly working on enhancements and new features for our clients. Right now I’m kicking off my first full client project, which is really exciting. 

Why did you choose development?

My interest in computers stemmed from when my grandpa gave me a 1984 Macintosh and an accompanying ImageWriter printer in third grade. I spent a lot of time on that computer playing with different applications and figuring out the limitations of the OS and hardware. Family members would get birthday cards I designed in MacPaint. which I found really interesting and fun.

What sites do you visit most often?

My primary source for all news, information and fun is Twitter. I follow a lot of tech people and companies, and Twitter does a great job of aggregating all of my news in one easy to read spot. I also visit Instagram, Flickr, Gizmodo and Engadget on an almost daily basis.

What are Vodorians like?

I feel like everyone here is so interesting. They have a wide variety of out-of-office hobbies, which makes us all unique. 

What do you do when you’re not at work?

I grew up in the northern tip of Wisconsin, but spent most of my childhood in the Upper Peninsula of Michigan. My family and I recently bought a cabin in the Keweenaw Peninsula, so I try to get up there as much as possible. I get to spend a lot of time with my family without all of the modern amenities of heat, water and electricity. Unfortunately, it’s now a 7.5-hour drive away, so I can’t make it there as often as I’d like.

If you had a super power what would it be?

Being new to Chicago, I would love to have Google Maps and the CTA Bus Tracker in my head because right now I call my navigation capabilities “teleporting around Chicago.” Although I don’t have a great sense of direction, it’s always fun to explore new neighborhoods. 

Do you have a nickname?

In high school, my friends sometimes called me “Stackey.” It’s been recently shortened to “Stacks”. Here at Vodori, I was originally referred to as Stac “i”, not to be confused with Stacy.

Where do you find inspiration?

The Internet.

Tell us something interesting that nobody at Vodori knows.

My great great aunt lived through three different centuries and I was able to spend time getting to know her when I was growing up. She lived an interesting and somewhat secretive life – she apparently lived in Chicago for a number of years after coming to the U.S. from Finland but never talked about it to anyone once she left. 

Better Know Other Vodorians:

Conrad Akier, Consultant
Dan Rumney, Technology
Carrie Blood, Strategy Analyst
Collin Green, Senior Designer
James Kearney, Program Manager
Jesse Krantzler, Technology
Erin Willingham, Platform Engineer
Peter Winter, Office Manager
Matt Young, Technology

 

Share Article

Meghan Palmer

03/28/2013

The art of moving

Meghan Palmer // in Vodori Culture

If you follow our Facebook page, you’ve probably seen a few photos and posts about our new Chicago headquarters. This spring, we are packing up and heading out of the Lincoln Park neighborhood and down to the West Loop. It’s still a work in progress as our move hasn’t been completed yet, but a lot has happened over the past few months. We are so excited about the big move that we wanted to share and preview some of the fun things that we’ve done so far in getting the new space ready. Here’s our journey in getting our new office together:

January 2012 – June 2012:

Vodorians toured numerous office spaces around the Chicago area and cringed at all of the “cube farms” with ceiling tiles.

June 2012 – August 2012:

We narrowed the options to two front-runners – one in Lincoln Park and one  in the West Loop. The West Loop location at 315 N. Racine easily won out with its open layout, ample natural light and architectural details of a loft space. Plus, it doesn’t hurt that the location is near several great restaurants and bars! 

November 2012:

Vodori signed a lease for roughly 16,000 square feet on the second story of this building and set out to work on a space plan that included: 

  • 7 conference rooms
  • 3 open collaboration/team rooms
  • 3 lounge/collaboration areas
  • Working spaces for up to 74 Vodorians
  • A large break room
  • Restrooms (including locker rooms and showers – helpful for our Vodorians who often bike to work)

December 2012 – February 2013:

And now here comes the fun part… A team of Vodorians met with Steelcase and Coalesse furniture reps from Office Concepts to select the furniture that will fill the new space. 

After understanding the benefits of having a flexible workstation, we decided to get adjustable desks. The desks adjust electronically from 25.5 to 52 inches, enough to accommodate the shortest (5’1”) and the tallest (6’5”) Vodorian, whether they want to sit or stand.

Similar research on the benefits of ergonomics also led us to choose the Steelcase Leap Chair. As the furniture rep put it, “We’re getting the whole ergonomic enchilada!”

 

 

 

 

 

It was a fun but exhausting exercise in choosing the furniture for the conference rooms and collaboration spaces. If you’ve ever been to the Merchandise Mart in downtown Chicago, this won’t be a surprise to you. The options for conference room tables, chairs and lounge furniture are seemingly endless.

However, our work was not done yet. After selecting all of the pieces for each room and open space, there were still hours of textile decisions ahead. To its credit (and my chagrin), Designtex has thousands of textile options – which are great for achieving just the right look, but the many options do not make for a quick decision. 

February 2013:

The furniture is ordered!

March 2013:

Vodori decides to lease the remaining third of the second floor, which provides additional space for: 

  • A large training room
  • Additional conference rooms
  • 46 additional workspaces (for future company growth)
  • Access to a PRIVATE ROOF DECK!!!

We are also in the process of naming our seven conference rooms, which is a challenge of its own. All Vodorians were welcome to submit names, so keep your eye out for a future post on what we decide. 

Sometime before May 1, 2013:

Vodori’s Big Move!

Stay tuned to our Facebook page for more photographic evidence of our future headquarters progress. We think it’s going to be pretty great! 



 

Share Article

Tyler Kamigaki

02/13/2013

Be Vodorable this Valentine's Day

Tyler Kamigaki // in Creative

Have a special designer, strategist, or developer in your life and want to ask them to "Be your Valentine" in a fun, non-traditional way? Here are some Vodori-inspired valentines to let your special someone know how much you care.

 

 

  

 

Share Article

Amy Trang

02/01/2013

A look back at Vodori's Countdown to 2013 holiday site

Amy Trang // in Vodori Culture

Last December, Vodori avoided the traditional print holiday card and decided to send holiday greetings to our clients, families and friends with a virtual gift that kept on giving.  

So, Vodorians pooled their talents together to create the Vodori’s Countdown to 2013 holiday site. We used December’s 31 days as a chance to unveil a gift each day to the site’s visitors, such as desktop wallpaper or a DIY craft.

Our digital holiday card was truly a team project as every single person at Vodori contributed something personal, whether it was a treasured family recipe, a cool playlist or a cameo in one of our funny holiday videos. The end result was a digital holiday treat that made each day in December a little less dreary and a lot more festive.

Although we created the holiday site as a way to appreciate our clients and to show off the many marketing and non-marketing talents of Vodorians (who knew we had such talented photographers, bakers and JibJab creators?!), we also saw it as an opportunity to give back to the Chicago community. Vodorians often volunteer their talents and skills throughout the year (check out our Overnight Website Challenge and Strike Out Cancer posts to learn more) and we knew that this project should be no different. 

We challenged our friends, clients and colleagues to share this site with others because each unique visitor to the site would result in a donation to Mercy Home for Boys & Girls, a Chicago non-profit organization (and our future West Loop neighbors!) dedicated to helping at-risk youth. In total, we donated $1,000 to Mercy Home, and we know that our donation will help shape the futures of many deserving children.

By the stats

Interested in knowing which days were the most popular? So were we! Here’s some fun numbers about the holiday site: 

We had 742 unique visitors to the site and 1,675 total site visits, demonstrating that 56% of our visits were from returning visitors. Facebook was our top social network referral with 311 visitors, followed by Twitter with 208 visitors.

Our five most popular posts were:


 

The majority of our visitors were from Chicago, but some of our site visitors were as far-reaching as Belgium and Burlington, Vermont (although we suspect that there are a few Vodorian family members out there).

We had a fun time brainstorming, designing and developing the holiday site and we hoped that everyone enjoyed it as much as we did. Thanks to all of our visitors and to our clients for a wonderful 2012. Stay tuned for more great things from Vodori in 2013!  

 

 

 

Share Article

Strategy Team

01/23/2013

The battle of the social media tools: Hootsuite vs. Sprout Social

Strategy Team // in Strategy

Hootsuite and Sprout Social are two popular—some might argue market leading—tools for managing a social media presence. With a wide range of features and functionality, both tools can be used to facilitate the execution of a marketing team’s social strategy, including scheduling messages, assigning tasks, tracking statistics and integrating other social platforms.

We spent a month cozying up with Hootsuite and Sprout Social, using them to manage our own social media presences. We put the tools through their paces in the hopes of making an apples-to-apples comparison. Although many of the features across both tools are similar, they each have their own strengths and weaknesses. Here’s some of the highlights of what we found.

Publishing

Hootsuite: 
Hootsuite uses multi-column informational streams that make it easy for users to scan their accounts quickly on a single page. You can customize your streams to really understand your audience, such as tracking a trending Twitter hashtag or a particular keyword. We also like that Hootsuite provides you with an option to save drafts for review at a later date. Hootsuite also has an extensive app directory enabling you to add content from platforms like Evernote, Instagram or Tumblr to your dashboard.   


Sprout Social:
Sprout’s ViralPost technology recommends optimal publish times to get the best engagement out of your tweets or status updates based on audience analysis. And Sprout helps you find and connect to your audience with its Discovery feature. Discovery uses keywords and locations to suggest profiles that would interact with your company.

 

Team Collaboration

Hootsuite: 
In September, Hootsuite launched Conversations, an internal communication tool for their system. We liked that anybody in your company could join Conversations and post comments to the thread without having to set up their own social media account. 

Sprout Social: 
We were quite impressed with Sprout’s contact management system, which allows social media teams to store comments and information about their followers. It’s a great collaboration tool so any team member can see all past interactions with a particular contact and respond appropriately, which helps if you’re trying to foster a lead through social media interaction. 

Sprout also integrates with several customer service operating systems, including UserVoice and Zendesk. This two-way integration feature turns Sprout into a customer service ninja by enabling seamless communication between social media and customer service teams. For instance, when a customer tweets that they can’t login to their account, the social media team can immediately create a helpdesk ticket for the customer service team. From there, both teams can track that ticket through the system and make sure the problem is resolved. Notes can also be attached to the tickets to help resolve the situation more quickly. 

Reporting

Hootsuite: 
We like that Hootsuite reports are fairly customized and detailed.  The basic design of the data makes it intuitive and easy to understand at a glance. Additionally, their “Quick Analytics” reports give us a concise snapshot of our most popular tweets for the Vodori Twitter accounts.  

Sprout Social:
The beautiful interface of Sprout comes into play here. The home dashboard is a quick snapshot of your analytics across all your social networks, including an in-depth of analysis of your followers, reporting the percentage of male and female followers and their age demographic. We also liked that you can see how individual tweets performed in the sent messages tab. By seeing an individual message’s reach and click-throughs, you can instantaneously see what messages resonate well with your audience. In addition, we applaud Sprout’s access to unlimited reports for all plans, which is so helpful if you consistently report analytics to clients or internal teams. 

For both tools, the ability to dive deeper into the reports is currently lacking a bit. With Hootsuite you cannot click into a point on the “clicks” chart to easily see which tweets garnered the most response. The same can be said of Sprout Social reporting. Good data, but not great. 

Mobile

Hootsuite: 
Hootsuite’s mobile site is a nice reflection of its browser site, allowing you to swipe through all of your streams quickly. The only major drawback here is that you cannot access pre-scheduled tweets, a feature we happen to love in the web-based version. 

Sprout Social: 
We like that Sprout Mobile has full access to its contact management system and you can easily keep tabs on current activity such as mentions, replies and retweets across all accounts.

Cost

Hootsuite: 
$9.99 per month for two users for Pro Plan, managing unlimited social profiles. 

Sprout Social: 
$39 per month per user for Standard Plan, managing up to 10 profiles.

Both companies offer 30-day trials with full access to features of any plan. 

Bottom Line

Both tools have all the key essentials for managing a company’s social media presence. We favor Hootsuite’s low costs, publishing tools and monitoring features for our needs. However, we’d recommend Sprout for companies with large social media teams and/or have lots of customer service interaction on social channels. We were impressed with Sprout Social’s clean interface, unlimited reports and customer service systems integration. We’ll be keeping our eye closely on this Chicago-based company.

Editor’s Note: A special thanks to our future West Loop neighbors, Sprout Social and Angus Gorberg, who gave us a personal tour of the platform’s features at Sprout HQ. 



 

Share Article

Nicole Zukerman

01/15/2013

Vodori wins a spot on Brill Street’s Top 50 Employers for Gen Y Talent

Nicole Zukerman // in Vodori Culture

 

We are very fortunate at Vodori for all of the great milestones we achieved in 2012. Summer 2012 marked the launch of our newest, designed-from-the-ground-up, and most exciting version of Pepper yet.  And in the fall, we announced two significant office moves – our westward expansion to San Francisco as well as relocation of our current office in Lincoln Park to a brand new, state-of-the-art space in Chicago’s West Loop neighborhood (with our official moving date slated for this spring). Now, Vodori is thrilled to start 2013 with more great news. We are pleased to announce that we have been selected by Brill Street + Company as one of the Top 50 Employers for Gen Y Emerging Talent in Chicago.

We’re truly honored to be ranked #11 on Brill Street’s list this year. Our fellow companies represent everything that is great about the Chicago business community. And from the personal perspective, we’re excited to be part of this list because it recognizes all of the great things that we have experienced since we joined the Vodori team. Vodorians are a unique bunch, comprised of individuals with varied interests and backgrounds. In fact, one of our most consistent traits is our diversity. In our team’s midst, we have dog lovers, cat lovers, world travelers, musicians, DJs, wrestling champions, parents (yes, we have a lot of Gen Y folks but there are a few parents in the mix too), skiers, sub-zero bicyclers, and photographers, among many other skills, talents and personal accomplishments.

But aside from our diversity and addiction to good coffee, the most common attribute of our team is the passion and dedication that we each bring to our work, day in, day out. Whether it’s for our clients or for a local charity, we are absolutely immersed in helping our partners achieve digital sales and marketing excellence. And although our answers are varied when we’re asked about what we like best about working at Vodori, our responses still carry similar themes. We love the office culture, the collaborative work environment, and meritocracy that makes us all feel like peers. And of course the added perks of Happy Hours and Half-Day Fridays don’t hurt either.

Learn more about our ranking and what it’s like to be a Vodorian by checking out the Vodori page on Brill Street’s website.

Speaking of being a great place to work – we’re hiring! If you (or anyone you know) are passionate about all things digital and you pour that passion into your work, then we want to talk to you. Check out our Careers page to learn about all of our open positions.

 

Share Article

Josh Newman

01/08/2013

Development made faster: JavaScript build with AMD modules

Josh Newman // in Technology

Prelude

Before I get into my advice about the benefits of using an Asynchronous Module Definition or AMD, there are a few things to note. First, this article assumes you have a working knowledge of JavaScript. Second, my namespace is located as /static/src/article and that I'm happy serving it from /static/dist/article (similar to Java's output). Third, and finally, I'm using grunt.js, mostly because it's easy to set up. I recommend checking to see if your back-end build system has tools available or if you're short on time and my setup is ok with you, check out the source used by this article.

What is an AMD?

An AMD (Asynchronous Module Definition) is a JavaScript module wrapped in a bit of boilerplate that allows a separate script to manage its dependencies in a sane way. It attempts to take the place of one of JavaScript's greatest issues, namely the ability to define modules in a reusable way.

It is, almost certainly, the most widely adopted system for providing programmatic loading of JavaScript in the browser. The definitive API documentation describes it as:

...a mechanism for defining modules such that the module and its dependencies can be asynchronously loaded. [AMD JS API Wiki]

Fortunately, unlike most standards, AMD is capable of working with modules that are outside of the standard. Unpackaged resources are generally a bit more work to deal with, but the loader will load them. In addition, nearly all AMD loaders support an easy-to-use plugin architecture, such that loading arbitrary things, and later building them, is both possible and plausible.

Why do I need it?

The importance of the asynchronous component cannot be overstated. Because dependencies are explicitly listed, it's possible to make very granular inclusions. Surely, you're reading this because you know about and want to compress your JavaScript, and AMD is a great platform for allowing this, however it's helpful for development too, since the source files will load faster while you're implementing new features.

More important than this though, it cuts down what actually goes in your built file. When loading separate files in dev and building them for production becomes easy, developers are freed to make the choice to break up a module based solely on logical groupings.
For example, if I only want to manipulate arrays, then I can simply define my Array manipulation module:

// Notice I can omit the module name. The loader assumes modules map to a file
// path unless it's told otherwise.
define(function () {
   'use strict';
   
   var methods = {},
       // There are plenty of others, but I want to keep this brief.
       EXPOSED = ['map', 'forEach', 'every', 'some', 'reduce'];

   var aProto = Array.prototype;
   var aSlice = aProto.slice;
   var methodName = '';

   var makeMethod = function (name) {
       return function (array) {
           //noinspection JSReferencingMutableVariableFromClosure
           return aProto[name].apply(array, aSlice.call(arguments, 1));
       };
   };

   for (var i = 0, len = EXPOSED.length; i < len; ++i) {
       methodName = EXPOSED[i];
       /**
        * Create a wrapper for whatever array methods are listed.
        * NOTE: This is not an appropriate real world solution.
        */
       methods[methodName] = makeMethod(methodName);
   }

   return methods;
});

Then, I can include just that module and start working with arrays in some fantastic way. Assuming I put the array tools at /static/src/article/util/array, I would put:

/*global document, alert */
require([
   'article/util/array'
], function (
   array
) {
   'use strict';

   var titleText = array.map(['Build JS, ',  'World', '!'], function () {
       // Interesting manipulations here.
       return item;
   };

   alert(titleText);
});

What do you need to incorporate AMD into your build?

Generally, the ideal output is a single, monolithic file that contains all the dependencies of your app. In order to achieve this, you'll want to define a build profile which should look like:

exports.config = ({
       // The name of this layer.
       name: 'article',
       // Where the output will go when we build.
       dir: 'dist',
       // Where the unbuilt JS resides.
       appDir: 'src',
       // Path from this to the path you'll use for relative declarations of packages.
       baseUrl: '.',
       // A list of packages you're using
       packages: [
           {
               name: 'article'
           },
           {
               name: 'mustache',
               // I'm setting main here, since mustache doesn't use the default, which would be mustache/main
               main: 'mustache'
           },
           {
               name: 'has',
               // Same as Mustache
               main: 'has'
           }
       ],
   
       // Code branching.
       has: {
           // All has('love-for-ie-6')'s in the code will be replaced w/ true, which lets UglifyJS or Closure-compiler remove
           // the if statement around them.
           'love-for-ie-6': true
       }
   });​

What's going on here? Well, first off, I am using exports.config so that I can use this in my grunt.js file. This only matters if you're using a NodeJS based build tool; otherwise, you should be able to get away with a simple object.

Next, I'm providing the name of my app, where the sources come from, and where they go once they've been built. I then enumerate all the packages with the minimum amount of information my build tool will need (in this case r.js). Finally, I list out things I know about the layer I'm building. In this case, I know my customer loves IE6, so I set that to true.

Let's break down this last bit a little further. The order of operations is (roughly):

  1. The build tool concatenates all the modules, recursively looking up their dependencies.
  2. The resources are all move into the dist directory.
  3. All has tests, that have an entry in the profile, are replaced with the boolean values you've given.
  4. The minifier runs and its dead code removal tool takes out the short-circuited branches.


So, the sources when staged, look something like:

// The has integration will take this from the profile above.
if (has('love-for-ie-6')) {
   alert("I dislike you.");
}
else {
   alert("You're awesome.");
}

// Then after the has replacements.
if (true) {
   alert("I dislike you.");
}
else {
   alert("You're awesome.");
}

// Finally, once compiler finishes it off.
alert("I dislike you.")

So, what's in a built file and why do I care?

Basically, they are a collection for function calls which take:

  1. The name of the module in fully qualified terms.
  2. An optional Array listing the modules dependencies.
  3. The function the returns the module (or kicks off the side-effects associated with the module).

The reason that this is interesting is that AMD loaders essentially have only one objective and that's to ensure that all modules have their dependencies loaded before they're executed. Whenever a define call happens, that sticks another key in the loaders list of available modules. So, if all the modules our script needs are in the built file, then the loader won't try to load them.

This process works a lot like an impromptu party. If Mike and James are already at your party and you call Tom to join in, you wouldn't send him to Mike's house to pick him up. Sure, you could, but that would be rude and a waste of time. It's the same with modules, once they are at the party (your clients browser), there's no reason to try and get them again.

What tools are available for building with AMD?

RequireJS
As I mentioned above, r.js is an excellent tool for building AMD modules and it is normally coupled with RequireJS to provide a full range of loading solutions.

Dojo
The primary toolkit of Vodori, Dojo is available at dojotoolkit.org. It comes fully AMD packaged and ready to build out of the box (as of 1.8). Indeed, Dojo 1.8.1's sources are rumored to be compatible with RequireJS (the issues were pretty minor previously). For AMD + Dojo examples, checkout our FE challenge and dojo-boilerplate.

curl.js
Though it seems less used than Dojo and RequireJS, curl.js has a rather nice compliment of plugins and solid documentation about using it with virtually any commonly deployed JS stack. One benefit of curl.js is that by providing script loading synchronously but hidden behind an asynchronous API, it can lead to significantly faster page load during development. [John Hann on David Walsh's blog]

What if my build project is truly massive?

The quick answer is to build many layers, which can be done with multiple profiles, then at the expense of one or two extra requests, you can load up your remaining resources in a conditional way. Some found this insufficient and came up with a radical alternative. Vodori has some pretty neat tricks up its sleeves and even more on the way. I'm hoping to share some of this in the near future.

Are there any gotchas you've come across?

You bet! Below are a couple that have really been sore points.

Random script blocks, with dependencies, in HTML
The most serious, because it is endemic to the pattern, is that if you have to deal with legacy code, where JavaScript, that relies on an AMD module, is buried inside the HTML, then the dependency might not load before you reach that unscrupulous scripter's tag. This should never come up with new construction, but if it does, or if you're simply improving existing code, the simplest option is to concatenate your files server side even when you're in development mode. If you're in a slick browser and your build tool offers source maps, then you can still hide the difference from yourself.

Deploying to several varied directories is more trouble than it's worth
Notice in this project, I put all my dependencies into a single src and transfer them to a single dist. We wound up with a more complicated directory structure for Pepper and it was too much work. If you take only one thing away from this blog post, this should be it. Use one source directory and one dist directory. Trust me, the configuration overhead is not worth it.

 

Share Article

Strategy Team

12/14/2012

Holiday gift guide for Strategists

Strategy Team // in Strategy

Our Strategy Team put their heads together to create Vodori’s Gift Guide for Strategists. This collection of gifts is sure to please every digital marketer on your shopping list.

1. Stratego

Cliche? Maybe. But we really love to strategize. Give your favorite strategist Stratego, the game where each player must always think 5 steps ahead.

2. North Face E-Tip Gloves

Winters in Chicago are a smartphone user’s nightmare. Not anymore with these E-Tip Gloves! These gloves will allow any smartphone user to surf the web all winter long with toasty warm fingers. 

3. Amazon Kindle

Don't get us wrong; we are definitely iPad people. When it comes to reading a book, however, there is no substitute for our Kindles, especially on the morning commute. 

4. Nest Thermostat 2.0

This smart thermostat has been all the rage these days. We love it too! It learns your living habits and automatically adjusts to save you money. 

5. Lytro Camera

Ever take a picture and review it later, wishing that you could have re-focused on something else? This pocket-sized camera allows you to do just that. Now you can refocus to your heart's content!

 

Share Article