An Introduction to Component Routing with Angular Router

Original Source: https://www.sitepoint.com/component-routing-angular-router/

This article is part 4 of the SitePoint Angular 2+ Tutorial on how to create a CRUD App with the Angular CLI.

Part 0— The Ultimate Angular CLI Reference Guide
Part 1— Getting our first version of the Todo application up and running
Part 2— Creating separate components to display a list of todo’s and a single todo
Part 3— Update the Todo service to communicate with a REST API
Part 4— Use Angular router to resolve data
Part 5— Add authentication to protect private content

In part one we learned how to get our Todo application up and running and deploy it to GitHub pages. This worked just fine but, unfortunately, the whole app was crammed into a single component.

In part two we examined a more modular component architecture and learned how to break this single component into a structured tree of smaller components that are easier to understand, reuse and maintain.

In part three we updated our application to communicate with a REST API backend using RxJS and Angular’s HTTP service.

In this part, we will introduce Angular router and learn how it can update our application when the browser URL changes and vice versa. We will also learn how we can update our application to resolve data from our backend API using the router.

Don’t worry! You don’t need to have followed part one, two or three of this tutorial, for four to make sense. You can simply grab a copy of our repo, checkout the code from part three, and use that as a starting point. This is explained in more detail below.

Up and Running

Make sure you have the latest version of the Angular CLI installed. If you don’t, you can install it with the following command:

npm install -g @angular/cli@latest

If you need to remove a previous version of the Angular CLI, you can:

npm uninstall -g @angular/cli angular-cli
npm cache clean
npm install -g @angular/cli@latest

After that, you’ll need a copy of the code from part three. This is available at https://github.com/sitepoint-editors/angular-todo-app. Each article in this series has a corresponding tag in the repository so you can switch back and forth between the different states of the application.

The code that we ended with in part three and that we start with in this article is tagged as part-3. The code that we end this article with is tagged as part-4.

You can think of tags like an alias to a specific commit id. You can switch between them using git checkout. You can read more on that here.

So, to get up and running (the latest version of the Angular CLI installed) we would do:

git clone git@github.com:sitepoint-editors/angular-todo-app.git
cd angular-todo-app
git checkout part-3
npm install
ng serve

Then visit http://localhost:4200/. If all is well, you should see the working Todo app.

A quick recap

Here is what our application architecture looked like at the end of part 3:

Application Architecture

In this article we will:

learn why an application may need routing
learn what a JavaScript router is
learn what Angular router is, how it works and what it can do for you
set up Angular router and configure the routes for our application
create a resolver to fetch the todo’s from our REST API
update our application to fetch the todo’s using our new resolver

By the end of this article, you will understand:

when and why your application may need routing
the difference between routing on the server and routing in the browser
what Angular router is and what it can do for your application
how to set up Angular router
how to configure routes for your application
how to tell Angular router where to place components in the DOM
how to gracefully handle unknown URLs
what a resolver is and what it can be used for
how to use a resolver to resolve data using Angular router

So, let’s get started!

Why routing?

In its current state, our web application does not take the browser URL into account.

We access our application through one URL e.g. http://localhost:4200 and our application is not aware of any other URLs such as http://localhost:4200/todos.

Most web applications need to support different URLs to navigate users to different pages in the application. That is where a router comes in.

In traditional websites, routing is handled by a router on the server:

a user clicks a link in the browser, causing the URL to change
the browser sends an HTTP request to server
the server reads the URL from the HTTP request and generates an appropriate HTTP response
the server sends the HTTP response to the browser

In modern JavaScript web applications, routing is often handled by a JavaScript router in the browser.

What is a JavaScript router?

In essence, a JavaScript router does 2 things:

update the web application state when the browser URL changes
update the browser URL when the web application state changes

JavaScript routers make it possible for us to develop Single Page Applications (SPA’s).

A Single Page Application is a web application that provides a user experience similar to a desktop application. In a Single Page Application, all communication with a back-end occurs behind the scenes.

When a user navigates from one page to another, the page is updated dynamically without reload, even if the URL changes.

There are many different JavaScript router implementations available.

Some of them are specifically written for a certain JavaScript framework such as Angular, ember, React, Vue.js, aurelia, etc. Other implementations are built for generic purposes and are not tied to a specific framework.

What is Angular router?

Angular router is an official Angular routing library, written and maintained by the Angular Core Team.

It is a JavaScript router implementation that is designed to work with Angular and is packaged as @angular/router.

First of all, Angular router takes care of the duties of a JavaScript router:

it activates all required Angular components to compose a page when a user navigates to a certain URL
it lets users navigate from one page to another without page reload
it updates the browser’s history so the user can use the back and forward buttons when navigating back and forth between pages

In addition, Angular router allows us to:

redirect a URL to another URL
resolve data before a page is displayed
run scripts when a page is activated or deactivated
lazy load parts of our application

In this article, we will learn how to set up and configure Angular router, how to redirect a URL and how to use Angular router to resolve todo’s from our back-end API.

In the next article, we will add authentication to our application and use the router to make sure some of the pages can only be accessed when the user is signed in.

How Angular Router Works

Before we dive into the code, it is important to understand how Angular router operates and the terminology it introduces.

When a user navigates to a page, Angular router performs the following steps in order:

it reads the browser URL the user wants to navigate to
it applies a URL redirect (if one is defined)
it figures out which router state corresponds to the URL
it runs the guards that are defined in the router state
it resolves the required data for the router state
it activates the Angular components to display the page
it manages navigation and repeats the steps above when a new page is requested

To accomplish its tasks, Angular router introduces the following terms and concepts:

router service: the global Angular router service in our application
router configuration: definition of all possible router states our application can be in
router state: the state of the router at some point in time, expressed as a tree of activated route snapshots
activated route snapshot: provides access to the URL, parameters, and data for a router state node
guard: script that runs when a route is loaded, activated or deactivated
resolver: script that fetches data before the requested page is activated
router outlet: location in the DOM where Angular router can place activated components

Don’t worry if the terminology sounds overwhelming. You will get used to the terms as we tackle them gradually in this series and as you gain more experience with Angular router.

An Angular application that uses Angular router only has one router service instance; It is a singleton. Whenever and wherever you inject the Router service in your application, you will get access to the same Angular router service instance.

For a more in-depth look at Angular routing process, make sure to check out the 7-step routing process of Angular router navigation.

Enabling Routing

To enable routing in our Angular application, we need to do 3 things:

create a routing configuration that defines the possible states for our application
import the routing configuration into our application
add a router outlet to tell Angular router where to place the activated components in the DOM

So let’s start by creating a routing configuration.

Creating the routing configuration

To create our routing configuration, we need a list of the URLs we would like our application to support.

Currently, our application is very simple and only has one page that shows a list of todo’s:

/: show list of todo’s

which would show the list of todo’s as the homepage of our application.

However, when a user bookmarks / in their browser to consult their list of todo’s and we change the contents of our homepage (which we will do in part 5 of this series), their bookmark would no longer show their list of todo’s.

So let’s give our todo list its own URL and redirect our homepage to it:

/: redirect to /todos
/todos: show list of todo’s

This provides us with two benefits:

when users bookmark the todos page, their browser will bookmark /todos instead of /, which will keep working as expected, even if we change the home page contents
we can now easily change our homepage by redirecting it to any URL we like, which is convenient if you need to change your homepage contents regularly

The official Angular style guide recommends storing the routing configuration for an Angular module in a file with a filename ending in -routing.module.ts that exports a separate Angular module with a name ending in RoutingModule.

Our current module is called AppModule, so we create a file src/app/app-routing.module.ts and export our routing configuration as an Angular module called AppRoutingModule:

Continue reading %An Introduction to Component Routing with Angular Router%

Review: Unreal Engine 4.16.1

Original Source: http://feedproxy.google.com/~r/CreativeBloq/~3/xJbhrV5r9cc/review-unreal-engine-4161

The latest version of popular game engine Unreal Engine has the addition of some notable key features, which were highlighted during the 2017 Games Developer Conference (GDC 2017). This makes for a very solid update, with something in there for all types of artists. 

Best laptops for video editing

Since version 4.11, the user experience has become a lot smoother, and this current release builds upon this. One of the most obvious changes is that the experimental features in previous versions have become key components in their own right.

The Sequencer cinematic feature has come on in leaps and bounds since earlier revisions, and can be used for creating cut scenes, animatics or even presentations. Until 4.16, Matinee felt like a buggy external plug-in, but it now feels part of the software. The way camera sequences and cuts can be laid out visually is reminiscent of an editing suite, which makes for a far more enjoyable user experience.

The new release of Unreal Engine 4 has plenty to offer all types of artists
Create photo-real characters

For the artist or curious gamer who has always wondered how to create photorealisic characters for games, this release can answer a lot of those questions. Epic Games has kindly released a photo-real character model using the UE4 Skin Shader, along with online documentation to breakdown the processes and techniques used to create photo-real captivating characters.

In-VR editor

For VR users, the in-VR editor has become one of the main features of the release. Anyone working in this environment knows that when building in VR, it is essential you remain in VR for as long as possible for testing. 

By being able to access your Content Browser menu and even make edits to Landscape, you can remain in VR to make changes. This saves a lot of time and hassle. The inclusion of subdivision surfaces is fantastic and the way the user can manipulate in VR to make big, bold changes and set dressing is a benefit to the artist.  

However, whether these tools can offer the dexterity and precise nature required still remains to be seen. 

However, from a level design standpoint, there are key benefits of blocking out initial layouts to get a true feel for the worlds you want to create, all while immersed in VR. 

The image Sequencer makes cutting sequences an absolute breeze
Preferred game engine

This is serious professional grade software that in the past was only accessible in development studios via programmer-written bespoke in-house engines.

With so many features and support for outputting to every platform, it becomes obvious why development studios have adopted it as their preferred game engine. Furthermore it is now creeping into film studio pipelines, since it can be additionally customised via open-source C++.

With such a large thriving online community, an enormous amount of learning resources with countless free tutorials and samples at your disposal, coupled with the fact you can download it completely free, I cannot see why anyone would not want to give Unreal Engine’s latest release a try. 

All in all, whether you’re a seasoned professional or an avid enthusiast looking to learn new skills, this is a very comprehensive update with plenty of supporting marketplace material.

This article originally appeared in 3D World issue 224. Buy it here.

Related articles:

Create a game environment in UE49 Unreal Engine plugins for artists8 best 3D tools of 2017 so far

Why FullStory Click Maps are Hotter than Heat Maps

Original Source: http://feedproxy.google.com/~r/1stwebdesigner/~3/2vNWC7alGpE/

Over the years, lots of different analytical tools have incorporated some form of a “heat map”. You know the ones – with the green/red/orange splotches splashed all over your beautiful website. They’re meant to show you how users are interacting with your site – at least, in theory.

But heat maps aren’t the silver bullet they’ve been made out to be. They aren’t really compatible with the modern web. That’s why FullStory developed their Page Insights feature, complete with Click Maps that simply outclass those colorful, but tired old heat maps. Let’s find out why.

The Limitations of Heat Maps

The Limitations of Heat Maps

While traditional heat maps look undeniably cool, they have some real limitations when it comes to functionality:

They’re Not So Responsive
You may have noticed that visitors to your site are using all sorts of devices and screen resolutions. And that can be a problem for the good old heat map. While they can provide you with a map for a specific resolution, they can’t give you an aggregate view of all devices and resolutions. That puts your data in several silos – making it hard to get the whole picture.

They Don’t Account for Dynamic States
A single web page can be made up of several different “states”. For example, think of a page that has a modal popup window. When the popup is visible to the user – that’s a state. It’s another state entirely when that popup isn’t being shown. Heat maps don’t account for the various states a given page can be in. Items such as sliders and dynamically populated content are all treated as the same thing. That leads to a distorted view of user interaction.

They Don’t Provide Context
When a specific part of your page’s heat map is painted orange – that means it’s “hot”. But that still doesn’t provide you with any sort of in-depth knowledge as to exactly what element users are interacting with. And it doesn’t provide the context you need to turn the data into actionable information. In the end, it’s just…orange.

They Can Be Difficult to Set Up
Many heat maps require an advanced setup process that can be very frustrating – even for seasoned pros. You’re asked to configure complicated URL patterns and regular expressions in order to try and get accurate results. It can take a lot of effort and research to get right.

Click Maps Prevail Where Heat Maps Fail

Click Maps Prevail Where Heat Maps Fail

FullStory actually considered adding heat maps to their service based on user demand. But as they researched all the limitations mentioned above, they decided that something new was in order. That’s how Click Maps were born. They bring a level of insight and flexibility that is simply too hot for a heat map to touch:

Click Maps are Resolution Independent and Dynamic
Because FullStory understands the structure of your website, they can translate that information across screen resolution or device type to provide you with an accurate picture. Even dynamic, data-driven interfaces are accurately interpreted, as FullStory Page Insights are focused on elements – not just screen position. That’s a smarter way to view the modern web.

Click Maps Show Every State
As you browse a web page, many elements will pop into and out of existence. FullStory lets you see that page in all its various states and provides data accordingly. In other words, you’ll only see data for that modal popup while it’s on the screen. When the popup isn’t there, its click statistics will also be hidden. You’ll only get data on the elements you see in any given state.

Click Maps are Actionable
Since Click Maps are part of FullStory (which records everything a user does on your site), that means you can use their powerful OmniSearch feature to gain incredibly deep insights. You can create segments for things like user behavior, geography, devices or make your own custom variables. With just a few clicks, you can get answers to just about any question you can think of with regards to user engagement.

Click Maps Just Work
There is no fancy setup process, no headaches and no frustration. FullStory Page Insights with Click Maps just works.

Use FullStory for Free

Use FullStory for Free

As we’ve discovered, FullStory’s Page Insights with Click Maps bring a whole new level of actionable data to your screen. You’re no longer limited by inaccurate heat maps. Instead, FullStory will show you exactly how users are interacting with your site – across devices and dynamic states.

Sign up for your free FullStory account today and see user engagement in a whole new way.

This article has been sponsored by Syndicate Ads.


Interaction Design & UI/UX: Cashtree App

Original Source: http://feedproxy.google.com/~r/abduzeedo/~3/Tb2fG7rQolQ/interaction-design-uiux-cashtree-app

Interaction Design & UI/UX: Cashtree App

Interaction Design & UI/UX: Cashtree App

AoiroStudio
Aug 25, 2017

We are taking a closer look at the Cashtree App from an interaction design & UI/UX perspective. There is also brand identity involved but let’s put that aside on this one. What is Cashtree? With the word: Cash in the app name, you just can’t avoid thinking that is related to money. Which is correct since it’s an Earn and Redeem Rewards platform aiming users specifically located in Indonesia. It’s an interesting approach vs business model since it’s based with Pulsa which is prepaid credit for smartphones over there. Give it a look!

MinJee Hahm is a UI/UX designer based in Seoul, Korea. Currently working at Cashtree, the project we are featuring today. Looking foward of seeing more of his work in the near future.

Cashtree is a digital rewards platform aimed to change the whole ecosystem on the Indonesian Mobile App Market. As a leading online advertising service, Cashtree offers a new way to satisfy both advertisers and customers. By accomplishing missions, playing games, purchasing items, discovering vouchers, exchanging Pulsa and more, people will enjoy an opulent lifestyle through the app. We strongly believe that Cashtree will improve the quality of life in Indonesia more than any other time in history.

Project Gallery
Interaction Design & UI/UX: Cashtree AppInteraction Design & UI/UX: Cashtree AppInteraction Design & UI/UX: Cashtree AppInteraction Design & UI/UX: Cashtree AppInteraction Design & UI/UX: Cashtree AppInteraction Design & UI/UX: Cashtree AppInteraction Design & UI/UX: Cashtree AppInteraction Design & UI/UX: Cashtree App

 

Credits
Art Direction & UI/UX: MinJee Hahm
Creative Design: DaSeul Kim, Muhamad Ridho, Yomi Sunanta
More Links
Learn more about MinJee Hahm at minjeehahm.com
Follow MinJee on Behance

interaction design
UI/UX
app design


20 perfect font pairings

Original Source: http://feedproxy.google.com/~r/CreativeBloq/~3/L9Wv8OR_Dk0/20-perfect-type-pairings-3132120

Finding font pairings that set each other off, don't fight the eye for attention, and harmonise without becoming homogenous and dull is tough for graphic designers. The age-old rule goes as follows: concord or contrast, but don't conflict.

But with so many professional typefaces and free fonts to choose from, how do you find two that work in harmony? Here we bring you top font pairing tips, followed by 20 examples of perfect font pairings.

Tip 1: Use font superfamilies

The easiest way to find perfect font pairings is by using different fonts within the same overarching typeface family. Find a so-called 'superfamily' and you'll have a ready-made range of weights, styles and classifications that are specifically designed to work together.

A good superfamily will include serif and a sans serif version of the same typeface: famous examples include Lucida/Lucida Sans and Meta/Meta Sans.

Best free fonts for designers
Tip 2: Pair contrasting typefaces

Contrast, as the name implies, is about finding totally different, but still complementary typefaces that are each fit for their intended application. Traditionally, this involves pairing a serif with a sans serif. 

Typefaces will generally conflict if they are too similar: two ever-so-slightly different serifs or sans serifs rarely creates nice font pairings.

As a designer, the important thing is to establish a clear hierarchy. This could be as simple as varying size and weight of the same typeface, but where the typeface varies, that's where careful font pairing is crucial. If you have a display face packed with unique personality, you'll need something more neutral to do the hard work.

Tip 3: Pair type sub-categories

Of course, 'serif' and 'sans serif' are themselves broad classifications – each split into several sub-categories. Generally speaking, Old Style serifs such as Bembo, Caslon and Garamond will combine well with Humanist sans serifs, such as Gill Sans and Lucida Grande.

Meanwhile, Transitional serifs have a stronger contrast between thick and thin strokes – examples include Bookman, Mrs. Eaves, Perpetua and Times. These pair with Geometric sans serifs such as Avant Garde, Avenir, Century Gothic, Eurostile, Futura and Univers.

Finally, Modern serifs have an often very dramatic contrast between thick and thin for a more pronounced, stylised effect, as well as a larger x-height. Included in this third sub-category are Bodoni, Didot, New Century Schoolbook and Walbaum. Again, Geometric sans serifs marry best with these.

So what does all this actually look like in practice? Here's our a reference list of tried-and-testing font pairings that are guaranteed to avoid conflict.

01. Freight Sans and Freight Text

Font pairings: Freight

Freight is available in a range of weights and styles

An example of a superfamily, GarageFonts' Freight is available in a large range of weights and styles, including Sans, Text, Display and Micro versions – giving you a versatile typographic toolkit.

02. Super Grotesk and Minion Pro

Font pairings: Minion pro/super grotesk

This match creates a luxurious finish

The ever-popular serifed Minion Pro works perfectly as a headlining font in this luxurious pairing. Coupled with the nimble sans-serif Super Grotesk, these two fonts carry a modern sense of elegance with minimal effort.

03. Kaufmann and NeutraDemi

Font pairings: Kaufmann and NeutraDemi

At a dash of handwritten flair with this font pairing

The flowing, handwritten stylings of Kaufmann add a touch of personality to this odd couple. Offsetting the straight and angular sans-serifed NeutraDemi perfectly, these two might not make a likely match, but that doesn't stop them playing off one another beautifully.

04. Brandon Grotesque and Minion Pro

Font pairings: Brandon grotesque minion pro

Minion Pro is the perfect choice for small text

The reliable Minion Pro makes another appearance, this time playing second fiddle to the bold and attention-grabbing Brandon Grotesque. It's a classic serif and sans-serif font pairing, with both typefaces remaining crisp and easy to scan.

05. Helvetica Neue and Garamond

Font pairings: Helvetica Neue and Garamond

A type match made in heaven

A famously harmonious duo, with the ubiquitous Neo-Grotesque sans serif for headlines, and the classic Old Style serif for text. Mix up weights and sizes between the two neutral families to establish hierarchy.

06. Caslon and Myriad

Font pairings: Caslon and Myriad

1700s meets late 20th century

Another classic font pairing, this time between an 18th century Old Style serif and a late-20th century Humanist sans serif. Myriad is famously used in Apple’s corporate communication, as well as in the Rolls Royce logo.

07. Fontin and Fontin Sans

Font pairings: Fontin and Fontin Sans

These Dutch typefaces are ideal partners

Our second superfamily, Fontin was designed by Dutch foundry exljbris specifically to be used at small sizes, with a loose spacing and tall x-height. Fontin Sans is designed as an ideal partner for it.

08. Minion and Poppl-Laudatio

Font pairings: Minion and Poppl-Laudatio

Two typefaces with personality that bond perfectly

An Old Style serif typeface with personality, Minion was designed in 1990 but inspired by late Renaissance era type. Although technically a sans serif, Poppl-Laudatio's subtle flared details bring out its pronounced serifs.

09. Liberation Serif and Liberation Sans

Font pairings: Liberation Serif and Liberation Sans

An open source superfamily pairing

Another superfamily, which also includes Sans Narrow and Mono variations, Liberation was intended as an open-source substitute for many commonly used Windows fonts, such as Arial, Times New Roman and Courier New.

10. Trade Gothic Bold and Sabon

Font pairings: Trade Gothic Bold and Sabon

These readable typefaces combine well

This pairing is particularly effective when Trade Gothic is used in its Bold weight for headlines, to set off Jan Tschichold's classic Old Style serif face for text. Both typefaces are highly readable, with a tall x-height, and combine well.

11. Scala and Scala Sans

Font pairings: Scala and Scala Sans

A hugely versatile pairing

FontFont’s superfamily began with the serif version in 1990, followed in ’92 by its sans serif companion. With small caps, various ligatures and old-style figures, it’s hugely versatile and widely used in publishing.

12. Rockwell Bold and Bembo

Font pairings: Rockwell and Bembo

Bold and attention-grabbing meets calmly neutral

One of the classic slab serifs, Rockwell was designed in the 1930s and has a huge amount of personality and attention-grabbing potential when used bold. The much more conservative serif Bembo is neutral but versatile.

13. Myriad Black and Minion

Font pairings: Myriad and Minion

A great combination for clear hierarchy

Myriad and Minion have already cropped up in different font pairings earlier in the list, but this combination of the shouty ultra-bold Black version of the former and the text weight of the latter achieves clear hierarchy.

14. Souvenir and Futura Bold

Font pairings: Souvenir and Futura

Two strong type personalities that work well together

Mixing two strong typographic personalities rarely works, as they end up fighting. Souvenir is softer and more playful than many of its Old Style serif counterparts, while Futura Bold is quirky without being too dominant.

15. Dax Bold and Caslon

Font pairings: Dax and Caslon

Caslon’s second entry on this list

One of the most versatile Old Style serifs, Caslon also appeared earlier on this list. Its neutrality lets the informal, modern Dax Bold deliver strong personality for a headline without competing for attention.

16. Aviano and Aviano Sans

Font pairings: Aviano and Aviano Sans

Two tilting typefaces working in harmony

Only available in all-caps varieties, Aviano has sharp, edgy serifs that give it a distinctive personality – while its sans serif version is smoother. They combine well to create hierarchy between two titling faces.

17. Antique Olive Bold and Chaparral

Font pairings: Antique Olive and Chaparral

A quite distinctive font pairing

Initially designed as an alternative to Helvetica and Univers, Antique Olive has a very tall x-height with short ascenders and descenders that make it highly distinctive in display form. Chaparral has a modern feeling but is a much more neutral slab serif.

18. TheSerif and TheSans

Font pairings: TheSerif and TheSans

These typefaces were made to work together

The rather straightforward naming strategy within LucasFonts’ Thesis typeface superfamily makes the foundry's intentions pretty clear: these are totally complementary, and each comes with its own sub-varieties.

19. Renault Light and Apex-New

Font pairings: Renault and Apex

Contemporary sans serif meets authoritative serif

An ideal combination for formal corporate use: both Renault and Apex-New have a very similar ratio of x-height to body height for an effortless partnership between contemporary sans serif and authoritative serif.

20. Calluna and Calluna Sans

Font pairings: Calluna and Calluna Sans

Calluna was born from experimentation

Another exljbris creation, Calluna was born out of an experiment with adding slab serifs to Museo, giving designer Jos Buivenga the idea of 'serifs with direction'. The result is a highly distinctive text face that later spawned a sans serif companion.

You might like these other typography articles:

20 fonts every graphic designer should ownHow to create your own font5 fonts created by famous designers and why they work

Collective #343

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

C343_FullStory

This content is sponsored via Syndicate Ads
See What Your Users See With FullStory

FullStory helps you build incredible online experiences by capturing every click, swipe, and scroll, then replaying sessions with pixel-perfect clarity.

Try FullStory, free

C343_CustomElementsEverywhere

Custom Elements Everywhere

A project that shows interoperability issues with Custom Elements and other frameworks, and highlights potential fixes.

Check it out

C343_cboard

Cboard: AAC Communication Board for the Browser

Cboard is an augmentative and alternative communication (AAC) web application, allowing users with speech and language impairments (autism, cerebral palsy) to communicate by symbols and text-to-speech. By Shay Cojocaru.

Check it out

C343_PDF

pdf-bot

A Node queue API for generating PDFs using headless Chrome. Comes with a CLI, S3 storage and webhooks for notifying subscribers about generated PDFs. By Esben Petersen.

Check it out

C343_InterfaceFont

Free Font: Interface

Interface is a typeface specially designed for user interfaces, with excellent legibility at small sizes.

Get it

C343_dashboard

Electron Webpack Dashboard

Electron desktop GUI for the Webpack dashboard by Formidable. Read more about it in this article.

Check it out

C343_QuantumCSS

Inside a super fast CSS engine: Quantum CSS (aka Stylo)

Lin Clark introduces the new CSS engine that is now available for testing in Firefox Nightly.

Read it

C343_HN_ReactLicense

Comments on “Explaining React’s License”

Facebook refuses to remove a controversial clause from React’s license that makes developers feel stranded and insecure about FB’s open source spirit.

Read it

C343_v8

How JavaScript works: inside the V8 engine + 5 tips on how to write optimized code

Alex Zlatkov dives into the internal parts of Google’s V8 JavaScript engine and provides some tips on how to write better JavaScript code.

Read it

C343_PaintWebGL

WebGL Fluid Simulation

A fantastic WebGL demo by Pavel Dobryakov.

Check it out

C343_pushnotifications

Implementing Push Notifications: Setting Up & Firebase

Part one of a two-part series on implementing push notifications. By Pascal Klau.

Read it

C343_Ptsjs

Pts.js

A great library that enables you to compose and visualize points in spaces.

Check it out

C343_Font1

Free font: Celestina

A lovely handwritten brush font designed by Antonina Zhulkova.

Get it

C343_AwesomeLinux

Awesome Linux Software

A list of awesome applications, software, tools and other materials for Linux distros. By Luong T.T. Vo.

Check it out

C343_SketchPlugin

How To Create A Sketch Plugin With Front-End Technologies

Zachary Schuessler shows how to use WebView to create a Sketch plugin using HTML, CSS and JavaScript.

Read it

C343_AsyncAwait

Async/Await Will Make Your Code Simpler

Read how Patrick Triest learned to stop writing callback functions and love JavaScript ES8.

Read it

C343_thinklikeprogrammer

How to think like a programmer

In case you missed it: learn how to think like a programmer with these useful tips. By Zell Liew.

Read it

C343_WaveSVG

SVG Gradient Wave Generator

A generator by Fabio Ottaviani for creating interesting SVG wave patterns with gradients.

Check it out

C343_vuebrunch

Vue.js + Brunch: The Webpack Alternative You’ve Been Hungry For

Anthony Gore shows how to use Brunch with Vue.js, a Webpack alternative for faster and more compact compilation.

Read it

C343_Chrome

Run multiple versions of Chrome side-by-side

Chrome Beta and Chrome Dev can now be installed on the same Windows computer as stable Chrome and run simultaneously, allowing developers to more easily test their site across multiple versions of Chrome.

Read it

C343_HowMachinesLearn

How Machines Learn: A Practical Guide

Karlijn Willems lists seven steps (and 50+ resources) that will help you get started with machine learning.

Read it

C343_Macos

My wonderful world of macOS

A list of applications, alfred workflows and various tools that make a macOS experience even more amazing. By Nikita Voloboev.

Check it out

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

UX Meets MBA: What Happens When A Designer Goes To Business School

Original Source: https://www.smashingmagazine.com/2017/08/ux-mba-designer-business/


 

 

If great design can imbue customers with trust, why are designers so removed from product management and the larger business strategy? As a VP of UX with an MBA, I strive to bring both worlds together to create a new model in which user experience and design align with overall business strategy and company vision to drive increased revenue and customer engagement.

UX Meets MBA: What Happens When A Designer Goes To Business School

As the Internet became commercially viable, “first to market” generally prevailed as a dominant corporate strategy. However, as technology has become more open and reusable, product differentiation is now a proven strategic blueprint. This tectonic shift has been a boon for the design discipline. Consequently, design has gotten the proverbial “seat at the table” and is now expected to be a driving, strategic function.

The post UX Meets MBA: What Happens When A Designer Goes To Business School appeared first on Smashing Magazine.

Removing Friction In UX: Last-Minute Travel Planning And Activity Booking (A Case Study)

Original Source: https://www.smashingmagazine.com/2017/08/removing-friction-ux-last-minute-travel-planning-activity-booking/


 

 

Most travellers make last-minute decisions, even though they spend significant time researching things to do before embarking on their trip. Finding a hotel and flight is relatively easy, but when it comes to tours and activities, the problem is that late or last-minute bookings are not always available.

Removing Friction In UX: Last-Minute Travel Planning And Activity Booking

And if they are available, the process of making a purchase online is often hard. The mobile experience can also be limited because many websites are slow or their booking process is long and complex.

The post Removing Friction In UX: Last-Minute Travel Planning And Activity Booking (A Case Study) appeared first on Smashing Magazine.

Book Review – Universe: Exploring the Astronomical World

Original Source: http://feedproxy.google.com/~r/abduzeedo/~3/Cdz0U6_UJAA/book-review-universe-exploring-astronomical-world

Book Review – Universe: Exploring the Astronomical World

Book Review - Universe: Exploring the Astronomical World

ibby
Aug 24, 2017

With all of the eclipse hullabaloo we felt very apropos to feature this beautiful book Universe: Exploring the Astronomical World by acclaimed astronomer Paul Murdin. Previous to studying the skies above the US, Australia, England, Scotland and Spain, Murdin was a research scientist for the UK Government and the Royal Astronomical Society. This book is for anyone in your life with an eye for art and an obsession with astronomy. One can explore the stars and planets from ancient cave paintings to animation all brought to life by an international panel of experts.

“I believe everyone should have a broad picture of how the universe operates and our place in it. It is a basic human desire.” —Stephen Hawking

This beautiful book is a groundbreaking survey that celebrates the popular subject of astronomy through 300 images created by those who have been inspired by the mystery of our beloved universe above. Arranged to highlight thought-provoking contrasts and similarities,  you’ll be delighted by paintings, photographs, sculpture, animation, prints, sketches, and digital renderings with iconic works by renowned photographers, artists, and astronomers alongside previously unpublished finds.

You can pre-order Universe now for $59.95 and this title will ship by October 9th, just in time for the holidays. 

Buy Now

book review
universe
Astronomical World


Image Optimization in Advanced Web Development

Original Source: http://feedproxy.google.com/~r/1stwebdesigner/~3/w19uUDx023c/

Web-quality imagery is always a balancing act between using the smallest possible file size while providing good image quality. Embedding a photo straight off your DSLR may look nice, but it will slow your website’s load to a crawl, while an over-compressed image may improve the speed of your site yet discredit the design and overall aesthetic.

For the two types of image assets we predominantly deal with – photos and icons/illustrations – we perform a mixture of image quality checks and compression techniques that work well in most case scenarios.

File Types and When to Use Them

There are three image file types we use when building websites: .jpg .png and .svg.

JPGs are best used for photos such as landscapes, scenery or people. For imagery in content, such as a blog article image, we aim for 20-70kb. Larger background photos can get up to 500kb, but 200kb is a good average.

JPGs are lossy (they recompress and degrade the image quality each time you export), and they don’t manage gradients very well. If you have a gradient in an image, sometimes you can separate the image into two cuts so that you can render the gradient in a separate background using CSS gradients instead.

PNGs are best for assets such as logos and icons because they support transparency and because logo and icons often use a more limited color palette – since PNGs achieve compression through a reduction in the number of colors.

A PNG can be lossy, but we typically use lossless, meaning every pixel is saved exactly without degrading the color palette, resulting in a higher-quality image.

SVGs have the best quality of all and are used for vector art due to their scalability. We often use them with logos, however, SVGs do create more work for the browser to render and can create sluggishness as the page loads, so the quality of your image should always be balanced against its complexity.

As an example of when we use PNGs and SVGs, compare the logos for Silver Screen Insider and Bozeman Websites. For the former, we used an SVG. For Bozeman Websites, because of the complexity introduced with CSS animation when a user scrolls down, we chose to use PNGs instead so as not to compromise browser performance.

Sometimes the best solution is a combination of both: for the logo on JTech’s website, the “JT” component is a PNG, but the “Celebrating 20 Years” is an SVG in order for it to retain its quality in all viewport sizes.

Optimization Techniques

In order to get the best possible results, it is important to optimize your images. To do so, we utilize three programs: ImageOptim (for JPGs and PNGs), ImageAlpha (for PNGs) and Scour (for SVGs).

Optimizing JPGs

ImageOptim reduces the file size of JPGs and PNGs. For large images, such as the ones we use for background panels, we cap dimensions at 1600x1200px. For content photos such as an image inserted in a blog article, we cap dimensions between 200-800px wide.

After resizing to its final resolution, the image is output in Photoshop using the best quality available. Each time we compress the image it loses some fidelity, so we prefer to rely solely on ImageOptim for compression rather than having Photoshop do a pass. Photoshop is noticeably less efficient: its “save for web” at quality 65 produces an image of equal file size but poorer fidelity than ImageOptim’s quality 85.

Retina JPGs

When targeting retina or other high-density displays, we’ve found it works best to save a single JPG at twice the resolution, but use higher compression, around 50-60 in ImageOptim, which can produce a high-quality image that looks good on both retina and standard, lower-density displays. This technique allows us to use a single asset for retina and standard displays rather than cutting and loading multiple versions and without quadrupling the size of our images.

Optimizing PNGs

For PNGs, we output from Photoshop using PNG 24 in their “save for web” option, then run it through ImageOptim. If it detects that the image is using fewer than 256 colors, ImageOptim will losslessly convert the image to a PNG 8, a simpler file format that can produce very light-weight files.

With ImageOptim, our final output of an image without too many complexities (minimal color, simple shapes, and resolution less than 200x200px) can range in size from 15kb down to under 1kb.

Optimizing Larger PNGs

For more complex images, if we can’t produce a file between 15kb and 50kb with ImageOptim, we use ImageAlpha. ImageAlpha is used to process PNGs from a PNG 24 (millions of colors) to a PNG 8 (256 colors maximum), changing the image from lossless to lossy, ultimately aiming for the one with the smallest number of colors.

Lossiness in this format primarily means strategic refinement of the color palette, eliminating the least-noticeable colors to produce an image that still looks great while reducing its complexity.

After exporting from ImageAlpha, we run it through ImageOptim so it can be optimized further.

Optimizing SVGs

When it comes to SVGs, we reduce as much complexity as possible before we export the image from Illustrator. An often tedious process due to their size, we first try to reduce the number of layers to a minimum while still accurately displaying the artwork. It is then saved as an SVG in Illustrator and optimized with a program called Scour.

We use this automator script to make it a bit easier to use in macOS, allowing you to right-click an SVG file in the Finder and optimize the SVG through the Services menu. We often use font files for vector graphics that are single-color with a program called Glyphs.

Conclusion

Properly optimizing imagery is just another way we can improve the performance of our websites, prevent browser bloat, reduce server and bandwidth resource usage, hasten page load time, keep the development infrastructure clean and provide a much more desirable experience for the end-user.

We hope this exploration of our experience with JPG, PNG and SVG file types, image compression and quality tools are a resource for you as we continually refine our own process to produce websites of high caliber.