Useful Sketch Shortcuts

cmd + 1: shows all your artboards on screen.

cmd + 2: zooms in to a selected item

Pay Attention to Your URLs

Your URLs matter just as much as your title tags or meta descriptions. A long or nonsensical URL is less likely to be clicked on than one that reads well.

Example of a bad URL: www.sitecrafting.com/our20%top20%520%wordpress20%plugins

Example of a good URL: www.sitecrafting.com/blog/our-top-5-favorite-wordpress-plugins

Rearranging Repeater Rows in WordPress

In many of our WordPress sites, we use repeater fields for accordions or hero slides. Did you know that you can minimize multiple rows? This makes it easier to rearrange slides or a long list of accordions like FAQs.

Plan Ahead with a Content Calendar

Stay on top of your social channels by creating a content marketing calendar to brainstorm and schedule out posts. You can also use the calendar to schedule any blog posts, email campaigns, or other marketing materials your business uses. No more scrambling to find something to post!

Useful Photoshop Shortcuts

space bar + cmd: zoom in tool
space bar + cmd + option: zoom out tool

Audit Your Content Often

The content on your website should be audited often. Use daylight savings time as a reminder to check your content at least twice a year!

Test Prototypes to Save on Development

Bringing in target users to test prototypes is a great way to find out basic issues early on and will save you a lot on development costs later down the line.

Make Your Command Prompts More Festive

Here's a fun (and completely useless) hack for devs who want their command prompt to be more festive for Christmas and beyond!

# instead of a boring old $ all the time,
# put a holiday thing in your command prompt!
# just throw this code in your .bashrc or .bash_profile
my_ps1() {
  # strip leading zero from mmdd date
  dt=$(date '+%m%d' | sed 's/^0//')
  if [[ $dt == '314' ]] ; then
    s='ฯ€'
  elif [[ $dt == '628' ]] ; then
    s='ฯ„'
  elif [[ $dt == '422' ]] ; then
    s='๐ŸŒŽ '
  elif [[ $dt == '317' ]] ; then
    s='๐Ÿ€ '
  elif [[ $dt == '1031' ]] ; then
    s='๐ŸŽƒ '
  elif [[ $dt -gt 1201 ]] ; then
    s='๐ŸŽ„ '
  else
    s='\$'
  fi
  # set the command prompt var
  export PS1='\u@\h $s '
}
my_ps1

Always Doubt, Test It Out

Any time you make a functional or design change to your website, you probably want it to do something better than it was doing before. But a simple before and after measurement of outcomes doesn't tell you as much as you thinkโ€”too many outside factors change with time.

With enough site traffic, A/B testingโ€”randomly splitting your audience and showing some the old version, and some the newโ€”can give you statistically rigorous insight into the real effects of change on the actions of your users. Frameworks like Optimizely or Google Analytics Experiments are a great quick start, or you can roll your own testing solution, with some careful planning.

Track Your Links

If you're not using a link management platform such as Bit.ly, you're missing out on gathering meaningful metrics. Transform lengthy URLs into short, trackable links to use in social posts and email campaigns to track stats like the number of clicks, location, time, and referrers.

Time Tracking and Jira

If you're like us and have trouble remembering to track time throughout the day, one of our favorite Jira filters is My Updated Today, which shows any issue that you've updated that day. Here's the query string:

updatedDate > startofDay() AND Participants = currentUser() ORDER BY key ASC, updated ASC

There's No Reason to Put Yourself Through Callback Hell in 2017

If you've written JavaScript in the last few years (especially if you're using node.js), this probably looks familiar to you:

// Example from https://ciphertrick.com/2016/06/12/avoiding-callback-hell-node-js/
doSomething(param1, param2, function(err, paramx){
  doMore(paramx, function(err, result){
    insertRow(result, function(err){
      yetAnotherOperation(someparameter, function(s){
        somethingElse(function(x){
          console.log('WHYYYYYYYYYYYY');
        });
      });
    });
  });
});

Callbacks are great for keeping I/O functions from blocking your code from continuing to execute, but daaaaang they can get messy quickly and make debugging terrible. If you're still writing code like this, you don't have to! And even better, you have options:

Promises (i.e. chainable objects which represent the future value of an asynchronous operation):

doSomething(param1, param2)
  .then(function(paramx){doMore(paramx);})
  .then(function(result){insertRow(result);})
  .then(function(someparameter){yetAnotherOperation(someparameter);})
  .then(function(){somethingElse();})
  .catch(function(err){console.log('An error occurred: ' + err);});

Async/Await takes Promises to the next level:

async function doTheThing(param1, param2){
  try{
    var paramx = await doSomething(param1, param2);
    var result = await doMore(paramx);
    var someparameter = await insertRow(result);
  var last = await yetAnotherOperation(someparameter);
    somethingElse();
  }
  catch(err){
    console.log('An error occurred: ' + err);
  }
}
doTheThing(param1, param2);

We're barely just scratching the surface of asynchronous JS, so check out these articles about Promises and Async/Await.

Reindeer

One new tip will appear daily until Christmas

Branta Image Branta
Brian

Follow Branta's Journey

A magical elf has turned our founder Brian Forth into Branta Claus! Weโ€™ll be tracking Brantaโ€™s journey with the hashtag #whereisbranta as he makes his way delivering Christmas cheer.

Follow along to see where he pops up next!