Tuesday, 5 March 2013

Redesigning A Responsive Youtube with HTML5/CSS3 [Tutorial]

Redesigning A Responsive Youtube with HTML5/CSS3 [Tutorial]:
If you have seen YouTube recently you may notice one glaring omission from their website layout. Their design lacks the ability to fold responsively as you resize the browser window. It’s strange how the layout does not even contract to a smaller width; YouTube is currently designed using a fixed-width webpage.
I want to bring in some modern web design techniques and give the YouTube homepage a nice redesign. In this tutorial I’ll explain how we can build a custom mobile-responsive YouTube clone layout from scratch.
Custom YouTube Responsive Layout Redesign in HTML5/CSS3
I’ll be using some newer HTML5 and CSS3 techniques which are supported in mostly all modern browsers.
If you want to see my code in action check out the live demo at the end of the article below.

Creating the Structure

To get us started we should create a single index.html page with the typical HTML5 doctype. Since this is a mobile responsive layout we need to include a few specific meta tags as well.
In this project I’ll be separating our JavaScript and CSS code into different files, and you can see what that looks like in my codes below:
<!doctype html>
<html lang="en-US">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Demo sliding menu test</title>
  <meta name="author" content="Jake Rocheleau">
  <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
  <link rel="shortcut icon" href="favicon.ico">
  <link rel="icon" href="favicon.ico">
  <link rel="stylesheet" type="text/css" href="css/styles.css">
  <link rel="stylesheet" type="text/css" href="css/responsive.css">
  <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
  <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.9.0/jquery-ui.min.js"></script>
  <script type="text/javascript" src="js/retina.js"></script>
  <script type="text/javascript" src="js/scripts.js"></script>
<!--[if lt IE 9]>
  <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
So along with the viewport meta tag, I’m including a series of external documents. The stylesheets styles.css and responsive.css contain the design rules for our typical layout and over responsive media queries.
Additionally I am including two JS libraries from Google’s CDN hosting: jQuery and jQuery UI. Both will come in handy as the layout shrinks and we use a sliding animation to display the navigation menu.
This animation is tied to the scripts.js file where I’ll be keeping all our custom jQuery codes. Additionally I have another 3rd party script named retina.js which is by far the easiest way to work around retina display images.
If you visit the retina.js website you’ll find a download link for their minified library. Simply include this into your document and the script will auto-scan your images for @2x variations (when on retina devices).

More Responsive Tendencies

For this particular tutorial I have gone with a more atypical approach to website design techniques.
When our layout is displaying in full at 950px, you’ll see two sidebars along with the center video content. However when you get down to the smallest frame, around 320px, you’ll only see the center column and a top toolbar area.
toogle youtube toolbar
This toolbar will have a menu toggle button which you can tap, to slide back and forth. None of the menu links work in my demo because we don’t have any pages with content right now. But you may update these anchor links with new HREF values to get them working on a real website.
Let me copy over just the top header & navigation code from our document body.
<body>
  <div id="w" class="clearfix">
    <header id="fulltop">
      <span id="logomini"><a href="index.html"><img src="design-responsive-youtube/logo-mini.png" alt="YouTube - Broadcast Yourself"></a></span>
      
      <span id="userlogin">
        <img src="design-responsive-youtube/avatar-sm.png" alt="default user pic" class="defaultphoto"> 
        <a href="javascript:void(0)">Log In</a>
      </span>      
      
      <div id="searchbox">
        <form id="searchform" name="searchform" action="#" method="get">
          <input type="text" name="s" id="s" class="searchbar" placeholder="" tabindex="1">
          <input type="submit" name="sbtn" id="sbtn" value="" tabindex="2">
        </form>
        
        <ul id="topsidelinks">
          <li><a href="javascript:void(0)">Browse</a></li>
          <li><a href="javascript:void(0)">Featured</a></li>
          <li><a href="javascript:void(0)">Upload</a></li>
        </ul>
      </div>
    </header>
    
    <nav>
      <ul id="sidenav">
        <li class="heading">User Account</li>
        <li><a href="#login" class="signin"><i></i>Sign In</a></li>
        <li><a href="#register" class="register"><i></i>Register</a></li>
        <li class="heading">Video Categories</li>
        <li><a href="#popular" class="popular"><i></i>Popular</a></li>
        <li><a href="#recent" class="recent"><i></i>Recently Uploaded</a></li>
        <li><a href="#comedy" class="comedy"><i></i>Comedy</a></li>
        <li><a href="#entertainment" class="entertainment"><i></i>Entertainment</a></li>
        <li><a href="#film" class="film"><i></i>Film & Animation</a></li>
        <li><a href="#gaming" class="gaming"><i></i>Gaming</a></li>
        <li><a href="#people" class="people"><i></i>People & Blogs</a></li>
      </ul>
    </nav><!-- end navigation menu -->
So all the content wrapped inside our body is inside another wrapper div with the ID #w. This is how we can fix the page content towards the center and limit the maximum width around 950px. But inside the header tag you’ll notice that many of the features are not displaying on smaller screens. We are using @media queries inside CSS to limit when the search bar and top links will be displayed.
Additionally the sliding nav menu will always appear hidden on smaller screens. Once your browser width passes about 600px then the side navigation is displayed naturally as a left column in the body container. This is the reason why these links should always work properly regardless of the responsive situation.

Common Webpage Styles

I want to jump into discussing a few important blocks of CSS code. To begin we need to understand how the core body is centered and why the two-column layout drops down as you resize the window.
Now these rules are separated into two documents as you saw earlier, so the easiest way to understand this is by downloading my source code directly.
/* page structure */
#w { 
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  max-width: 950px; 
  min-width: 300px; 
  height: 100%;
  margin: 0 auto; 
  overflow: hidden;
  position: relative; 
  display: block; 
  -webkit-box-shadow: 0px 0px 9px rgba(0,0,0,0.65);
  -moz-box-shadow: 0px 0px 9px rgba(0,0,0,0.65);
  box-shadow: 0px 0px 9px rgba(0,0,0,0.65); 
}

#pageWrapper { display: block; width: 100%; }
#page { 
  display: block; 
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  width: 100%;
  min-height: 650px;
  position: relative; 
  top: 0; 
  background: #fff; 
  z-index: 999;  
  padding: 0;
  -webkit-box-shadow: -4px 0px 9px -4px rgba(0,0,0,0.65);
  -moz-box-shadow: -4px 0px 9px -4px rgba(0,0,0,0.65);
  box-shadow: -4px 0px 9px -4px rgba(0,0,0,0.65);
}
#content { display: block; padding: 10px 14px; }

#fulltop { display: none; visibility: hidden; }
#secondary { display: none; visibility: hidden; }
Initially we are hiding the top header section and the secondary sidebar from view. All the HTML is still in our document, but none of this will be displayed until the width has surpassed 600px.
The secondary sidebar is actually hidden until 800px because there simply isn’t enough room in the layout.
/* header */
#topbar { 
  display: block; 
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  height: 60px;
  padding: 0px 6px;
  padding-top: 10px;
  text-align: center;
  border-bottom: 1px solid #677282;
  background-color: #6279a3;
  background-image: -webkit-gradient(linear, left top, left bottom, from(#8da1c2), to(#6279a3));
  background-image: -webkit-linear-gradient(top, #8da1c2, #6279a3);
  background-image: -moz-linear-gradient(top, #8da1c2, #6279a3);
  background-image: -ms-linear-gradient(top, #8da1c2, #6279a3);
  background-image: -o-linear-gradient(top, #8da1c2, #6279a3);
  background-image: linear-gradient(top, #8da1c2, #6279a3);
  -webkit-box-shadow: 0px 1px 0px rgba(255,255,255,0.5) inset;
  -moz-box-shadow: 0px 1px 0px rgba(255,255,255,0.5) inset;
  box-shadow: 0px 1px 0px rgba(255,255,255,0.5) inset;
}

#logo { position: relative; top: -5px; }

#slidelink { 
  display: block; 
  font-size: 0.01em; 
  line-height: 1.8em; 
  width: 50px; 
  height: 35px; 
  position: relative;
  top: 2px;
  left: 10px;
  background: url('../design-responsive-youtube/menu.png') top left no-repeat; 
  float: left; 
  z-index: 999;
}
All the header codes are pertaining to the responsive mobile top navigation toolbar with the blue gradient background. We are creating all of this through CSS3 except for the sliding button, which uses a background image.
For retina devices I have included an @2x copy of the menu icon, along with all of the sidebar icons which are from the Glyphish icon pack.
Read Also: Scalable Vector Graphics tutorials
When using CSS background images we cannot rely on the retina.js script. That will only parse images which are loaded into the page using an HTML5 <img> tag. Instead we need to setup new responsive rules inside the stylesheet named responsive.css.
I’ve copied over my block of code below:
/* retina display devices only */
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5) {
 
 #slidelink { background: url('../design-responsive-youtube/menu@2x.png') top left no-repeat; background-size: 50px 35px; }
 
 #sbtn { background: url('../design-responsive-youtube/search@2x.png'); background-size: 24px 24px; }
 
 #sidenav li a.signin i { background-image: url('../design-responsive-youtube/user@2x.png'); background-size: 24px 21px; } 
 #sidenav li a.register i { background-image: url('../design-responsive-youtube/gear@2x.png'); background-size: 26px 26px; }
 #sidenav li a.popular i { background-image: url('../design-responsive-youtube/star@2x.png'); background-size: 26px 26px; }
 #sidenav li a.recent i { background-image: url('../design-responsive-youtube/coffee@2x.png'); background-size: 24px 26px; }
 #sidenav li a.comedy i { background-image: url('../design-responsive-youtube/mic@2x.png'); background-size: 12px 24px; }
 #sidenav li a.entertainment i { background-image: url('../design-responsive-youtube/tv@2x.png'); background-size: 24px 24px; }
 #sidenav li a.film i { background-image: url('../design-responsive-youtube/film@2x.png'); background-size: 20px 25px; }
 #sidenav li a.gaming i { background-image: url('../design-responsive-youtube/joystick@2x.png'); background-size: 22px 20px; }
 #sidenav li a.people i { background-image: url('../design-responsive-youtube/pencil@2x.png'); background-size: 23px 23px; }
}
The background-size property along with an @2x copy is what performs all the magic here. We need to squeeze an image twice as large into the typical sizing constraints.
This will look a whole lot better on retina devices where your natural images would look blurry and upscaled in comparison.

Important Responsive CSS Blocks

Much of the responsive codes should be straightforward for web developers who are familiar with using the syntax. But I’ll copy over some other sections from my responsive.css document and explain the layout effects.
/* first responsive changes between mobile and desktop layout */
@media only screen and (min-width: 600px) {
  #sidenav { z-index: 999; width: 250px; }
  #page { z-index: 1; padding-left: 250px; }
  
  #topbar { display: none; visibility: hidden; }
  
  #fulltop { display: block; visibility: visible; height: 45px; padding: 8px 14px; border-bottom: 1px solid #d8d8d8; }
  #logomini { display: block; float: left; margin-right: 40px; }
  
  #searchform { display: block; float: left; }
  #s { 
    width: 310px; 
    border: 1px solid #ccc;
    padding: 8px 7px;
    color: #999;
    background: #f7f7f7;
    font-size: 1.45em;
    text-shadow: 0px 1px 0px #fff;
    outline: none;
    -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.5) inset;
    -moz-box-shadow: 0 1px 3px rgba(0,0,0,0.5) inset;
    box-shadow: 0 1px 3px rgba(0,0,0,0.5) inset;
    -webkit-transition: all .4s linear;
    -webkit-border-radius: 3px;
    -moz-border-radius: 3px;
    border-radius: 3px;
    -moz-transition: all .4s linear;
    transition: all .4s linear;
  }
  #s:focus { color: #666; background: #fff; border-color: #b8b8b8; }
  
  #sbtn { cursor: pointer; width: 24px; height: 24px; border: 0; background: none; background-image: url('../design-responsive-youtube/search.png'); position: relative; top: -4px; left: -35px; opacity: 0.7; }
  #sbtn:hover { cursor: pointer; }
Right when your browser viewport hits 600px the whole layout should change immediately. We are no longer using the toggle menu and now wish to display it openly as a left sidebar.
We also need to change the visibility of the older responsive toolbar and display the #fulltop header div instead.
Additionally you may get a kick out of the CSS3 transitions and box shadow effects I’m using on the search field. These effects should perform exactly the same in most browsers including Firefox, Opera, Safari, and even IE9-10.
It’s a nice additional touch giving this YouTube layout some modern aesthetics.
/* as the layout widens display a secondary sidebar and top user links */
@media only screen and (min-width: 810px) {
  #userlogin { display: block; float: right; margin-right: 35px; margin-top: 4px; height: 30px; line-height: 30px; }
  #userlogin .defaultphoto { display: block; float: left; border: 1px solid #ddd; margin-right: 3px; }
  #userlogin a { line-height: 35px; }
  
  #secondary { display: block; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; visibility: visible; width: 240px; padding: 10px 14px; z-index: 999; position: absolute; right: 0; }
  #secondary h2 { font-size: 1.3em; font-weight: bold; font-style: italic; line-height: 1.45em; color: #66666d; margin-bottom: 7px; }
  .videoblock { display: block; visibility: visible; width: 100%; }
  .videoblock a .vidimg { display: block; visibility: visible; }
  
  .videoblock a { display: block; width: 100%; margin-bottom: 7px; padding: 5px 0px; text-decoration: none; border-bottom: 1px solid #fff; }
  .videoblock a:hover { border-bottom: 1px solid #ebebeb; background: #f6f6f6; }
  
  .videoblock a .vidimg img { display: inline-block; visibility: visible; border: 1px solid #cdcdcd; }

  .videoblock a h4 { font-weight: bold; font-size: 1.3em; color: #333; margin-bottom: 1px; }
  .videoblock a:hover h4 { color: #5a7aaa; }

  .videoblock a .uploader { display: block; font-size: 1.1em; color: #666669; }
  .videoblock a .views { display: block; font-size: 1.1em; color: #666669; }
  .videoblock a:hover .uploader, .videoblock a:hover .views { color: #525252; }
  
  #page { padding-right: 240px; }
}
Now this last bit of responsive code takes effect once the browser window is slightly larger than 800px. I have included a secondary sidebar area which supports “featured videos”, among other similar blocks of code.
I haven’t included much dummy content since the focus of this tutorial is on working responsive codes. But this new secondary sidebar is perfect for extra page content which just can’t be fitted into the smaller layouts.
You may also notice these styles add a small set of links into the full top header display. When a user is logged in this is the perfect opportunity to present more impactful profile-related links. These could pertain to user account settings, favorite videos, channel subscriptions, or recent uploads.

Developing JS with jQuery

There are just two core functions I’ve built into the scripts.js asset file: whenever the user taps on our mobile responsive menu, it opens/closes the panel accordingly and if the user opens the menu and then resizes their browser, all the content is pushed over to the right.
In this scenario we need to handle if the menu is open and the browser is resized large enough to hide the menu, then reposition the main content area. I’ll break down each of these code snippets into two segments.
var page = $("#page");

  // show and hide navigation menu
  $("a#slidelink").on("click", function(e){
    e.preventDefault();
    var position = page.position();
    var winwidth = $(window).width();
    
    if(position.left == 0) {
      $(page).animate(
        { left: '+=240px' },
        250,
        'easeOutBack',
        function() {
          // callback
      });
    } else {
      $(page).animate(
        { left: '-=240px' },
        400,
        'easeOutCirc',
        function() {
          // callback 
      });   
    }
  });
The #slidelink refers to our menu button which is displayed in the top mobile toolbar area. Whenever the user clicks on this link then we find the current position of our page content. If the left position returns a value of 0 then we know the menu is still closed, and we need to open it.
If the value is anything except 0 then we can assume the menu is already open and we’re looking to close it.
Both of these effects use the jquery .animate() method which is why we’re including a copy of the jQuery UI library as well. None of the callback functions are active, but it’s easy to add in your own codes.
Inside you can place anything you want to execute immediately after these animations are complete.
// check content position on browser resize
  var resizeTimer;
  $(window).resize(function() {
    clearTimeout(resizeTimer);
    resizeTimer = setTimeout(resetPagePosition, 150);
  });  
  
  
  function resetPagePosition() {
    var position = page.position();
    var winwidth = $(window).width();
    
    if(winwidth >= 600 && position.left != 0) {
      // if the window is above 600px and the menu is open we need to reset back into position
      $(page).animate({left: "0px"}, 110);
    }
  };
The second function will handle repositioning of our page content whenever the menu is open & the browser window gets resized wide enough to hide it. This event handler which is attached to the window object listens for jQuery’s .resize() method. I have set a timer for 150 milliseconds so the function isn’t firing immediately after the resize.
All the interactive code can be found inside my custom function resetPagePosition(). Inside the function I have created another position variable to determine where our page is located.
If the left value is not 0, then we know the menu was open and we have now passed the 600px threshold. It’s a simpler solution for cleaning up this annoying bug, which you will likely run into if you’re using any type of sliding mobile menu techniques.
Secondary Sidebar design - YouTube Responsive tutorial CSS3 media queries

Demo & Download

Feel free to play around with the live demo version and see if you can get a working solution on your desktop, laptop, tablet, or smartphone.

Final Thoughts

I hope this tutorial has demonstrated a few key traits for building responsive websites. The developers at YouTube could be drawing in more attention to the site if it was directly supported on mobile devices. YouTube does have their own mobile subdomain but it’s just not the same experience.
If you have any questions or comments about the tutorial, you can share with us in the post discussion area below.

Attach Cloud Files Into Gmail (On The Fly) With Cloudy

Attach Cloud Files Into Gmail (On The Fly) With Cloudy:
Are you tired of downloading a file from your cloud storage to your hard drive, just so you could attach it in Gmail to send to someone? Wouldn’t it be easier if you could just click ‘Attach File’ and select any file from any cloud storage you own on the Web?
We’ll show you how you can attach files in Gmail straight from cloud storage with a handy Chrome extension called Cloudy.
Cloudy
Cloudy is a Chrome extension which overrides the Gmail default system for attaching files. Instead of getting the usual file selection when you click ‘Attach files’, users will be presented with a Filepicker.io window with a list of cloud storage sources.
Recommended Reading: 18 Helpful Tools For Better Gmail Experience

Integrating Gmail With Cloudy

To start using Cloudy, add it to your Chrome browser. It will ask for your permission to access your data on Gmail.

Log in your Gmail account and compose a new message.
This extension works with both old and new compose. To attach an attachment from cloud storage or other sources, click on the ‘cloud’ icon.

You will see an interface to choose the sources you want to select your attachment from. For this guide, we will be using Dropbox as an example.
Choose Dropbox and click on Connect to Dropbox.

The app will ask for your permission to connect Filepicker.io with your Dropbox account. You will only need to give permission once.

You will be taken back to your Gmail page and you’ll notice that now you can view all your Dropbox files. Choose which file you want to attach and click ‘Upload’.

The program first downloads the file…

… before uploading the file as your attachment.

Once the upload is complete, you can continue composing your email as normal.

To obtain files from the other cloud storage, just repeat the steps above and select the new cloud storage instead of Dropbox.

Room for Improvement

There are a few downsides of Cloudy: it has yet to recognize SkyDrive as a cloud storage, you can’t really attach more than one attachment at one go and it doesn’t work if the default language of your Gmail isn’t in English.
Apart from that, if you need to email files from your cloud storage a lot, Cloudy is a handy tool to have on your browser.

MongoDB For Beginners: Basic Shell Commands (Part 2/3)

MongoDB For Beginners: Basic Shell Commands (Part 2/3):
In the previous MongoDB’s guide for beginner’s, I’ve covered the importance and terminology of MongoDB as well as how to setup Mongo on Windows and Mac. Resuming where we left off, today we’re going to look into some basic and usefull shell commands for MongoDB.
MongoDB Mac OS X Terminal list databases
Recommended Reading: MongoDB For Beginners: Introduction And Installation (Part 1/3)
You can perform almost any action through the Mongo shell. Since this is a beginner’s guide I won’t delve very far down into this rabbit hole. But you better believe there is plenty of documentation on the topic to research further.
Let’s use this small segment to create a collection of TV Shows which we can then reference later using PHP. If you run the command above, you’ll notice there are only two databases installed by default.
> show dbs
We can use the test database and inside create a new collection named “shows” which will hold our TV Show documents. So first I will define a couple of variables inside the shell window.
I’m using three different TV Shows along with their original debut airdate and the television network they ran under.
We need to use the MongoDB .save() command for saving new data and creating new collections.
> a = { title:"Arrested Development", airdate:"November 2, 2003", network:"FOX" }
> b = { title:"Stella", airdate:"June 28, 2005", network:"Comedy Central" } 
> c = { title:"Modern Family", airdate:"September 23, 2009", network:"ABC" }
If you enter each of these lines into the Mongo shell terminal you’ll get a response back with the JSON data formatted. We have just setup 3 variables which can now be passed into the save command for storing each TV Show as a document object in our collection of shows.
If you notice we haven’t actually created any new collection named shows. This is done on-the-fly by MongoDB only after you add some data into a collection. We access and create collections using standard JavaScript dot syntax.
Copy and run the codes below:
> db.shows.save(a)
> db.shows.save(b)
> db.shows.save(c)
This will add each JSON object variable we created into the shows collection. After running the first command on TV Show A we will have a new collection displaying inside our test db. You can verify this by running show collections in the terminal.
But even more interesting, we can check if all the data is saved properly by running the find() query command as below:
> db.shows.find()
In the next article, we’ll take a look into how to setup MongoDB for PHP. Stay tuned!

Top 5 Mobile Apps To Keep Your Kids Safe

Top 5 Mobile Apps To Keep Your Kids Safe:
Every year, thousands of children go missing. A report reveals that a child goes missing in the UK every 3 minutes and the travesty is getting worse. In many parts of the world, losing a child is not something we should be lackadaisical about. In mere seconds, a child could be removed from the watchful eye of parents, in mere hours, removed from the state or the country.

One of the better ways to keep watch over our young ones is with their smartphones. Data plans are getting cheaper and most smartphones nowadays have either GPS capabilities or data connections.
You might be a parent who is not keen on letting your child be exposed to a smartphone at too young an age, but bear with us and read on, these safety (free) apps may possibly change your mind.
Recommended Reading: 10 Parental Control Apps For Mac

1. Sygic Family

Sygic Family keeps your family safe by allowing you to check the real-time location and the battery levels of your family members’ smartphones. You can also track your children’s whereabouts, or have them check-in periodically to let you know where they are and if they have arrived at their destination safely.
Sygic
The app also has an in-built messaging system which lets you send messages for free over an Internet connection. You can also set Safe or Unsafe zones – a notification will be sent to you when they enter or leave these zones. There is also an SOS button available in this app, which lets you send out your exact location at the tap of the button. You never know when you might need it.
Platform: iOS | Android

2. Life360

Life360 has pretty much the same things Sygic has: GPS locations of your family members via their smartphones, a panic button, and alerts when some one enters a preset zone (e.g. gets home). It also lets you check where they have been (location history), where to get help in an emergency (hospitals, police stations), and allows you to have group chats.
Life360
If you don’t have a smartphone, you can still use this with a mobile phone at RM4.99 per month, for up to 5 mobile phones (only in the U.S.). A text message will be sent to them and once they consent to it, their location would be tracked and sent back to you. The app tries its best to not be a monitoring app but more of a communication tool to help bring families closer together and safer too.
Platform: iOS | Android | Blackberry

3. mamaBear

Here is another great app for keeping your children safe; the difference is, it also helps keep your child safe online. MamaBear has a feature to keep watch over your child’s Facebook feed. You will be alerted to any signs of bullying or use of crude language as well as when they check-in or get tagged on their friends’ photos. The team is working on doing the same for Twitter and Instagram profiles.
mamaBear
Offline, you will receive alerts for when they leave a place, when they need to be picked up, when they are driving or riding past a certain speed limit, or when they explicitly need you in an SOS cry for help. This app will give you either peace of mind or great conversation starters on talking about speeding, truancy, open communication channels, and how to stay safe at all times.
Platform: iOS | Android

4. Google Latitude

Google Latitude is less of an app and more of a tracking tool. It allows you to see where your family members are on a map, and easily keep in touch with them. To use it, sign in to Google Latitude and start adding your family members via their Gmail contacts. When they accept, you can see their locations on Google Map on your phone.
Google Latitude
Their locations will be at the background even when the app is closed or when your smartphone is locked. Android users have a widget they can setup. You can also get the app to check you in automatically at a preset place. As this is not restricted to family members you can use it to check just about anyone’s whereabouts, provided they are on Google Latitude.
Platform: iOS | Android

5. MobileKids

This is the odd one out, but some parents may require this level of monitoring for their children. Receive alerts when your kids have been using their mobile phones in the middle of the night, when they add a new unrecognized contact, or when they download a new app. Parents will also get statistics about their children’s mobile usage, which they can use to set usage limits (premium account).
MobileKids
There is still the much sought-after location feature, with a slight twist. The SOS button and Check-In feature is in but more interestingly, the child can request for their parents to track their movement live via GPS tracking, something like remotely ‘walking’ them to their destination.
Platform: iOS | Android

Bonus

Here’s a nifty app that we hope parents never actually need to use, but in the case of a child that has been briefly separated from the parents in crowded or very large places, this may help them locate the child faster.

FBI’s Child ID App

FBI’s Child ID App is designed by the FBI for parents to keep their children’s photos and important data, such as their height, weight, eye and hair color which can be emailed to the authorities at the tap of a button. The app also includes safety checklists and advice for parents to help keep thier children safe.
Platform: iOS | Android
FBI's Child ID App

An Introduction to CSS3 calc() Function

An Introduction to CSS3 calc() Function:
In our previous posts on CSS Pre-processors, we have discussed how we can calculate length with their special functions. To tell the truth, we can also do similar things in CSS3 with the new function named calc(). In this post, we will see how to utilize this function in the stylesheet.

Using calc() function

As mentioned above, we can use calc() to determine lengths like width, height, margin, padding, font-size, etc. To measure, we can use Mathematical expressions: Addition, Subtraction, Division and Multiplication.
For an example, let’s say, we have three <div> within a wrapper, as shown below.
<div class="col one">A</div>
<div class="col two">B</div>
<div class="col three">C</div>
With calc() function, we can easily set these <div> into columns with equal width this way.
.wrapper .col {
 width: calc(100% / 3);
 padding: 0 10px;
}
The following Mathematical operation calc(100% / 3); divides 100% of the parent width by three and here is how it turns out in the browsers. The three <div> are having equal width.

Follow the link below to see it in action.
Additionally, Kurt Maine also shown how calc() function is really useful for creating responsive layout.

A few things to note

There are a few things worth noting when using calc() function.
  • First, the calculation is conducted from left to right.
  • Division or Multiplication will be calculated first and Math expressions inside parentheses will also be calculated first.
  • The calc() is currently not supported in Opera.
  • Prefix, -moz- and -webkit-, is needed to cover earlier Firefox and Chrome versions.
  • We can use different units for the Operation, for example calc(50% – 10px)
  • + and - signs have to be separated with whitespaces, for example calc(100% -5px) will return invalid, as it is only interpreted as percentage followed by negative value. But, whitespaces are not needed for * and / sign.

Final Thought

Prior to CSS3 and CSS Pre-processor, we are limited to fixed type of length. Today, with calc() function we are able to set length in a smarter way and below are a few references to dig into this function further.
Have you tried using this function in your latest website?

Wallpaper Wednesday: Cartoonic Wallpapers

Wallpaper Wednesday: Cartoonic Wallpapers:
We were all kids once. If you agree to that, we assume that you like cartoonish artworks as well. Even some of us who are well into adulthood fall to the allure and the attention-grabbing powers of cartoon-inspired artwork. Their tongue-in-cheek cuteness and sometimes childhood-memory-evoking powers make them the perfect desktop wallpapers to have if you like to start your day with a smile.


(Image Source: XxSarahJxX)
For this week’s Wallpaper Wednesday, we are glad to present to you 17 minimalistic and cute cartoonic wallpapers that would bring out the cheekiness within you and squash your worries (at least for the week).
Read Also: 38 Beautiful Cartoon Wallpapers For Your Desktop
Dexter. Available in 1600×1200 and a different version.
dexter
My Bad. Available in 1920×1200.
my-bad
Vamp Sloorpy. Available in 1280×800.
vamp-sloorpy
Excited Sloorpy. Available in 1280×800.
excited-sloorpy
The Happy Bird Day. Available in 1920×1200.
the-happy-bird-day
Baby Spider. Available in 1920×1080.
baby-spider
Earthworm Jim. Available in 1920×1080.
earthworm-jim
Odd Wallpaper. Available in 1920×1200.
odd-wallpaper
Oh No Smashed Krembo. Available in 3072×1728.
oh-no-smashed-krembo
Killer Whale. Available in 3000×2000.
killer-whale
Happy Hills. Available in the following size: 1280×1024, 1920×1080. Download zip.
happy-hills
Momocheet And Bu. Available in 1600×1200.
momocheet-and-bu
Prison Break. Available in 1600×1200.
prison-break
Cookie Monster. Available in 1920×1200. Download rar.
cookie-monster
Cake Is Awesome. Available in 1600×1200.
cake-is-awesome
Psychonauts. Available in 1920×1080.
psychonauts
Rarw I’m Hungry. Available in 1280×800.
rawr-im-hungry

50 Beautiful Printed Brochure Designs For Your Inspiration

50 Beautiful Printed Brochure Designs For Your Inspiration:
Getting tired of the dull trivial brochures that you get on the streets? When you receive brochures of this kind, what do you do with them? Do you take a quick look and then dump it in the nearest available trash can? That’s not what these brochure makers want.
They want to hook you in, make you read the information inside. But in order to do that, they have to be pretty creative to make you keep reading.
In this post I will be sharing with you 50 incredible printed brochure and booklet brochure designs that will help inspire your creativity. These are great ideas for you to improve on your own unique brochure designs.
Note also the influence of web design in modern print design – the use of headers, a lot of white space, and typography choices.
Recommended Reading: Promoting Yourself Via Print: Ideas, Tips And Examples
Lake Source

Quem Sou Eu? Who Am I?

Nick Cave: HEAVYWEIGHT/ALTERSKINS

Spencer’s Crossing

Brochure

Farmers Market Brochure

Vespa Brochure

Lois Armstrong Cover

Brazil – Brochure

RVC CPD Brochure 2013

Corporate Business Brochure

Foliomania

Minimal Eyes Brochure

Weight Watchers 360 Program

Tourist Guide Brochure

United States Postal Service Re-Branding

Taj Villas

Moomah

Hilton F&B Brochure

Foodland Spring Recipe Book 2012

WildLife Brigade

NTU Art & Design Book 08/09

2012 Haworth Seating Promotions Brochure

SDA Cafe Brochure Out

Konami Gaming KP3 Pop-Up Brochure

Cmattic Brochure

Exclusive Horizontal Brochure

Brochure / Poster

VINGROUP/Brochure

Hot Club Portugal

A Project for the Singapore Central Narcotics Bureau

Design Futures Exhibition Materials

Shoreditch

RW Swiss Style Brochure

PRISM – HELVETIA

Color Splashes & Textures: Concept Design & Photography

We Speak Design 2011

Segnalibri

Grund – Design Trend Collection

Deep Funk Records Brochure

Graphic Floral Shop Brochure Template

Trendy Flower Shop Brochure Template

Retro Barbershop Brochure Template

YPT 2012 Season Brochure

Counseling Brochure Template

Dream of Mind

MCA – A5 Brochure Design

Southern Colour

Underground Cookery School

Pantone Brief