Monday, June 8, 2015

Data Visualization: How To Merge Form & Function And Make Great #Infographics

The Art of Data Visualization explained in an infographic

The following infographic, created by Zhenia Vasiliev, breaks down the basics of data visualization. It shows how beginners can merge form and function, and design meaningful infographics.

Key highlights:


Analyse your data: Analysis is the key. Before we can visualize the data we need to understand it.

Come up with a story: Story is finding a single strand of meaning in an endless sea of information. It has a beginning, middle and end.

Make it visible: Visualization is a creative act of making. Making the data visually elegant evident and engaging.

Entertain to educate: Good data design need to illuminate and inform the viewer, elucidate and illustrate the facts and stats.

by Irfan Ahmad via Digital Information World

Web Design Weekly #189

Headlines

My website is 20 years old today

Jeffrey Zeldman takes us back in time to reflect on how things have changed since 1995. Grab yourself a coffee and enjoy his inspiring words. (zeldman.com)

Web! What is it good for? (adactio.com)

6 email marketing trends to grow your client’s business

We’ll show you some of the best examples from leading brands who are using email to drive business growth. Learn how they’re using the latest trends including responsive email design, triggered and transactional emails plus much more. Sign up for our free webinar – Latest Trends in Email Marketing. (vision6.com.au)

Articles

Predictions on JavaScript in the next 12 months

Jack Franklin makes 8 interesting predictions. You may not agree with all he has to say, but he does have some good points which I’m sure will come into fruition. (javascriptplayground.com)

System fonts. Choose wisely.

A great explanation about which system fonts to choose if that is all you can use. Also a handy chart to make choosing the right font easier. (practicaltypography.com)

Why We Should Stop Using Bower – And How to Do It

If you use Bower or are thinking about integrating it into your project this post by Jaakko Salonen is worth the time. (gofore.com)

Fitting After Effects Into Your Workflow

As web design evolves so should our tools. Generally speaking we can get away with using tools like Photoshop or Sketch and a text editor and the inbuilt browser tools. But are these tools ideal for transitions and animations? In this post Matt Reamer explores Adobe After Effects as an option. (smashingmagazine.com)

Tools / Resources

Zoommy

This handy mac app helps you find awesome free stock photos for your creative product in one place. (zoommyapp.com)

Modern Design Tools – Adaptive Layouts

Josh Puckett believes we are still in the infancy of design tools and in this post shares several ideas for how they can mature and evolve to better enable us to create digital experiences. (medium.com)

Jake Archibald on Performance & Service Worker

Jake Archibald introduces how making simple changes to Service Worker can vastly improve the startup and load performance of your website. (youtube.com)

Angular 1.4.0 has arrived! (angularjs.blogspot.com)

Caniuse command line tool (github.com)

Material Design Icon Font (google.github.io)

Inspiration

Image Tilt Effect (tympanus.net)

Uber Brand Guidelines (uber.com)

Jobs

Senior Front End Developer – News Corp Australia

As we migrate to an Enterprise WordPress environment, you will be responsible for building high-performance, maintainable web interfaces using the latest web technologies that will serve millions of our customers each and every day. (linkedin.com)

Marketing Web Designer at GitHub

As a marketing-focused front-end designer, you create visuals that delight and inform. You’re the kind of person that wants to learn how a system works in order to improve it, rather than throw it all out and start over. Most of all, you want to create experiences that people love. (github.com)

Need to find passionate developers? Why not advertise in the next newsletter!

Last but not least…

Making Material Design

A behind-the-scenes look at building Google’s visual framework. (google.com)

Your Org Is a Product (capwatkins.com)

The post Web Design Weekly #189 appeared first on Web Design Weekly.


by Jake Bresnehan via Web Design Weekly

Review: Interaction Design by Designlab

This is a review of the online course Interaction Design by Designlab.

This is part of our series of reviews of online UX courses.  Read some of our other reviews or see our full list of online UX courses.

Course Information

  • Course Name: Interaction Design
  • Creator: Designlab
  • Length: 10 hours per week for 4 weeks (plus 4 Skype sessions with a mentor)
  • Intended Audience: Anyone looking to develop better communication of and confidence in their interaction design work, as well as people looking to develop their ability to understand and work with product designers.
  • What You’ll Learn: A strong foundation in interface and interaction design. During the course students develop a portfolio of work that demonstrates an understanding of core principles — like information architecture, interaction states, system feedback and consistency. Project work includes the creation of user flow diagrams, wireframes and sitemaps.
  • Assumed Knowledge: Some basic knowledge of UX principals would be useful, but the course is intuitive enough for an absolute beginner to benefit from it. A basic knowledge of Photoshop (or similar) is useful to complete some of the assignments.
  • Price: US $299 for the 4-week course

Review

This course is not like any UX course that I have taken to date – and I have taken a few. The first and most obvious difference was the fact that this isn’t quite as much of a ‘take on demand’ course as the ones that I have experienced previously. Designlab courses have a fixed start date, an end date, and a number of assignments and mentor sessions booked in along the way. In short, you have to make sure you take it at a time when you can block out the required ~10 hours per week. I was a bit blasé about that side of things and ended up feeling like a naughty school kid that was getting behind with my homework!

Time commitment aside, this course really kicks ass. My first impression of the interface was excellent. It is slick, attractive and intuitive. I came across a few annoying bugs further down the line, but as far as first impressions go, DesignLab get 10/10.

Google+

The post Review: Interaction Design by Designlab appeared first on UX Mastery .


by Sarah Hawk via UX Mastery 

A Short and Sweet List of the Best Freelancer Hacks

The amount of hats a freelancer has to wear is enough to open up a hat shop. Nay, a hat franchise. A freelance web developer is also a receptionist and a marketer. A freelance writer is also an office manager and a salesman. These roles are not in the job description, but you'll soon find […]

Continue reading %A Short and Sweet List of the Best Freelancer Hacks%


by Joshua Kraus via SitePoint

Higher-Order Functions in JavaScript

One of the characteristics of JavaScript that makes it well-suited for functional programming is the fact that it can accept higher-order functions. A higher-order function is a function that can take another function as an argument, or that returns a function as a result.

First Class Functions

You may have heard it said that JavaScript treats functions as first-class citizens. What this means is that functions in JavaScript are treated as objects. They have the type Object, they can be assigned as the value of a variable, and they can be passed and returned just like any other reference variable.

This native ability gives JavaScript special powers when it comes to functional programming. Because functions are objects, the language supports a very natural approach to functional programming. In fact, it’s so natural, that I’ll bet you’ve been using it without even thinking about it.

Taking Functions as Arguments

If you’ve done much web-based JavaScript programming or front-end development, you’ve probably come across functions that use a callback. A callback is a function that gets executed at the end of an operation, once all of the other operations of been completed. Usually this callback function is passed in as the last argument in the function. Frequently, it’s defined inline as an anonymous function.

Since JavaScript is single-threaded, meaning that only one operation happens at a time, each operation that’s going to happen is queued along this single thread. The strategy of passing in a function to be executed after the rest of the parent function’s operations are complete is one of the basic characteristics of languages that support higher-order functions. It allows for asynchronous behavior, so a script can continue executing while waiting for a result. The ability to pass a callback function is critical when dealing with resources that may return a result after an undetermined period of time.

This is very useful in a web programming environment, where a script may send an Ajax request off to a server, and then need to handle the response whenever it arrives, with no knowledge in advance of network latency or processing time on the server. Node.js frequently uses callbacks to make the most efficient use of server resources. This approach is also useful in the case of an app that waits for user input before performing a function.

For example, consider this snippet of simple JavaScript that adds an event listener to a button.

[code language="js"] document.getElementById("clicker").addEventListener("click", function() { alert("you triggered " + this.id); }); [/code]

This script uses an anonymous inline function to display an alert. But it could just as easily have used a separately defined function, and passed that named function to the addEventListener method

[code language="js"] var proveIt = function() { alert("you triggered " + this.id); }; document.getElementById("clicker").addEventListener("click", proveIt); [/code]

Note that we passed proveIt and not proveIt() to our addEventListener function. When you pass a function by name without parentheses, you are passing the function object itself. When you pass it with parentheses, you are passing the result of executing that function.

Continue reading %Higher-Order Functions in JavaScript%


by M. David Green via SitePoint

Bluetooth Beacon Enabled Apps with BlueCats and PhoneGap

BLE beacons are the sort of technology that makes me excited to be a developer today. Not only are there so many possibilities, it is available for any developer to start developing for right now. Not a pre-order, not a still-in-development product, not a Kickstarter... Bluetooth beacons are already out there being used! In this article, we'll explore how you can get started with BLE Beacons pairing the BlueCats beacon Cloud Platform and API with PhoneGap.

What are BLE Beacons?

BLE stands for Bluetooth Low Energy and refers to the Bluetooth wireless network technology that has been designed to work with a much lower power consumption and much lower cost. These two factors alone have made it perfect for a range of new connected devices, including wearables, smart home automation and of most interest to us in this article - beacons.

Beacons are Bluetooth devices that can be placed almost anywhere to provide tracking of a user's location in that space. They can be throughout a building, on a billboard, inside a vehicle... almost anywhere that could benefit from knowing where your users are. Examples of the potential use in a smartphone app include:

  • A museum tour mobile app that can tell where each user is within the museum and provide them relevant content.
  • Interactive billboards that change or move around when users with an app are nearby!
  • A smart phone automation system that knows which room you are in and runs certain things accordingly.

How do BlueCats Beacons fit in?

BlueCats beacons are BLE Beacons that come with an easily accessible API (available on Android, iOS and PhoneGap) and a cloud platform to manage them. A few weeks ago, I had the pleasure of meeting a few of the guys working on BlueCats beacons and the conversation with them had me itching to try it out! I honestly couldn't believe how ready the technology was to be implemented.

The Demo

I gave the BlueCats beacons a go, putting together a simple PhoneGap prototype that used their API to inject some location based functionality. I built a prototype countdown timer designed to remind computer addicted souls such as myself to get up every 30 minutes from the computer and move around.

Unlike regular countdown timers, this one uses the power of BlueCats beacons to know whether you've actually gotten up and moved to another room. Once the timer goes off, the user must get up and walk to another room with a specific beacon in order to reset the timer. As an added bonus, once they return to their computer a USB beacon recognises that they've returned and automatically restarts the timer for them.

Preparing Our PhoneGap App

To get started, lets prepare our demo PhoneGap app using the usual PhoneGap commands. If you don't already have PhoneGap, install it via this npm command:

[code language="js"] sudo npm install -g phonegap [/code]

Then we'll create our baseline app for this demo. I've called it "BreakEnforcer" but you can call it whatever you desire. When we run the below command, PhoneGap will set up all our basics.

[code language="js"] phonegap create BreakEnforcer [/code]

Prepare Our BlueCats App

If you're new to BlueCats and are looking for a good way to get started, this demo uses BlueCats beacons from the BlueCats StarterPack.

To get started with the BlueCats platform, you'll have to set up a BlueCats account. You can register the StarterPack at the BlueCats StarterPack Setup page.

Once your account is set up, go to the BlueCats Dashboard and log in.

From here, you'll see a dashboard that looks a bit like this:

BlueCats Dashboard

Click the "Apps" link on the left hand side to go to the Apps dashboard and then click "Create New App".

Here, we can enter in our app's details. I named my app "Break Enforcer".

Choose the platform you'll be testing your app on. I chose Android as that's what I'll be testing everything on. However, because we are using Phonegap it should be simple enough to recreate the app for the others later on with ease. Then click "Create App".

BlueCats App Creation Form

Adding Our BlueCats App Into PhoneGap

BlueCats have a PhoneGap plugin we'll be using to bring in all our BlueCats beacon functionality. To include it in our PhoneGap application, run the following command within the BreakEnforcer directory (or whatever you called your app):

[code language="js"] phonegap plugin add http://ift.tt/1MCd2uv [/code]

If you go to the plugins folder of your PhoneGap app, you'll find a com.bluecats.beacons folder with our BlueCats functionality.

Our Code

All code for this demo is available on GitHub for you to view and adapt to your own beacon creations! I'll explain the main areas of the code and how they work.

Note: all of our code here is enclosed neatly within the app namespace, so when calling functions and such, you'll need to keep this in mind.

All of our code begins with an initialize() function. It runs two functions, bindEvents() and initCountdownTimer(). bindEvents() sets in motion our beacon functionality, whilst initCountdownTimer() focuses on our timer functions.

[code language="js"] initialize: function() { this.bindEvents(); this.initCountdownTimer(); }, [/code]

I've kept these relatively separate, so if you're using this as a baseline for a totally different app it shouldn't be too hard to swap out the timer bits for your own.

Our Beacon Functions

For the beacon functionality, we'll be using a very similar structure to the sample plugins/com.bluecats.beacons/Samples/HelloBeacons/index.js file you'll find in your BlueCats plugin folder. Their set up is quite clean and I thought it best to remain consistent! Our example is a little bit more streamlined as we won't be using all of the features in the sample app. We will be focused on keeping track of when we reach beacons. It is also possible to track when we move away from them or determine which beacon is closest to us - our app won't be worrying about these.

Back to the code! Within bindEvents(), we set up our event listener that listens for when our phone/tablet device is ready. We track this via the deviceready event.

[code language="js"] document.addEventListener('deviceready', this.onDeviceReady, false); [/code]

On deviceready, we run two beacon related functions. We'll explore each below.

[code language="js"] onDeviceReady: function() { app.receivedEvent('received'); app.watchBeacons(); }, [/code]

The receivedEvent() function is one that responds to three different beacon related events. It looks like so:

[code language="js"] receivedEvent: function(event) { var parentElement = document.getElementById('deviceready'), listeningElement = parentElement.querySelector('.listening'), receivedElement = parentElement.querySelector('.received'); listeningElement.setAttribute('style', 'display:none;'); receivedElement.setAttribute('style', 'display:block;'); if (event == 'apptokenrequired') { receivedElement.innerHTML = 'App token not set' } else if (event == 'bluecatspurring') { // We are on the look out for beacons receivedElement.setAttribute('style', 'display:none;'); }; console.log('Received Event: ' + event); }, [/code]

Initially, it picks up our two message elements, .listening and .received. Then it hides the .listening element and our three event types come into play:

  • 'received' - Whilst our receivedEvent() code doesn't directly refer to this event string, when we send it through initially it makes our .received element in our app visible. This is the element which says "Device is ready" by default.
  • 'apptokenrequired' - This switches our .received element to say "App token not set".
  • 'bluecatspurring' - This is passed in when our app is readily looking for beacons. When it does this, we clear the message so our beacon watching is done subtly.

Continue reading %Bluetooth Beacon Enabled Apps with BlueCats and PhoneGap%


by Patrick Catanzariti via SitePoint

How to Use Kotlin in Your Android Projects