Thursday, January 19, 2017

How to Use Snapchat for Customer Support

Do you want to expand your customer service channels? Wondering how Snapchat can help you respond in real time? Snapchat’s text, video, and phone chat features allow you to support customers in the format they prefer. In this article, you’ll discover how to use Snapchat features to provide helpful and engaging customer support. Why Use [...]

This post How to Use Snapchat for Customer Support first appeared on .
- Your Guide to the Social Media Jungle


by Eric Sachs via

The 21st Century Gold Rush

A Huffington Post Highline story: How the refugee crisis is changing the world economy.
by via Awwwards - Sites of the day

Wednesday, January 18, 2017

8 Killer Brand Awareness Strategies

To have a brand isn't enough, you need to have customers to buy your brand. For this to happen, it's important to make people aware of your brand so that people always associate your brand with a particular need. However, it isn't easy to get fresh customers. What you need to do is...

[ This is a content summary only. Visit our website http://ift.tt/1b4YgHQ for full links, other content, and more! ]

by Web Desk via Digital Information World

What’s the Best Programming Language to Learn in 2017?

Choosing a programming language in 2017

Many of you will reflect on your skill set and career choices as we embark on the new year. There are numerous sources of “best language” statistics, so that's where we'll begin …

Stack Overflow Developer Survey

More than 56,000 developers in 173 countries completed the Stack Overflow Developer Survey during 2016. Here are the most-used technologies:

  1. JavaScript — 55.4%
  2. SQL — 49.1%
  3. Java — 36.3%
  4. C# — 30.9%
  5. PHP — 25.9%
  6. Python — 24.9%
  7. C++ — 19.4%
  8. AngularJS — 17.9% (JavaScript framework)
  9. Node.js — 17.2% (server-side JavaScript)
  10. C — 15.5%

The survey also asked what developers loved most:

  1. Rust — 79.1%
  2. Swift — 72.1%
  3. F# — 70.7%
  4. Scala — 69.4%
  5. Go — 68.7%
  6. Clojure — 66.7%
  7. React — 66.0%
  8. Haskell — 64.7%
  9. Python — 62.5%
  10. C# — 62.0%

and what developers most dreaded:

  1. Visual Basic — 79.5%
  2. WordPress — 74.3%
  3. Matlab — 72.8%
  4. Sharepoint — 72.1%
  5. CoffeeScript — 71.0%
  6. LAMP — 68.7% (Linux, Apache, MySQL, PHP)
  7. Cordova — 66.9%
  8. Salesforce — 65.4%
  9. Perl — 61.3%
  10. SQL — 60.3%

Perhaps more useful are the technologies developers are interested in learning:

  1. Android — 15.8%
  2. Node.js — 14.8%
  3. AngularJS — 13.4%
  4. Python — 13.3%
  5. JavaScript — 11.9%
  6. React — 9.2%
  7. Swift — 8.7%
  8. MongoDB — 8.1%
  9. Arduino / Raspberry Pi — 8.0%
  10. C++ — 8.0%

Stack Overflow Top Tech

Stack Overflow also collated statistics for questions, answers and votes:

  1. JavaScript — 16.6%
  2. Java — 14.7%
  3. Android — 11.5%
  4. Python — 11.4%
  5. C# — 11.1%
  6. PHP — 8.6%
  7. jQuery — 6.7%
  8. C++ — 6.6%
  9. HTML — 6.6%
  10. iOS — 6.3%

PYPL Popularity

The PYPL Popularity of Programming Languages Index uses data from Google Trends to determine how often language tutorials are searched online:

  1. Java — 23.1%
  2. Python — 14.4%
  3. PHP — 9.7%
  4. C# — 8.4%
  5. JavaScript — 7.7%
  6. C — 7.1%
  7. C++ — 7.0%
  8. Objective—C — 4.4%
  9. R — 3.4%
  10. Swift — 3.0%

TIOBE Index, January 2017

The TIOBE Programming Community Index rates languages using search engine results to provide a ranking percentage:

  1. Java — 17.3%
  2. C — 9.3%
  3. C++ — 6.3%
  4. C# — 4.0%
  5. Python — 3.5%
  6. VisualBasic.NET — 3.0%
  7. JavaScript — 2.9%
  8. Perl — 2.7%
  9. Assembly Language — 2.7%
  10. PHP — 2.6%

The biggest riser during 2016 was Go, which leapt from nowhere to 2.3% (#13). Java fell 4.19%, but it remains almost double C's score.

What Do Surveys Tell Us?

Surprisingly little. Results are interesting but often contradictory, and data collection methods are limited:

  • Search engine results can favor older, more problematic or more widespread languages. Few would expect VisualBasic to appear above JavaScript.
  • Online surveys are limited to a specific audience. Stack Overflow is populated by reasonably knowledgeable developers who have encountered problems in popular languages and frameworks.
  • Historical usage patterns do not necessarily indicate future trends. Node.js did not exist a decade ago. In the mid-1990s, Perl or C were the most viable options for server-side development.

For example, all surveys rank Java higher than PHP. Java is often adopted for education and used to develop command line, desktop and native Android applications. Yet WordPress powers 27.3% of the web and is written in PHP. PHP is used on 82.4% of web servers compared to just 2.7% for Java.

PHP was developed for the web and has a more widespread adoption on the platform. There's nothing wrong with Java but, if you want a web development career, PHP could serve better. Probably. Depending on where you live and work. And the industry you work in. And what you do.

Surveys are flawed, so perhaps we can seek …

Continue reading %What’s the Best Programming Language to Learn in 2017?%


by Craig Buckler via SitePoint

8 PayPal Alternatives for Your Online Business

This article was updated on the 18th of January, 2017, to ensure it reflects the best and most current PayPal alternatives.

When it comes to getting paid for your goods and services, one name dominates the field — PayPal. But PayPal isn’t the only game in town — there are lots of payment providers in the online space. We’ll explore how they can give you more choice, enhance your cashflow, and put money in your pocket.

But PayPal is Great, Why Do I Need an Alternative?

PayPal is dominant for a reason — it has been around the longest, it’s spent millions enhancing its brand, and it provides all the standard functions you’d expect. However, that doesn’t always make it the best choice. Here’s why:

  • Not all clients can make PayPal payments. Some of your clients simply can’t, or won’t, use PayPal. They might not be in an area that PayPal accepts payments from, or their accounting systems don’t support PayPal. Perhaps they’ve had a bad experience with the platform, or want an easier way to pay.
  • You don’t want all your (online payment) eggs in one basket. PayPal is notorious for blocking accounts. That means you can’t receive payments or access your funds until they decide to unblock you. The lack of cashflow could leave you vulnerable, so alternative payment options are essential.
  • PayPal is best for smaller amounts. The fees you pay for PayPal can really add up, especially on larger transactions. Other payment providers may charge lower fees, so you keep costs down (and that means greater profits).
  • PayPal’s international fees are really (really) high. If you dig into PayPal’s fees, you’ll see they charge a big premium for accepting international payments. Combine this with less than ideal exchange rates, and you’ll pay a hefty overhead for any international business.

Ultimately it comes down to protecting your cash flow, reducing your costs, and not leaving money on the table. So, what are the best alternatives to PayPal? Glad you asked.

Stripe

Stripe

One of PayPal’s biggest competitors, Stripe offers a simple, easy user interface, full payment integration, and fast transfers into your bank account.

Advantages of Stripe

  • Ease of use. Simple and easy to use and setup.
  • Bank account transfer. Very fast transfer into your bank account (within two days of getting payment).
  • Complete integrations. Full payment integration with most third-party services, works with over 300 other apps.
  • Multiple payment options for customers. Accepts payment via multiple debit and credit cards, Bitcoin, Apple Pay and Android Pay.
  • International customers. No additional international payment fees.
  • Customization. Full support for custom development and integration.

Stripe Fees

In the US, Stripe charges a flat fee of 2.9% of every transaction, plus an additional 30c per transaction. There are no other fees for processing transactions.

Transferwise

Transferwise

Transferwise is a little different to the other services listed here, as their focus is entirely on international payments. They’re a great choice if you have lots of international customers and want to keep fees down.

Advantages of Transferwise

  • Lets you accept payments from clients, anywhere in the world.
  • Receive payment into your bank account within 2 - 3 days of being paid.
  • Simple, fast, and easy to use.
  • All transfers are based on real-time exchange rates.

Transferwise Fees

  • Transferwise fees are very low, and are typically less than half of what you would pay to transfer money via your bank.
  • Transferwise provides much better exchange rates than most other international payment providers, especially PayPal.

Google Wallet

Google Wallet

As the biggest tech player in the online space, Google naturally has its own payment solution. Google Wallet is a simple, elegant, and free way to accept payments.

Advantages of Google Wallet

  • Receive money from anyone. They don’t need to have the Wallet app installed, just an email address or phone number.
  • Automatic transfer to your bank account. Google Wallet automatically transfers your received payments into your bank.
  • Payment through the web or a mobile app. Customers can pay through Google wallet’s website, or through a mobile app on their smartphone.

Google Wallet Fees

Google Wallet does not charge any fees.

Note that you can’t use Google Wallet if you’re a registered company (e.g. a Limited or LLC entity) but you can use it if you’re a sole proprietor.

Shopify Payments

Shopify Payments

If you’re an online retailer or run an eCommerce site, Shopify’s integrated payment system can be a great way to get payments from customers. Shopify Payments comes as part of the overall Shopify eCommerce service.

Continue reading %8 PayPal Alternatives for Your Online Business%


by Paul Maplesden via SitePoint

An Introduction to Gulp.js

Developers spend precious little time coding. Even if we ignore irritating meetings, much of the job involves basic tasks which can sap your working day:

  • generating HTML from templates and content files
  • compressing new and modified images
  • compiling Sass to CSS code
  • removing console and debugger statements from scripts
  • transpiling ES6 to cross-browser-compatible ES5 code
  • code linting and validation
  • concatenating and minifying CSS and JavaScript files
  • deploying files to development, staging and production servers

Tasks must be repeated every time you make a change. You may start with good intentions but the most infallible developer will forget to compress an image or two. Over time, pre-production tasks become increasingly arduous and time-consuming; you'll dread the inevitable content and template changes. It's mind-numbing, repetitive work. Would it be better to spend your time on more profitable jobs?

If so, you need a task runner or build process.

That Sounds Scarily Complicated!

Creating a build process will take time. It's more complex than performing each task manually but, over the long-term, you will save hours of effort, reduce human error and save your sanity. Adopt a pragmatic approach:

  • automate the most frustrating tasks first
  • try not to over-complicate your build process; an hour or two is more than enough for the initial set-up
  • choose task runner software and stick with it for a while. Don't switch to another option on a whim.

Some of the tools and concepts may be new to you but take a deep breath and concentrate on one thing at a time.

Task Runners: the Options

Build tools such as GNU Make have been available for decades but web-specific task runners are a relatively new phenomenon. The first to achieve critical mass was Grunt - a Node.js task runner which used plug-ins controlled (originally) by a JSON configuration file. Grunt was hugely successful but there were a number of issues:

  1. Grunt required plug-ins for basic functionality such as file watching.
  2. Grunt plug-ins often performed multiple tasks which made customisation more awkward.
  3. JSON configuration could become unwieldy for all but the most basic tasks.
  4. Tasks could run slowly because Grunt saved files between every processing step.

Many issues were addressed in later editions but Gulp had already arrived and offered a number of improvements:

  1. Features such as file watching were built-in.
  2. Gulp plug-ins were (mostly) designed to do a single job.
  3. Gulp used JavaScript configuration code which was less verbose, easier to read, simpler to modify, and provided better flexibility.
  4. Gulp was faster because it uses Node.js streams to pass data through a series of piped plug-ins. Files were only written at the end of the task.

Of course, Gulp itself isn't perfect and new task runners such as Broccoli.js, Brunch and webpack have also been competing for developer attention. More recently, npm itself has been touted as a simpler option. All have their pros and cons, but Gulp remains the favorite and is currently used by more than 40% of web developers.

Gulp requires Node.js but, while some JavaScript knowledge is beneficial, developers from all web programming faiths will find it useful.

What About Gulp 4?

This tutorial describes how to use Gulp 3 - the most recent release version at the time of writing. Gulp 4 has been in development for some time but remains a beta product. It's possible to use or switch to Gulp 4 but I recommend sticking with version 3 until the final release.

Step 1: Install Node.js

Node.js can be downloaded for Windows, Mac and Linux from nodejs.org/download/. There are various options for installing from binaries, package managers and docker images - full instructions are available.

Note for Windows users: Node.js and Gulp run on Windows but some plug-ins may not install or run if they depend on native Linux binaries such as image compression libraries. One option for Windows 10 users is the new bash command-line; this solves many issues but is a beta product and could introduce alternative problems.

Once installed, open a command prompt and enter:

node -v

to reveal the version number. You're about to make heavy use of npm - the Node.js package manager which is used to install modules. Examine its version number:

npm -v

Note for Linux users: Node.js modules can be installed globally so they are available throughout your system. However, most users will not have permission to write to the global directories unless npm commands are prefixed with sudo. There are a number of options to fix npm permissions and tools such as nvm can help but I often change the default directory, e.g. on Ubuntu/Debian-based platforms:

cd ~
mkdir .node_modules_global
npm config set prefix=$HOME/.node_modules_global
npm install npm -g

Then add the following line to the end of ~/.bashrc:

export PATH="$HOME/.node_modules_global/bin:$PATH"

and update with:

source ~/.bashrc

Step 2: Install Gulp Globally

Install Gulp command-line interface globally so the gulp command can be run from any project folder:

npm install gulp-cli -g

Verify Gulp has installed with:

gulp -v

Step 3: Configure Your Project

Note for Node.js projects: you can skip this step if you already have a package.json configuration file.

Presume you have a new or pre-existing project in the folder project1. Navigate to this folder and initialize it with npm:

cd project1
npm init

You will be asked a series of questions - enter a value or hit Return to accept defaults. A package.json file will be created on completion which stores your npm configuration settings.

Note for Git users: Node.js installs modules to a node_modules folder. You should add this to your .gitignore file to ensure they are not committed to your repository. When deploying the project to another PC, you can run npm install to restore them.

For the remainder of this article we'll presume your project folder contains the following sub-folders:

src folder: pre-processed source files

This contains further sub-folders:

  • html - HTML source files and templates
  • images — the original uncompressed images
  • js — multiple pre-processed script files
  • scss — multiple pre-processed Sass .scss files

build folder: compiled/processed files

Gulp will create files and create sub-folders as necessary:

  • html - compiled static HTML files
  • images — compressed images
  • js — a single concatenated and minified JavaScript file
  • css — a single compiled and minified CSS file

Your project will almost certainly be different but this structure is used for the examples below.

Tip: If you're on a Unix-based system and you just want to follow along with the tutorial, you can recreate the folder structure with the following command:

mkdir -p src/{html,images,js,scss} build/{html,images,js,css}

Step 4: Install Gulp Locally

You can now install Gulp in your project folder using the command:

npm install gulp --save-dev

This installs Gulp as a development dependency and the "devDependencies" section of package.json is updated accordingly. We will presume Gulp and all plug-ins are development dependencies for the remainder of this tutorial.

Alternative Deployment Options

Development dependencies are not installed when the NODE_ENV environment variable is set to production on your operating system. You would normally do this on your live server with the Mac/Linux command:

export NODE_ENV=production

Or on Windows:

set NODE_ENV=production

This tutorial presumes your assets will be compiled to the build folder and committed to your Git repository or uploaded directly to the server. However, it may be preferable to build assets on the live server if you want to change the way they are created, e.g. HTML, CSS and JavaScript files are minified on production but not development environments. In that case, use the --save option for Gulp and all plug-ins, i.e.

npm install gulp --save

This sets Gulp as an application dependency in the "dependencies" section of package.json. It will be installed when you enter npm install and can be run wherever the project is deployed. You can remove the build folder from your repository since the files can be created on any platform when required.

Step 4: Create a Gulp Configuration File

Create a new gulpfile.js configuration file in the root of your project folder. Add some basic code to get started:

// Gulp.js configuration
var
  // modules
  gulp = require('gulp'),

  // development mode?
  devBuild = (process.env.NODE_ENV !== 'production'),

  // folders
  folder = {
    src: 'src/',
    build: 'build/'
  }
;

This references the Gulp module, sets a devBuild variable to true when running in development (or non-production mode) and defines the source and build folder locations.

ES6 note: ES5-compatible JavaScript code is provided in this tutorial. This will work for all versions of Gulp and Node.js with or without the --harmony flag. Most ES6 features are supported in Node 6 and above so feel free to use arrow functions, let, const, etc. if you're using a recent version.

gulpfile.js won't do anything yet because you need to...

Step 5: Create Gulp Tasks

On it's own, Gulp does nothing. You must:

Continue reading %An Introduction to Gulp.js%


by Craig Buckler via SitePoint

Writing Element Queries Today Using EQCSS

A man looking at his phone and computer screen with different inkblots on them.

This article was peer reviewed by Adrian Sandu, Giulio Mainardi and Tom Hodgins. Thanks to all of SitePoint's peer reviewers for making SitePoint content the best it can be!

We are all familiar with using media queries in CSS to change the appearance of an element based on screen width. Element queries are similar to media queries, however, now the responsive conditions apply to individual elements on a web page instead of the viewport. For example, you can now apply different style rules to an element based on its own width, the number of characters that it contains or how much the user has scrolled.

Why Do We Need Element Queries?

As I mentioned in the introduction, element queries can help you style elements based on a number of properties instead of just the width and height of the viewport. Other than that, there are a few other situations where the library can prove to be of great use.

Let's say you have just created a beautiful responsive layout where all the elements fit together perfectly. Now, you are asked to add another column to the web page alongside existing ones. This will reduce the space available for all columns.

Your images and text which had perfect proportions for an 800px wide column on 1366px wide viewport may not look so good inside a 600px wide column on the same viewport. In such cases, the viewport width has not changed at all but individual columns are narrower because they had to make space for the sidebar. Using element queries instead of media queries in situations like this one can save you a lot of time because you won't have to rewrite the CSS every time there is a change in the layout.

In the following demo, if we have a smaller viewport (narrower than 500px), we set the image width to 100% and move it all into a single column. However, on a larger viewport, if you click on the "Add Sidebar" button, the width of our main column reduces significantly without any change in viewport width. Therefore, the image looks too small because the viewport width has not changed.

See the Pen Adding More Columns to a Layout by SitePoint (@SitePoint) on CodePen.

Now, let's assume you are creating a widget or plugin and you are using media queries to make it responsive. The problem here is that the widget can be inside a container whose width is equal to the viewport or a container whose width is just one-fourth of the viewport. If the width of the widget depends on the width of its container, relying on the size of the viewport to style it properly won't work. Element queries can now come to the rescue! Element queries can work well here because they use the widget's own width to style it.

In the image below, the same widget has been placed twice on a web page. You can see that the viewport width is the same but the width of these two widgets is different. Since the style rules are being applied based on the width of widget, both of them fit perfectly in the layout.

Two items displaying differently in the same viewport

Continue reading %Writing Element Queries Today Using EQCSS%


by Baljeet Rathi via SitePoint