NFT Spotlight — Upscale Visuals by Rus Khasanov

Original Source: http://feedproxy.google.com/~r/abduzeedo/~3/ARnpe93u0J4/nft-spotlight-upscale-visuals-rus-khasanov

NFT Spotlight — Upscale Visuals by Rus Khasanov
NFT Spotlight — Upscale Visuals by Rus Khasanov

AoiroStudio1110—21

We wanted to share for our NFT Spotlight, the sublime visuals done by Rus Khasanov, a visual artist from Russia. If you are not familiar with this work, it’s a combination of showcasing emotions through his visual art, I was personally drawn to the treatment of his color choice. They are so vibrant and yet would magnify beautifully within the piece or series. What we are showcasing today is part of what Rus series titled ‘The mirror of the Soul’, give it a look.

NFT Spotlight

abstract Abstract Art eye gif gold Liquid paint Photography  sonyA7RIV green

abstract Abstract Art eye gif gold Liquid paint Photography  sonyA7RIV green

abstract Abstract Art eye gif gold Liquid paint Photography  sonyA7RIV green

abstract Abstract Art eye gif gold Liquid paint Photography  sonyA7RIV green

abstract Abstract Art eye gif gold Liquid paint Photography  sonyA7RIV green

abstract Abstract Art eye gif gold Liquid paint Photography  sonyA7RIV green

abstract Abstract Art eye gif gold Liquid paint Photography  sonyA7RIV green

abstract Abstract Art eye gif gold Liquid paint Photography  sonyA7RIV green

abstract Abstract Art eye gif gold Liquid paint Photography  sonyA7RIV green

abstract Abstract Art eye gif gold Liquid paint Photography  sonyA7RIV green

abstract Abstract Art eye gif gold Liquid paint Photography  sonyA7RIV green

 

 

Rus Khasanov is a visual artist based in Yekaterinburg, Russian Federation. You can check out more of his NFT work on Foundation

Foundation
Behance
Instagram


Localizing Your Next.js App

Original Source: https://smashingmagazine.com/2021/11/localizing-your-nextjs-app/

Instructing Next.js your app intends to have routes for different locales (or countries, or both) could not be more smooth. On the root of your project, create a next.config.js if you have not had the need for one. You can copy from this snippet.

/** @type {import(‘next’).NextConfig} */

module.exports = {
reactStrictMode: true,
i18n: {
locales: [‘en’, ‘gc’],
defaultLocale: ‘en’,
}
}

Note: The first line is letting the TS Server (if you are on a TypeScript project, or if you are using VSCode) which are the properties supported in the configuration object. It is not mandatory but definitely a nice feature.

You will note two property keys inside the i18n object:

locales
A list of all locales supported by your app. It is an array of strings.
defaultLocale
The locale of your main root. That is the default setting when either no preference is found or you forcing to the root.

Those property values will determine the routes, so do not go too fancy on them. Create valid ones using locale code and/or country codes and stick with lower-case because they will generate a url soon.

Now your app has multiple locales supported there is one last thing you must be aware of in Next.js. Every route now exists on every locale, and the framework is aware they are the same. If you want to navigate to a specific locale, we must provide a locale prop to our Link component, otherwise, it will fall back based on the browser’s Accept-Language header.

<Link href=”/” locale=”de”><a>Home page in German</a></Link>

Eventually, you will want to write an anchor which will just obey the selected locale for the user and send them to the appropriate route. That can easily be achieved with the useRouter custom hook from Next.js, it will return you an object and the selected locale will be a key in there.

import type { FC } from ‘react’
import Link from ‘next/link’
import { useRouter } from ‘next/router’

const Anchor: FC<{ href: string }> = ({ href, children }) => {
const { locale } = useRouter()

return (
<Link href={href} locale={locale}>
<a>{children}</a>
</Link>
)
}

Your Next.js is now fully prepared for internationalization. It will:

Pick up the user’s preferred locale from the Accepted-Languages header in our request: courtesy of Next.js;
Send the user always to a route obeying the user’s preference: using our Anchor component created above;
Fall back to the default language when necessary.

The last thing we need to do is make sure we can handle translations. At the moment, routing is working perfectly, but there is no way to adjust the content of each page.

Creating A Dictionary

Regardless if you are using a Translation Management Service or getting your texts some other way, what we want in the end is a JSON object for our JavaScript to consume during runtime. Next.js offers three different runtimes:

client-side,
server-side,
compile-time.

But keep that at the back of your head for now. We’ll first need to structure our data.

Data for translation can vary in shape depending on the tooling around it, but ultimately it eventually boils down to locales, keys, and values. So that is what we are going to get started with. My locales will be en for English and pt for Portuguese.

module.exports = {
en: {
hello: ‘hello world’
},
pt: {
hello: ‘oi mundo’
}
}

Translation Custom Hook

With that at hand, we can now create our translation custom hook.

import { useRouter } from ‘next/router’
import dictionary from ‘./dictionary’

export const useTranslation = () => {
const { locales = [], defaultLocale, …nextRouter} = useRouter()
const locale = locales.includes(nextRouter.locale || ”)
? nextRouter.locale
: defaultLocale

return {
translate: (term) => {
const translation = dictionary[locale][term]

return Boolean(translation) ? translation : term
}
}
}

Let’s breakdown what is happening upstairs:

We use useRouter to get all available locales, the default one, and the current;
Once we have that, we check if we have a valid locale with us, if we do not: fallback to the default locale;
Now we return the translate method. It takes a term and fetches from the dictionary to that specified locale. If there is no value, it returns the translation term again.

Now our Next.js app is ready to translate at least the more common and rudimentary cases. Please note, this is not a dunk on translation libraries. There are tons of important features our custom hook over there is missing: interpolation, pluralization, genders, and so on.

Time To Scale

The lack of features to our custom hook is acceptable if we do not need them right now; it is always possible (and arguably better) to implement things when you actually need them. But there is one fundamental issue with our current strategy that is worrisome: it is not leveraging the isomorphic aspect of Next.js.

The worst part of scaling localized apps is not managing the translation actions themselves. That bit has been done quite a few times and is somewhat predictable. The problem is dealing with the bloat of shipping endless dictionaries down the wire to the browser — and they only multiply as your app requires more and more languages. That is data that very often becomes useless to the end-user, or it affects performance if we need to fetch new keys and values when they switch language. If there is one big truth about user experience, it’s this: your users will surprise you.

We cannot predict when or if users will switch languages or need that additional key. So, ideally, our apps will have all translations for a specific route at hand when such a route is loaded. For now, we need to split chunks of our dictionary based on what the page renders, and what permutations of state it can have. This rabbit hole goes deep.

Server-Side Pre-Rendering

Time to recap our new requirements for scalability:

Ship as little as possible to the client-side;
Avoid extra requests based on user interaction;
Send the first render already translated down to the user.

Thanks to the getStaticProps method of Next.js pages, we can achieve that without needing to dive at all into compiler configuration. We will import our entire dictionary to this special Serverless Function, and we will send to our page a list of special objects carrying the translations of each key.

Setting Up SSR Translations

Back to our app, we will create a new method. Set a directory like /utils or /helpers and somewhere inside we will have the following:

export function ssrI18n(key, dictionary) {
return Object.keys(dictionary)
.reduce((keySet, locale) => {
keySet[locale] = (dictionary[locale as keyof typeof dictionary][key])
return keySet
, {})
}

Breaking down what we are doing:

Take the translation key or term and the dictionary;
Turn the dictionary object into an array of its keys;
Each key from the dictionary is a locale, so we create an object with the key name and each locale will be the value for that specific language.

An example output of that method will have the following shape:

{
‘hello’: {
‘en’: ‘Hello World’,
‘pt’: ‘Oi Mundo’,
‘de’: ‘Hallo Welt’
}
}

Now we can move to our Next.js page.

import { ssrI18n } from ‘../utils/ssrI18n’
import { DICTIONARY } from ‘../dictionary’
import { useRouter } from ‘next/router’

const Home = ({ hello }) => {
const router = useRouter()
const i18nLocale = getLocale(router)

return (
<h1 className={styles.title}>
{hello[i18nLocale]}
</h1>
)
}

export const getStaticProps = async () => ({
props: {
hello: ssrI18n(‘hello’, DICTIONARY),
// add another entry to each translation key
}
})

And with that, we are done! Our pages are only receiving exactly the translations they will need in every language. No external requests if they switch languages midway, on the contrary: the experience will be super quick.

Skipping All Setup

All that is great, but we can still do better for ourselves. The developer could take some attention; there is a lot of bootstrapping in it, and we are still relying on not making any typos. If you ever worked on translated apps, you’ll know that there will be a mistyped key somewhere, somehow. So, we can bring the type-safety of TypeScript to our translation methods.

To skip this setup and get the TypeScript safety and autocompletion, we can use next-g11n. This is a tiny library that does exactly what we have done above, but adds types and a few extra bells and whistles.

Wrapping Up

I hope this article has given you a larger insight into what Next.js Internationalized Routing can do for your app to achieve Globalization, and what it means to provide a top-notch user experience in localized apps in today’s web. Let hear what you think in the comments below, or send a tweet my way.

Inspirational Websites Roundup #31

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

Another month has passed and we’ve got a fresh websites roundup for you! There’s lots of amazing web designs with interesting layouts, typography and color schemes. Interesting, playful details and white space are big, and mellow light in images create the right ambient for web experiences that are a pleasure to browse.

Hope you enjoy this set and find it inspirational!

Caledonian

Palette

Cleo

MESA Hurstville

kirifuda

Creative Nights

Oatly

ETQ Amsterdam

Star Atlas

Canvas Agency

Atoll Digital

CROING

L+L®

Eun Jeong Yoo

Niftypays

IAD LAB 2021

Miranda

Hyper Tria

INO

Ferro 13

15 years of MELON FASHION

Liron Moran Interiors

The Sea We Breathe

hyogen

Feldman.Studio

Team Stefansky

Shapefarm

DFY

GSoft

Goodkids

Victoire Douy

part-time.studio

The Andrei Sakharov Museum

Lunchbox

The post Inspirational Websites Roundup #31 appeared first on Codrops.

How To Improve UX With Sketching

Original Source: https://www.webdesignerdepot.com/2021/11/how-to-improve-ux-with-sketching/

Is sketching essential to UX and UI designers? Well, if you think of sketching as a way to explore problems and record potential solutions, then yes, it absolutely is.

One of the most challenging tasks of any design process is capturing the initial idea. We’ve all spent countless hours thinking through an innovative solution to a project, only to lose the idea again. It turns out that sketching is a brilliant solution to this problem.

In this guide, you’ll learn how to improve your UX designs using sketching as a tool. First, we’ll answer the question of how sketching benefits design, then we’ll look at the tools you need, and finally what an efficient sketching process looks like. By the end of this 3-minute read, you’ll have valuable new knowledge that will help you as a designer.

Why Sketching Is Important For Designers

When you start working on a project, it’s tempting to jump straight into high-resolution wireframes. But in doing so, you run the risk of spending hours on each little detail, only to discover that the overall concept doesn’t work.

Sketching — unlike drawing, which is about communicating an idea — is a free-flowing, process that allows you to get your ideas down on paper (yes, paper!) fast.

If there’s one thing you take away from this guide, let it be this: sketches aren’t for clients, or colleagues, or Dribbble, sketches are just for you. They’re a non-written way of rapidly making notes. Sketches will help you recall all the possible routes to consider.

Sketching is all about visualizing your ideas quickly and efficiently. When you’re sketching, you don’t have to worry about details, and you don’t have to worry about communicating with anyone else.

By sketching ideas without detail, you can quickly explore numerous solutions for a project. It’s fascinating how sketching can help you visualize an idea and revise it again and again along the way with minimal effort.

So, what revolutionary new tools do you need?

What Tools Do You Need For Sketching?

Designers love new tools, but when it comes to sketching there are relatively few, and you probably already have them to hand.

First, you’re going to need paper. A notebook is fine, it doesn’t have to be high-quality paper; in fact, you will probably feel freer and less restrained if you make sure that it is cheap.

You’ll need something to make a mark on the paper. A pencil is fine, as is a pen, a biro, and just about anything else. Don’t worry about an eraser, sketching isn’t about correcting mistakes, but you will need a sharpener if you’re using a pencil — never draw with a blunt pencil!

Whatever implement you choose, it’s a good idea to have a heavy marker, like a Sharpie, to pick out an important detail, and perhaps a fine pen to add small detail (if required).

Finally, make sure you have a timer to hand. A chess clock is perfect for an old-school aesthetic, but a timer on your phone is perfectly fine. The timer is to make sure you don’t spend too long on one sketch, so you don’t have time to get wrapped up in perfecting the details.

Sketching 101: A Step-by-Step Process

When you’ve been sketching for a while, you’ll discover your own process, and preferred methods. But for anyone new, here’s how to get started.

1. The Initial Idea

As with designing a wireframe, the most challenging step is getting started. Usually, at the beginning of a project, we are overwhelmed. This is because there are so many ideas, and we do not know where to start. For this reason, a detailed analysis of the project is essential.

You can start by thinking about the most important interactions you need to create. This way, you will find out the most important and exciting aspects of the project.

Since most of us get caught up in the fine details, it is beneficial to think of sketching as a brainstorming session. This session is simply about coming up with an innovative solution for a project and visualizing it.

It’s fine to have an idea that you’ll ultimately disregard. This is not the time to edit yourself.

2. Start Sketching

Take a piece of paper and use your sketching tool to divide it into six sections. Set your timer for 5 minutes and start drafting mockups for the first interaction.

Often, designers struggle with this step, and fall back on what they’re used to, i.e. wireframing and high-res mockups. If you find that you’re struggling to start sketching, start by making a mark on the paper; any mark at all. Then, make a second mark. With the third mark, try to position it in a way that says something to you about the project, by its size, weight, position — anything at all. Keep going, and before you know it you’ll have a complete sketch.

It’s vital that you do not exceed the time you give to yourself because sketching is not about fine details. The time is better spent exploring multiple ideas, even if those ideas only serve to confirm that the first idea was the most promising.

Repeating this step can be very valuable. Once you are happy with the results, you can move on to the next and final step.

3. Self-Editing

Unfortunately, you can not take away every concept you have outlined. This step is about choosing your most effective ideas and expanding on them.

Most designers want to create top-notch, detailed designs, and that’s fine. However, sketches are only really helpful for the early stages of a project, and creating perfect sketches in the first stages of a project may not be productive — in fact, it can be restrictive.

It’s often a good idea to combine some of your designs. Redraw them together, and once you’ve done that expand and refine them.

Improve Your Design With Sketching

It doesn’t matter if you think you’re bad at sketching — no one is going to see your sketches except you. Many of us would struggle to sing in public, but are absolutely fine singing in the shower.

Remember that sketching is not about your artistic skills; it’s about capturing an idea and expanding on it. After all, once you have your final design, you will recreate it digitally.

You don’t have to be an artist to be a designer. And since sketching can improve your UX designs, there are many reasons you should give it a try.

Once you’re comfortable with sketching, you’ll find it an invaluable tool for identifying sticking points in a project, and solving them before you reach the wireframe stage.

 

Featured image via Pexels.

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;}

The post How To Improve UX With Sketching first appeared on Webdesigner Depot.

How to Draw a Mushroom

Original Source: http://feedproxy.google.com/~r/Designrfix/~3/WgpudOZcmVs/how-to-draw-a-mushroom

The mushroom is neither a plant nor an animal, yet it is fascinating. Mycelium, or roots, are found on the surface of the mushroom, creating the appearance of a plant. The plant matter is consumed by the mycelium, but an animal can move freely around the world. The rest of the world’s fungi, however, are…

The post How to Draw a Mushroom appeared first on .

How to Access Blocked Websites (9 Ways)

Original Source: https://www.hongkiat.com/blog/alternative-ways-to-access-blocked-websites/

There may be times when you come across a website or service that’s been blocked by your employer, Internet service provider, or the government. If you find yourself in such a situation and…

Visit hongkiat.com for full content.

18 great places to download free fonts

Original Source: http://feedproxy.google.com/~r/CreativeBloq/~3/aKz7PvF8pqs/download-free-fonts-resources-912696

These sites offer a huge range of fonts to download for free.