Front-End Challenge Accepted: CSS 3D Cube


Do you like challenges? Are you willing to take on a task that you’ve never come across before, and do it under a deadline? What if, in carrying out the task, you encounter a problem that appears unsolvable? I want to share my experience of using CSS 3D effects for the first time in a real project and to inspire you to take on challenges.

Front-End Challenge Accepted: CSS 3D Cube

It was an ordinary day when Eugene, a manager at CreativePeople, wrote to me. He sent me a video and explained that he was developing a concept for a new project and was wondering if it was possible for me to develop something like what was in the video.

The post Front-End Challenge Accepted: CSS 3D Cube appeared first on Smashing Magazine.

Source: Smashing Magazine

Why You Should Make the Worst Parts of Web Development Even Worse

A dilapidated room

Being a developer can be a nightmare…

… if you’re in the wrong environment. For many developers, it’s a constant source of stress, frustration and anxiety. As a web developer, you love writing code.


The other headaches? They’re things you can do without.

If you’re experienced, you’ve dealt with the same headaches over and over. At times it feels as if someone’s playing a cruel joke on you or that everyone you work with is crazy. And the worst part?

These headaches aren’t going away.

When they’re ignored, these mistakes typically leave developers feeling miserable, jaded and downright unhappy.

That doesn’t have to be you.

Savvy Developers Use These Headaches to Their Advantage

They turn these everyday disasters into opportunities they can use. Average developers complain about these headaches, hoping to avoid the inevitable. All-stars use these everyday disasters to make themselves and others better.

What’s their secret?

It’s a simple secret most aren’t willing to accept. It sounds obvious to most people when they hear it, when in reality, it’s anything but. Here’s the secret.

Do what others won’t.

That’s it.

Do this, and your value as a developer skyrockets. Master it, and you become irreplaceable.

Experience is Great, Vaccination is Priceless

For many developers, these headaches are crippling. Most developers hate dealing with these problems. At a certain point they begin to feel trapped. They’ve got a full blown case of learned helplessness. On an emotional level, they’re afraid they’ll be blamed if something goes wrong. And to a certain extent they’re right.

But avoiding the problem isn’t the answer.

Facing the problem gives you freedom and control. When you face the problem the despair, anger and fear loses its sting. As great as experience is, it can’t hold a candle to vaccination.

Dominate these problems and you vaccinate yourself, emotionally and psychologically, against them.

Which problems are we talking about?

Headache #1: Fixing Someone Else’s Broken Code

You’ve just been hired at a new job. Your first to-do item? Fixing a poorly made application the previous developer left behind. Which either has no documentation (he didn’t believe in that) or too much documentation.

But the complications don’t end there.

Developers, like writers, are unique. They all have their own style, their own way of doing things. The code you happen to be working with is long, complicated and filled with bugs. Tossing the whole thing out and starting over would be best.

Only you can’t.

Because this code is live and in use.

Make it worse:

So you put a stop gap in place. You make the temporary fix you need to keep things going. But you don’t stop there.

You take the time to map things out. What does the undocumented code do? Which libraries are being used where? Where are the conflicts? What are the dependencies? Learn absolutely everything you can about the poorly made system you’re fixing.

It’s tedious and miserable, at first. But it’s something the vast majority of developers do their best to avoid. Here’s why you should do it.

Thorough understanding gives you the ability to create change that sticks. You’ll know the system better than anyone else on your team. That makes you indispensable.

Do this well and you’re able to survive mass layoffs, company politics, and disasters. They can’t afford to lose you, you’re one of the few developers that knows things inside and out.

Headache #2: Fixed One Bug, Created Ten

After three hours of searching, you’ve finally found it. The fix is easy enough, so you push the update out. Only now, instead of that one original bug, there are ten.

Maybe the library you’re using has lots of bugs. Maybe your update created a conflict with something else. Or maybe the bugs are unknown — as in you’ll never find the problem. If you’re lucky these bugs will magically go away on their own.

Make it worse:

First things first: get up and walk away. There may be a lot of pressure to find a solution, but your conscious mind needs a break. So you do the smart thing and you walk away.

Doing this moves the problem to your subconscious mind where you’ll continue to work on it. Had a solution pop into your head while you were in the shower? Come up with a brilliant idea while you’re falling asleep? That’s your subconscious at work.

But there’s another reason you should walk away.

Fear, stress and anxiety affects your mind negatively. A research study by the NIMH showed that cognition, memory, decision making, even spatial navigation were impaired by negative emotion.

Deal with your negative emotions first, then come back.

Start asking questions, focusing your attention on isolating the problems. Revert to a previous revision.

  • Are the bugs still there?
  • Are they the same bugs or slightly different ones?
  • Were any of the bugs resolved when I reverted to a previous version?
  • When are these bugs present?
  • Are these bugs superficial, non-critical, critical or showstoppers?

Asking lots of questions trains your mind to search for answers. The answer tells you something about the problem. Keep asking questions to find the problems faster.

Headache #3: This Thing I Need, It Is the Problem

You’ve been assigned to a new project — integrating a client’s website with a new provider’s API. They provide you with the keys and credentials you need. Seems like everything’s good.

Until you run some tests.

Everything looks right but you can’t get things to work. You reach out to your point of contact and you ask for some help. They can’t make heads or tails of it either. Your API calls aren’t working.

You’re already behind schedule. At this rate, you won’t hit the deadline if things aren’t resolved in the next day or so. But no one seems to know what the problem is.

Make it worse:

Here’s a habit we used in our agency. We made it a habit to find an alternative provider, solution or option. If a client wanted A, we gave them A but we had B ready to go, just in case.

  • If clients want Netsuite, you’d have Tracmor and TradeGecko on the backburner, ready if something went wrong.
  • If they’re using a particular library, we’d find (or in some cases, create) a new library. This is tricky to do and depends on your ability to spot serious red flags ahead of time.
  • If they wanted things developed in Java, we’d have a secondary language with code samples, libraries, API documentation, etc. ready, just in case.

In the beginning, it feels tedious. If you’re on a development team you already have a lot to do. It feels like you’re running from one fire to the next, doing all you can to keep up.

Know what I mean?

We felt the same way. But here’s what we found. Doing this extra work forced us to be efficient. We were prepared for the unexpected and our process improved as a result.

You’ll quickly get a sense of who is good at what, and you’ll rely on each other to get things done. You’ll begin to gel as a team and at a certain point, the work is being done — without words.

This doesn’t mean you stop talking. It means your discussions and conversations become more efficient. These kinds of teams dramatically outperform groups that simply work together.

Continue reading %Why You Should Make the Worst Parts of Web Development Even Worse%

Source: Sitepoint

Browser Trends July 2016: Is a Chrome Monoculture Harmless?

May’s Microsoft Misfortune saw IE and Edge plunge further behind the competition. Does June provide a more optimistic outlook in the latest StatCounter browser statistics? Er, no…

Worldwide Desktop & Tablet Browser Statistics, May to June 2016

The following table shows browser usage movements during the past month.

iPad Safari5.35%5.33%-0.02%-0.40%

Continue reading %Browser Trends July 2016: Is a Chrome Monoculture Harmless?%

Source: Sitepoint

Horizon: A Scalable Backend Perfect for JavaScript Mobile Apps

Horizon is a scalable backend for cross-platform, JavaScript based mobile apps, especially those needing realtime functionality. It was built by the awesome people at RethinkDB and so uses RethinkDB as the default database. If you’re not familiar with RethinkDB, it’s an open-source database with realtime capabilities.

Horizon exposes a client-side API that allows you to interact with the underlying database. This means you don’t have to write any backend code. All you have to do is spin up a new server, run it and Horizon will take care of the rest. Data is synced between the server and the connected clients in realtime.

In this tutorial you’re going to build a Tic-Tac-Toe app with Ionic and Horizon. I’ll assume that you’re not new to Ionic and Cordova so I’m not going to explain Ionic-specific code in depth. I recommend you go check out the Getting Started Guide on the Ionic Website if you want a bit of background. If you want to follow along, you can clone the app repo on Github. Here’s how the final app will look:

Continue reading %Horizon: A Scalable Backend Perfect for JavaScript Mobile Apps%

Source: Sitepoint

Web Development Reading List #143: The Referrer Header, Third-Party Scripts, And Color Psychology


Hey! I don’t have a lot of links for you this week, but I feel that the ones that I selected are particularly useful to read. I learned about how to break Google captchas, the Referrer header, color psychology, and read an amazing new article by Maciej Cegłowski whose articles and talks I value a lot. Enjoy your weekend!

A malfunctioning third-party script

The post Web Development Reading List #143: The Referrer Header, Third-Party Scripts, And Color Psychology appeared first on Smashing Magazine.

Source: Smashing Magazine

JavaScript Design Patterns: The Singleton

Among languages used in widespread production, JavaScript is by far the most quickly evolving, looking less like its earliest iterations and more like Python with every new spec put forth by ECMA International. While the changes have their fair share of detractors, the new JavaScript does succeed in making code easier to read and reason about, easier to write in a way that adheres to software engineering best practices (particularly the concepts of modularity and SOLID principles), and easier to assemble into canonical software design patterns. Let’s dig into that last point by examining how the best way to implement a singleton in JavaScript has evolved with the rise of ES6.

What Is ES6

ES6 (aka ES2015) is the latest specification of the JavaScript language, and the first major update to the language since ES5 was standardized in 2009. Browser support for ES6 is still incomplete, however, ES6 code can easily be transpiled into ES5 code using a tool such as Babel. ES6 gives JavaScript a ton of new features, including a superior syntax for classes, and new keywords for variable declarations. You can learn more about it by perusing Sitepoint articles on the subject.

What Is a Singleton

alt text

In case you’re unfamiliar with the singleton pattern, it is, at its core, a design pattern that restricts the instantiation of a class to one object. Usually, the goal is to manage global application state. Some examples I have seen or written myself in real software development life include using a singleton as the source of config settings for a web app, on the client-side for anything initiated with an API key (you usually don’t want to risk sending multiple analytics tracking calls, for example), and to store data in memory in a client-side web application (e.g. stores in Flux).

A singleton should be immutable by consuming code, and there should be no danger of instantiating more than one of them.

Note: there are scenarios when singletons might be bad, and arguments that they are, in fact, always bad. For that discussion, you can check out this helpful article on the subject.

The Old Way of Creating a Singleton in JavaScript

The old way of writing a singleton in JavaScript involves leveraging closures and immediately-invoked function expressions . Here is how we might write a (very simple) store for a hypothetical Flux implementation the old way:

Continue reading %JavaScript Design Patterns: The Singleton%

Source: Sitepoint

7 Workflows Entrepreneurs Should Automate with Zapier

Zapier integrations

Zapier helps you to build bridges between your favorite apps and services, allowing teams and individuals to automate more of their workflows. Every one-to-one connection made between two apps is called a “Zap” and they’re designed to make you work smarter, not harder. With over 500 apps to choose from, it’s almost impossible to choose only a handful of Zaps.

Let’s take a look at seven Zaps that can make your life easier.

1. Create Mailchimp Subscribers from Typeform or PayPal

PayPal to Mailchimp workflow

Mailchimp is an email marketing service that lets you design emails, maintain a list of subscribers, email those subscribers, and then monitor the results of that campaign. But what happens when a customer isn’t a subscriber?

With this PayPal → Mailchimp workflow, Zapier monitors all sales made via PayPal and enters the customer’s email address into your email campaign in Mailchimp, effectively helping you to retain each new customer.

Typeform to Mailchimp workflow

You can do the same thing with Typeform. Let’s say that you’re using Typeform to survey your website’s visitors about the user experience that they received. The Typeform → Mailchimp Zap will retain the user’s email address in Mailchimp so you can tell that user about the new version of your website, derived from the feedback that they originally offered.

2. Create Trello Cards from Gmail Emails and Update in Slack

Gmail to Trello workflow

With the influx of morning emails it can be near-impossible to convert each one into an actionable task in a sensible amount of time. The Gmail → Trello Zap can fix that, helping you to reach “inbox zero” much faster. In short, Zapier scans your Gmail for emails with a certain label and creates a formatted Trello card from them.

Trello to Slack workflow

You can take this workflow a step further by automatically updating teammates about this new Trello card in Slack, so that the team can be notified about the task and complete it. All that from a simple label!

3. Get Notified of New Dropbox Files in Slack

Dropbox to Slack workflow

I can think of a number of reasons why this Dropbox → Slack setup is epic. Firstly, Dropbox really drains your battery because it constantly checks for file updates, so having notifications in Slack can quite literally save you hours of battery life. But don’t worry, not only can you be notified in Slack of new Dropbox files, but Slack can import the file, making it searchable and downloadable from within Slack. Dropbox doesn’t even need to be switched on!

Continue reading %7 Workflows Entrepreneurs Should Automate with Zapier%

Source: Sitepoint

Review: Is the New and Improved Google Fonts Better?

It’s been six years since Google first unveiled one of the world’s largest, free web font services. Their easy-to-use interface was instrumental in bringing what was often considered a brittle technology to the masses. Since 2010 the service has steadily grown in both library diversity and scale.

Recently the service received a full make-over, bringing a more streamlined way for you to preview fonts and get up and running in no time.

But is it actually better? Let’s take a look.

 <em>Latest website on the left with the legacy site on the right</em>

Latest website on the left with the legacy site on the right

A Polished and Updated Look

I certainly believe that the overall look and feel of Google Fonts has improved. One of the first big things you will notice will be that the whole site uses Material Design. Gone are the thick borders, low-resolution graphics, and bright blue buttons. These are replaced by subtle animations and interactions helping you to focus on narrowing down your fonts.

Google fonts applying Material design

The updates to the visuals are pretty impressive, but what’s also good is that the site is now fully mobile responsive. The previous version of the site didn’t handle smaller resolutions or resizing gracefully, leading to lots of random UI bugs that made the site look weird / remove functionality.

Better Responsiveness

On the right, as the screen gets smaller you can see we lose the ‘Preview Text’ input field making it impossible to get a live preview of our text. Also, as the screen gets narrower the action buttons start to cover up both the font name and the author, eventually vanishing entirely.

The legacy site has been around for a long time and provided a heap of functionality so we can generally cut them some slack. It’s refreshing to see that the new site looks great and works across all device types.

Dynamic Theme Chooser

One area of concern for designers was choosing a font which works well across different foreground / background colors. Sometimes a font might look great when it’s black on a white but then could be next to impossible to read when a bright color is used.

Google added a custom color chooser right at the top of the site. When clicked it provides a quick swatch of colors to let you preview how your fonts will look. You can use this to see how your fonts will pair up when used on dark / light backgrounds with dark / light text.

Dynamic Theme Chooser

Even though you can’t precisely specify the colors you want, this is a nifty tool that everyone should use when picking out their fonts.

Featured Fonts are a brand new introduction to the updated Google Fonts website. Accessible right from the top menu, these featured fonts are collections of fonts that Google wants to highlight. These collections are created by either Google themselves or by outside agencies to showcase a particular design style or philosophy.

Showcasing Featured Fonts

Currently, there are only a few sets of featured fonts, however, it would make sense if this range will increase in time as more fonts are added and the previous Google Fonts website is discontinued.

A Supercharged Inline Font Selector

The main experience with Google Fonts is how to preview and select your fonts, some would argue this is the most important part of the website.

Previously, when viewing your fonts you would see something similar to the diagram below – a simple preview of text with a series of action buttons. Your view might look different depending on how you’ve filtered your search but generally, it’s a simple square box with a series of actions a big blue add button.

Continue reading %Review: Is the New and Improved Google Fonts Better?%

Source: Sitepoint

WordPress Theme Automation With Gulp

As website code becomes more complicated and repetitive steps that just beg for optimization become ever more commonplace, there should be a better and more efficient development process out there.

In this tutorial, I’ll introduce Gulp, and how to integrate it with WordPress theming to automate and enhance the theme development process by putting together an automated workflow.

Why You Need to Automate Your Development Workflow

Workflow optimization can be incredibly beneficial and rewarding for your development process. Here are some of the reasons to give it a go:

  • It removes all those repetitive and boring tasks, replacing them with custom tools.
  • It saves a lot of time for doing other important core development work.
  • It helps optimizes your website for performance by minifying and optimizing all assets.

What You’ll Need

  • WordPress installed on your development machine.
  • Node.js and npm installed.
  • Command line basic knowledge.

Introduction to Gulp

Gulp is a JavaScript task runner that will help automate time-consuming tasks like CSS compressing, Sass compiling, image optimization and browser reloading.

Gulp gives you the tools to do various actions automatically after certain trigger events. For example, consider the following scenarios:

  • Every time you save a Sass file, Gulp will compile Sass and output a minified CSS file.
  • When you add a new image to a folder, Gulp will optimize this image and move it to a new dedicated folder.
  • When you save a PHP or a Sass file, Gulp will automatically reload the browser.

Gulp Setup

First, you need to install Gulp globally in your system. Later, I will show you how to install it as a package inside your theme.

Assuming Node.js is installed, open the command line tool, then install Gulp using npm via:

[code language=”bash”]
npm install gulp -g

Now, run gulp -v (Gulp’s version command) to test that Gulp is installed correctly. You should get output similar to:

[code language=”bash”]
➜ ~ gulp -v
[09:33:59] CLI version 3.9.1

Theme Setup

In this tutorial, I will use Underscores as the base theme. To download it, navigate to, generate a new theme and give it a name like “gulp-wordpress”, download it to the WordPress themes directory, then activate it from the dashboard.

From the command line, navigate to the gulp-wordpress directory where you have added the theme, for example in my case:

[code language=”bash”]
cd ~/www/wordpress/wp-content/themes/gulp-wordpress

Next, run the npm init command and follow a few simple steps to create a package.json file which will include some information about the theme and the packages that will be installed later.

After finishing up the steps, you will have a starting file that looks similar to this:

  "name": "gulp-wordpress",
  "version": "1.0.0",
  "description": "WordPress Theme Development Automation with Gulp",
  "author": "Name"

Next, install Gulp as a development dependency:

[code language=”bash”]
npm install gulp –save-dev

A node_modules directory is now created containing Gulp package source files, and your package.json file has been updated to include Gulp as a development dependency.

  "name": "gulp-wordpress",
  "version": "1.0.0",
  "description": "WordPress Theme Development Automation with Gulp",
  "author": "Author Name",
  "devDependencies": {
    "gulp": "^3.9.1"

Some Gulp tasks like gulp-autoprefixer require ES6-style Promises support so that you can install the es6-promise polyfill, and then require it at the top of the gulpfile.js as we will do next.

[code language=”bash”]
npm install es6-promise –save-dev

The last step to configure Gulp is to create an empty gulpfile.js configuration file, which will be used to define Gulp tasks such as JavaScript and Sass.

The gulpfile.js starter file will look like this:


var gulp = require('gulp');

// default task

What we have done above is:

  • Required the es6-promise polyfill on top of the file, then we have imported in gulp.
  • Created a default task.

To make sure that Gulp is running and everything is done perfectly, run gulp in the command line to execute the default task created in the gulpfile.js file. The output should be similar to:

[code language=”bash”]
[09:48:23] Using gulpfile ~/www/wordpress/wp-content/themes/gulp-wordpress/gulpfile.js
[16:33:13] Starting ‘default’…
[16:33:13] Finished ‘default’ after 58 μs

Speeding up Development with Gulp Tasks

At this point, the theme is ready for new tasks, and it’s time to go through some common tasks that you can use to speed up your theme development.

Working with CSS (Sass)

If you are using Sass to write CSS, two main things needed to be automated, the first one is to compile Sass to CSS, the second is to use autoprefixer to add vendor prefixes to your CSS. Also note that I’m using Sass as an example, if you prefer another option like Less for example, you can find a Gulp plugin for it too.

First, install gulp-sass and gulp-autoprefixer.

[code language=”bash”]
npm install gulp-sass gulp-autoprefixer –save-dev

The next step is to create a Sass directory with a basic structure.

├── sass
│   └── style.scss

The style.scss file is the main starting point, you are free to create your Sass architecture and import other components, modules, functions inside it based on your preference.

Continue reading %WordPress Theme Automation With Gulp%

Source: Sitepoint

Desktop Wallpaper Calendars: July 2016


To help you start into July freshly inspired, artists and designers from across the globe challenged their artistic abilities and created desktop wallpapers for you to indulge in. This monthly creativity mission has been going on for eight years now, and each month the enthusiastic work of the community brings forth interesting, beautiful, and unique results. Wallpapers that are a little more distinctive than the usual crowd.

Desktop Wallpaper Calendars: July 2016

This post features their designs for July 2016. All wallpapers come in versions with and without a calendar and can be downloaded for free. A big thank-you to everyone who contributed their ideas! Now could there be a better occasion to freshen up your desktop?

The post Desktop Wallpaper Calendars: July 2016 appeared first on Smashing Magazine.

Source: Smashing Magazine