Thursday, June 1, 2017

Join the UX Mastery Book Club!

We love books here at UX Mastery. Without a doubt, reading is one of the most straightforward and accessible ways to build up your UX knowledge. Even better is having the opportunity to discuss, question, and confirm your understanding with your peers.

That’s why we decided to start the UX Mastery online book club! With so many fantastic books on UX and related topics, we hope we can give you that extra motivation to get reading.

Our very first book, decided by popular vote is The Design of Everyday Things by Don Norman.

It’s available on Amazon2 for $12.85 (Kindle) or $13.61 (Print)

Here’s a blurb about the book:

Even the smartest among us can feel inept as we fail to figure out which light switch or oven burner to turn on, or whether to push, pull, or slide a door. The fault, argues this ingenious-even liberating-book, lies not in ourselves, but in product design that ignores the needs of users and the principles of cognitive psychology. The problems range from ambiguous and hidden controls to arbitrary relationships between controls and functions, coupled with a lack of feedback or other assistance and unreasonable demands on memorization.
 

The Design of Everyday Things shows that good, usable design is possible. The rules are simple: make things visible, exploit natural relationships that couple function and control, and make intelligent use of constraints. The goal: guide the user effortlessly to the right action on the right control at the right time.

The Design of Everyday Things is a powerful primer on how-and why-some products satisfy customers while others only frustrate them.

How book club will work

All book club related activity will take place over in the UX Mastery forums in the Book Club category.

Every week we’ll read a chapter, then discuss in forums.

We will kick off each week with one or two broad questions to consider before reading, a couple of key observations to go through on your own directly after reading, and then open it right up for opinions and other questions in weekly discussion thread.

How to get involved

Right now
Introduce yourself and say hi to everyone here

4 June
Deadline for buying your book – details above

5 June
Begin reading first chapter, with one chapter per week after that.
We’ll start a new discussion thread at the beginning of each week.

Find all the details over in the forums.

Happy reading!

The post Join the UX Mastery Book Club! appeared first on UX Mastery.


by Natassja Hoogstad Hay via UX Mastery

Departures International

Your global guide to luxe travel, style and more. Curated for international Platinum Card® members from American Express®
by via Awwwards - Sites of the day

Wednesday, May 31, 2017

How to Get More Followers on Instagram: A Guide to Earning Your First 1,000 Followers - infographic

Just getting those first 100 followers on Instagram can seem like a challenge. But let’s reach for the stars and learn how to get 1,000! Below are some incredibly useful tips for both personal and business Instagram accounts.

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

by Irfan Ahmad via Digital Information World

Are Your WordPress Themes Flexible or Fast?

Are Your WordPress Themes Flexible or Fast?

This article is part of a series created in partnership with SiteGround. Thank you for supporting the partners who make SitePoint possible.

If you've developed WordPress themes for mass distribution, you might have come across the problem of finding the perfect balance between building performant themes and building feature-rich, media-heavy products for your customers.

Let's look closer into what the tension might be all about and how you can find ways to compromise between creating fast loading themes and giving users the flexibility and easy customization options they love and expect.

Are Flexibility and Performance At Odds When Coding WordPress Themes?

I will start by saying that my discussion is not going to be about performance in relation to an entire WordPress website, which might include a number of different factors like finding a great hosting provider, implementing caching mechanisms, leveraging both back-end and front-end techniques, etc.

Also, the topic is not about the performance of WordPress themes you code from scratch either for your own use or for a specific client. In these particular cases you tailor your themes to the specific needs of yourself or your individual client, which should make performance optimizations easy to accommodate.

Rather, my focus will be on WordPress themes you code for the general public, to be distributed on WordPress.org or an online marketplace. The scenario is one where you, as the theme developer, have no control over how your theme is going to be used and customized.

But why coding for performance could clash with coding themes for the public?

On the whole, performance requires you:

  • To stick to simple designs

  • To include a limited number of features into your themes (more features are likely to require more processing power and resources, all of which impacts on theme performance)

  • To add the minimum number of page templates for a theme to function (fewer templates require fewer resources, which is good for performance)

  • To perform as few database queries as possible (querying the database takes time)

  • To limit the number and size of images and other media, which are notoriously heavy files

  • To minimize the number of HTTP requests (each round trip to the server and back takes some time with obvious negative consequences on performance).

On the other hand, a considerable number of your themes users are likely more entrepreneurial than tech minded. Therefore, what they might be looking for is a product they can turn into pretty much anything without so much as one line of code, with lots of functionality out of the box, breathtaking photo and video assets, super delightful parallax and other animation effects, and such like.

To give theme users all the flexibility they would like could come with some performance costs. But, let's go into a few specific points that illustrate how this can happen and how you can find some middle ground for a successful outcome.

Themes Are for Appearance, Plugins for Functionality

Although a number of reputable WordPress experts have been throwing some well argued criticisms against the so called kitchen sink themes, that is, those multipurpose themes that can become anything to anybody by offering any functionality under the sun, the demand for them is still going strong.

Themes that give users the ability to easily add social media buttons, SEO features, contact forms, price tables, etc., while attracting a lot of attention from buyers, don't come without some serious drawbacks.

In particular, this kind of WordPress theme comes tightly coupled with plugins specifically built for it, or even integrated directly into the theme. This practice is widely frowned upon for the following reasons:

  • Some of the plugins that come bundled with a theme can have vulnerabilities that put theme users at risk. If the theme doesn't come with specific plugins installed it's less open to such risks

  • A super important drawback of tight integration between themes and plugins is what Ren Ventura identifies as theme lock. Here's his explanation of this problem:

    Theme lock occurs when a WordPress user cannot change his or her theme without gutting most of the site’s functionality. Once the theme is deactivated, it deactivates things like shortcodes and custom post types that were registered by the theme. Without these features that the user has heavily incorporated into the site, things fall apart.

    As a consequence, when you change theme, a lot of the stuff you thought it was part of your website content disappears with the old theme. For instance, if your theme offered the ability to add testimonials to your website, once you change theme all the content related to your testimonials will be gone. Not nice.

  • And of course, bloat and hence performace costs. Let's say you don't need a testimonials section on your website. Yet, all the code that makes that functionality work in the theme is still there: it takes up space on your server, which ultimately costs money.

A great maxim the Theme Review Team (i.e., the volunteers who review themes submitted on the WordPress.org themes repo) rightly enforces is: keep functionality separate from appearance. Plugins deal with functionality, themes with appearance. Getting rid of all the complication will improve theme performance and at the same time make it easier for users to install and configure WordPress themes.

Your Users Don't Need Tons of Theme Options (But They Might Not Know This)

Until not long ago, WordPress themes included rather complicated theme option pages to enable users to make all sorts of modifications with a button click.

These days, thanks to a momentous decision taken by the Theme Review Team on WordPress.org in 2015, most themes offer theme options using the WordPress Customizer, which makes possible live previewing the changes as they're being made by users.

Unfortunately, the kitchen sink mentality that ruled the old theme option pages has started to migrate to the Customizer, which you can now see as also starting to get filled up with all sorts of settings.

Although non technical customers love theme options to make changes to their themes, sometimes too many options available bring more problems than they seemingly solve:

  • Too many options can paralyze users who are not too familiar with core principles of website design

  • It can take more time than expected to set up and configure a theme

  • It's easy to make mistakes like choosing the wrong colors, making text unreadable, etc.

  • Users might add too many fonts to their themes, thereby spoiling the design and slowing down the website

  • More options means adding more functionality to the theme, thereby impacting on its performance.

Although your customers might not accept this at first, you are the theme designer, therefore you should be the one who is best placed to make the important design decisions for your theme.

A well-calibrated number of theme options should be sufficient to let your customers make some targeted and carefully predefined (by you) modifications to personalize the theme and make it their own.

Implement Smart Graphics Optimization Techniques

Images are likely to put the heaviest weight on theme performance compared to template files, scripts and styles. Just run any theme through the Pingdom's Speed Test tool to verify this.

However, a generous use of full-screen, bold images is hardly surprising. Images add huge aesthetic value to themes and customers are drawn to a theme largely on the basis of its visual impact.

Continue reading %Are Your WordPress Themes Flexible or Fast?%


by Maria Antonietta Perna via SitePoint

How to Think about Website Security as an Admin

Website administrators, especially those in smaller businesses or organizations without people dedicated to the job and large IT and web arms, often overlook quite a few basic tenets of website security. This can be quite dangerous, in the modern era of not only directed hacking, but the mass scripting attacks carried out against a seemingly endless and random pool of targets. No matter how small and relatively unimportant your site is, it can be a target. And whether you're the person who developed the site, or just the one managing it, you may not be familiar with a few of these basic tips for website security.

If you're an employee who's been asked to oversee a website and are reading this article, some security considerations might sound difficult, but remember that everything you need to know you can learn. There are plenty of resources out there (including our own SitePoint Premium) that can help you with website development and administration. The important takeaway from this article, I hope, is for you to spend a few moments and really think about your site's security.

Password Security

Good password security is one of the most important considerations for your website's security. As an administrator, you may be responsible for a variety of important passwords. The hosting account management, FTP access, SSH access, MySQL databases, your site's control panel, WordPress admin panel, etc. All of these need to be different passwords (never re-use a password) and long. Pass phrases are better than passwords in that regard. Complexity helps too, but it should be something that you can remember, or you should use a password manager to assist you.

User Access Levels

Another thing to consider is the access of administrative users to your website. If your organization will require more than one or two users to be administering a site, you should have separate accounts for things like admin panels. Those users should also have different access levels. In terms of content management systems, the users should be limited from website administrative settings, altering other people's content, or file management, unless they actually require those permissions.

Having user account levels and separated accounts will help to prevent accidental or malicious damage to your site, and using individual accounts will also help you track and log who makes particular changes, just in case any nefarious activity occurs (or a user is hacked). It will also help with removing users from the organization who leave your company - you can simply and easily deactivate their account without needing to reset shared passwords, if their account is their own.

Continue reading %How to Think about Website Security as an Admin%


by Jeff Smith via SitePoint

Managing State in Aurelia with Higher Order Components

This article was first published on Pragmatic Coder by Aurelia core team member, Vildan Softic. If you enjoy this, why not head over there and check out some of his other work.

Assembling a bicycle

We can't ignore the ever-growing importance of changing paradigms, no matter whether we're talking about social, political or software development matters. Of late, front-end web development has seen an increasing interest in predictable state containers, introduced by concepts such as Flux and made popular by Redux. Simultaneously, the trend towards a more functional style of programming — particularly component composition — has changed the way we think about building applications.

At first glance, neither idea may appear that important or world changing in its own right, but put together they can provide a great developer experience. I'm not going to judge whether this is a better approach compared to well-known concepts such as MVVM and classic services. Rather I'd like to share an approach which helps you to combine both concepts, so as to get the best of both worlds.

This article talks about the theory, actual code and a full example can be found over at GitHub. Sources, including templates, are fully commented to explain design choices and the repo's README contains a recommended way to review the example. As such we won't waste time on implementation details, like the use of RxJS, but get straight to understanding the core concepts.

A Modern Development Approach

A modern development approach leverages a single store, which acts as a fundamental basis for your application. The idea is that this store holds all the data that makes up your application. The content of your store is your application's state — a snapshot of your application's data at a specific moment in time. In functional terms, if we were to represent our whole application with a single function renderApp, the state would be the argument we pass in.

function renderApp(state): RenderedApplication

If we only wanted to produce static sites without any interaction, we'd already be good and could stop work here. However, most of today's apps provide a plethora of interactions. So if the state is a snapshot at a specific point in time, an event can be seen as the trigger that changes our state from current to new. Such a user interaction can be compared to a reducer, which modifies the current state by applying instructions from a certain action.

function userInteraction(oldState, ...actionInstructions): NewState

Modification though, is a dangerous game. If we change the original source, how will we know the difference between the new and old state? As such immutability is a key aspect of modern approaches, as it maintains the original source and creates a modified copy of your new state. So the current state becomes the old state and the interaction creates the next current state.

 CURRENT STATE           --> USER INTERACTION                  
 --> NEW STATE 

 renderApp(currentState) --> userInteraction(currentState, ...)
 --> renderApp(newState)

Past, current and the future are snapshots of state after a given amount of actions. Keeping this in mind we can move the current state backwards, by reversing actions and traveling back to a previous state.

 NEW (aka CURRENT STATE)  --> USER INTERACTION * -1         
 --> CURRENT (aka OLD STATE)

 renderApp(newState)      --> userInteraction(newState, ...)
 --> renderApp(currentState)

The interesting point here is that the functional call sequence does not change — only their inputs do. As such we can conclude that a state is solely influenced by actions and that given a specific input, we can always expect the same output. This reflects the nature of pure components.

Continue reading %Managing State in Aurelia with Higher Order Components%


by Vildan Softic via SitePoint

Version Control with Magento and Git

This article is part of a series created in partnership with SiteGround. Thank you for supporting the partners who make SitePoint possible. Many developers may wish to use version control with their Magento site as they develop it, and perhaps continue doing so as they maintain and add to the live website. Here, we’ll focus […]

Continue reading %Version Control with Magento and Git%


by Jeff Smith via SitePoint