What They Learned from 7 Years of MailChimp A/B Testing

This article comes from MailChimp research team. If you ever wonder what the best way to utilize the A/B testing campaign type in MailChimp, this little graphic below will give you the quick gist into the 7 year experiment. Continue reading “What They Learned from 7 Years of MailChimp A/B Testing”

eCommerce Solutions Review Chart (Shopify Plus, Volusion, Spark Pay, WooCommerce, Nexternal)

Several months ago I did an in-depth review of some of the top eCommerce solutions for one of my clients. I compared their brand, customer-base, features, possibilities and prices.

With several of them I actually test drove the platform to see how easy to use it is, how responsive it is and had multiple demo sessions with their reps.

Continue reading “eCommerce Solutions Review Chart (Shopify Plus, Volusion, Spark Pay, WooCommerce, Nexternal)”

Hand-Drawn Lines with Transparent Background PSD & PNG

While working on one of my projects I had to create a set of hand-drawn lines, scan and then isolate them so I can use them in my design. If you know me, you know that I don’t like to let a useful design go to waste by only using it once. This is why I put it up on the blog for others to use. This is a set of various width hand-drawn lines with transparent background so you can use them for anything. The original file is also in 300 dpi so this can be used in print projects. Download them below (under the image). Enjoy! Continue reading “Hand-Drawn Lines with Transparent Background PSD & PNG”

Huge 492 Quality Graphics Kit You Need

As I work on things I create various graphics. Why let all that goodness go to waste? I took some of those designs and expanded on them making them better, adding variations and different colors. This kit of 492 graphics contains a ton of price tag graphics, a couple of price tables, step lines, buttons and all kinds of other eye candy! Continue reading “Huge 492 Quality Graphics Kit You Need”

BACKUP, CLONE & Restore WordPress With 1 Click!

If you use WordPress to blog, here is an awesome WordPress BackUp tool a friend showed me. This thing backs up everything… Posts, pages, images, plugins, all the settings, all of it!

I’ve been blogging for over 7 years and have always had this scary thought in the back of my mind, “What is it crashes, I don’t have any back ups”. I have looked into backing it up but nothing is convenient enough to stick to. The plugins out there are half-decent but not worth investing in.

When I got an email from a friend of mine that blogs a lot, to say the least, and he told me about this plugin, I was shocked at how awesome it is. So I am tellign everybody about it today. If you run WordPress, you need this plugin. At least do your self a favor and take a look at it. I am sure you will love it and will probably thank me.

Go there now, Backup Creator: http://bit.ly/xWDtfm

Yes, that’s my affiliate link. I will get a cut if you buy it. No reason to lose out on free money while helping people out. :)

~ Valik

Cut Your CSS File Size by 30%

Yep, when you are done editing your site, removing the white spaces from your CSS file can trim your file size down up to 30%. But who wants to go and  remove those pesky white spaces and carriage returns out by hand? Not me, I can tell you that. And yes I am sure they have tools for that out there… somewhere… But I went and created a simple one for my self so I can optimize them CSS files and then Un-Optimize them back if I need to so I can actually read them.

Click here to go to the Optimize CSS & Un-Optimize CSS Tool

Sometimes I also want to go and see how some element is made on another site but I go and view source and all I see is a bunch of code all clumped up together (it’s just optimized), but I can’t read any of it like that. So I use the Un-Optimizing tool to make it all readable again.

Bookmark this tool! You will need it, I guarantee it. :)

11 YouTube Video Background Border Design Ideas in PSD

Another series of Photoshop PSD files to share with you guys and girls. The last YouTube player button icon PSD file I posted here turned out to be pretty popular so I decided to do a series of YouTube video background border designs and share the PSDs here for everyone to use. I know as a designer, creating something that is needed all the time, from scratch every time, is no fun and gets kinda old real quick so once and for all, or for most projects anyway, here are the ready PSDs that you can dive into and edit as you like to apply to your project.

Download all of these file and feel free to use them as you please for your self or your business. Please link back to this page if you can.

Click here to download these PSD files »

Download all of these file and feel free to use them as you please for your self or your business. Please link back to this page if you can. :)

Click here to download these PSD files »

jQuery Time Zone Sensing Live Broadcast Countdown Mechanism

Having a countdown to a live webinar or some sort of event sounds like a simple idea. There are plenty of jQuery countdown examples on the Internet you can find but what I found out is that not one talks about how to adjust that countdown to the visitor’s time zone.

If we are having the broadcast at 6 o’clock EST, we can have the timer count down to 6 o’clock EST but because it is javascript based, the time it uses is client side machine time and so the visitor from California will see the countdown count until 6 o’clock his time (PST) at which point the broadcast will have finished.

To remedy this problem I had to dig around and hack this code together using the most popular jQuery script from Keith Wood here: http://keith-wood.name/countdown.html

I used a combination of PHP and JavaScript to communicate together and figure out where the script is opening at and adjust the timer accordingly. Lucky for you, I did all the work so just copy the code now and apply it to your project.

Download Source Code | View Live Demo

The Code

This is the CSS:

<style>

/* Countdown Timer */
#countDown { border:0px solid #ccc;display:block; width:500px; height:85px; margin:0 auto; position:relative; top:0px; background:url('YOUR_DOMAIN_GOES_HERE/js/timez2.png') no-repeat 10px bottom; }
#countDown div { float: left; width: 43px; height: 58px; background: url('YOUR_DOMAIN_GOES_HERE/js/numberz2.png') no-repeat 0 0; }
#countDown div.image0 { background-position: -0px 0px; }
#countDown div.image1 { background-position: -61px 0px; }
#countDown div.image2 { background-position: -122px 0px; }
#countDown div.image3 { background-position: -183px 0px; }
#countDown div.image4 { background-position: -244px 0px; }
#countDown div.image5 { background-position: -305px 0px; }
#countDown div.image6 { background-position: -366px 0px; }
#countDown div.image7 { background-position: -427px 0px; }
#countDown div.image8 { background-position: -488px 0px; }
#countDown div.image9 { background-position: -549px 0px; }
#countDown div.imageSep { background-position: -610px 0px; margin:0 4px; }
/* End Countdown Timer */

</style>

Just remember to upload the js directory to your server and replace the YOUR_DOMAIN_GOES_HERE with your own domain.

We start with a couple of DIVs, one will be visible and the other hidden. The visible DIV will hold the code for the countdown and the hidden one will hold the live player code.

.

<div id="bcastsoon" style="display:block;">
 <h1 style="text-align:center;margin-top:0px;">Live Broadcast In:</h1>
 <div id="countDown"></div>
</div>

<div id="bcast" style="display:none;width:560px;margin:50px auto;text-align:center;">
 <h1>Live Now!</h1>
 <div id="theliveplayer"></div>
</div>

.

Now we add the PHP/JavaScript code in the countdown DIV:

<div id="bcastsoon" style="display:block;">
 <h1 style="text-align:center;margin-top:0px;">Live Broadcast In:</h1>
 <div id="countDown"></div>

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
 <script type="text/javascript" src="YOUR_DOMAIN_GOES_HERE/js/jquery.countdown.js"></script>

 <script type="text/javascript">

 $(function () {
 <?php

 ////////////////
 //                    //
 //  SETTINGS   //
 //                    //
 ////////////////

 // PLAY BROADCAST

 // week day :
 $live_day 	= 'Tuesday';	 

 // use 24 hour time (base this on Eastern Standard Time (EST)):
 $live_hour 	= '17';

 // miutes with leading zeros:
 $live_min 	= '45';		

 // seconds with leading zeros:
 $live_sec 	= '00';		

 // DELAY COUNTDOWN AFTER BROADCAST STARTED

 // add hours to the live_hour set above:
 $off_hour	= '1';

 // minutes with leading zeros:
 $off_min	= '15';

 // BROADCAST INFO

 //

 // live player code
 $live_code	= 'LIVESTREAM_PLAYER_EMBED_CODE';

 // live player heading title
 $live_title	= 'Live Broadcast!';

 // previous browadcast player code
 $off_code	= 'LIVESTREAM_PLAYER_EMBED_CODE';

 // replay player heading title
 $off_title	= 'Replay Of Last Weeks Broadcast';

 ///////////////////////////////////////
 //                                                           //
 //  DO NOT CHANGE ANYTHING           //
 //  BELOW THIS UNLESS YOU KNOW      //
 //  WHAT YOU ARE DOING                    //
 //                                                           //
 ///////////////////////////////////////

 // TARGET TIME
 $countdownweekday = $live_day;
 $countdowntimeh = $live_hour;
 $countdowntimeh = $countdowntimeh+5; // standardized time GMT 0
 $countdowntimei = $live_min;
 $countdowntimes = $live_sec;
 $nextmondayy = date('Y', strtotime($countdownweekday));
 $nextmondaym = date('m', strtotime($countdownweekday))-1;
 $nextmondayd = date('d', strtotime($countdownweekday));

 // FIX MONTH
 if($nextmondaym == '0') {
 $nextmondaym = '00';
 }

 // SERVER TIME
 $servermonth = date('m')-1;
 if($servermonth == '0') {
 $servermonth = '00';
 }
 $serverdate = date('Y').$servermonth.date('dHi');
 $targethouradj = $countdowntimeh-8;
 $targettime = $nextmondayy.$nextmondaym.$nextmondayd.$targethouradj.$countdowntimei;
 $offhouradj = $targethouradj+$off_hour;
 $offminadj = $off_min;
 $offtime = $nextmondayy.$nextmondaym.$nextmondayd.$offhouradj.$offminadj;

 // DETERMINE THE END OF BROADCAST
 if($serverdate >= $offtime) {

 $nextmondayy = date('Y', strtotime("Next ".$countdownweekday));
 $nextmondaym = date('m', strtotime("Next ".$countdownweekday))-1;
 $nextmondayd = date('d', strtotime("Next ".$countdownweekday));

 // FIX MONTH
 if($nextmondaym == '0') {
 $nextmondaym = '00';
 }

 }

 ?>

 // PLAY BROADCAST FUNCTION:
 function liftOff() { 

 document.getElementById('tempplayer').innerHTML = '';
 document.getElementById('theliveplayer').innerHTML = '<?php echo $live_code; ?>';
 document.getElementById('bcast').style.display = 'block';
 document.getElementById('bcastsoon').style.display = 'none';

 }

 // GET TIME ZONE
 var d = new Date()
 var gmtHours = -d.getTimezoneOffset()/60;

 // ADJUST TARGET TIME TO TIME ZONE
 var playhour = <?php echo $countdowntimeh; ?>;
 playhour = playhour+gmtHours;

 var targettime = '<?php echo $targettime; ?>';
 var targettimeoff = '<?php echo $offtime; ?>';
 var curY = d.getFullYear();
 var curMo = d.getMonth();
 var curD = d.getDate();
 var curH = d.getHours();
 var curM = d.getMinutes();
 if(curMo == '0') { curMo = '00'; }
 var curtime = curY+''+curMo+''+curD+''+curH+''+curM;

 //alert('target: '+targettime+' - cur: '+curtime+' - off: '+targettimeoff);

 // ARE WE LIVE?
 if((curtime >= targettime) && (curtime <= targettimeoff)) {

 // IF YES, PLAY BROADCAST:
 liftOff();

 // IF NOT, SHOW COUNTDOWN
 } else {

 $('#countDown').countdown({until: new Date(<?php echo $nextmondayy; ?>, <?php echo $nextmondaym; ?>, <?php echo $nextmondayd; ?>, playhour, <?php echo $countdowntimei; ?>, <?php echo $countdowntimes; ?>), format: 'DHMS', onExpiry: liftOff,
 layout:
 '<div class="image{d10}"></div><div class="t image{d1}"></div>' +
 '<div class="imageSep"></div>' +
 '<div class="image{h10}"></div><div class="t image{h1}"></div>' +
 '<div class="imageSep"></div>' +
 '<div class="image{m10}"></div><div class="t image{m1}"></div>' +
 '<div class="imageSep"></div>' +
 '<div class="image{s10}"></div><div class="t image{s1}"></div>'
 });

 } // END ARE WE LIVE

 });

 ////////////////////////
 //                                  //
 //  END LIVE SCRIPT     //
 //                                  //
 ////////////////////////

 </script>

 <div style="width:560px;margin:50px auto;text-align:center;" id="tempplayer">
 <h2><?php echo $off_title; ?></h2>
 <?php echo $off_code; ?><br><br>
 </div>

</div>

That’s that, you should now be reasy to countdown to your event. I recommend downloading the file for this rather than copy the code from this page. Here they are again:

Download Source CodeView Live Demo

Until next time.

~ Valiik

Getting Posts By Tag or Category in WordPress

Usually when I need to get posts by tag or category in WordPress to use in a featured posts slideshow or some sidebar list, I have been going through a lot of steps to pull those posts. I found an easier way of doing it and so wanted to document it here. This example is used with a featured posts slideshow before the list of posts on the homepage. I am pulling the posts tagged “Featured” before the loop and to do that I am using the get_posts() function. Here is the code, it should be pretty self explanatory. Please leave comments if you have questions about it. By the way, I wrote a basic tutorial on search engine optimization for WordPress. Ok back to code.

<?php

// make sure you have your header in place
get_header(); 

// grab the posts you need, by tag or category
global $post;
$postsByTag = get_posts('tag=Featured&numberposts=6');

// now for each post do what you need
foreach($postsByTag as $post) {

 setup_postdata($post);

 echo '<a href="'. get_permalink().'">'. get_the_title().'</a><br />'.get_the_excerpt();

 // you can pull the thumbnail image for the posts using this
 $thumb = get_the_post_thumbnail($page->ID,array(652,458)); 

}

// then it continues into the regular loop
if (have_posts()) : while (have_posts()) : the_post();

?>

Before I go, one question for you:

How many custom WordPress Themes have you built?

YouTube Style Video Play Button Photoshop Layer PSD File For Video Placeholder Images

Another useful PSD file that every web designer should have in their arsenal is this YouTube style Video Play button layer that you can place over any image to make a video placeholder image. I’ve noticed that I had to create these from scratch a lot lately so I made one that I can reuse and so sharing it with my readers too.

Click here to Download the PSD file

Remember to share this post with your friends is you have friends that are designers and might find this useful! :)

Ok, later, got to get back to work.