Beyond Usability: Designing With Persuasive Patterns


  

You probably have a great product. You’ve done your usability deeds and you have a few core customers who regularly use your product. However, it just doesn’t stick out from the competition. It has a high bounce rate, only few users return, users abandon your product faster than you would like and, in general, users never get far enough to experience all that your product has to offer.

Beyond Usability: Designing With Persuasive Patterns

Building persuasive user experiences is like a relationship and you need to treat it like one. So, what do you want? A one-night stand or a lasting partnership? In fact, there are three common challenges when engaging users with a product.

The post Beyond Usability: Designing With Persuasive Patterns appeared first on Smashing Magazine.

Beyond Usability: Designing With Persuasive Patterns
http://www.smashingmagazine.com/2015/10/beyond-usability-designing-with-persuasive-patterns/
http://rss1.smashingmagazine.com/feed/
Smashing Magazine
For Professional Web Designers and Developers

Powered by WPeMatico

Getting (Dis)Connected: Shallow Interaction Design For Deeper Human Experiences


  

Our objects are becoming increasingly connected. My watch is connected to my phone, which is connected to the speaker in my living room, which I can also connect (or not) to the speaker in my bedroom. When I go out to dinner with friends, we have to make a concerted effort to keep our handheld and wearable devices silenced or otherwise placed “in the background” of our social experience, so that we can focus on each other.

Getting (Dis)Connected: Shallow Interaction Design For Deeper Human Experiences

As our artifacts and everything around us become more connected, we run the risk as humans of becoming increasingly disconnected from each other — not in a tragic, dystopian kind of way per se, but in a real way that we need to take into consideration when designing for these experiences.

The post Getting (Dis)Connected: Shallow Interaction Design For Deeper Human Experiences appeared first on Smashing Magazine.

Powered by WPeMatico

AdSense Turns 10 Years Old: Why I’m Grateful for it!

NewImageThis week Google’s AdSense program celebrated its 10 year anniversary with a post on their blog and a G+ Hangout.

While they launched AdSense in June of 2003, I first began to experiment with it on 7th October that year.

I had been blogging for around 11 months by that point and had begun to experiment with the Amazon Associates Program as a way to help me cover my costs of hosting, domains and design.

So I signed up as an AdSense publisher and set up my first ad to put on my blog.

I had no idea what I was doing and so put the ads at the top of my right hand sidebar to see how they would perform.

At that tim,e the only way you’d earn anything from AdSense was if someone clicked the ads so I made them bright pink and green to stand out. Boy, were they ugly!

The next morning, I woke up to discover that I’d earned my first $7 USD from AdSense. I was pretty amazed by this as it was significantly more than I was able to make from Amazon. Over the coming days, I watched in amazement as I continued to earn a few dollars here and there.

It turned out that that first days earnings were artificially high as some of my loyal readers thought it was a good idea to click the ads repeatedly to make me money. Things quickly settled down and by the end of the month I’d earned $42 USD.

By no means was it spectacular money but it was enough to give me a little hope.

I began to experiment with placing a few more ads on the page and tweaking the design and colours I used. I discovered that blending ads into the design of the blog was better than making them stand right out. I also discovered that putting ads into the middle of blog posts worked well.

The results of my experiments were that I quickly saw my income from AdSense rising. The next month I made around $90 from AdSense, the following month – December – around $170 USD.

I began to experiment with a new blog in the months that followed – a camera review blog. This really helped things to grow a lot faster and blogging was fast becoming something I saw as a part time job.

  • May 2004 saw me hit over $1000 in a month for the first time.
  • 7th June saw earnings go over $100 in a single day for the first time.
  • By November 2004 AdSense had allowed me to go full time as a blogger with earnings of close to $10,000 for that month alone.

While there were ups and downs in my earnings over the coming months (in January it all took a big dive due to me falling out of Google Search results for 6 weeks) since then I’ve continued to earn a monthly income from AdSense.

The combined total of what AdSense has earned is well in excess of a million dollars! Yes – I’m glad I started using AdSense back in 2003!

In 2005, I posted here that Blogging had bought my family a house, something that a year before was not even in our wildest dreams. The bulk of that came from AdSense.

These days I don’t put as much focus on advertising revenue (Advertising revenue makes up about 25% of my business revenue these days) but the bulk of that revenue still comes from AdSense.

While I know AdSense is at times looked down on by some bloggers and online entrepreneurs – I for one am grateful for it.

Happy birthday AdSense!

AdSense Turns 10 Years Old: Why I’m Grateful for it!
http://www.problogger.net/archives/2013/06/20/adsense-turns-10-years-old-why-im-grateful-for-it/
http://www.problogger.net/archives/category/adsense/feed/
@ProBlogger» Adsense
Blog Tips to Help You Make Money Blogging – ProBlogger
http://www.problogger.net/wp-content/plugins/podpress/images/powered_by_podpress_large.jpg

Is Google Now Becoming A News Reader Too?

Ever since “stories to read” started appearing in Google Now, I’ve been eager for Google expand the section. Now Google appears to be doing just that. Previously, the stories users saw on Now appeared to be tied to search queries. Users would typically see three or four stories…

Please visit Marketing Land for the full article.

Powered by WPeMatico

Web Development Reading List #107


  

Lately, web development has become very complex. People being full-stack developers often complain to me that they can’t care about all these cool things in front-end development. People doing front-end still complain about having too few things to control the website, make it faster, more reliable.

Dark World Map

This growing gap worries me about the future of usual websites. For big web applications and big websites, it’s great to have all the options and a dedicated front-end performance engineer. But what about an average website? A simple website for a painter can’t cost thousands of dollars.

The post Web Development Reading List #107 appeared first on Smashing Magazine.

Web Development Reading List #107
http://www.smashingmagazine.com/2015/10/web-development-reading-list-107/
http://rss1.smashingmagazine.com/feed/
Smashing Magazine
For Professional Web Designers and Developers

Powered by WPeMatico

Making Time: Redesigning A Calendar Experience For Android


  

In UX design, few things are more intricate than time and personal time management — only a good arsenal of mobile design patterns and information architecture principles can save you. This is the story of redesigning the UX for a popular calenda tool on Android: Business Calendar. We’ll cover designing systems, interaction design problems, scaling across screens and platforms, research, and big business decisions and their outcomes.

Making Time: Redesigning A Calendar Experience For Android

Business Calendar started out as a side project, a one-man show, and is now run by a team of eight in Berlin. The app was very successful right from the time Android entered the mainstream market, and it now has an active user base of 2 million. But instead of modernizing the design and usability regularly, the developers focused on implementing user requests and customization options.

The post Making Time: Redesigning A Calendar Experience For Android appeared first on Smashing Magazine.

Making Time: Redesigning A Calendar Experience For Android
http://www.smashingmagazine.com/2015/07/redesigning-a-calendar-experience-for-android/
http://rss1.smashingmagazine.com/feed/
Smashing Magazine
For Professional Web Designers and Developers

Powered by WPeMatico

Generating SVG With React


  

React is one of today’s most popular ways to create a component-based UI. It helps to organize an application into small, human-digestible chunks. With its “re-render the whole world” approach, you can avoid any complex internal interactions between small components, while your application continues to be blazingly fast due to the DOM-diffing that React does under the hood (i.e. updating only the parts of the DOM that need to be updated).

Generating SVG With React

But can we apply the same techniques to web graphics — SVG in particular? Yes! I don’t know about you, but for me SVG code becomes messy pretty fast. Trying to grasp what’s wrong with a graph or visualization just by looking at SVG generator templates (or the SVG source itself) is often overwhelming, and attempts to maintain internal structure or separation of concerns are often complex and tedious.

The post Generating SVG With React appeared first on Smashing Magazine.

Powered by WPeMatico

How to Give Your Blog Design a Spring Clean

How to Give Your Blog Design a Spring Clean

In this next instalment of the #TodayNotSomeday series on the podcast, we’re moving away from creating email lists, optimising signups, and creating autoresponder mailouts, and focusing on the first thing people see when they come to your blog: the design.

As you know, the series is working through challenges that help you do things today that you’ve been putting off, even though they have huge benefits for your blog in the long term. One of those things is design tweaks. You know the things that niggle at you that you never get around to – the font isn’t quite right, the sidebar needs work, your header could do with an upgrade – but you’ll sort them out one day. Except that day is today!

The way your blog looks, what it makes people feel, what it calls people to do is vital, and it has a huge impact on your blog and how it’s seen.

Today, with a little work on re-optimizing your design, you have the potential to turn more first-time visitors into long-term readers, you invite the reader to stick around longer, you up the chance of them clicking on affiliate links or advertising, comment more, investigate your ebooks, and have a higher chance of them seeing your offered services. All from just a few minutes’ work on your part!

In this episode I discuss the things you should do today that will help you achieve these gains. Of course it depends on what your aims are for the site, so the advice will be slightly different for everyone, but in general, we go through actual steps to optimise your sidebar, navigation, calls to action, and decisions about your entire design. I also share the top 5 things I think every blog should have to make their design eye-catching and user-friendly.

What changes will you make? Share your progress with the #TodayNotSomeday hashtag, and find the show notes for this episode here.

Further Reading:

 

The post How to Give Your Blog Design a Spring Clean appeared first on ProBlogger.

Powered by WPeMatico

Extending In Sass Without Creating A Mess

The @extend directive in Sass is a powerful directive that facilitates the sharing of rules and relationships between selectors. However, it can produce undesirable side effects if it is not carefully implemented. Thankfully, there are many strategies for using @extend effectively that can prevent these side effects and produce clean, organized CSS.

By examining @extend in detail and exploring these various strategies, you can:

  • accurately predict exactly what happens when you use @extend,
  • and make more informed decisions about when to use a @mixin and when to use @extend, to ensure optimal organization and to restrict unused styles in your style sheets.

What Happens When You Use @extend?

Sass’ @extend directive1 does much more than group extended selectors together, as the documentation suggests. Two main things happen when you @extend a selector:

  • the target “simple selector2 is identified;
  • constraints are formed on the target selector using:
    • the selector that’s doing the extending,
    • and the selector that’s being extended.

Let’s break this down with an example. Consider the following code:

.foo.bar { color: green; }

.ancestor .descendant { @extend .bar; } // .bar is being extended
  • The target simple selector is identified as .descendant.
  • Two constraints are formed:
    • .bar (and whatever extends it) must have the class .foo to be green,
    • .descendant must be a descendant of .ancestor.

Using this information, the @extend directive produces this ruleset:

.foo.bar, .ancestor .foo.descendant { color: green; }

The target selector .descendant now fulfills the constraint requirements: It has a class of .foo, and it is an ancestor of .ancestor.

Some common @extend scenarios are listed below. Notice the constraints (requirements) implicitly placed on the target selector and how these constraints are fulfilled in the outputted CSS:

// Extending a selector with an ancestor
.first { color: green; }
.second { @extend .first; }
.ancestor .first { background: white; }

// CSS
.first, .second { color: green; }
.ancestor .first, .ancestor .second { background: white; }

// Extending a selector with a descendant
.first .descendant { color: green; }
.second { @extend .first; }

// CSS
.first .descendant, .second .descendant { color: green; }


// Extending a selector within a compound selector
.one.two { color: green; }
.three { @extend .one; }

// CSS
.one.two, .two.three { color: green; } 


// Extending a selector using a complex selector
.foo.bar { color: green; }
.complex .selector { @extend .bar; }

// CSS
.foo.bar, .complex .foo.selector { color: green; }

// Alternating ancestors
.ancestor-1 .foo { color: green; }
.ancestor-2 .bar { @extend .foo; }

// CSS
// Notice how the ancestors switch places to 
// maintain the general ancestral constraints
.ancestor-1 .foo,
.ancestor-1 .ancestor-2 .bar,
.ancestor-2 .ancestor-1 .bar {
  color: green;
}

// Combinator with common ancestor
.foo.bar + .sibling { color: green; }
.foo .descendant { @extend .sibling; }

// CSS
// Notice how .foo is repeated to preserve
// constraint of .foo.bar
.foo.bar + .sibling,
.foo .foo.bar + .descendant {
  color: green;
}

There are a few takeaways from the examples above:

  • Extending obeys selector constraints.
    In the last example, .descendant is a sibling of .foo.bar, not .foo. It’s also a descendant of .foo, and since .foo can’t be both an ancestor and a sibling, it is outputted twice to maintain those respective constraints.
  • Ancestor and descendant selectors are prone to permutation explosion.
    Ancestors (in the form of .ancestor .descendant) can be anything from parents to grandparents and beyond. When selectors with ancestors extend other selectors with ancestors, all of these permutations must be accounted for.
  • Extending is a one-way operation.
    When .bar extends .foo, .bar is intimately aware of the relationships between .foo and its selectors, but not the other way around. And yes, selectors can reciprocally @extend each other.

Why Use @extend?

The @extend and @mixin directives are not exactly the same. Whereas a @mixin outputs rules that can be copied for multiple selectors and customized via parameters, @extend uses the mechanism described above for rule-sharing that allows it to serve three main purposes:

  • inheritance of rulesets between selectors that can be overridden by the extending selector;
  • traits, or shareable rulesets;
  • relationships between selectors that are maintained when a selector with a defined relationship is extended via combinators (for example, >, +, ~, etc.).

Strategies And Guidelines For @extend

Now that we know how to use @extend and what exactly causes selector explosion, let’s look at some strategies we can implement to properly share styles across selectors.

Use and Extend %placeholder Selectors.

Sass includes a special type of selector called the placeholder selector that is quite literally meant to be used with @extend3. These are very versatile selectors in that they:

  • can be extended, of course;
  • are ignored in CSS output, which can prevent unnecessary output;
  • can be dynamically declared just like any other selector in Sass, meaning you can %do-#{$this}, which gives it a leg up on non-dynamic mixins.

When you @extend %placeholders, the explosive side effects are lessened because you have one less shared selector to combine with in the final CSS output.

Extend a Selector as Few Times as Possible.

Consider the following example of inheritance by extending a parent (placeholder) selector:

// Don't do this:

%button {
  // … parent button styles
}

.button {
  @extend %button;
  // … button styles
}

.button-primary {
  @extend %button;
  // … primary button styles
}

.button-secondary {
  @extend %button;
  // … secondary button styles
}

// CSS - we want to avoid this:
.button, .button-primary, .button-secondary {
  // button styles
}

.button-primary { /* … */ }
.button-secondary { /* … */ }

When extending the same selector multiple times, ask yourself, What do all these extending selectors have in common? Then, you can limit how often a selector is extended by refactoring using a common selector, such as .button.primary, instead of .button-primary, so that the only extension is .button { @extend %button; }.

Extend Traits Selectively, and Consider Mixins for Short Traits.

The previous strategy can be difficult to accomplish with traits, which by definition can be shared among many selectors that are otherwise unrelated. Traits, in general, do not have hierarchical constraints; that is, they (usually) are agnostic to the relationship between the selector using it and other selectors. Therefore, they can be used with @extend or @mixin.

I would (personally) choose to @extend a trait with many rules. The outputted CSS will group unrelated selectors with the trait ruleset, although this isn’t a huge concern — style sheet maintenance occurs in your .sass or .scss files, not your .css files, and there are few performance trade-offs, in general.

On the other hand, I would use @mixin for rulesets that are terse and frequently used, such as clearfix. Extending it would cause the CSS to output a large number of selectors for this small trait. Using it as a mixin will make the outputted CSS much more readable, and repetition is OK because the ruleset is small.

So, here are some general guidelines for using traits:

  • Extend traits that have long rulesets or are infrequently used.
    This keeps your outputted CSS DRY and helps to group rulesets in your CSS for increased clarity in browser debugging.
  • Mixin traits that are more generalized, short and frequently used.
    You can @extend these types of traits, but you’re more at risk of selector explosion.
  • Stick repeated rulesets in a %placeholder trait or a @mixin.
    This is just a general good practice to keep your SCSS as DRY as possible.

Use @extend for Relationships.

This is one of the most important uses of @extend. Relationships between selectors in your style sheets can get quite complex, and @extend is the perfect tool for the job — you cannot express relationships with @mixin alone. A relationship between selectors is expressed with a combinator4, such as >, +, ~ or the white space ancestor combinator. Many different types of relationship can exist in CSS, even not-so-obvious ones:

  • .parent > .child
  • .ancestor .descendant
  • .sibling ~ .sibling
  • .sibling + .adjacent-sibling
  • .sibling + * ~ .non-adjacent-sibling
  • .parent > * > .grandchild
  • .parent > * .non-child-descendant
  • .uncle ~ * > .nephew
  • * + *, the any-adjacent-sibling relationship, or the lobotomized owl selector5

CSS enables us to define styles for selectors based on their relationships with other selectors. These relationship-defining selectors that use combinators are called complex selectors, and they have higher specificity than their standalone simple or compound selector parts. Styles defined as a relationship, therefore, have greater prevalence than styles defined in standalone selectors.

The following strategies address how to extend with relationships in depth.

Define Relationships via Placeholders, Not Classes.

Remember what happens when you have two ancestral relationships (such as .foo .bar {…} .baz .qux { @extend .bar; })? Being aware that multiple extended ancestral relationships are prone to selector explosion, we should always define our relationships once, and keep them one-sided. And what better place to define relationships than in %placeholder selectors, to reduce CSS output?

Let’s say you want buttons to be styled a little differently in modals, and you want a little space between adjacent buttons. Here’s how that relationship would look like using placeholders:

%button {
  // … button styles

  + %button {
    margin-left: 1rem;
  }
}

%modal {
  // … modal styles
  
  %button {
    // … modal-specific button styles
  }
}

// "Exported" classes
.button { @extend %button; }
.modal { @extend %modal; }

Notice that two relationships are defined: the sibling %button + %button relationship and the ancestral %modal %button relationship. These relationships are defined only once in the placeholders, and the outputted CSS is exactly what we’d expect:

.button { /* … button styles */ }
.button + .button { margin-left: 1rem; }

.modal { /* … modal styles */ }
.modal .button { /* … modal-specific button styles */ }

Represent One Selector Per Placeholder in Relationships.

This follows the first strategy: Extend a selector as few times as possible. When writing markup and CSS selectors, having as few selectors represent an entity as possible will prevent selector explosion, even if it means you have to add a semantic class to the markup to eliminate selectors.

%button { // … button styles }

// Avoid this:
button, input[type="button"], input[type="submit"], .button {
  @extend %button;
}

// Try this instead, and add the class .button
// for every type of button in the HTML
.button {
  @extend %button;
}

Be Wary of Descendant and General Sibling Combinators.

These two combinators — .ancestor .descendant and .sibling ~ .general-sibling, respectively — are the most prone to selector explosion. Why? Their constraints are less strict than other combinators. A descendant can be a child, grandchild, etc. A general sibling can be adjacent, one ahead, two ahead, etc.

If two complex selectors both have descendant or general sibling combinators, then all possibilities must be accounted for in the outputted CSS. That’s why you should make sure that only the extendee or extender has a descendant or general sibling combinator, not both. Following the guidelines above on extending only from %placeholders is a good way to enforce this.

%modal {
  // … modal styles
  
  // Relationship: a %button that is a descendant of %modal
  %button { /* … modal-button styles */ }
}

// Don't do this!
.modal {
  @extend %modal;

  // This is unnecessary - the relationship
  // is already defined!
  .button { @extend %button; }
}

// Do this - keep it simple!
.modal { @extend %modal; }
.button { @extend %button; }

Have Separate Placeholders for Modifiers.

By having separate %placeholders to represent modified components, you can extend without the risk of confounding compound and/or complex selectors. For example, @extend %button%active; is risky, but @extend %button-active; is not.

%button {
  // … button styles

  &-active { // same as %button-active
    // … active button styles
  }

  &-disabled {
    // … disabled button styles
  }
}

.button {
  @extend %button;

  &.active { @extend %button-active; }
  &:disabled { @extend %button-disabled; }
}

Use @extend Inside Similar Media Queries.

You’re probably thinking, “I thought that using @extend in media queries is currently not possible.” This is partially true, but also slightly misleading. The truth is that you can only extend a selector in the same media query, and, for all intents and purposes, this is sufficient.

What is important, however, is that your selectors are meaningful, in that you can declare them with proper intent. If you are trying to extend an outside selector inside a media query, that’s a clear conflict of interests — one selector’s intent is to be generally applied, while the other’s intent is to be applied only within the current media context.

For instance, the SCSS below will not work because of the media query restriction and, more importantly, because the intent is not clear:

%panel {
  display: block;
  float: left;
  width: 100%;
  // … other panel styles
}

%panel-half { width: 50%; }

.panel {
  @extend %panel;

  &.half { @extend %panel-half; }
}

// This will NOT work and will throw this error:
// You may not @extend an outer selector from within @media.
// You may only @extend selectors within the same directive.
@media (max-width: 700px) {
  .panel-mobile {
    @extend %panel;

    &.half { @extend %panel-half; }
  }
}

So, what went wrong here? In defining %panel, the intent was, “This panel should have this styling in general,” whereas we were trying to export .panel-mobile as “This panel should have this styling only in this media query context.” This is a clear miscommunication.

The solution to this is to match extendee intent with extender intent, especially regarding @media queries. In other words, if you want an extender to carry certain styling only for a specific media query, it should extend only within the same @media query or, alternatively, break out of the @media query with @at-root.

Let’s see how we can revise our code with the above two suggestions:

// Solution 1: Extend within the same media query
%panel { /* … */ }
%panel-half { /* … */ }

// Define extendees with the same intent as extenders
@media (max-width: 700px) {
  %panel-mobile { /* … */ }
  %panel-mobile-half { /* … */ }
}

.panel {
  @extend %panel; 

  &.half { @extend %panel-half; }

  // This WILL work!
  @media (max-width: 700px) {
    &-mobile {
      @extend %panel-mobile;

      &.half { @extend %panel-mobile-half; }
    }
  }
}
// Solution 2: Break out of '@media' with '@at-root'
%panel {
  display: block;
  float: left;
  // … other panel styles
}

// Separation of intent
%panel-full { width: 100%; }
%panel-half { width: 50%; }

@media (max-width: 700px) {
  %panel-mobile-full { width: 100%; }
  %panel-mobile-half { width: 50%; }
}

.panel {
  @extend %panel;

  &.half { @extend %panel-half; }

  @media (max-width: 700px) {
    &-mobile, &-mobile-half {
      // General panel styling intent is maintained
      @at-root (without: media) { @extend %panel; }
    }

    &-mobile {
      @extend %panel-mobile-full;

      &.half { @extend %panel-mobile-half; }
    }
  }
} 

Use @extend With :matches() in the Future.

Sometimes, it’s difficult to adhere to the guideline that you should @extend a selector as few times as possible. Take the HTML headings, for instance: h1, h2, h3, h4, h5, h6. There are six of them, and they all can’t be selected with a single simple selector. One solution would be to give them all a class of .heading, but if you’re building for the future, there’s a better way.

Enter CSS 4’s :matches() pseudoselector6. This selector allows you to somewhat mimic @extend functionality in native CSS, without the selector explosion (which we’ve learned how to avoid). The best part is, Sass plays nicely with :matches() and related pseudoselectors. Let’s style our headings to demonstrate:

// With :matches()
:matches(%heading) {
  // … heading styles
}

// Relationship: any heading that is a descendant of %section-foo
%section-foo :matches(%heading) { /* … */ }

h1, h2, h3, h4, h5, h6 {
  @extend %heading;
}

.section-foo { @extend %section-foo; }

// CSS output - much better than this selector explosion:
// .section-foo h1, .section-foo h2, .section-foo h3, .section-foo h4, .section-foo h5, .section-foo h6
.section-foo :matches(h1, h2, h3, h4, h5, h6) {
  // … section-foo heading style
}

Today, you’ll have to use :-webkit-any() and :moz-any() in place of :matches() in WebKit browsers and Firefox, respectively, until they natively support :matches(). With Internet Explorer, you’re out of luck (no surprise there). This is a good guideline to keep in the back of your mind until CSS 4 is implemented in all modern browsers.

Conclusion

The @extend directive is nothing to fear, and it’s very versatile. Understanding how @extend works and keeping the guidelines above in mind will enable you to use @extend to its full advantage — reducing CSS output and keeping relationships intact, no matter what exported selectors (classes, attributes, etc.) you use. Make wise use of both the @mixin and @extend directives — they’re meant to coexist in your well-organized style sheets.

(rb, al, ml)

Footnotes

  1. 1 http://sass-lang.com/documentation/file.SASS_REFERENCE.html#extend
  2. 2 http://dev.w3.org/csswg/selectors-4/#simple
  3. 3 http://sass-lang.com/documentation/file.SASS_REFERENCE.html#placeholder_selectors_
  4. 4 http://dev.w3.org/csswg/selectors-4/#combinator
  5. 5 http://alistapart.com/article/axiomatic-css-and-lobotomized-owls
  6. 6 http://dev.w3.org/csswg/selectors-4/#matches-pseudo

The post Extending In Sass Without Creating A Mess appeared first on Smashing Magazine.

Extending In Sass Without Creating A Mess
http://www.smashingmagazine.com/2015/05/04/extending-in-sass-without-mess/
http://www.smashingmagazine.com/feed/?#
Smashing Magazine
For Professional Web Designers and Developers

Powered by WPeMatico

Breaking It Down To The Bits: How The Internet, DNS, And HTTPS Work


  

Smashing Magazine is known for lengthy, comprehensive articles. But what about something different for a change? What about shorter, concise pieces with useful tips that you could easily read over a short coffee break? As an experiment, this is one of the shorter “Quick Tips”-kind-of articles — shorter posts prepared and edited by our editorial team. What do you think? Let us know in the comments! —Ed.

If we want to build high performance applications, we have to understand how the individual bits are delivered.

The Internet is the foundation of our craft. But what do we actually know about its underlying technology? How do DNS, networks and HTTPS work? What happens in the browser when we type a URL in the address bar?

The post Breaking It Down To The Bits: How The Internet, DNS, And HTTPS Work appeared first on Smashing Magazine.

Powered by WPeMatico

WordPress.com or WordPress.org? Which One’s Right for You?

This guest post is by Matt Hooper.

When you first start looking at building your own blog, you are going to be inundated by the different options that are out there. After considering all your options, hopefully you’ll come to your senses and realize that WordPress is your best option.

As a reward for all this deliberating you are now presented with one more decision. Do you choose .org or .com? And we’re not talking about your domain name. You, along with many others, might be surprised to find out that there are actually two different kinds of WordPress.

WordPress.com is a version of WordPress that is hosted by Automattic, the development team behind WordPress. WordPress.org is often referred to the self-hosted version of WordPress. The two are very similar but there are a few differences that you need to be aware of before you finally get down to work on your blog.

WordPress.com

WordPress.com is the safest way to go, as there are a lot of mechanisms in place to make sure that you don’t accidentally break it or prevent it from working the way it was intended to.

This means that it is nearly impossible for a beginner to render their site unusable. It also means that you are unable to really make use of some of the more advanced, and fun, features of WordPress. I’ll get to those below, but let’s take a closer look at what WordPress.com has to offer first.

The biggest selling feature of WordPress.com is the fact that everything is free and easy to use. You can head over there right now, sign up for a free account, and be blogging before you know it. You won’t even need to invest in a domain name if you don’t want to. Without any expense, you are able to have a website of your own at a domain like yourname.wordpress.com.

That’s right: you don’t even have to purchase a domain name to get started. However, going from a yourname.wordpress.com domain to yourname.com in the future is going to hurt your search engine rankings. This is something that you might want to consider before going the totally free route.

In the event that you are even remotely serious about creating a blog, you’re best to start off with your own domain. You can have your own domain name at WordPress.com for an extra $12 per year plus the cost of the domain itself.

On November 29, 2011 WordPress announced WordAds. Only WordPress.com hosted sites with custom domains and “moderate to high traffic and appropriate content” are eligible to apply for the WordAds program. WordAds appears to be a viable monetizing option for WordPress hosted sites that have established audiences. This does not appear to be an option for new WordPress.com sites.

The barrier to entry is extremely low here so it can be very appealing to the less technically inclined. For hobbyists or people interested in just kicking the tires, WordPress.com is a good starting point. However, if you are at all serious about moving forward with your blog, you’re going to quickly run into the limitations of WordPress.com.

WordPress.org

WordPress.org is the version of WordPress that you have to host yourself. This means that if you use wordpress.org, you have to go out and find a web hosting company to host your blog. This may result in you having to paying for services before you even hit Publish on your fist post.

The good thing is that some hosting companies may give you a short grace period to try out their service before you get your first bill. Then, after you get going, you’ll be looking at a cost of anywhere from a $5 to $10 per month for a shared host.

You’ll also have to buy your own domain to use with your blog—you won’t even have the option not to. Again, some hosts will give you one domain for free when you signup. This also means that you can add additional domains for just the cost of the domain, since you already have the host.

After you have decided on a shared host of your choice, you are going to have to install WordPress in your hosting account. Don’t fret: most shared hosts worth using will have a “one-click install” for WordPress, so it’s not too complicated to get WordPress installed. In the event that you do have any problems, most good shared hosts will help you out.

Once this has been completed, you will have free rein to do whatever you wish with your shiny new WordPress installation. This also means that you get access to two of the best features of WordPress that I alluded to above: plugins and custom themes.

Themes are what control the look and feel of your blog, colours, layouts, fonts, etc. Yes, it’s true that you are able to pick a theme while using WordPress.com but there is a limited selection and you are not able to do much customization to the theme itself. If you know your way around CSS, you can pay an additional $30 per year to have the ability to modify the CSS.

Even if you get to the CSS of your WordPress.com site, you still have a limited selection of themes to choose from. At least with WordPress.org, you have the choice of using the same out-of-the-box free themes as on WordPress.com or to pay a bit extra for a premium or custom theme.

But the killer feature of WordPress.org has got to be the ability to add plugins, which are not available with WordPress.com. Plugins are add-ons that expand the core functionality of WordPress. As an example, if you want to be able to scan your entire site to make sure there are no broken links, there is a plugin for that. There are countless other plugins for WordPress that will:

  • compress images
  • enhance SEO
  • create contact forms
  • lightbox images
  • and much, much more!

Initially, having FTP access to your blog might not matter to you, but as you grow into your blog, you might want to have the ability to modify and move files around on your web host’s server. This is something that you get with a self-hosted site running WordPress, that you can’t ever get with a WordPress.com blog.

Probably the most important feature of using WordPress.org is you get to make money with your blog. You’re free to use anything from Adsense to affiliate promotions. You’ll even have the option of creating and selling your own products through your site. And if the need arises, you can turn a WordPress.org site into a full-blown ecommerce solution.

That said, it’s not all roses with a self-hosted blog. There are two major things missing with WordPress.org that you get with WordPress.com: backups and protection from extreme traffic spikes.

There aren’t many safety nets with a self-hosted site, so make sure you back it up often. WordPress.com takes care of this for you. A good web host usually performs regular backups, but most will tell you that they don’t guarantee anything. So whatever you do, make sure that you perform your own WordPress backups frequently.

In the event that your blog does get popular overnight, it could buckle under the added traffic. Don’t worry: the stability of your site can be beefed up through the use of a good caching plugin, like W3 total cache. Also, it isn’t too difficult to upgrade your hosting at some point in the future when your site starts getting massive traffic. This would be a good problem to have!

Wrapping it up

I have to admit that after being so accustomed to the flexibility of WordPress.org, I would have a hard time being happy with a WordPress.com blog. If you have any aspirations of taking your blog past the hobby stage, you should just start out with a self-hosted site.

It is possible to move a WordPress.com hosted site to a self-hosted site later on. However, presuming that you might consider starting with a WordPress.com site and moving to a self-hosted site later on, you’re best to just start out with a self-hosted site.

That said, if you are comfortable living within the limitations of WordPress.com, and you want to never have to deal with the technical details of a blog, then a WordPress.com hosted blog might be all that you need.

WordPress.com is great if you are looking to keep an online journal or for small clubs and the like. Due to the fact that you are reading this site, I expect you’re interested in making a business out of your blog. On that note, at some point in the future you will end up with a WordPress.org website. Save yourself the fuss and the hassle of trying to transition your site later on. You’ll be happy you did.

The initially-free option of WordPress.com could actually result in higher costs down the road. After you start piling on extra fees for a custom domain, ad removal, extra storage space (you only get 3GBs to start), plus the ability to use custom CSS in your blog design, you really aren’t saving much, if any, money on WordPress.com, and you have to deal with its limitations.

Finally, and this is a big “finally”, you don’t own a WordPress.com website. After you’ve spent all that time to build a blog and an audience, do you really want to wake up one morning and find out that WordPress.com didn’t like your site so they deleted it? There isn’t a strong chance of this happening, but you should be aware that it could.

Have you been trying to decide between WordPress.com and WordPress.org? What challenges are you facing?

Matthew Hooper helps individuals, small businesses and organizations build an internet presence. You can get his free guide on building an internet presence or check out his online WordPress course full of step-by-step videos so that you can learn WordPress in a single weekend.

The post WordPress.com or WordPress.org? Which One’s Right for You? appeared first on ProBlogger.

WordPress.com or WordPress.org? Which One’s Right for You?
https://problogger.com/wordpress-com-or-wordpress-org-which-ones-right-for-you/
http://www.problogger.net/archives/category/blog-networks/feed/
Blog Networks – ProBlogger
Blog Tips to Help You Make Money Blogging – ProBlogger
https://problogger.com/wp-content/uploads/powerpress/problogger_podcast-891.jpg

Powered by WPeMatico