Build a Simple REST API with Node and OAuth 2.0

Original Source: https://www.sitepoint.com/build-a-simple-rest-api-with-node-and-oauth-2-0/

This article was originally published on the Okta developer blog. Thank you for supporting the partners who make SitePoint possible.

JavaScript is used everywhere on the web – nearly every web page will include at least some JavaScript, and even if it doesn’t, your browser probably has some sort of extension that injects bits of JavaScript code on to the page anyway. It’s hard to avoid in 2018.

JavaScript can also be used outside the context of a browser, for anything from hosting a web server to controlling an RC car or running a full-fledged operating system. Sometimes you want a couple of servers to talk to each other, whether on a local network or over the internet.

Today, I’ll show you how to create a REST API using Node.js, and secure it with OAuth 2.0 to prevent unwarranted requests. REST APIs are all over the web, but without the proper tools require a ton of boilerplate code. I’ll show you how to use a couple of amazing tools that make it all a breeze, including Okta to implement the Client Credentials Flow, which securely connects two machines together without the context of a user.

Build Your Node Server

Setting up a web server in Node is quite simple using the Express JavaScript library. Make a new folder that will contain your server.

$ mkdir rest-api

Node uses a package.json to manage dependencies and define your project. To create one, use npm init, which will ask you some questions to help you initialize the project. For now, you can use standard JS to enforce a coding standard, and use that as the tests.

$ cd rest-api

$ npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help json` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
package name: (rest-api)
version: (1.0.0)
description: A parts catalog
entry point: (index.js)
test command: standard
git repository:
keywords:
author:
license: (ISC)
About to write to /Users/Braden/code/rest-api/package.json:

{
“name”: “rest-api”,
“version”: “1.0.0”,
“description”: “A parts catalog”,
“main”: “index.js”,
“scripts”: {
“test”: “standard”
},
“author”: “”,
“license”: “ISC”
}

Is this OK? (yes)

The default entry point is index.js, so you should create a new file by that name. The following code will get you a really basic server that doesn’t really do anything but listens on port 3000 by default.

index.js

const express = require(‘express’)
const bodyParser = require(‘body-parser’)
const { promisify } = require(‘util’)

const app = express()
app.use(bodyParser.json())

const startServer = async () => {
const port = process.env.SERVER_PORT || 3000
await promisify(app.listen).bind(app)(port)
console.log(`Listening on port ${port}`)
}

startServer()

The promisify function of util lets you take a function that expects a callback and instead will return a Promise, which is the new standard as far as handling asynchronous code. This also lets us use the relatively new async/await syntax and make our code look much prettier.

In order for this to work, you need to install the dependencies that you require at the top of the file. Add them using npm install. This will automatically save some metadata to your package.json file and install them locally in a node_modules folder.

Note: You should never commit node_modules to source control because it tends to become bloated quickly, and the package-lock.json file will keep track of the exact versions you used to that if you install this on another machine they get the same code.

$ npm install express@4.16.3 util@0.11.0

For some quick linting, install standard as a dev dependency, then run it to make sure your code is up to par.

$ npm install –save-dev standard@11.0.1
$ npm test

> rest-api@1.0.0 test /Users/bmk/code/okta/apps/rest-api
> standard

If all is well, you shouldn’t see any output past the > standard line. If there’s an error, it might look like this:

$ npm test

> rest-api@1.0.0 test /Users/bmk/code/okta/apps/rest-api
> standard

standard: Use JavaScript Standard Style (https://standardjs.com)
standard: Run `standard –fix` to automatically fix some problems.
/Users/Braden/code/rest-api/index.js:3:7: Expected consistent spacing
/Users/Braden/code/rest-api/index.js:3:18: Unexpected trailing comma.
/Users/Braden/code/rest-api/index.js:3:18: A space is required after ‘,’.
/Users/Braden/code/rest-api/index.js:3:38: Extra semicolon.
npm ERR! Test failed. See above for more details.

Now that your code is ready and you have installed your dependencies, you can run your server with node . (the . says to look at the current directory, and then checks your package.json file to see that the main file to use in this directory is index.js):

$ node .

Listening on port 3000

To test that it’s working, you can use the curl command. There are no endpoints yet, so express will return an error:

$ curl localhost:3000 -i
HTTP/1.1 404 Not Found
X-Powered-By: Express
Content-Security-Policy: default-src ‘self’
X-Content-Type-Options: nosniff
Content-Type: text/html; charset=utf-8
Content-Length: 139
Date: Thu, 16 Aug 2018 01:34:53 GMT
Connection: keep-alive

<!DOCTYPE html>
<html lang=”en”>
<head>
<meta charset=”utf-8″>
<title>Error</title>
</head>
<body>
<pre>Cannot GET /</pre>
</body>
</html>

Even though it says it’s an error, that’s good. You haven’t set up any endpoints yet, so the only thing for Express to return is a 404 error. If your server wasn’t running at all, you’d get an error like this:

$ curl localhost:3000 -i
curl: (7) Failed to connect to localhost port 3000: Connection refused

Build Your REST API with Express, Sequelize, and Epilogue

Now that you have a working Express server, you can add a REST API. This is actually much simpler than you might think. The easiest way I’ve seen is by using Sequelize to define your database schema, and Epilogue to create some REST API endpoints with near-zero boilerplate.

You’ll need to add those dependencies to your project. Sequelize also needs to know how to communicate with the database. For now, use SQLite as it will get us up and running quickly.

npm install sequelize@4.38.0 epilogue@0.7.1 sqlite3@4.0.2

Create a new file database.js with the following code. I’ll explain each part in more detail below.

database.js

const Sequelize = require(‘sequelize’)
const epilogue = require(‘epilogue’)

const database = new Sequelize({
dialect: ‘sqlite’,
storage: ‘./test.sqlite’,
operatorsAliases: false
})

const Part = database.define(‘parts’, {
partNumber: Sequelize.STRING,
modelNumber: Sequelize.STRING,
name: Sequelize.STRING,
description: Sequelize.TEXT
})

const initializeDatabase = async (app) => {
epilogue.initialize({ app, sequelize: database })

epilogue.resource({
model: Part,
endpoints: [‘/parts’, ‘/parts/:id’]
})

await database.sync()
}

module.exports = initializeDatabase

Now you just need to import that file into your main app and run the initialization function. Make the following additions to your index.js file.

index.js

@@ -2,10 +2,14 @@ const express = require(‘express’)
const bodyParser = require(‘body-parser’)
const { promisify } = require(‘util’)

+const initializeDatabase = require(‘./database’)
+
const app = express()
app.use(bodyParser.json())

const startServer = async () => {
+ await initializeDatabase(app)
+
const port = process.env.SERVER_PORT || 3000
await promisify(app.listen).bind(app)(port)
console.log(`Listening on port ${port}`)

You can now test for syntax errors and run the app if everything seems good:

$ npm test && node .

> rest-api@1.0.0 test /Users/bmk/code/okta/apps/rest-api
> standard

Executing (default): CREATE TABLE IF NOT EXISTS `parts` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `partNumber` VARCHAR(255), `modelNu
mber` VARCHAR(255), `name` VARCHAR(255), `description` TEXT, `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL);
Executing (default): PRAGMA INDEX_LIST(`parts`)
Listening on port 3000

In another terminal, you can test that this is actually working (to format the JSON response I use a json CLI, installed globally using npm install –global json):

$ curl localhost:3000/parts
[]

$ curl localhost:3000/parts -X POST -d ‘{
“partNumber”: “abc-123”,
“modelNumber”: “xyz-789”,
“name”: “Alphabet Soup”,
“description”: “Soup with letters and numbers in it”
}’ -H ‘content-type: application/json’ -s0 | json
{
“id”: 1,
“partNumber”: “abc-123”,
“modelNumber”: “xyz-789”,
“name”: “Alphabet Soup”,
“description”: “Soup with letters and numbers in it”,
“updatedAt”: “2018-08-16T02:22:09.446Z”,
“createdAt”: “2018-08-16T02:22:09.446Z”
}

$ curl localhost:3000/parts -s0 | json
[
{
“id”: 1,
“partNumber”: “abc-123”,
“modelNumber”: “xyz-789”,
“name”: “Alphabet Soup”,
“description”: “Soup with letters and numbers in it”,
“createdAt”: “2018-08-16T02:22:09.446Z”,
“updatedAt”: “2018-08-16T02:22:09.446Z”
}
]

What’s Going On Here?

Feel free to skip this section if you followed along with all that, but I did promise an explanation.

The Sequelize function creates a database. This is where you configure details, such as what dialect of SQL to use. For now, use SQLite to get up and running quickly.

const database = new Sequelize({
dialect: ‘sqlite’,
storage: ‘./test.sqlite’,
operatorsAliases: false
})

Once you’ve created the database, you can define the schema for it using database.define for each table. Create a table called parts with a few useful fields to keep track of parts. By default, Sequelize also automatically creates and updates id, createdAt, and updatedAt fields when you create or update a row.

const Part = database.define(‘parts’, {
partNumber: Sequelize.STRING,
modelNumber: Sequelize.STRING,
name: Sequelize.STRING,
description: Sequelize.TEXT
})

Epilogue requires access to your Express app in order to add endpoints. However, app is defined in another file. One way to deal with this is to export a function that takes the app and does something with it. In the other file when we import this script, you would run it like initializeDatabase(app).

Epilogue needs to initialize with both the app and the database. You then define which REST endpoints you would like to use. The resource function will include endpoints for the GET, POST, PUT, and DELETE verbs, mostly automagically.

To actually create the database, you need to run database.sync(), which returns a Promise. You’ll want to wait until it’s finished before starting your server.

The module.exports command says that the initializeDatabase function can be imported from another file.

const initializeDatabase = async (app) => {
epilogue.initialize({ app, sequelize: database })

epilogue.resource({
model: Part,
endpoints: [‘/parts’, ‘/parts/:id’]
})

await database.sync()
}

module.exports = initializeDatabase

Secure Your Node + Express REST API with OAuth 2.0

Now that you have a REST API up and running, imagine you’d like a specific application to use this from a remote location. If you host this on the internet as is, then anybody can add, modify, or remove parts at their will.

To avoid this, you can use the OAuth 2.0 Client Credentials Flow. This is a way of letting two servers communicate with each other, without the context of a user. The two servers must agree ahead of time to use a third-party authorization server. Assume there are two servers, A and B, and an authorization server. Server A is hosting the REST API, and Server B would like to access the API.

Server B sends a secret key to the authorization server to prove who they are and asks for a temporary token.
Server B then consumes the REST API as usual but sends the token along with the request.
Server A asks the authorization server for some metadata that can be used to verify tokens.
Server A verifies the Server B’s request.

If it’s valid, a successful response is sent and Server B is happy.
If the token is invalid, an error message is sent instead, and no sensitive information is leaked.

Create an Authorization Server

This is where Okta comes into play. Okta can act as an authorization server to allow you to secure your data. You’re probably asking yourself “Why Okta? Well, it’s pretty cool to build a REST app, but it’s even cooler to build a secure one. To achieve that, you’ll want to add authentication so users have to log in before viewing/modifying groups. At Okta, our goal is to make identity management a lot easier, more secure, and more scalable than what you’re used to. Okta is a cloud service that allows developers to create, edit, and securely store user accounts and user account data, and connect them with one or multiple applications. Our API enables you to:

Authenticate and authorize your users
Store data about your users
Perform password-based and social login
Secure your application with multi-factor authentication
And much more! Check out our product documentation

If you don’t already have one, sign up for a forever-free developer account, and let’s get started!

After creating your account, log in to your developer console, navigate to API, then to the Authorization Servers tab. Click on the link to your default server.

From this Settings tab, copy the Issuer field. You’ll need to save this somewhere that your Node app can read. In your project, create a file named .env that looks like this:

.env

ISSUER=https://{yourOktaDomain}/oauth2/default

The value for ISSUER should be the value from the Settings page’s Issuer URI field.

Higlighting the issuer URL.

Note: As a general rule, you should not store this .env file in source control. This allows multiple projects to use the same source code without needing a separate fork. It also makes sure that your secure information is not public (especially if you’re publishing your code as open source).

Next, navigate to the Scopes tab. Click the Add Scope button and create a scope for your REST API. You’ll need to give it a name (e.g. parts_manager) and you can give it a description if you like.

Add scope screenshot.

You should add the scope name to your .env file as well so your code can access it.

.env

ISSUER=https://{yourOktaDomain}/oauth2/default
SCOPE=parts_manager

Now you need to create a client. Navigate to Applications, then click Add Application. Select Service, then click Next. Enter a name for your service, (e.g. Parts Manager), then click Done.

The post Build a Simple REST API with Node and OAuth 2.0 appeared first on SitePoint.

63 free Photoshop actions

Original Source: http://feedproxy.google.com/~r/CreativeBloq/~3/Du0sr5LXYvE/photoshop-actions-912784

Adobe's flagship image editing software Photoshop has a powerful programming language built in that allows you to record tasks as an 'action' and replay the steps to complete the task automatically. Not only can you record your own but you can also import actions, opening up a whole range of effects and time-saving options.

Get Adobe Creative Cloud now

So to add to our collections of Photoshop plugins and Photoshop brushes (not to mention our best laptops for Photoshop buying guide), here are some great Photoshop actions that are free to download and install, for photographers, graphic designers, game artists and more.

You can jump to the section you want right now from the drop-down menu above, but you should definitely bookmark the entire list to check out the rest later – who knows where inspiration will strike. 

Photo filters
01. Mystical Light

Free Photoshop actions: Mystical Light

‘scuse me while I kiss the sky

Give your photos an other-worldly air with this Photoshop action from Megan Joy. It'll infuse landscapes with a magical purple haze, enlivening any shot with an ethereal purple haze and giving any location the atmosphere of a mysterious fairy dell.

02. Instant Hipster

Free Photoshop actions: Instant Hipster

Get those trendy effects you love with one click

For those times you want to give your photos a one-click Instagram effect, Instant Hipster's the perfect solution. It comes with 10 ready-made filters – Amaro, Mayfair, Hudson, Valencia, X-Pro II, Willow, Sutro, Hefe, Nashville and 1977 – so you can find just the retro effect you need in seconds.

03. Nightmare

Free Photoshop actions: Nightmare

…and they were never seen again

If your photos just aren't sinister enough for your liking, this free action should make things a little more unsettling. It's designed to let you easily give your photos a dark, haunting effect. Perfect for creating the impression that you're permanently about to stumble into mortal danger.

04. Cold Nightmare

Free Photoshop actions: Cold Nightmare

Damn it, stand still when I’m trying to skewer you

This amusingly-titled action will transform a photo of a perfectly innocent scenario into a window into a dark world. In this example image, the archer probably shooting at a target takes on the look of someone who is definitely trying to kill a human. It’s amazing what some shadows can do.

05. Summer Haze

Free Photoshop actions: Summer Haze

Get that summer feeling again

If you'd prefer to cheer up your images, take a sunny shot and make it intensely summery with this great turquoise haze effect. Outdoor portraits taken in natural light are most suitable for this filter.

06. Hazy Afternoon

Free Photoshop actions: Hazy Afternoon

Hazy Afternoon adds a soft gradient colour layer

Perfect for outdoor pictures, the Hazy Afternoon action certainly lives up to its name by creating a soft gradient colour layer. You can use this free action on black and white or colour images, plus you can easily adjust the gradient until you get the exact look you're after.

07. Sun Kissed

Free Photoshop actions: Sun Kissed

Sun Kissed will brighten and tone even the drabbest landscape

Light up any image with this comprehensive collection of sunlight effects that'll brighten and tone even the drabbest landscape. Simply add a bit of a warm tone, or go the whole hog and throw in a setting sun complete with a lens flare effect; it's all there.

08. HDR Action

Free Photoshop actions: HDR action

Ramp up your HDR contrast with these actions

Remove the lack of contrast that comes with HDR photography with this set of four actions; HDR fix Light, Normal, Heavy, and Clicker.

09. Strong HDR Effect

Free Photoshop actions: Strong HDR Effect

Get vibrant colour effects with this free HDR filter

Alternatively, try getting vibrant colour effects with this free HDR filter from Shutter Pulse. If it works well for you but you’d like more options, it’s part of a set of 30 HDR actions that you can buy for $13.

10. Blue Evening

Free Photoshop actions: Blue Evening

Add a mysterious atmosphere to your shots with Blue Evening

Blue Evening is the free component of a paid-for set called Touch of Drama, which gives you various ways to add a mysterious atmosphere to your shots. The strength of the blue cast depends on your starting colours, so click through to see a good selection of examples.

11. Night to Twilight

Free Photoshop actions: Night to Twilight

Turn your nighttime images into twilight photos

This set of 11 actions convert your nighttime images into twilight photos by introducing a colour cast and lightening the sky. The effect is rendered using layers, so you can adjust the degree of twilight by reducing the layer’s opacity, making it nice and flexible.

12. Purple Contrast

Free Photoshop actions: Purple contrast

A bit of purple can give your photographs a dramatically downbeat look

This free Photoshop action washes out some of the colour from an image and gives it a purpley hue. It's a good way to give your photographs a dramatically downbeat look.

13. Bella

Free Photoshop actions: Bella action

Create a romantic, nostalgic feel with a pink cast

This action adds a beautiful warmth to your photographs, bringing out rich tones in hair and skin, and softening colours with a pink cast that creates a romantic, nostalgic feel.

14. Wedding Enhancers kit

Free Photoshop actions: wedding enhancers kit

These actions are ideal for fixing wedding photography

Photoshop actions are extremely useful for wedding photographers dealing with a huge number of shots. Here you get a set of 11 actions that automatically create common portrait effects, especially around the theme of wedding photography. The set includes skin smoothing and soft filter effects as well as black and white conversion.

15. Photoshop Color actions

Free Photoshop actions: Photoshop colour actions 2

Here’s a handy collection of colour treatments

A nice range of colour treatments including rich, grainy black-and-white, bleach bypass, and some heavy casting effects. Great for experimentation.

Next page: Vintage photo filters

16. Vintage Light Leak

Free Photoshop actions: Vintage Light Leaks

Get that knackered old Box Brownie look for free

Sometimes you don't want your photographs to look too good; a little imperfection can add to a shot's charm, and this vintage light leak action is one way to achieve that effect. Send it into action and you can turn any top-end DSLR shot into something that looks like it was taken on an antique camera.

17. Cross-processing ATN

Free Photoshop actions: Cross-processing ATN

This action lets you cross-process without all the mess

Cross-processing is a traditional photographic technique involving deliberate processing of one type of film in a chemical solution intended for another, resulting in oddly skewed colours and increased contrast and saturation. This free Photoshop action gives you a way to recreate the effect digitally, and is available free for personal use.

18. Cross Processed

Free Photoshop actions: Cross Processed

Add drama and vivid colour effects to your images

This action adds drama and vivid colour effects to your images by deepening shadows and making colours more saturated. It’s especially good for stormy skies, landscapes, buildings and ocean scenes.

19. Color 024

Free Photoshop actions: Color 024

Create rich, sun-bleached photos that still retain a high level of detail

Digital pictures are crisp and precise, but sometimes they can lack that nostalgic glow of a film photograph. By downloading this free action, you can adjust the colour saturation and create rich, sun-bleached photos that still retain a high level of detail.

20. 2-strip Technicolor

Free Photoshop actions: 2-Strip technicolor

This action simulates the 2-strip look without damaging the original image

Recreate the look of 2-strip Technicolor film by downloading this free action. Popular in the 20s and 30s, 2-strip technicolor film exposed black and white film behind a green filter and a red filter. By merging the green and blue channels in different layers, this action simulates the 2-strip look without damaging the original image.

21. Light Leaks

Free Photoshop actions: Light Leaks

These gradients are ideal for adding non-destructive vintage effects to your images

This handy selection of light leaks has been created using gradients, making it very flexible for adding non-destructive vintage effects to your images. The free version includes five high-quality leaks, all featuring support for 16-bit colour so you can achieve brighter-than-white highlights. And they work with video, too!

22. Hard Lomo

Free Photoshop actions Hard Lomo Action

If you like your lomo action hard, look no further

Deviant Art is a great place to find Photoshop actions, as this example from BlackLaceStock demonstrates. Included here is a set of actions that add a classic lomo-look to your images, akin to applying an Instagram effect.

23. Retro Style filters

Free Photoshop actions RetroFilters

These 35mm-inspired effects include some lovely gritty options as well as colour treatments

Chris Spooner is well known for his excellent Photoshop tutorials and giveaways, and he doesn’t disappoint with this new selection of 10 free retro-style Photoshop actions. Each of the effects is inspired by 35mm film and processing techniques, and includes some lovely gritty options as well as colour treatments.

24. Polanoid Generator

Free Photoshop actions: Polanoid Generator 3

Polanoid’s one of those Photoshop actions you’ll use again and again

Turn any image into a Polaroid instantly with one of 10 different effects. It includes colour treatments and shadows automatically, and it's one of those Photoshop actions you'll use again and again.

25. The Mini Collection

Free Photoshop actions: The Mini Collection

There’s plenty to play with in this taster selection

Featuring some impressive retro Photoshop actions, plus a kit of light leaks and some vintage Photoshop brushes, the Mini Collection from FilterGrade is a free taster of its larger $49 FilterGrade bundle.

26. Old Photo

Free Photoshop actions: old photo action

Add colour and contrast with this old photo action

Want to make your images look like they’ve through a time warp? Then get experimenting with this old photo action, which adds colour and contrast.

27. Portrait

Free Photoshop actions: portrait action

Create a vintage effect with a spot of desaturation

Desaturate the colour in your photography with this portrait action, which creates a gorgeous vintage effect.

28. Split Toning

Free Photoshop actions: split toning action

Make those ransom notes really pop!

The area between greyscale and colour is split toning, and adding this slight change to your photos can have a dramatic effect. You can also create retro and abstract images with this technique.

29. Amatorka

Free Photoshop actions: Amatorka action 2

Get the action movie look with Amatorka

Create an instant action movie-style colour treatment with a blue-green cast, rich saturation and increased contrast.

30. Set14

Free Photoshop actions: Set14

Fill your boots with these vintage actions

If you're after a vintage effect for your photography but you're not entirely sure what, nab this collection from DeviantArt user Yeonseb. It contains 14 assorted vintage actions, so you're bound to find something to your liking.

31. Thinking of You

Free Photoshop actions: Thinking of you

Add a filmic, green-cast and heavily saturated shadow effect

This is another stylised photographic treatment that adds a filmic, green-cast and heavily saturated shadow effect. The end result feels very fashion-orientated.

32. Unspoken

Free Photoshop actions: Unspoken

Use Unspoken to heighten details and increase contrast

This simple action creates a beautiful blockbuster film look, heightening details in your photographs and increasing contrast, while introducing a blue/green tint.

33. Vintage

Free Photoshop actions: Vintage

Turn lowlights into colourful highlights with this Vintage action

This simple filter give your photos a tinted, washed-out look with an extra neon touch that'll turn lowlights into colourful highlights.

34. HipstaRev

Free Photoshop actions: HipstaRev pack 1

Get the Hipstamatic look in Photoshop

This set of actions creates Hipstamatic-style images inside Photoshop. The download includes three actions, each of which creates a recognisable treatment including borders and noise.

Next page: Monochrome photo filters

35. Bold B&W HDR

Free Photoshop actions: Bold B&W HDR

Why should colour pictures get all the HDR fun?

It's not just colour photos that you can apply the HDR treatment to. With this free action you can give any photo a bold, black and white, HDR-style look that'll make it really stand out.

36. Infrared Photography

Free Photoshop actions: InfraRed Photography

Add some infrared chill to your pictures

Add the eerie touch of a cool infrared chill to your pictures with this free Photoshop action. This action creates two adjustment layers inside a layer group, allowing you to change the red and blue balance, as well as the contrast.

37. High Key

Free Photoshop actions: High key

Turn any photo into a stunning high-key portrait

This action requires a credit if you use it, but offers a very simple way to convert a regular photograph into a stunning high-key portrait with clean lines and an almost dreamy finish, without compromising essential areas of contrast.

38. Lithprint

Free Photoshop actions: Lithprint

Lithprint turns photographs into striking lithograph-style images

Create a lithograph-style image from your raw photos. This works best on larger images that have already been given a medium-contrast treatment.

39. Gum Bichromate Print

Free Photoshop actions: gum bichromatic print

Emulate the early days of photography with this action

Emulate 19th century gum bichromate prints with this straightforward action that produces beautiful textured effects.

40. Black and White

Free Photoshop actions: Black and White

Get a grainy black and white look that’s heavy on the black

This action adds a punchy, high-contrast black and white effect to your photographs. It produces a nice grittiness with heavy grain and over-saturated blacks. Great for creating a stylised image.

41. Dramatic Sepia

Free Photoshop actions: Dramatic Sepia

Dramatic Sepia’s contrast curve gives a slightly more refined version of the standard sepia effect

This superb action offers a slightly more refined version of the standard sepia effect by adding a contrast curve to age the final result so that it feels like a faded photograph. Dramatic Sepia offers a great way to communicate a sense of age.

Next page: Touch-up techniques

42. 5 Skin Retouching actions

Free Photoshop actions: 5 Skin Retouching Actions

Sort out your skin the easy way

Want to retouch skin like a boss? This set of retouching actions will give you a head-start, enabling you to heal, mattify and airbrush skin with one click, and also enabling you to brighten eyes and increase their contrast.

43. Express Eye Bright 

Free Photoshop actions: Express Eye Bright

Brighten up dull eyes with this quick and easy enhancement

Quickly put a bit of sparkle into dull, dark eyes with this easy eye enhancement action. Simply click on the background layer (or the layer with the eyes you want to sharpen), run the action, and paint on the layer mask to sharpen and brighten the eyes. 

44. Teeth Whitening

Free Photoshop actions: Teeth whitening

Alternatively, just brush your teeth properly, for pity’s sake

Teeth aren't naturally a dazzling white, but sometimes they can appear grey or yellow in photographs, depending on the lighting. This useful action can easily brighten up the smiles of family and friends by giving their teeth a clean, white finish.

45. Bright Eyes

Free Photoshop actions: Bright eyes

Another way to bring dull eyes to life

This free Photoshop action gives an intense look to blue eyes, as shown above. A great effect for extreme closeups.

46. High Definition Sharpening

Free Photoshop actions: High definition sharpening

This action offers a simple one-click solution to sharpening

The final stage of image preparation should be to sharpen your images according to the final delivery method (you sharpen differently for print or screen). This free action from MCP Actions offers a simple one-click solution to sharpening, with the ability to control the degree of sharpening that’s been applied after the fact by adjusting the opacity and masking of layers.

47. Soft Skin Tones

Free Photoshop actions: soften skin effect

Smooth skin while retaining textures and colouring

Used in combination with an existing selection or mask, this smooths skin while retaining textures and colouring, saving clean-up time.

48. Remove White Background

Free Photoshop actions: remove white background

Get rid of white backgrounds with these actions

Automatically remove white backgrounds with this suite of three actions that allow for different automated processes to strip out the background of your isolated images.

Next page: Special effects

49. Vectorize Me Babe

Free Photoshop actions: Vectorize Me Babe

Get a vector look without Live Trace

Giving photos a vector look can be hard work; the obvious thing to do is paste them into Ilustrator and use Live Trace, but getting the effect you want can take a lot of fiddling with settings. Instead, use Vectorize Me Babe; put it into action and you'll get an instant vector effect, which you can amplify by simply running the action again.

50. Glitch Effect

Free Photoshop actions: Glitch Effect

Get your glitch on with this fabulous free action

You can't beat the look of stuff recorded onto a knackered old VHS tape, and this free action by Syed Faraz Ahmad does a pretty good job of recreating it, with plenty of glitches and colour smearing.

51. Plexiglass

Free Photoshop actions: Plexiglass

Plexiglass makes it a doddle to add abstract effects to your photos

Transform your photos into posters, covers or backgrounds for text with Plexiglass, a set of Photoshop actions that make it easy to add abstract effects and borders to any image with a single click.

52. 3D Isometric Map

Free Photoshop actions 3D Map

Why bother with flat maps when you could have an isometric 3D map?

A brilliant action that converts a flat vector map into an isometric 3D map mockup. There are three different styles of map available: sand, ice and grass, and the action also allows you to drop in your choice of buildings, trees, landscape elements and signs.

53. Pencil Draw

Free Photoshop actions: pencil draw

Quickly turn a colour photo into a pencil sketch

This action uses contrast to find the edges in your image and automatically render a pencil sketch effect. Start from a full-colour image with no need to convert to black and white first.

54. Stickers and Tapes

Free Photoshop actions: stickers n tape

Stickers and tape in one package!

Create round stickers with a curl in the corner, or polaroid-style images with clear sticky tape holding them in place. This site requires you to register for free before you can download the action.

55. 1930s Glitter Text

Free Photoshop actions: 1930s glitter text

Get a bit of glam with this snazzy effect

Automatically convert your text into a snazzy 1930s-style retro treatment with shiny sequins and a nice 3D effect. It’s also easy to adjust after running the action, as all the layers are retained.

56. Stamp Generator

Free Photoshop actions: stamp generator

Please don’t use this to forge postage stamps

Turn an image into a stamp automatically using an included Photoshop brush to define how the frill will sit along the edge of the final artwork.

57. Denim & Leather

Free Photoshop actions: denim and leather

If you’re planning your own range of jeans, this is a must

This Photoshop action automatically generates a blue denim texture, 'sews' on a leather patch and embosses your own artwork onto the leather. The nice, simple and effective output could be adapted for a variety of purposes.

58. Spotlight

Free Photoshop actions: Spotlight

Make details stand out with this virtual spotlight

Make the focal point of an image really stand out with this action from Christopher Fowler, which will train a virtual spotlight on your picture.

59. Fold Paper

Free Photoshop actions: paper fold

Turn artwork into a virtual mockup with this neat effect

Automatically render your artwork onto a trifold paper design in pseudo-3D, complete with shadows and shading on the image. Ideal for rendering paper designs ahead of presenting them on-screen to clients.

60. Long Shadow

free photoshop actions: Long shadow

Still doing flat design? Here’s the cherry for your flat cake

This free Photoshop action allows you to create a long shadow from your text content, and you can tweak the shadow’s opacity.

61. Triptych Generator

free photoshop actions: Triptych Generator

Create standard triptych panels for print

Generate standard triptych panels for print, with a 3D effect visual triptych generator also available. Print sizes include 1000x600mm, 1300×800, 1600×1000 with 50mm depth at 288dpi.

62. Action 3D

Free Photoshop actions: Action 3D

Get a fake 3D effect with this channel-juggling action

This quirky action from JonasFan93 creates a pseudo 3D anaglyphic image by separating out colour channels within your image and offsetting them. This freebie offers a number of different styles that are more suitable for use in printed brochures and website design where you’re aiming for a stylised effect.

63. Outer space

Free Photoshop actions: outer space

Finally! The final frontier

Create an outer space background automatically complete with space dust and nebulous gases. This action randomly colours the scene to produce a different effect every time.

Related posts:

The 60 best free Photoshop brushesBest free fonts for designersTop Photoshop tutorials

Seven Steps for Growth Hacking Your Business with Data

Original Source: https://www.sitepoint.com/growth-hacking-data/

No data? No problem. You can growth hack your way to success in seven steps.

Whether you’re pre-launch or ready to scale, data can hold the key to your business’ growth. Even if you don’t have much data about your customers or product yet, you can still use data to growth hack your business by following these seven steps.

1. Define your business objectives

Before you can shoot for the stars you need to be clear about what you’re trying to achieve. While this is often easier than it sounds, it’s a crucial step because your goal will drive your strategy.

According to Simon Mathonnet, Chief of Digital Strategy for Splashbox, it’s important to translate your objective into something practical. For example, rather than saying your goal is to grow your business, it should be more specific — like you want to quit your job so you can focus full-time on the company, or you want to raise a Series A investment round.

2. Make your objectives measurable

Once you’ve defined your objective, it then needs to be translated into something that you can track. A good way to do this is to make it SMART. This stands for:

Specific: Make the objective clear and easy to grasp.
Measurable: Set a quantitative goal that can be measured.
Achievable: Get buy-in from your team and give them (and yourself) an incentive by having an objective that’s within reach.
Relevant: Your goal needs to make sense and be in line with what the business is trying to achieve.
Time: Be clear about when the objective needs to be achieved. This will give you something to look forward to.

The SMART objective for the two objectives above may be:

Quit your job to focus on your startup = Generate $X of revenue per month for three consecutive months.
Series A capital raising = Retain Y active users for three months before approaching investors.

3. Create a hypothesis

Once you’ve defined your goal you need to find a way to get closer to achieving it. One way to do this is to create a hypothesis that you can implement and test quickly. The hypothesis is essentially an educated guess or hunch based on what you know about your product or service and customers.

For example, if your objective is to grow revenue, then your hypothesis might be that people who look at three or more products on your website are more likely to purchase. This means you need to find a way to get people who visit your site to look at three or more products because you believe this will increase your revenue.

4. Collect data

To be able to test and measure your hypothesis you need to have data. The data sets a baseline — so you know your starting point — and measures your results. The type of data that you need will depend on your hypothesis.

If you’re pre-launch, you probably don’t have much customer data yet. Most startups also struggle with data because of their uniqueness — traditional, quantifiable data sources like market research may not have insights for your product or market segment. While it can be expensive to commission market research, thankfully there’s a plethora of technology that’s relatively inexpensive that can help you mine information and generate new data.

Some ways you can collect data include:

Google Analytics: This is useful if you have had many visitors to your site. It collects data on what interactions people have on your website, like how long they spent on your site, what pages are the most popular, what search terms they used and what links they clicked.
PoweredLocal: If you have a brick and mortar shopfront, this platform lets you collect information about your customers by offering them complimentary Wi-Fi access. When customers use social media or email to sign onto your network, you can find out who they are, what they like, and potentially sign them up to your newsletter or offers.
Online reviews: Review sites like Yelp or TripAdvisor serve two purposes. They let people who are looking for your product or service hear what you’re like directly from your customers, and they provide a way for customers to give you feedback. This feedback is data that you can use to identify opportunities to improve your customer experience.
HotJar: This heatmap tool lets you see how people use and respond to messages on your site by showing what they engage with. Unlike Google Analytics, you don’t need too many visitors to your site to start seeing what is attracting or repelling your customers.
Social Media: Research social media channels to see what customers are talking about. This may be either on your own social media pages or your competitors’. Social media platforms like Facebook and Twitter also have analytics tools that are often available for free. These can show you demographic and engagement information about your audience.
LeadChat: Use a live chat function on your website to get direct input from your customers. Find out your customer demographic and see what questions they ask to determine what they’re interested in or are struggling with.
Events and pitch nights: Collect anecdotal data by talking to potential customers, peers and competitors. You can find them at industry events, pitch nights and conferences.

The post Seven Steps for Growth Hacking Your Business with Data appeared first on SitePoint.

How to Set Up a Reverse NGINX Proxy on Alibaba Cloud

Original Source: https://www.sitepoint.com/how-to-set-up-a-reverse-nginx-proxy-on-alibaba-cloud/

This article was created in partnership with Alibaba Cloud. Thank you for supporting the partners who make SitePoint possible.

Think you got a better tip for making the best use of Alibaba Cloud services? Tell us about it and go in for your chance to win a Macbook Pro (plus other cool stuff). Find out more here.

Need to serve many websites from a single Linux box, optimizing resources, and automating the site launch process? Let’s get serious then, and set up a production-ready environment using Ubuntu, NGINX, and Docker — all of it on Alibaba Cloud.

This is a somewhat advanced tutorial, and we’ll assume some knowledge of networking, server administration, and software containers.

Understanding the Scenario

If you are looking at this guide, chances are that you need to manage a cluster of servers, or an increasing number of websites — if not both — and are looking at what your options are for a secure, performant, and flexible environment. Well then, you came to the right place!

Why a Reverse Proxy

In a nutshell, a reverse proxy takes a request from a client (normally from the Internet), forwards it to a server that can fulfill it (normally on an Intranet), and finally returns the server’s response back to the client.

Reverse proxy

Those making requests to the proxy may not be aware of the internal network.

It is, in a way, similar to a load balancer — but implementing a load balancer only makes sense when you have multiple servers. You can deploy a reverse proxy with just one web server, and this can be particularly useful when there are different configuration requirements behind those end servers. So the reverse proxy is the “public face” sitting at the edge of the app’s network, handling all of the requests.

There are some benefits to this approach:

Performance. A number of web acceleration techniques that can be implemented, including:

Compression: server responses can be compressed before returning them to the client to reduce bandwidth.
SSL termination: decrypting requests and encrypting responses can free up resources on the back-end, while securing the connection.
Caching: returning stores copies of content for when the same request is placed by another client, can decrease response time and load on the back-end server.

Security. Malicious clients cannot directly access your web servers, with the proxy effectively acting as an additional defense; and the number of connections can be limited, minimizing the impact of distributed denial-of-service (DDoS) attacks.
Flexibility. A single URL can be the access point to multiple servers, regardless of the structure of the network behind them. This also allows requests to be distributed, maximizing speed and preventing overload. Clients also only get to know the reverse proxy’s IP address, so you can transparently change the configuration for your back-end as it better suits your traffic or architecture needs.

Why NGINX

NGINX logo

NGINX Plus and NGINX are the best-in-class reverse-proxy solutions used by high-traffic websites such as Dropbox, Netflix, and Zynga. More than 287 million websites worldwide, including the majority of the 100,000 busiest websites, rely on NGINX Plus and NGINX to deliver their content quickly, reliably, and securely.

What Is a Reverse Proxy Server? by NGINX.

Apache is great and probably best for what it’s for — a multi-purpose web server, all batteries included. But because of this very reason, it can be more resource hungry as well. Also, Apache is multi-threaded even for single websites, which is not a bad thing in and of itself, especially for multi-core systems, but this can add a lot of overhead to CPU and memory usage when hosting multiple sites.

Tweaking Apache for performance is possible, but it takes savvy and time. NGINX takes the opposite approach in its design — a minimalist web server that you need to tweak in order to add more features in, which to be fair, also takes some savvy. If the topic interests you, a well-established hosting company wrote an interesting piece comparing the two: Apache vs NGINX: Practical Considerations.

In short, NGINX beats Apache big time out-of-the-box performance and resource consumption-wise. For a single site you can chose not to even care, on a cluster or when hosting a many sites, NGINX will surely make a difference.

Why Alibaba Cloud

Alibaba Cloud logo

Part of the Alibaba Group (Alibaba.com, AliExpress), Alibaba Cloud has been around for nearly a decade at the time of this writing. It is China’s largest public cloud service provider, and the third of the world; so it isn’t exactly a “new player” in the cloud services arena.

However, it hasn’t been until somewhat recently that Alibaba rebranded its Aliyun cloud services company and put together a fully comprehensive set of products and services, and decidedly stepped out of the Chinese and Asian markets to dive into the “Western world”.

On a Side-by-Side Comparison of AWS, Google Cloud and Azure, we did a full review of what you can do in the cloud — elastic computing, database services, storage and CDN, application service, domain and website, security, networking, analytics, … and yes, Alibaba Cloud covers it all.

Deploying to Alibaba Cloud

You’ll need an Alibaba Cloud account before you can set up your Linux box. And the good news is that you can get one for free! For the full details see How to Sign Up and Get Started.

For this guide will use Ubuntu Linux, so you can see the How to Set Up Your First Ubuntu 16.04 Server on Alibaba Cloud) guide. Mind you, you could use Debian, CentOS, and in fact, you can go ahead and check 3 Ways to Set Up a Linux Server on Alibaba Cloud.

Once you get your Alibaba Cloud account and your Linux box is up and running, you’re good to go.

Hands On!
Installing NGINX

If we wanted to use the whole process ourselves, we would first need to install NGINX.

On Ubuntu we’d use the following commands:

$ sudo apt-get update
$ sudo apt-get install nginx

And you can check the status of the web server with systemctl:

$ systemctl status nginx

With systemctl you can also stop/start/restart the server, and enable/disable the launch of NGINX at boot time.

These are the two main directories of interest for us:

/var/www/html NGINX default website location.
/etc/nginx NGINX configuration directory.

Now, setting a reverse proxy can be a somewhat cumbersome enterprise (and there are several guides that cover this process), as there are a number of network settings we need to go through, and files we need to update as we add sites/nodes behind our proxy.

That is, of course, unless we automate the whole thing using software containers…

Docker to the Rescue

Before we can start using software containers to automate our workflow, we first we need to install Docker, which for Ubuntu is a fairly straight forward process.

Uninstall any old version:

$ sudo apt-get remove docker docker-engine docker.io

Install the latest Docker CE version:

$ sudo apt-get update
$ sudo apt-get install docker-ce

If you want to install a specific Docker version, or set up the Docker repository, see Get Docker CE for Ubuntu.

Setting the Network

Part of setting a reverse proxy infrastructure is properly setting networking rules.

So let’s create a network with Docker:

$ docker network create nginx-proxy

And believe or not, the network is set!

NGINX-Proxy!

Now that we have Docker running on our Ubuntu server, we can streamline the process of installing, setting up the reverse proxy, and launching new sites.

Jason Wilder did an awesome job putting together a Docker image that does exactly that–jwilder/nginx-proxy, a automated NGINX proxy for Docker containers using docker-gen, that works perfectly out-of-the-box.

Here’s how you can run the proxy:

$ docker run -d -p 80:80 -p 443:443 –name nginx-proxy –net nginx-proxy -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy

Essentially:

we told Docker to run NGINX as a daemon/service (-d),
mapped the proxy’s HTTP and HTTPS ports (80 and 443) the web server(s) ports behind it (-p 80:80 -p 443:443),
named the NGINX proxy for future reference (–name nginx-proxy),
used the network we previously set (–net nginx-proxy),
mapped the UNIX socket that Docker daemon is listening to, to use it across the network (-v /var/run/docker.sock:/tmp/docker.sock:ro).

And believe or not, the NGINX reverse proxy is up and running!

Launching Sites, Lots of Sites

Normally when using Docker you would launch a “containerized” application, being a standard WordPress site, a specific Moodle configuration, or your own images with your own custom apps.

Launching a proxied container now is as easy as specifying the virtual your domain with VIRTUAL_HOST=subdomain.yourdomain.com:

The post How to Set Up a Reverse NGINX Proxy on Alibaba Cloud appeared first on SitePoint.

Collective #453

Original Source: http://feedproxy.google.com/~r/tympanus/~3/fq3B2HXo4oM/

C453_Connect

Our Sponsor
CONNECT TECH Atlanta’s web/mobile dev conference

October 17-19 Atlanta. A World Class JavaScript, React, Angular, Vue, Web, Design Conference. 1200 attendees, 120 sessions, 12 workshops.

Learn more

C453_modular

What is Modular CSS?

An in-depth exploration of Modular CSS. By Scott Vandehey.

Read it

C453_img

Responsive Images

Mat Marquis takes a look back at how responsive images evolved.

Read it

C453_browser

Inside look at modern web browser (part 4)

Mariko Kosaka concludes her article series on how Chrome handles code to display a website.

Read it

C453_graphql

GraphQLEditor

With GraphQLEditor you can create visual diagrams without writing any code.

Check it out

C453_traffic

The 9am Rush Hour

The first article in a series where Paul Lewis and Surma think out loud about the challenges they see in modern web development.

Read it

C453_colors

ColorBox

Colorbox is a tool to produce color sets. Made by the Lyft design team.

Check it out

C453_Chrome

Why I’m done with Chrome

Read why Matthew Green has had enough of Google Chrome’s violation of user privacy. Read the Hacker News discussion here.

Read it

C453_game

Interplanetary Postal Service

A lunar lander type game with complex fluid dynamics as an entry to the 2018 js13kgames competition.

Check it out

C453_darkpatterns

Dark Patterns And Other Design No-Nos For Mobile

Suzanne Scacca warns against using dark patterns on mobile sites.

Read it

C453_icons

Freebie: Autumn Kawaii Icon Set

A set of 50 gorgeous looking autumn themed icons.

Get it

C453_proto

Understanding JavaScript’s Prototypal Inheritance

An article by Rajat S on how prototypal inheritance works in JavaScript.

Read it

C453_font

Free Font: Marker Mark

Vlad Cristea designed this handwritten SVG font.

Check it out

C453_webglgame

Underrun – Making of

Read about he making of Underrun, a twin stick shooter using WebGL.

Read it

C453_variablefonts

Variable Font Experiments

Mark Frömberg’s fantastic animated variable font experiments.

Check it out

C453_progress

Responsive animated progress bar to donut

These progress bars will animate to doughnuts when the screen gets smaller. By Mikael Ainalem.

Check it out

C453_colornames

Werner’s Nomenclature of Colours

A recreation of the original 1821 color guidebook with new cross references, photographic examples, and posters designed by Nicholas Rougeux.

Check it out

C453_500

#CodePenChallenge: HTTP Status 500

Check out all the great demos of Codepen’s HTTP Status 500 challenge.

Check it out

C453_mouseripple

Ripple Mouse (with plasma)

A great demo of interactive plasma by Liam Egan.

Check it out

C453_grid

From Our Blog
Grid Layout with Scrollable Content View

A Masonry-powered grid layout with a motion hover effect on the grid items and a scrollable content view.

Check it out

Collective #453 was written by Pedro Botelho and published on Codrops.

97% Off: Get The Work at Home Super Bundle for Only $39.99

Original Source: http://feedproxy.google.com/~r/Designrfix/~3/_zvzawuzzoY/97-off-get-the-work-at-home-super-bundle-for-only-39-99

There are two camps when it comes to working from home. Some people like it while others don’t. One group believe that they can get more work done when they work remotely. Another group think they won’t get anything done. No matter which side you’re on, one thing is for sure – working from home […]

The post 97% Off: Get The Work at Home Super Bundle for Only $39.99 appeared first on designrfix.com.

The best Black Friday deals 2018: how to grab a bargain this year

Original Source: http://feedproxy.google.com/~r/CreativeBloq/~3/PO4IF2JXRSQ/best-black-friday-deals-2018

Black Friday 2018 is coming around again fast. It's a fantastic time for designers and artists to make massive savings on creative hardware, software and resources – but the sheer volume of Black Friday deals on offer, and the speed at which they come and go, can be utterly overwhelming.

That's why we'll be curating the very best Black Friday deals in 2018 for designers, artists and creatives right here – so bookmark this page and check back in closer to the time.

In the meantime, there are a few things you can do now to make sure you're ready to bag a bargain in November. From the dates you need in your diary through to pro tips on how to get the best Black Friday deals as a designer, artist or creative, here’s everything you need to know about Black Friday 2018…

When is Black Friday 2018?

This year, Black Friday falls on 23 November 2018, with Cyber Monday following on the 26 November. Always held the day after Thanksgiving, Black Friday marks the unofficial beginning of the Christmas shopping season. 

Traditionally Black Friday was a one-day brick-and-mortar juggernaut of sales, with Cyber Monday later conceived by savvy marketeers to extend the sales period online. These days, Black Friday is of course a huge online event as well. 

In the last few years, the spending bonanza has morphed into a 'Black November', with many major retailers leaking decent money-saving deals throughout the month. Amazon, for example, officially opened its Black Friday Deals Store on the 17 November in 2017, a week before Black Friday started. We also saw plenty of deals creeping through before that – and a lot of rock-bottom deals in the days after Cyber Monday, too. 

So make sure you check back into this page from early November to see what's on offer.

Black Friday: where to find the biggest savings

So where to look for real bargains? Well, the best Black Friday deals on creative hardware and software tend to come from third-party retailers – rather than directly from manufacturers like Apple or Wacom. That said, Microsoft slashed the cost of its Surface family of tablets for Black Friday 2017, and we saw big tech bargains on the Dell website too.

Some of the biggest savings last year across the board, however, came from Amazon and eBay. Certainly this is where you need to be if you're in the market for a new drawing tablet – and there were fantastic bargains to be found on desktops, laptops, 4K monitors, computer mice, keyboards and more.

Whether you’re interested in perusing Black Friday deals directly on the websites of the most reputable retailers, sign-up for early Black Friday alerts or do some early product research, here are the links you need… 

Black Friday deals 2018: retail links

US: Black Friday retail links

Amazon | eBay | Newegg | Jet Black | Microsoft | Dell | Walmart | B&H Photo | GameStop | Toys R Us

UK: Black Friday retail links

Amazon | eBay | Microsoft | Dell |  Very.co.uk | John Lewis | Currys | Argos | Tesco | AO.com | Carphone Warehouse | Mobiles.co.uk | ASOS

How to get the best Black Friday deals in 2018

We’ll be curating the very best Black Friday deals for creatives right here again this year, so bookmark this page and keep checking back in November. But there are some other pro tips you can follow for bagging big Black Friday bargains, too.

01. Do your research

The best way to avoid getting a bad deal is to do your research first. You need to be knowledgeable about the product – and its normal retail price. 

Draw up a list of items you might like to purchase over Black Friday, read the reviews, research the best manufacturers, and make sure you know the difference between a good and bad version of that product.

02. Compare prices

It’s always a good idea to compare prices, so use price-comparison internet shopping sites like PriceGrabber.com for insight where you’re looking at product prices. 

03. Check the extras

And make sure you check the specs: are you looking at a low or high-specced product for this price? Does it come with accessories? What about post and packaging charges?

04. Consider payment options

Another tip is to think about how you’re paying. While we don’t suggest racking up huge credit cards bills with big interest rates, many credit cards do offer benefits like free warranties, return protection and sale price protection – which are worth bearing in mind. 

05. Get an Amazon Prime subscription

Prime users (including all those on a free trial) are offered an exclusive 30-minute early access period to all Amazon Lightning Deals. If you don't already have one, an Amazon Prime subscription will set you back £79/$99 per year. 

06. Know the best days to buy

Adobe has crunched the numbers to put together a handy guide revealing the best days to buy different products, and also which products are more likely to run out on which days.

Apparently, Thanksgiving is the best time to grab a bargain on computers – you’re likely to save 16 per cent, on average – but it’s also the day popular tablets and televisions are most likely to be out of stock.

Black Friday, meanwhile, is the best day to save on tablets and televisions (on average 24 per cent), with computers most likely to be out of stock. 

Today’s best deals on the best creative kit

Can't hang on until Black Friday to pick up a hot deal? No problem. There are plenty of fantastic bargains to be found on creative hardware, software and resources right now. 

We're tracking the months' best deals in the following articles, and you can scroll down for the day's best deals on our favourite creative products…

The best Macbook and Macbook Pro deals The best Microsoft Surface dealsThe best Dell XPS dealsThe best cheap laptop dealsThe best Wacom tablet dealsThe best Adobe deals30 books every graphic designer should read

Related articles:

The best laptop deals for designersThe best Macbook and MacBook Pro dealsThe best Wacom tablet deals

10 Reasons Why You Will Never Let Placeit Go

Original Source: https://www.webdesignerdepot.com/2018/09/10-reasons-why-you-will-never-let-placeit-go/

Placeit offers thousands of smart templates which you can customize by simply clicking a few options, while still keeping a professional layout. You won’t have to worry about resolution, dimensions or proportions. We promise your designs will always look sharp since there’s no way you can mess it up.

The Brilliance of Web Designing
1. It’s as Easy as Breathing

Anyone can design, even you. Yes, you! Don’t trust us? Give it a try.

2. It’s so Fast You’ll Think You Just Missed It

It’s like watching a movie, the hard part is choosing which one, after that you just have to enjoy. You can play with all of Placeit’s smart templates before deciding which design suits your brand the best.

3. Get Yourself an Original Design

You can customize each template as much as you want to ensure you get an original design. From choosing your brand’s color, to uploading a custom image or selecting a graphic that represents who you are, Placeit lets you create unique content that speaks for you.

4. You Can Do It All on Your Own

If you’re not a designer, there’s no need to hire one, Placeit designs for you, allowing you to create amazing visuals without needing the skills and expertise. And if you’re a designer, you’ll be saving golden time!

5. Responsive Designs

Is your app available for iPhone and iPad? Showcase it on a mockup that highlights its best features on both devices! Placeit has hundreds of mockups of multiple devices so you can promote your apps and responsive websites like the pros.

6. Pixel Perfect

This means that every image you create on Placeit will have the highest resolution for you to comfortably use on its intended medium, be it web or print. This ensures your image will always look smooth!

7. Professional Templates

Every template is tailored by a team of skillful designers, so no matter how much you experiment, your design is bound to be beautiful and professional.

8. Everybody Gets a Perfect Match

There is a huge variety of templates, over 12k and counting, with different styles, and formats. Placeit guarantees you’ll find what you’re looking for.

9. So You’re a Startup… We Have the Whole Kit

Every branding asset you can think of, starting from your core logo itself. All you need to boost your marketing efforts with one single tool.

10. Unlimited Downloads

Can’t decide for a single mockup, flyer, video, logo or social media graphic? Get them all! With Placeit’s Unlimited Plan, you can download the entire library for just $29/mo. What else will you ever need?

Using a Logo Generator for Your Brand

How does it work? Very simple, Placeit’s logo maker is a lifesaver, you can choose a specific niche for your logo or use them all.

All you need to do is type the name of your brand and… voilá! Have a look at a full library of logo opportunities for your brand’s name.

Once you find the one that is perfect for you, then you can further customize it. You can change the graphics, colors, fonts and in some cases, even the layout!

Design Core Branding Assets in Seconds!

Designing compelling marketing materials for your business is something you’ll be able to do in just a matter of seconds thanks to Placeit’s wide array of design templates. Get started with flyer and business card templates to showcase your newly designed logo and then move over to amazing ad banners, promo videos and social media images to make the most of your business through online promos and giveaways!

 

 

Create Hundreds of T-Shirt Designs in Seconds!

Placeit’s t-shirt design templates will help you upscale your online t-shirt business like the pros. There are tons of different tshirt templates to choose from so you can find the one that represents your brand the best, then all you need to do is customize it, and like all things Placeit, it takes just a few seconds to create professional designs that look a million bucks.

Every Mockup You’ll Ever Need

Whether you are looking to promote a new app or website with iPhone or MacBook mockups, your clothing brand on t-shirt mockups or a branding project with banner mockups, Placeit has your back with the largest mockup library you can think of. And the best part? These mockups are customizable straight from your browser, which means you don’t need to use Photoshop or other editing tools, just upload your image file and watch it come to life instantly.

And there’s so much more added every day! Visit Placeit to discover all the new templates you can customize and download today!

 

[– This is a sponsored post on behalf of Placeit –]

Add Realistic Chalk and Sketch Lettering Effects with Sketch’it – only $5!

Source

p img {display:inline-block; margin-right:10px;}
.alignleft {float:left;}
p.showcase {clear:both;}
body#browserfriendly p, body#podcast p, div#emailbody p{margin:0;}

Grid Vs Flexbox: Which Should You Choose?

Original Source: https://www.webdesignerdepot.com/2018/09/grid-vs-flexbox-which-should-you-choose/

CSS Grid and CSS Flexbox are complimentary web layout technologies that have been hotly anticipated for years. However, despite some superficial similarities they are actually used for very different tasks; they each solve a very different set of problems.

In an ideal scenario, you may find that you employ both for different layout tasks. In this post we’ll look at their differences, look at how they solve various layout problems, and help you choose which (if either) is the right solution for your problem.

Grid is Container-Based, Flexbox is Content-Based

In flexbox layout, the size of a cell (flex-item) is defined inside the flex-item itself, and in the grid layout, the size of a cell (grid-item) is defined inside the grid-container.

Confusing?

Let’s look at an example, here’s the HTML to create a row of elements:

<div class=”row”>
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
</div>

And we style this using flexbox like so:

.row {
margin: 20px auto;
max-width: 300px;
display: flex;
}
.row > div {
border: 1px dashed gray;
flex: 1 1 auto; /* Size of items defined inside items */
text-align: center;
padding: 12px;
}

We defined the size of the cells inside the flex-item by setting flex: 1 1 auto;. The flex property is shorthand to set flex-grow, flex-shrink, and flex-basis properties in one statement; its default value is 0 1 auto. Notice the “row” div is the flex-container, and we don’t set the size of the items there. We set the size inside the flex-item.

When previewed in a browser we get a row of boxes, as you would expect:

Now let’s see how we can generate the same output using grid:

.row {
margin: 20px auto;
max-width: 300px;
display: grid;
grid-template-columns: 1fr 1fr 1fr 1fr; /* Size of items defined inside container */
}
.row div {
border: 1px dashed gray;
text-align: center;
padding: 12px;
}

Above code will give us exactly the same output.

Notice, now we are defining the cell’s size using grid-template-columns inside the grid-container (.row), not the grid-item.

This is an important difference. It shows that the flexbox layout is calculated after its content is loaded whereas the grid layout is calculated regardless of the content inside it. So, if possible, avoid using flexbox to build the overall layout of your website.

Grid Has a “Gap” Property, Flexbox Doesn’t

You can argue that a major difference between flexbox and grid is that in the latter we can create gutters between grid-items using grid-column-gap, like so:

In order to achieve the same result in flexbox we would have to use padding and nested containers, or increase the width of the flex-container and use the justify-content property to spread the flex-items.

We have to take a circuitous route in flexbox because it doesn’t have a gap property. However, it is on the way; the CSS Box Alignment Module 3 contains CSS features relating to alignment of boxes in all layout modes: block layout, table layout, flex layout, and grid layout. The Box Alignment module collects properties from flexbox, grid, and multi-column which can be used consistently across all the layout models. Eventually we’ll be able to add gaps with row-gap and column-gap properties, but not yet.

Flexbox is One Dimensional, Grid is Two Dimensional

We’ve been arranging elements as rows and columns on the web since we used tables for layout. Both flexbox and grid are based on this concept. Flexbox is best for arranging elements in either a single row, or a single column. Grid is best for arranging elements in multiple rows and columns.

In other words, Flexbox is one dimensional, and Grid is two dimensional. Let’s look at a commonly used one dimensional layout – the social share buttons:

All the elements are in a single row. We can implement this using Flexbox like this:

<ul class=”social-icons”>
<li><a href=”#”><i class=”fab fa-facebook-f”></i></a></li>
<li><a href=”#”><i class=”fab fa-twitter”></i></a></li>
<li><a href=”#”><i class=”fab fa-instagram”></i></a></li>
<li><a href=”#”><i class=”fab fa-github”></i></a></li>
<li><a href=”#”><i class=”fas fa-envelope”></i></a></li>
<li><a href=”#”><i class=”fas fa-rss”></i></a></li>
</ul>

.social-icons {
display: flex;
list-style: none;
justify-content: space-around;
}

The justify-content property determines how the extra space of the flex-container is distributed to the flex-items. The space-around value distributes the space in such a way that the flex-items get placed evenly with equal amount of space around them.

Next, let’s take a look at a commonly used 2-dimensional layout:

We can’t implement this layout with a single row or a single column, we need multiple rows and columns to do that, and that’s where we use CSS Grids. Let’s make it using CSS Grid:

<div class=”container”>
<header>Header</header>
<main>Main</main>
<aside>Aside</aside>
<footer>Footer</footer>
</div>

and the CSS:

.container {
max-width: 800px;
margin: 2em auto;
display: grid;
grid-template-columns: 3fr 1fr;
grid-template-rows: repeat(3,auto);
grid-gap: 1rem;
}

.container header {
grid-area: 1/1/2/3;
}

.container main {
grid-area: 2/1/3/2;
}

.container aside {
grid-area: 2/2/3/3;
}

.container footer {
grid-area: 3/1/4/3;
}

.container > * {
background-color: #ddd;
padding: 1rem;
}

We are creating two columns using the grid-template-columns property, and three rows using grid-template-rows property. The repeat() function creates 3 rows with auto height.

Then, inside the grid-items (header, main, aside, and footer) we define how much area those grid-items will cover using the grid-area property.

Flexbox Wraps vs Grid Wraps

When the total width of items inside the container is greater than the width of the container, in that case both the layout models have the option to wrap the items to a new row. However, the way both handle wrapping is different.

Let’s look at that difference by building an sample layout. Create two rows and place 6 divs inside each row:

<h2>Flexbox</h2>
<div class=”row-flex”>
<div>1 2 3 4 5 6 7 8 9 0</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
</div>

<h2>Grid</h2>
<div class=”row-grid”>
<div>1 2 3 4 5 6 7 8 9 0</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
</div>

Now, we will use Flexbox to layout the first row and Grid for second:

/* Flexbox row styles */
.row-flex {
margin: 40px auto;
max-width: 600px;
display: flex;
flex-wrap: wrap;
}
.row-flex div {
border: 1px dashed gray;
flex: 1 1 100px;
text-align: center;
padding: 12px;
}
/* Grid row styles */
.row-grid {
margin: 40px auto;
max-width: 600px;
display: grid;
grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
}
.row-grid div {
border: 1px dashed gray;
text-align: center;
padding: 12px;
}

For the first row, we are using flex: 1 1 100px to give the flex-items a base width of 100px and allow it to grow and shrink.

We are also enabling wrapping of flex-items inside the flex-container by setting the flex-wrap property to wrap, its default value is nowrap.

For the second row, we are using the grid-template-columns property to create columns with minimum width 100px set by the minmax() function. We are using repeat() function to create columns repeatedly.

You can see the beauty of Grid and Flexbox lies in the ability to stretch and squeeze the items based on the amount of space available. Flexbox achieves this using flex-grow and flex-shrink properties, and Grid achieves this using a combination of minmax and auto-fill functions inside the grid-template-columns property.

However, look carefully at the cell 5 and cell 6 as they are pushed down. In the case of Flexbox, the cell 5 and 6 are not the same size as other cells when pushed down. While in case of Grid, they retain the same size as all other cells in the grid.

This happens because when a flex-item is wrapped and pushed in a new row, the Flexbox layout algorithm treats it as a part of a different flex-container. Hence the pushed item loses its context.

This behavior could be used in some use cases, for example, an email subscriber form:

Let’s build this subscriber form:

<div class=”subscriber-form-container”>
<form>
<input type=”email” placeholder=”Email Address”>
<input type=”text” placeholder=”Name”>
<input type=”submit” value=”Subscribe”>
</form>
</div>

and give it some styles in our CSS:

.subscriber-form-container {
max-width: 650px;
margin: 40px auto;
border: 1px dashed gray;
box-sizing: border-box;
}
.subscriber-form-container form {
display: flex;
flex-wrap: wrap;
}
.subscriber-form-container form input {
margin: 6px;
padding: 0.4rem;
box-sizing: border-box;
}
.subscriber-form-container form input{
flex: 1 1 150px;
}
.subscriber-form-container form input[type=”email”] {
flex: 2 1 300px;
}

The flex property is the shorthand for three properties: flex-grow, flex-shrink, and flex-basis. We want the width of the “email” field to be double the width of other two input elements, and we achieve this by using its “flex-grow” and “flex-basis”.

The “flex-grow” property of input elements is set to “1”, but that of email input element is set to 2. So, when there is extra space available, the email input element will grow twice compared to other input elements.

Flexbox outperforms Grid in this use case. Yes, you could use some hack to get CSS Grid replicate this behavior using minmax() function, but Flexbox is well-suited for this kind of single dimensional layouts.

However, if you want a multi-dimensional layout with the wrapped elements maintaining their widths, for example, an image gallery, then Grid is the best choice:

One more thing, did you notice we are not using any media queries here. That’s because Flexbox and Grid layouts are built on concept of responsiveness and hence reduce the use of Media Queries.

Will CSS Grid make Flexbox Obsolete in the Future?

Absolutely not.

In fact, that’s what this article was about. CSS grid and Flexbox, both are designed to solve a different set of problems.

Currently, CSS Grid doesn’t have enough support across the browsers to make production ready websites. The general rule of thumb I use is that a feature must cover more than 95% of global usage. Only then I use that feature in real websites. Currently, Flexbox covers 95% of global usage, and Grid covers 87% of global usage.

Soon Grid will also get good support among the browsers, and we will use a mix of Grids and Flexboxes to make amazing website layouts that previously weren’t possible.

 

Featured image via DepositPhotos.

Add Realistic Chalk and Sketch Lettering Effects with Sketch’it – only $5!

Source

p img {display:inline-block; margin-right:10px;}
.alignleft {float:left;}
p.showcase {clear:both;}
body#browserfriendly p, body#podcast p, div#emailbody p{margin:0;}

Tough Interview(er) Questions For The Job-Seeking Designer

Original Source: https://www.smashingmagazine.com/2018/09/job-interview-questions-designer/

Tough Interview(er) Questions For The Job-Seeking Designer

Tough Interview(er) Questions For The Job-Seeking Designer

Joshua Bullock

2018-09-26T13:30:31+02:00
2018-09-26T11:46:24+00:00

Whether you’re a multi-year veteran to the UX industry or fresh out of a higher education or boot camp style program, setting out into the job market can be a daunting task for any designer. From freelancing or working for a more boutique studio, doing agency work, or joining the enterprise, a myriad of positions, requirements, and organizations are available for a design practitioner who is looking to take the next steps in their career.

In this article, I’ll present a list of questions from my personal experience to consider leading up to and even during the interview process. I’ll also include the goal when asking the questions, basically what you’re trying to learn, along with responses I’ve received when asking them of prospective employers.

As with anything, your mileage might vary, but considering these topics before an interview may help you better solidify the perspective on what you are looking for from your next position. It is written primarily from the position of an interviewee, however hiring managers may also find them valuable by looking at their company through that lens and considering them for prospective designers.

Recommended reading: The Missing Advice I Needed When Starting My Career

Understanding Design Maturity

Jared Spool and other UX leaders have written a few things about the design maturity of organizations and the ideal distribution of design resources. When considering taking a design position within an organization, how might we look at the company through this lens and better understand where they are on their experience journey? With numerous titles being thrown around (Experience Designer, Product Designer, UI Designer, Interaction Designer, UX Designer, and so on), what might provide additional clarity for the working relationship you’re about to enter into and the role you are about to assume?

Having a few years in various design roles, I’ve spent time on both sides of the interview table — both as a hiring manager and as a prospective employee. In every interview I’ve been a part of, be it part of the hiring team or as an interviewee, an opportunity was presented to inquire about the team or organization. “Do you have any questions for us?” is the most common phrase I’ve heard and this presents a golden opportunity to dig deep and gain valuable insights into the dynamics of the team and organization you’re speaking with.

Meet SmashingConf New York 2018 (Oct 23–24), focused on real challenges and real front-end solutions in the real world. From progressive web apps, Webpack and HTTP/2 to serverless, Vue.js and Nuxt — all the way to inclusive design, branding and machine learning. With Sarah Drasner, Sara Soueidan and many other speakers.

Check all topics and speakers ↬

SmashingConf New York 2018, with Dan Mall, Sara Soueidan, Sarah Drasner and many others.

When I am applying, I’m on the verge of entering into a new relationship, and to the best of ability, I want to understand where we are both headed. Just as the organization is investing in me as an individual, I am being asked for a commitment of time, energy, passion, creativity, and least of all artifacts. I would like to understand as much about my partners as possible. Given that no prenuptials exist in the working world, we may eventually part ways, and our engagement should be as profitable as possible for both sides.

I’ve asked the aforementioned question many times of prospective candidates, and in some cases, the response has regrettably been completely passed over. The seemingly benign, “Do you have any questions for us?” opening affords any designer a wealth of opportunity to learn more about the company and design engagement. If design solves problems by gathering information, I propose we attend the hiring process as we would any other research effort.

Notes taken during a designer interview shown along with Post-its, writing utensils, and a computer showing mock-ups.

Interviewing is a great opportunity to get to know the company, take notes! (Large preview)

Interviewing Like A Researcher

The following is a list of questions that can assist in your evaluation of a prospective employer and provide invaluable insight into their organizational maturity in the digital product space. All of these questions can help to paint a more holistic and honest picture of the design process as well as the value that a talented designer might bring to an organization. Below I’ll share questions I’ve asked, as well as their intent, along with some responses I’ve received from prospective employers. Let’s dive in.

Question #1

“What are the three biggest challenges facing your business over the next six months? What about the six months after that?”

Why ask this?

This is on the ground information for any designer. Upcoming challenges should be readily apparent for anyone on the existing team, and they’re already considering how the person being interviewed might help solve them. Framing the question in this way can provide valuable insight into how far ahead the team is thinking and how proficient they are at planning. It also can help a designer quickly bring value and insights to the organization.

What follow-ups might provide more insight?

Does work exist in the pipeline that a designer can help immediately bring to the product through evaluative research?
Is there a product that has been delayed based on initial feedback?
What insights were learned and how can that be used to tighten cycles and quickly iterate to production?
Is a project hemorrhaging funds from a past launch that didn’t grow as quickly as anticipated?
Are there ideas of how to save this investment and help it become successful?

How is this question received?

This is honestly the easiest of any question on this list. It’s a bit of a softball as I would expect any executive, manager, or team member to have this information top-of-mind. That said, when I’ve asked the question it shows that I’m already considering the above and how I might be a positive influence quickly. I’ve consistently gotten great answers to this question, and it also allows for an open conversation on how a candidates’ particular skill set could be leveraged immediately once hired.

Question #2

“Should you be moving fast and breaking things or moving slow and fixing things?”

Why ask this?

Facebook popularized the mantra of “Move fast and break things,” in an effort to fail quickly while continuing to grow from what was learned. While fostering a culture of continual learning is enormously valuable, not all problems can be solved by creating completely new products.

Continuing to cover up technical debt through a constant barrage of new features can be catastrophic. That said, many organizations are held hostage by successful products that continuously add features so much that innovation is completely stifled. It’s very helpful to understand both sides of this question and the value they can bring to a product’s design.

What follow-ups might provide more insight?

How comfortable is the team with the idea of shipping a rough Minimum Viable Product (MVP), to gain insights quickly?
How risk-averse is the company or group or even the design team?
Is the business dealing with a very fragile codebase?
How frequently is tech debt refactored?
How is UX debt identified and managed?

How is this question received?

This is a very thought-provoking question for lean/agile organizations and the most common response I’ve received has been, “That’s a really great question,” and the ever-popular “It depends.” I’ve gotten fantastic responses by asking this as it affords an honest reflection on the current state of the business. The design team likely has an opinion on whether they are moving too fast or too slow and if they should behave a bit differently.

The answer doesn’t need to be a scary thing, but it should be honest and should afford some honest reflection. The best designers I’ve known appreciate hearty challenges they can dig into, and this question can provide additional clarity as to what you’re stepping into.

Question #3

“If you’re moving fast, why?

Why ask this?

Moving fast can be very exhilarating, but it may not result in productivity. To some stakeholders I’ve spoken with, the word “Agile” is synonymous with “I get my things faster.” In reality, being agile or ‘lean’ is about learning and delivering the right product or solution in the smallest way to customers. Moving fast can be very advantageous so long as it’s coupled with a willingness from design to show work that may not be perfect but is functional to the point of being usable. This is where moving fast is great; learning can be realized quickly and new product directions can be identified early. This can inform an interviewing designer on how data and research are being collected and distributed to other teams or the larger organization. Alternatively, if this isn’t happening, it could indicate a large opportunity for change or an unmitigated disaster so be on the lookout and follow-up accordingly.

What follow-ups might provide more insight?

Are you trying to break things and learn from failure, or just moving fast because of #things?
Are you looking to gain mindshare in a new market?
How is the growth being managed?
How is the doubling or tripling of staff affecting team dynamics, agile health, or even the company culture?
What plan is in place for documenting and disseminating learning that has been gathered?
How important is this task for the organization and the work I do as a designer?

How is this question received?

This question and the next tend to be contingent on individual teams or parts of the company. I’ve also had it backfire a bit as it’s easy for someone to become defensive of their organizational behavior. One exuberant response I’ve heard is “We’re failing fast and failing often on our teams!” but when pressed with, “What have you learned from those failures? How has that learning been incorporated into the project and received by leadership?” responses were a bit uncomfortable. This is a massive red flag for me — honesty is tremendously important to me. Just be aware this can start to get into uncomfortable territory, but it can also speak volumes about a team or leader in how they manage their response.

Question #4

“If you’re moving slow, why?”

Why ask this?

Sites and applications are like rose bushes: if they aren’t pruned periodically they can get unruly and — eventually — downright ugly. Likewise, the continuous addition of new features to any code base without sufficient refactoring and paying down tech debt can create a very fragile product. The company may have started moving quickly to capture market share or breaking things in order to build quickly and try out changes to the tech stack.

From a design perspective, the biggest experience gains aren’t necessarily from a design system or improved onboarding. The company may need to modernize the tech stack to focus on improved performance or application up-time. The team may need to make changes to their delivery mechanism providing some form of Continuous Integration and Continuous Delivery (CICD), a system where a designer can more easily implement A/B testing and better understand where the most impactful changes might be made.

Most designers would likely not give a second thought to the state of the tech stack because that’s an ‘engineering problem’, amirite? However, getting an up-front look at the state of the product from a technical perspective is immeasurably valuable, even to design.

Understanding where the company is in upgrading their systems, what frameworks are being used, and how willing they are to invest in the infrastructure of a legacy product provides a glimpse into the company or team priorities.

What follow-ups might provide more insight?

Which parts of the site/application/product are least-effective?
Should they be retired or reinvested in?
How might these upgrades impact day-to-day work?
Are new features being prioritized into the new product development so we can phase out aging systems?
How will these changes impact customers?
Can they still get their jobs done in the new system or are they going to be retired?
How is that being communicated to users?
Has there been any communication around sunsetting these retiring systems to lessen the burden?
Has any analysis been done to understand how much revenue is provided by those users whose features are about to come to an end?

How is this question received?

This line of questioning has typically been handled offline as managers I’ve spoken to didn’t have the answers handy. They were typically fielded by an IT or Dev manager, who was more than happy to see that level of interest from a designer. As a designer, I don’t need to understand the details of my team’s API end-points, but I should understand something about the health of my digital product.

Interviewer having a discussion with a prospective designer.

The interview process is about mutual discovery—learn as much about your potential team and organization as they are learning about you. (Large preview)

Question #5

“What are the three pieces of your product that are most valuable but also in the most need of an update?”

Why ask this?

This question is all about priority and, similar to the prior question, this could be digging more into the tech stack of the product. My reason for asking actually has more to do with the “core loop” of the product. The core-loop is the dopamine hit that attracts a user and keeps them coming back to enjoy the product repeatedly.

It’s akin to the food pellet that makes a rat respond to stimuli. It can also be a prime pain-point that’s a massive trigger for catastrophic system failure, and thus ultimate fear within the team. “Don’t do anything to this or our entire system could shut down.” When considering some changes to that legacy system perhaps we simply leave it alone, but we might enhance it in another way leveraging something more modern as an overlay or in a new tab or window?

What follow-ups might provide more insight?

What is standing in the way of doing this work?
What team members could we talk to about these features?
Have they done any research to understand what’s causing the behavior to be erratic or difficult to maintain?
What users can we speak with about the features to understand how they’re using it?
Perhaps there’s a slight tweak that could be made enabling the same outcome, but putting less stress on the system?
Are there small tweaks that could be made to relieve pressure on the back-end and reduce strain on the database?

How is this question received?

Similar to the prior question, this can quickly get technical but it doesn’t have to. I’ve posted the question to a hiring manager who also forwarded it to a member of the product and dev teams who all gave slightly different answers. As suspected, they all provided some overlap which clearly showed what the most important problem was to work on from the business’ perspective. Don’t hesitate to ask they forward the inquiry on to someone who might be better suited or could provide a more nuanced response. Gathering broad viewpoints is a hallmark of what we designers do well.

Question #6

“Do you have a customer I might contact to get their thoughts about your product or service?”

Why ask this?

This may be the boldest question on this list, but it provides so much amazing value as an incoming designer. If we are operating as practitioners of a human-centered approach, we should be comfortable talking to users and our employer should be comfortable ensuring we have access to them. Granted, you may not yet be a member of the team, and they’re not yet your customer. But putting a willing foot forward in this area speaks confidently that you would love to get first-hand access to customer feedback.

What follow-ups might provide more insight?

How familiar is your team talking to their users?
How often does this activity take place?
Assuming this customer is a fan of the company, do we have access to users who aren’t so happy with the product?
Do we ever seek feedback from someone who has canceled the service?
How might the team use any insights you bring back to them?

How is this question received?

This question is bold and can be a bit tricky. Sometimes the team doesn’t have a good customer in mind, or even if they do, they don’t have ready access to them as customers are handled by a separate gatekeeper. At the same time, I would expect most companies to have a short-list of customers who think they’ve hung the moon. The marketing department tends to plaster their quotes all over the home page so feel free to look for that prior to the interview and ask for those contacts directly.

When asking this question, I’ve also provided the questions I was intending to ask as well as the answers I got back. With free user research on the table and an opportunity for the marketing team to gain additional positive feedback asking this worked out in my favor, but that won’t always be the case. Be gracious and understand if someone’s not comfortable providing this access, but it’s a strong play in expectation setting for a human-centered design practice.

Question #7

“What is your dedicated budget for UX and design?”

Why ask this?

If the value of user experience is wrapped up solely in market research, then the company doesn’t understand a human-centered approach through their users. Market research can certainly be valuable by informing the company if a business idea might be financially viable. However, user research can guide the organization in delivering something truly valuable. This question can help a prospective designer understand that the company sees design as an investment and competitive advantage.

What follow-ups might provide more insight?

What percentage of your overall expenditures does this represent and why?
What is the highest-titled member of the design team?
What is the education budget in a given year for training or events?
Has this grown, shrunk, or stayed flat compared to the prior year?
What are the growth areas for the design team overall, i.e. where is the design investment focused?

Research?
Visual design?
Copywriting?
Architecture?

How is this question received?

This is honestly more of a leadership question, but it can be tailored to even an entry-level position. Any organization without a clear operating budget for design isn’t taking the practice seriously nor its practitioners. Product, engineering, and design are the components of a balanced team. Funding one at the behest of another is a dumpster fire and clearly communicates that the balance is out of alignment.

The easiest answer I’ve been given is the salary and position I’m applying for, however, that shows a lack of foresight in terms of both growth for the team by way of headcount, as well as properly empowering designers to do their best work.

Prospective designer discussing their process through a whiteboard exercise during an interview.

Discussions during an interview. You have the floor so use it to your advantage. (Large preview)

Just The Beginning

These are just a few of the types of things we could be talking about during experience or product design interviews. We certainly should care about excellent visual design and elegant UI. We should absolutely care about qualitative and quantitative analytic data and the insights they provide. We should definitely care about motion design, user flows, journey maps, design systems, microcopy, and culture fit. These are all part of the playbook of any strong, digital-design candidate. But the answers to the above topics can be incredibly impactful for the first 90 days and beyond when assuming a new design role.

You may not be able to ask these questions in a face-to-face discussion, but they make a great follow-up email after an interview. Or perhaps they’re questions you keep in the back of your mind as they’ll inevitably come up in your first few months on the job. They could prove very useful to guide a longer-term, strategic vision that empowers you to improve the business by crafting glorious engagement with both your teams and your customers.

Does Asking These Things Actually Help Get The Job?

I’ve been asked if these questions were helpful in landing a better job and truthfully, I don’t know. I did find a very rewarding new position as a Principal Product Designer, and I used these questions throughout the interview process. After I was hired, I spoke to a couple of folks who were part of that process, and they mentioned the questions, so they were at least memorable.

The entire line of questioning has also resulted in the opportunity to co-author a book around using design to address organizational change and reconsidering how the field of experience design is currently defined. I would posit both of these opportunities were impacted in some way by these thought-provoking questions, even if the projects have yet to be fully realized (we are just starting work on the book, but it’s a very exciting concept).

I also used the questions in interviews with several different companies and ultimately, I was able to entertain multiple offers. Through each interview using these questions allowed me deeper insights about the organization than I would have had otherwise. Did the questions directly help me get the position? Of that I’m unsure, but they were absolutely beneficial for both my own awareness and for the team I eventually joined.

Final Thoughts

Approaching the job interview process more like a researcher gave me a very different perspective on the process. Interviewing can be a stressful event, but it can also be a mutual glimpse into a shared future. Any prospective employer is inviting a designer to embark on a life journey with them — or at least a year or two — and the interview is where the two parties really start to get to know one another. The answers to these questions can help paint a more transparent picture of the shared road ahead for both the designer and the teams they might partner with.

Let me know your thoughts in the comments, and whether you have other tough questions you’ve asked during interviews. I would love to know how they’ve been received and continue adding to my own list!

Further Reading

“How You Can Find A Design Job You Will Truly Love,” Susie Pollasky
“Facebook Changes Its ‘Move Fast and Break Things’ Motto,” Samantha Murphy, Mashable
“Sprints & Milestones” podcast by Brett Harned and Greg Storey
“Playbook” offers career advice for designers via crowdsourced Q&A
“Dear Design Student” is a collab from some amazing industry veterans providing wisdom to up-and-coming design talent. #invaluable

Smashing Editorial
(mb, ra, yk, il)