Thursday, July 23, 2015

12 Best Slack Communities for Every Professional

If your company isn't using Slack, chances are, the company next door is. In February, the team communication tool had 500,000-plus daily users—making it the fastest-growing business app ever. But Slack isn’t just dominating the cubicle. Recently, people have been using the platform to found and maintain “digital communities:” forums for collaborating and connecting with […]

Continue reading %12 Best Slack Communities for Every Professional%


by Aja Frost via SitePoint

Making Minimalism Work in Mobile and Web

“Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius – and a lot of courage – to move in the opposite direction.”

This quote is attributed to a gentleman by the name of Ernst Schumacher, an influential thinker, economist and author of ‘Small Is Beautiful: a study of economics as if people mattered’. The Times listed it among the 100 most influential books published since World War II.

Ernst was mostly talking about financial systems but the quote should resonate with a lot of designers and UX people. Often the simplest designs – created with the fewest elements – can provide the largest bang for your buck. Of course, we are talking about minimalism.

As the well-worn maxim goes, “less is more” and no matter if you’re designing for mobile or gigantic retina monitors there are some effective tips and tricks, dos and don’ts that will help you get the most out of the little bits you’re using.

Wireframe Usage

Mockup wireframes

There are really no hard and fast rules with minimalism aside from downsizing your content but one of the most effective steps you can take to achieve the minimal effect in your work actually happens before you start throwing down all of your elements. This is the step of using a wireframe.

It is a lot easier to start with a blueprint than going in swinging when it comes to scaling back and down. The great thing about this process is it can be done anytime, anywhere and on anything, unless of course you’re trying to write on someone’s walls then I amend my previous statement.

While you may already know the power of prototyping you must understand that with minimalism your sketch requires more attention to detail. Because you are going for a specific style it is important to understand the function of each and every element you place down. One thing that should be at the top of your consideration list while in this phase is your layout. Unique, non-traditional setups have chances of rendering a stunning design when you start subtracting your elements.

Phone mockups

DO for Web

Go for modular, column and hierarchical layouts as this will yield you a better flow to your final look. Remember that manuscript grids or box looks in minimal design, while still effective in its own right, can have your design looking flat and boring.

DO for Mobile

Use an online wireframe tool for better planning. This will allow you to avoid layout issues if you go ahead and plan for each specific mobile device instead of working from paper to digital only to find out your minimal look isn’t exactly minimal.

DON’T for Web and Mobile

Never go into the wireframing stage without a list of the content that you need to have in the final design and don’t forget to experiment with more than one layout.

Refine & Simplify (or simplify until it breaks)

Simplicity

They say “You break it, you buy it” but if your site is on the brink of breaking then it's likely you’ve just nailed the best minimalistic look your design could yield. That, or you are seriously into a punk rock ethos and just like breaking stuff.

When you are designing you need to make sure that everything has a purpose. If you can’t find a reason why a certain item is there then you need to get rid of it. With minimalism designing it really is okay to start big and scale down. In fact it is a lot easier than starting with absolutely nothing.

Think of the removal stage as some good old fashion spring cleaning. Look at everything as a whole and then start throwing those fifteen plus pillows out the window, you really don’t need all of them and your design is going to reflect that. Essentially the key here is to dial back as much as you can. If you’re not sure if you have “broken” your design you simply need to run some functionality tests and see if your design’s meaning is still in tact.

Mimimal Music Quiz song titles distilled

DOs for Web

Create purpose within your design. Remember that a minimal website design isn’t about dumbing down your site’s content. It is about reducing unnecessary content so visitors can get to the good parts without missing anything.

DOs for Mobile

Due to the nature of mobile devices, smaller screens, you want to make sure that the spacing between your elements doesn’t look like you’ve just deleted something and forgot to place something there. You’re simplifying to create a clear eye path, not to show gaps.

DON’Ts for Web and Mobile

Never remove so much that your design doesn't have a focal point anymore. When you are simplifying there should always be a “look at me” element. This will allow you to design AROUND the focal point instead of designing FOR it.

Continue reading %Making Minimalism Work in Mobile and Web%


by Gabrielle Gosha via SitePoint

CSS is Alive and Well

Due to the ever-growing popularity of React, Facebook’s user interface library, there has been some discussion on the topic of CSS and whether or not it has a future in its current form — that is, in the form of declarations in a separate stylesheet that provide presentation information for a given page or section of markup.

I’m not going to rehash the conversation or the pros and cons here. For those not familiar, here are a few links you can check out:

But what I will do is provide some strong evidence that CSS is alive and well.

The developers are restless

When I read the reactions and heated debates in comment sections of articles like this one or this one, two things become clear:

  • Developers are passionate about CSS
  • Developers are not happy with some of the proposed solutions for large CSS projects

The two links in the second bullet point in the introduction above are a slide deck and video presentation by Christopher Chedeau, a developer working for Facebook on the React project. This past week was the first time I tried delving into React a little bit, thanks to this great tutorial by Shu Uesegi. After that simple introduction, the slides gave me a little more context.

Christopher addresses 7 CSS architecture problems that he believes can be solved by using JavaScript to manage and implement styles. This is the kind of thing that makes a lot of purists shudder because, with React, you’re basically writing your markup and styles in your JavaScript — something that’s usually discouraged in keeping with “separation of concerns”.

The screenshot below captures one of Christopher’s pertinent slides in this regard, outlining the 7 problems that React attempts to address:

CSS problem solved by React

Christopher makes a great case for solving CSS’s problems in JavaScript, so I highly recommend you keep an open mind and check out his slide deck (although I’ll forgive him for saying that w3schools is his favorite website for learning JavaScript!).

So it’s clear that it feels like a CSS revolution is needed and some might say it’s already under way. But it’s also clear that CSS in its current form is not going away anytime soon.

CSS tips and tricks are in high demand

If you were keeping tabs on your RSS feeds and Twitter stream in the past week or so, then you probably came across my most recent CSS article. That was one of the most enjoyable articles to write, and judging by the incredible response in the comments and on social media, I’m glad to see that it was as enjoyable for readers.

[caption id="attachment_110386" align="aligncenter" width="800"]12 Little-known CSS Facts: The Sequel Artwork by SitePoint/Natalia Balska.[/caption]

The popularity of those types of articles demonstrates that developers still love CSS in its traditional form. Tweets by Ilya Grigorik, Smashing Magazine, CSS-Tricks, and others were shared and favorited hundreds of times. And the traffic to that article and its predecessor has been amazing.

The content in my articles is mostly covering stuff that’s been available in browsers for years, not just the new “CSS3” features. In fact, I intentionally tried to use as many cross-browser CSS tips as possible and the response has been overwhelming.

But this sort of thing is not unique to my article. Consider past CSS articles on other sites that have been hot in the community. Two that immediately come to mind are, not coincidentally, both by Heydon Pickering:

Continue reading %CSS is Alive and Well%


by Louis Lazaris via SitePoint

Toolbox of the Smart WordPress Developer: WP Quick Install

Ever got bored of installing WordPress? I did. I mean, it's short but it's not a "five–minute installation process" as advertised. It could be shorter, I think.

Turns out, there are more people like me—and they're more talented than me. In this part of the "Toolbox of the Smart WordPress Developer" series, we're going to go through WP Quick Install, a tool to build out-of-the-box WordPress installations.

The Story of an Average User Installing WordPress

Let me introduce you to Jane Doe.

Jane is a young, smart, aspiring freelance web designer. While she was studying in college three years ago, she took care of a relative's website for his pet store. He was satisfied with the website, so he recommended Jane to a vet and she also did the vet's website—and she got paid this time! After doing a couple of websites and getting paid handsomely, she decided to continue designing websites after college.

Three years later, she reached 54 customers and 60 websites. She even hired an intern to enter the contents of websites while she was busy charming potential customers in her area. When she lands a client, she installs WordPress and a couple of plugins (like Google XML Sitemaps and All in One SEO Pack), switches to the theme she chose with her customer, and does some tweaks in the wp-config.php file to optimize her workflow and the website's speed.

She kind of hates doing the same thing over and over again at least three times every month. It's especially annoying to upload more than a thousand files before the famous "five–minute installation". It's no big hassle installing WordPress a couple of times each month, sure, but she knows that it could be automated somehow. She's not a very tech–savvy person (she learned HTML and CSS from the free Tuts+ course "30 Days to Learn HTML & CSS" and then purchased a yearly subscription, downloaded and watched a bunch of courses), but she knows that a professional web developer could make this process faster.

And today, she meets WP Quick Install!

Using WP Quick Install to Rev Up Your Workflow

Three years ago, the guys over at the WP Rocket plugin released WP Quick Install, a tool to automate the installation and customization processes of WordPress.

Before moving on with the tutorial and discussing how to make use of the tool, let's watch this short video to understand how it works:

Basic Usage

As you saw from the video (if you watched it), using WP Quick Install is as simple as one two three:

  1. Upload the ten files and seven folders (instead of the whole WordPress package which consists of more than a hundred folders and a thousand files) to your host.
  2. Fill in the form (slightly longer than the usual WordPress installation form) and click the Install WordPress button.
  3. Wait for a minute or so, and then enjoy your new installation of WordPress.

See how easy it is? Let's take a look at the form elements:

  • Database credentials: Your database credentials.
  • Database table prefix: A custom database table prefix.
  • Deleting default content: Deletes the default post, comment and page if checked.
  • Language: Sets the WordPress language.
  • Installation directory: The directory to install WordPress in.
  • Website title: Title of the WordPress website.
  • Admin panel credentials: Username, password and email address for the admin user.
  • Privacy setting for search engines: Prevents search engines from indexing the website if unchecked.
  • Activating the bundled theme: Activates the bundled theme if checked (more on this later).
  • Deleting default themes: Deletes the Twenty-Something themes upon installation.
  • Installing plugins from WordPress.org: Semicolon-separated list of plugin slugs to install from the WordPress Plugin Repository.
  • Installing bundled plugins: Installs the bundled plugins if checked (also more on this one later).
  • Activating all plugins: Activates all installed plugins if checked.
  • Permalink structure: Changes the default permalink structure.
  • Media settings: Almost exactly the same options as in the Settings > Media screen.
  • Number of post revisions: Sets the number of post revisions.
  • Disabling theme and plugin editor: Self-explanatory.
  • Autosave interval: Sets the number of seconds to save posts automatically while writing.
  • Debug mode: Enables WP_DEBUG if checked.
  • WordPress.com API key: If you use a plugin that needs your WordPress.com API key (like JetPack), this one's going to be handy.

Side note: In the form, there are two options which hint that you can bundle WP Quick Install with any theme and any plugins you want. It's another useful feature of WP Quick Install: By putting ZIP files inside the wp-quick-install/plugins folder and placing a Theme.zip file under wp-quick-install, you can install and activate a desired theme and your plugins (that don't exist in the WordPress plugin repository) upon your installation with WP Quick Install. Neat, huh?

Configuring the INI File

Yet another great feature of WP Quick Install: You can predetermine the form fields with the data.ini file!

It's actually pretty easy to edit the file, and there's already an inline documentation inside the file. Basically, you need to comment out the desired lines and change their values. There might be a slight confusion with the "install plugins from WordPress Plugin Repository" option—you just have to create separate lines starting with plugins[] = and continue with a plugin slug on each line.

Oh, one last thing: With the INI file, you can even publish posts automatically upon installation! At the end of the data.ini file, there's a part that explains how to use this feature. Be sure to check it out.

Wrapping Up for Today

Even after three years, it still might cause some problems (I had a hard time working it on my shared hosting account) but that's not their fault, as you can't possibly please every single server on the planet. And if it's an open-source project (and it is), it's our responsibility to help them grow because any kind of contribution helps WordPress take over the world, as we always discuss in WordPress podcasts. (Luckily, not a single world leader has noticed this.) Joking aside, it really is a great tool, and I believe it needs more coverage in the WordPress community.

What's your take on WP Quick Install? Did you like it? Did you have problems with it? Share your thoughts by posting in the Comments section below. And if you liked the article, don't forget to share it with your friends!

See you in the next part where we'll be talking about the WordPress Plugin Boilerplate!


by Barış Ünver via Tuts+ Code

Model Web Pages with the Page Object Pattern

We interact with web pages every day. On the low level, clicking on various HTML elements or entering text in text forms using input devices. What's the higher-level purpose of doing those things? It's trying to get something done. Completing a Google search, submitting a contact form, or rating something. The Page Object pattern is a great, object-oriented way to keep your code clean while accomplishing those higher-level things as your application grows.

Fundamentals of the Page Object Pattern

Why use the Page Object pattern? Two words: code reuse. Let me explain.

Suppose you're making an application that will go to a search engine and perform a search using a particular phrase. To do this, you will need to:

  • Go to the web page
  • Locate the HTML element where you can input text and enter your keyword (the text box)
  • Find the Search button and click it

Continue reading %Model Web Pages with the Page Object Pattern%


by Darko Gjorgjievski via SitePoint

The Tuts+ Guide to Template Tags: Seventh Batch

In the seventh part of the series, we went through the sixth batch of WordPress template tags. In this eighth part, we're going to go through the seventh batch of the almost 200 template tags. Throughout the tutorial, we'll see template tags about archives, search and login/logout/register actions.

Getting the Archive Link: get_archives_link()

This template tag returns an archive link with various formats.

Parameters

This template tag accepts five parameters:

  • $url (required—string):
    URL of the archive.
    (Default: NULL)
  • $text (required—string):
    Description of the archive if $format is set to 'link'.
    (Default: NULL)
  • $format (optional—string):
    Format of the link. Accepts the following styles:
    • 'link' creates a <link /> tag.
    • 'option' creates an <option> tag so you can use it in an HTML dropdown menu.
    • 'html' creates an <a> tag inside a <li> tag so you can use it in an ordered or unordered list.
    • 'custom' or any other text creates an <a> tag.
    (Default: 'html')
  • $before (optional—string):
    The text or HTML code to display before the output.
    (Default: Empty)
  • $after (optional—string):
    The text or HTML code to display after the output.
    (Default: Empty)

Usage

Getting & Displaying the Archive Links: wp_get_archives()

This template tag returns or displays a list of archive links in various formats.

Parameters

This template tag accepts only one parameter:

  • $args (optional—array):
    An array of the following arguments:
    • 'type' (string): Type of the archives. Accepts 'yearly', 'monthly', 'weekly', 'daily', 'postbypost' (ordered by post date) or 'alpha' (ordered by post title).
      (Default: 'monthly')
    • 'limit' (string): Number of items to retrieve.
      (Default: Empty which means no limit)
    • 'format' (string): One of the following output formats:
      • 'html' creates <a> tags inside <li> tags so you can use it in an ordered or unordered list.
      • 'option' creates <option> tags so you can use it in an HTML dropdown menu.
      • 'link' creates <link /> tags.
      • 'custom' creates only <a> tags.
      (Default: 'html')
    • 'before' (string): HTML code to add before the output.
      (Default: Empty)
    • 'after' (string): HTML code to add after the output.
      (Default: Empty)
    • 'show_post_count' (boolean): Whether to show post count or not.
      (Default: FALSE)
    • 'echo' (integer): Whether to echo the output (1) or return it (0).
      (Default: 1)
    • 'order' (string): Whether to order items in ascending ('ASC') or descending ('DESC') order.
      (Default: 'DESC')

Usage

Getting & Displaying Title for a Post Type Archive: post_type_archive_title()

This template tag gets and echoes the post type for using as post type archive titles.

Parameters

This template tag accepts two parameters:

  • $prefix (optional—string):
    Prefix to the title.
    (Default: Empty)
  • $echo (optional—boolean):
    Whether echo (TRUE) or return (FALSE) the tag.
    (Default: TRUE)

Usage

Getting & Displaying a Page Title for Monthly Archives: single_month_title()

This template tag returns and displays the month's name for using in page titles.

Parameters

This template tag accepts two parameters:

  • $prefix (optional—string):
    Prefix to the title.
    (Default: Empty)
  • $echo (optional—boolean):
    Whether echo (TRUE) or return (FALSE) the tag.
    (Default: TRUE)

Usage

Getting & Displaying the Link for the "Next Posts" Page: get_next_posts_link() & next_posts_link()

These template tags return or display a "next posts" link for post lists (like blog indexes or archive pages).

Parameters

Both template tags accept two parameters:

  • $label (optional—string):
    Text to display for the link.
    (Default: 'Next Page &raquo;')
  • $max_page (optional—integer):
    Maximum page number.
    (Default: 0)

Usage

Getting & Displaying the Link for the "Previous Posts" Page: get_previous_posts_link() & previous_posts_link()

These template tags return or display a "previous posts" link for post lists (like blog indexes or archive pages).

Parameters

Both template tags accept only one parameter:

  • $label (optional—string):
    Text to display for the link.
    (Default: '&laquo; Previous Page')

Usage

Getting & Displaying Links for the "Next & Previous Posts" Pages: get_posts_nav_link() & posts_nav_link()

These template tags let you use navigational "next & previous posts" links.

Parameters

get_posts_nav_link() accepts only one parameter:

  • $args (optional—array):
    An array of the following arguments:
    • 'sep' (string): Separator text
      (Default: ' &#8212; ')
    • 'prelabel' (string): Label for the "previous page" link.
      (Default: '&laquo; Previous Page')
    • 'nxtlabel' (string): Label for the "next page" link.
      (Default: 'Next Page &raquo;')

And posts_nav_link() accepts three parameters:

  • $sep (optional—string):
    Separator text.
    (Default: Emtpy)
  • $prelabel (optional—string):
    Label for the link of the previous page.
    (Default: "&laquo; Previous Page")
  • $nxtlabel (optional—string):
    Label for the link of the next page.
    (Default: "Next Page &raquo;")

Usage

Getting & Displaying the Search Form: get_search_form()

This template tag returns or displays the classic search form.

Parameters

This template tag accepts only one parameter:

  • $echo (optional—boolean):
    Whether to echo (TRUE) or return (FALSE) the output.
    (Default: TRUE)

Usage

Getting & Displaying Current Search Query: get_search_query() & the_search_query()

These template tags return or display the queried search terms.

Parameters

the_search_query() doesn't accept any parameters, but get_search_query() accepts one parameter:

  • $escaped (optional—boolean):
    Whether the result is escaped or not. It should stay TRUE unless you're going to escape the query later.
    (Default: TRUE)

Usage

Getting a Permalink for a Search Query: get_search_link()

This template tag generates a search URL with the given search terms.

Parameters

This template tag accepts only one parameter:

  • $query (optional—string):
    Search terms to build the query.
    (Default: Current search query)

Usage

Getting & Displaying a "Register" or a "Dashboard" Link: wp_register()

This template tag returns or echoes a "Register" link to visitors and a "Dashboard" link for users.

Parameters

This template tag accepts three parameters:

  • $before (optional—string):
    The text or HTML code to display before the output.
    (Default: '<li>')
  • $after (optional—string):
    The text or HTML code to display after the output.
    (Default: '</li>')
  • $echo (optional—boolean):
    Whether echo (TRUE) or return (FALSE) the tag.
    (Default: TRUE)

Usage

Getting & Displaying the "Log In" Form: wp_login_form()

This template tag returns or echoes a login form. Might be useful for themes and plugins to let users log in from the front-end.

Parameters

This template tag accepts only one parameter:

  • $args (optional—array):
    An array of the following arguments:
    • 'echo' (boolean): Whether to echo the template tag or not.
      (Default: TRUE)
    • 'redirect' (string): Where to redirect after a successful login.
      (Default: Back to the current page)
    • 'form_id' (string): ID of the login form's <form> tag.
      (Default: 'loginform')
    • 'label_username' (string): Label of the "username" input field.
      (Default: 'Username')
    • 'label_password' (string): Label of the "password" input field.
      (Default: 'Password')
    • 'label_remember' (string): Label of the "remember me" checkbox.
      (Default: 'Remember Me')
    • 'label_log_in' (string): Label of the submit button.
      (Default: 'Log In')
    • 'id_username' (string): ID of the "username" input field.
      (Default: 'user_login')
    • 'id_password' (string): ID of the "password" input field.
      (Default: user_pass')
    • 'id_remember' (string): ID of the "remember me" checkbox.
      (Default: 'rememberme')
    • 'id_submit' (string): ID of the submit button.
      (Default: 'wp-submit')
    • 'remember' (boolean): Whether to show the "remember me" checkbox or not.
      (Default: TRUE)
    • 'value_username' (string): A default value for the "username" field.
      (Default: Empty)
    • 'value_remember' (boolean): Whether to check the "remember me" checkbox or not.
      (Default: FALSE)

Usage

Getting & Displaying the "Log In/Out" Link: wp_loginout()

This template tag returns or displays a "log in" link for visitors and a "log out" link for logged in users.

Parameters

This template tag accepts two parameters:

  • $redirect (optional—string):
    URL to redirect user to on login or logout.
    (Default: Empty)
  • $echo (optional—boolean):
    Whether echo (TRUE) or return (FALSE) the tag.
    (Default: TRUE)

Usage

Getting the "Log In" URL: wp_login_url()

This template tag simply returns a "log in" link for users.

Parameters

This template tag accepts two parameters:

  • $redirect (optional—string):
    URL to redirect user to when logged in.
    (Default: Empty)
  • $force_reauth (optional—boolean):
    Force users to log in even if they have a cookie.
    (Default: FALSE)

Usage

Getting the "Log Out" URL: wp_logout_url()

This template tag returns a "log out" link.

Parameters

This template tag accepts only one parameter:

  • $redirect (optional—string):
    URL to redirect user to when logged out.
    (Default: Empty)

Usage

Getting the "Lost Password" URL: wp_lostpassword_url()

This template tag returns a "lost password" link for users to, well, retrieve their lost passwords.

Parameters

This template tag accepts only one parameter:

  • $redirect (optional—string):
    URL to redirect user to.
    (Default: Empty)

Usage

Conclusion

Hope you liked this seventh batch of template tags. There's only one more batch to go, so stay tuned for more template tags!

If you have any questions, comments or corrections, you can share your thoughts with us in the Comments section. And if you liked the article, don't forget to share it with your friends!


by Barış Ünver via Tuts+ Code

How to Cultivate Loyal Customers With Social Media

Want long-term customers for your business? Have you used social media to increase customer loyalty? To build customer loyalty, you need to show your customers you care. In this article I’ll share how to use social media to embrace and cultivate loyal customers for your business. #1: Personalize the Fan Experience The key to encouraging […]

This post How to Cultivate Loyal Customers With Social Media first appeared on Social Media Examiner.
Social Media Examiner - Your Guide to the Social Media Jungle


by Ravi Shukle via Social Media Examiner