Thursday, March 3, 2016

Bryant Hughes

opl-small

Gorgeous spacing design in this personal One Pager for Chicago-based web developer, Bryant Hughes. The Single Page website features a lovely load transition and slick diagonal section dividers that subtly reveal background mountain peaks. Neat touch with the flying birds over the mid section mountain peak. Reminds me a lot of the We Ain't Plastic One Pager.

by Rob Hope via One Page Love

Top 6 Most Powerful Latest #SEO Strategies 2016 with Tips & Tools - #infographic

Top 6 Most Powerful Latest #SEO Strategies 2016 with Tips & Tools - #infographic

The digital world is like a noisy classroom, where you’re fighting with twenty other kids to get your answer on the chalkboard. So, how do you get called upon by the teacher? It’s not by having the right answer, because your teacher doesn’t know your response until she’s Chosen you. It’s by getting noticed. You and every other website are competing for the online viewer’s attention, so if you don’t know how to ensure your website is being seen, then you risk sitting at the back –and the first step is to evaluate your SEO strategy. SEO, or search engine optimisation, is the practise of creating a digital presence that works in sync with search engine algorithms. Through correct use of keywords, quality of content, and other factors, you can ensure that when your potential reader or customer searches your niche market in their engine of choice, your page is ranked higher and therefore more likely to be seen. Once upon a time, it was as simple as cramming keywords onto the page, but search engines are become more intuitive, and are now paying attention to more discreet indicators of the value of your page. Check out this handy infographic created by dilate, on how to get your SEO strategy right to the front.

by Irfan Ahmad via Digital Information World

7 New Fonts You Probably Haven’t Considered Using (…But Should)

This article was sponsored by The Hungry JPEG. Thank you for supporting the sponsors who make SitePoint possible.

With a few notable exceptions, great typefaces are not like hit pop records. They don't arrive like a flaming comet, burn bright and disappear just as quickly into the night.

Typography tends to be more of a slow burn – like a great off-broadway stage show. Over the course of a year, you might hear the whispers, the gradually warming reviews and the slowly increasing buzz. You should grab a ticket, right?

But then BAM! – the show hits Broadway and is now the hottest ticket in town. You missed your shot.

Today, I want to spotlight 7 fonts that I hope are on their way to Broadway. Each is thoughtfully designed, unique, and under $20.

1. Albori Sans

Albori Sanshttp://ift.tt/1RLtfkl

Let's start with Albori Sans – a laser-sharp, geometric Bauhaus update. This is a typeface that looks as if it could have been crafted in a bicycle workshop. I'd love to see it used in neon signage.

It comes in Thin, Light, and Regular weights though in larger sizes I think it looks best in its laser thin variety.

Possible uses: High-end design, science, engineering, architecture, tertiary education, industrial design, aerospace.

2. Quincy CF

Quincy CF

Quincy has a particularly lovely uppercase 'Q' and I suspect that explains the choice of name – a chance to show off the Q. It is a rounded, bookish serif font appropriate for use in body texts as well as headers. It's available in 10 weights.

I like Quincy because it fuses together some nice characteristics from other big name serif typefaces. It has the old-school grace of Caslon, minus the stuffiness. It has some of the charm of Cooper without the goofiness, while bringing in the sensible respectability of a Georgia.

The low x-height means this is a typeface that never shouts, but always speaks in cogent, thoughtful tones. I could see Quincy working great in food, classical music or fashion blogs.

Possible uses: Cooking, creative writing, fashion, music, artisanal crafts, magazine layouts.

3. Brela

Brela

Brela is a sharp serif with a metal-cut punch to it. Although most glyphs maintain a sense of symmetry and balance, there is a jaunty edge to some characters that gives Brela extra life. For instance:

  • The lowercase 'y' has a slightly wedge-shaped tail
  • The lowercase 'e' has a tapering crossbar

Wedge 'y' and tapered 'e'

Brela only comes in one weight, but hey, it's free. What do you want for nothing?

The lack of variety in weights would probably prevent you from using it in any role that required a lot variety – magazine layouts for instance. However, that slightly irreverent edge makes Brela well-suited any branding that needs an upstart quality – which could mean anything from a financial services startup to an inner-city coffeehouse.

Possible uses: Startups, digital publishing, copywriters.

Continue reading %7 New Fonts You Probably Haven’t Considered Using (…But Should)%


by Alex Walker via SitePoint

Easy AngularJS Authentication with Auth0

Authentication for single page apps can be a tricky matter. In many cases, SPA architecture involves having an isolated front-end application with a framework like AngularJS, and a separate backend that serves as a data API to feed the front-end. In these cases, traditional session-based authentication that is done in most round-trip applications falls short. Session-based authentication has a lot of issues for this kind of architecture, but probably the biggest is that it introduces state to the API, and one of the tenets of REST is that things remains stateless. Another consideration is that if you ever want to use that same data API as a backend for a mobile application, session-based authentication won't work.

JSON Web Tokens

[author_more]

To get around these limitations, we can use JSON Web Tokens (JWT) to add authentication to our single page apps. JWT is an open standard and provides us a way to authenticate requests from our front end AngularJS app to our backend API. JWTs are more than just a token though. One of the biggest advantages of JWTs is that they include a data payload that can have arbitrary JSON data in the form of claims that we define. Since JWTs are digitally signed with a secret that lives on the server, we can rest assured that they can't be tampered with and the data in the payload can't be changed before reaching the backend.

Authentication for Angular Apps

JWTs are a perfect solution for adding authentication to our AngularJS apps. All we need to do to access secured endpoints from our API is save the user's JWT in local storage and then send it as an Authorization header when we make HTTP requests. If the user has an invalid JWT or no JWT at all, their request to access the protected resoures will be denied, and they will get an error.

Unfortunately, this would be just the bare minimum for handling authentication in AngularJS apps. If we care at all about user experience, there are a few other things we need to do to make sure our apps behave as one would expect. We need to:

  • Conditionally show or hide certain elements depending on whether the user has a valid JWT (e.g.: login and logout buttons)
  • Protect certain routes that an unauthenticated user shouldn't be able to access
  • Redirect the user to the home or login state if their JWT expires or when they log out

In this article, we'll implement authentication from start to finish in an AngularJS app, and we'll even create a small NodeJS server to see how to make requets to a protected resource. There are a lot of details around setting up a user database and issuing JWTs, so instead of doing it on our own, we'll use Auth0 to do it for us. Auth0 provides a free plan for up to 7,000 active users, which gives us plenty of room in many real world applications. We'll also see how we can easily add a login box and even use social authentication with Auth0.

To see all the code for this tutorial, check out the repo.

angular authentication auth0

Sign up for Auth0

The first thing you'll need for this tutorial is an Auth0 account. When signing up for an account, you will need to give your app a domain name which cannot be changed later. Since you can have multiple apps under the same account, how you name your domain will depend on your situation. In most cases, it's best to name it with something that is relevant to your organization, such as your company's name. If it makes sense, you can also use your application's name--it's up to you. Your Auth0 domain takes the pattern your-domain.auth0.com and is used when configuring the Auth0 tools that we'll see below.

Once you've signed up, you'll be asked what kind of authentication you'd like for your application. It's fine to leave the defaults in place, as you'll be able to change them later.

After you have signed up, head over to your dashboard to check things out. If you click the Apps / APIs link in the left sidebar, you'll see that your account gets created with a Default App. Click the Default App to see your credentials and other details.

angular authentication auth0

Right off the bat we should fill in our Allowed Origins. This field is used to tell Auth0 which domains are allowed to make requests to authenticate users. We'll be using http-sever in this tutorial, which has a default origin of http://localhost:8080.

With Auth0's free plan, we are able to use two social identity providers, such as Google, Twitter, Facebook and many others. All we need to do to make them work is flip a switch and this can be done in the Connections > Social link in the dashboard.

Install the Dependencies and Configure Auth0

We'll need a number of packages for this app, some of which are provided by Auth0 as open source modules. We'll also use Angular Material to get some nice styling.

# Angular related modules
npm install angular angular-material angular-ui-router angular-aria angular-animate

# Auth0 related modules
npm install angular-jwt angular-storage auth0-angular

# To serve the app (if not already installed)
npm install -g http-server

Next, let's set up our app.js and index.html files to bootstrap the application. At this time we can let Angular know which modules we need access to from the dependencies we installed.

// app.js

(function() {

  'use strict';

  angular
    .module('authApp', ['auth0', 'angular-storage', 'angular-jwt', 'ngMaterial', 'ui.router'])
    .config(function($provide, authProvider, $urlRouterProvider, $stateProvider, $httpProvider, jwtInterceptorProvider) {

      authProvider.init({
        domain: 'YOUR_AUTH0_DOMAIN',
        clientID: 'YOUR_AUTH0_CLIENT_ID'
      });
    });
})();

Here we've configured authProvider from auth0-angular with our credentials from the dashboard. Of course, you'll want to replace the values in the sample with your own credentials.

<!-- index.html -->
<!DOCTYPE html>
<html lang="en" ng-app="authApp">
<head>
  <meta charset="UTF-8">
  <title>Angular Auth</title>
  <link rel="stylesheet" href="node_modules/angular-material/angular-material.css">
  <!-- Auth0 Lock script and AngularJS module -->
  <script src="//cdn.auth0.com/js/lock-8.2.min.js"></script>

  <!-- Setting the right viewport -->
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
</head>
<body>

  <!-- TODO: create the toolbar and ui-view -->

  <script src="node_modules/angular/angular.js"></script>
  <script src="node_modules/angular-animate/angular-animate.js"></script>
  <script src="node_modules/angular-aria/angular-aria.js"></script>
  <script src="node_modules/angular-material/angular-material.js"></script>
  <script src="node_modules/angular-jwt/dist/angular-jwt.js"></script>
  <script src="node_modules/angular-storage/dist/angular-storage.js"></script>
  <script src="node_modules/auth0-angular/build/auth0-angular.js"></script>
  <script src="node_modules/angular-ui-router/release/angular-ui-router.js"></script>
</body>
</html>

Notice here that we're bringing in the Auth0Lock widget script from Auth0's CDN. This is the script that we'll need to show the login box that Auth0 provides. By setting the viewport like we have, we make sure that the widget shows up properly on mobile devices.

Continue reading %Easy AngularJS Authentication with Auth0%


by Ryan Chenkie via SitePoint

Getting Started with Foundation 6’s CLI Tools

The recently released Foundation 6 gives you many ways and tools to use it. You can download the static files, or you can use Yeti Launch, a special desktop app for Mac (soon there will be a Windows version).

A lesser-known feature is a set of command line tools available with Foundation 6, and that’s what I will cover in this article. Foundation 6 is a really flexible front-end framework, which, besides many obvious CSS features and JavaScript plugins, also has great developer tools.

[author_more]

When Might I Want to Use Foundation’s CLI Tools?

You’re probably asking why you should bother with CLI tools when you have access to the static JavaScript and CSS files, which works just fine. You probably need standard structures and an easy-to-use workflow, and that’s ok.

I’m sure you can achieve your goals that way, but I know that there are many developers who want to gain more control over the build process. This would include SCSS compilation, concatenation, minification, image optimization, and templates. I prefer to have access to these extra tools. And so there are use cases where CLI tools might be a better option.

If you work regularly with the command line but don’t know exactly what Foundation 6 has to offer in this area, or you don’t work with the command line and maybe want to learn something new, then this article is for you.

Up and Running

To get started there are some prerequisites. You’ll need to have NodeJS installed and also the npm tool that should be installed with NodeJS. You also need Git, Gulp, and Bower, all of which our foundation-cli will use. You can install these by running the following command:

[code language="bash"]
$ npm install --global gulp bower
[/code]

On some systems you’ll need super user access, especially when installing something with npm globally, so you might need to use sudo before the commands described in this post.

Installing foundation-cli

If you already have the Foundation 5 CLI on your machine, you’ll only be able to access one of the commands, depending on how your command line environment is configured. So it’s better to remove the old tools first. You can do this with the following commands:

[code language="bash"]
$ gem uninstall foundation
$ npm uninstall --global foundation-cli
[/code]

Then install the new CLI tools:

[code language="bash"]
$ npm install --global foundation-cli
[/code]

You can read more about the installation in Foundation’s documentation.

If you don’t want to install foundation-cli on your system and you have installed Gulp and Bower in the past, you can simply clone the repository with the Foundation template and then instead of using the foundation command, you can use the gulp and npm commands. Everything should work the same way as when using foundation-cli.

What Does Foundation CLI Give Me?

As mentioned, Foundation CLI uses Gulp and Bower under the hood. What are Gulp and Bower? Gulp is a toolkit that will help you automate painful or time-consuming tasks in your development workflow. Here, we can think of SCSS compilation, minification, concatenation, but also image compression or other useful tasks. Bower is a package manager for the web, which lets you download and install front-end libraries via the command line. For example, installing jQuery is a one line command: bower install jquery.

Foundation CLI downloads and installs blank templates for any of the three Foundation frameworks: Sites, Apps, and Emails. All of these templates are ready to work with Gulp and Bower, with preconfigured Gulp tasks and Bower installation sources. This is similar to a tool like Yeoman.

Using Foundation CLI

When you’ve installed foundation-cli, you can start using it by running:

[code language="bash"]
$ foundation new --framework sites --template zurb
[/code]

As you can see, we use foundation as the name and not foundation-cli. Also, we’ll only take a look at the Foundation for Sites zurb advanced template. We need to use the --framework flag to choose the proper framework and also the --template flag to choose the proper template. You can also choose the basic template, but I think the advanced is much better if you want to take a closer look.

After the installation, you should have a project folder with the name you’ve provided during the installation. Also, all dependencies should be installed there. All you need to do now is cd into the newly created project and inside the folder you can run:

[code language="bash"]
$ foundation watch
[/code]

Here comes the magic! What this does is run the Gulp build and server tasks and also the watch command. This means it triggers all configured Gulp tasks, which you will be able to see in the code. So when you run this command you should see some information in the console. The most important for now are:

Continue reading %Getting Started with Foundation 6’s CLI Tools%


by Julian Ćwirko via SitePoint

A Masochist’s Guide to Bootstrapping Your SaaS Startup to Profitability

Rockclimbing

Alright, let’s start by addressing the elephant in the room.

Why is this a guide for “masochists”? Does that exclude you (the reader - probably not a masochist)?

I can assure you that your startup will not be causing you any physical pain.

But undeniably, it’s a gruelling process that many describe as an emotional rollercoaster, and if you’re bootstrapping, consider that the rollercoaster is going to go on for quite some time.

[author_more]

Luckily, we’re here to help you enjoy the ride.

I’ve spent 1.5 years bootstrapping NinjaOutreach to profitability, and although it’s impossible to tell you exactly how your startup can become profitable, I can provide you with a strategic outline on what you should be thinking.

Determining Your Run Rate...And Other Questions Involving Money

Here’s a question for you: how much money do you have to put into your startup?

The simple answer is probably, “well, I have $X in my bank account, so I guess $X.”

Wrong.

The answer is much more complex than this.

Consider that in order to bootstrap your startup to profitability, you have to support yourself, and the business, long enough for the business to pay its own bills.

In order to derive the answer, ask yourself these questions:

How much money am I willing to put into the business?

Have you ever watched those episodes in Shark Tank where someone steps forward to present a business that has barely made any money, despite the fact that they’ve invested tens of thousands of dollars into it?

That’s the part when the Sharks usually go “wow”, and not in a good way.

A startup can very easily turn into a money suck. After you invest the first thousand, it becomes that much easier to invest one more thousand.

And so on and so forth, until you’ve eventually invested tens of thousands of dollars into a business that you have only budgeted $5k for.

Honestly, I’ve been there.

However, it doesn’t do anyone any good to dump all of their savings into a potentially failing startup.

My advice is to think critically about what the maximum you can really afford to put into your startup is. Consider also that you have to live and likely have other bills to pay. Then, take that money and put it in a separate bank account for your startup - that degree of separation will seriously help you if you ever start to run out (and it will help you be more aware that you’re about to run out, too).

If you do get to the end, it doesn’t mean that you have to pull the plug on your business, but it does mean you have to present a case to yourself (and potentially your spouse), as to why another investment on your part is worth it.

How am I going to spend that money?

You may just be starting your startup, but you should have an idea as to what your monthly expenses will be, at least to the nearest few thousand (and potentially, few hundred).

At the end of the day, there’s typically a few major things you will spend money on:

  • Tools - These are things like software and web apps that you need to manage and grow your business.
  • Employees - These are the people you hire to build and run the startup. This is usually the biggest cost.
  • Services - These can be things like accounting, legal, hosting, etc.
  • Company - These are costs for incorporating, taxes, etc.
  • Marketing - These are any paid channels you’ll be advertising on or using to acquire customers.

What your actual breakdown is will vary, but suffice to say that you should be able to look at the market and estimate what your tools and services will cost, as well as know how many employees, if any, you plan on hiring, and finally having an estimated budget for company and marketing expenses to hold yourself to.

As you move further into your startup you should revisit these original assumptions, adjust them, and then see how that affects your run rate.

Now that you know how much you’ve budgeted for your business, and you have a general idea as to what your monthly expenses will be, you can divide the first by the second to calculate your run rate (how many months your business can last) under the assumption that it will make NO money during this time.

For example, if you’re willing to put $10,000 into the business, and you estimate that it will cost $2,000 a month in expenses, then you have a five month runway (assuming the business makes no revenue during this time).

How long will the business take to become profitable?

The last part of the question concerning runway involves your business’s contribution. After all, there is no reason to assume that the business will make absolutely nothing and then, all of the sudden, in a single month will start covering expenses.

Chances are it will gradually make more and more money, offsetting your monthly expenses and extending your runway, until hopefully, one day, you cross the chasm.

On Day 0, this is very difficult to calculate, but as you move forward with your startup you’ll hone in on this figure.

For example, when we first launched our startup in January of 2015, based on the initial daily sign ups we were seeing, conversion rates, and our prices, I predicted that we would end the year at around $4,000 a month. We knew this was well below our expectations, and started working hard to improve our product, traffic, and conversion rates. As things improved, that initial $4,000 fluctuated between $5,000 and $15,000, and inevitably became $10,000 monthly recurring revenue by the end of the year. While we didn’t know this in January of 2015, we had a reasonable estimate that we continually monitored and updated, so we knew what to expect from the business in the coming months.

Continue reading %A Masochist’s Guide to Bootstrapping Your SaaS Startup to Profitability%


by Dave Schneider via SitePoint

Tide.is

opl-small

Definitely some shameless self-promotion but One Page no doubt! Tide.is is a super minimal One Page tide application I built with my Brazilian surfing bud, Fernando Freire. All you need to do is visit the website address Tide.is from your mobile or desktop and it will tell you the tides today based on your geo-location. No clicking, searching or scrolling. Tides. Today.

I'd absolutely love your feedback on it - so please tweet or email me results, screenshots or any feedback you may have... thank you! Read more about the app on our launch blog post.

by Rob Hope via One Page Love