Hook Adjustable Light – Industrial Design

Original Source: http://feedproxy.google.com/~r/abduzeedo/~3/5jM3-COTJ3I/hook-adjustable-light-industrial-design

Hook Adjustable Light – Industrial Design
Hook Adjustable Light - Industrial Design

abduzeedo01.04.21

Huisu Jo shared an industrial design project that would solve one of the biggest issues I have today with working from home, light or the correct lighting for video-conference. ‘Hook’ allows people to adjust the position of the lights they need according to the situation. 

The idea got inspiration from ‘Dongmyo’ which is a traditional Korean market where everything is used as the ‘most convenient way’. The project began, observing people’s behavior in ‘Dongmyo’ and looking for new uses for things. “Among them, I was inspired by the fact that hangers are used as the easiest way to place things where users wanted them.” — added Huisu. 

Below you can see a bit more behind how Mr. Jo went from the idea to execution. 

Image may contain: black and white, outdoor and streetImage may contain: furniture, drawing and sketchImage may contain: drawing, sketch and child artImage may contain: gymnasticsImage may contain: cartoon and screenshotImage may contain: sketch and drawingImage may contain: indoorImage may contain: black and whiteImage may contain: table and clothingImage may contain: person

All parts are made by pipe banding, lathe processing, and metal spinning


Towards An Ad-Free Web: Diversifying The Online Economy

Original Source: https://smashingmagazine.com/2021/01/towards-ad-free-web-diversifying-online-economy/

Money talks, and there is an awful lot of money on the web these days. That is not necessarily a bad thing in and of itself, but it does seem to have hamstrung how websites are designed and financed. The pandemic — and the consequent collapse of an already warped online ad ecosystem — makes it all the clearer that the web needs to diversify the way it makes money, and who it ultimately serves.

State Of The Web

The Internet is not in the best shape right now. Back in 2017, the founder of the World Wide Web, Sir Tim Berners-Lee, said:

“The system is failing. The way ad revenue works with clickbait is not fulfilling the goal of helping humanity promote truth and democracy.”

I think it’s safe to say things have largely gotten worse since then. Ads everywhere, tracking run amok, clickbait, misinformation, net neutrality under siege… engagement is king — more important than nuance, ethics, or truth — because that’s where the money is. The average user sees thousands of ads per day. The World Wide Web isn’t exactly humanity’s shining light right now, at a time when a whole lot of things are compounding our general sense of inescapable doom.

In the midst of this dog-track-dog online culture, the common website has been browbeaten into meek, insipid husks of what they could be. Can we get another ad in there? What about a few more pop-ups? Maybe a few affiliate links. We’ve all experienced the insidiousness of the modern web, we’ve all seen the pop-ups saying ‘We care about your privacy’ before asking us to sign away our privacy. One tires of being lied to so often, and so casually.

Still, I’m not here to complain. At least, I’m not just here to complain. There are flickers of light in the darkness. There are other ways to pay for websites. It’s just as well too because legislation will catch up with the wild wild World Wide Web eventually and then ads will be worth even less.

That’s what this piece is about: alternatives, and why they’re worth embracing. There will always be ads, and up to a point that’s fine, but there shouldn’t only be ads.

Further Reading

“The High Privacy Cost of a “Free” Website,” Matt Chase
10 States Accuse Google of Abusing Monopoly in Online Ads, David McCabe & Daisuke Wakabayashi

Exploring Alternatives

Not every website needs to make money. Let’s get that out of the way. Making money is not the measure of a thing. Not every website needs to care about cost. Hobbies, blogs, forums, digital art… plenty of things are worth doing for their own sake.

This article is directed at sites or web apps that offer some kind of service, with operational costs and long-term financial factors that extend beyond a few dollars on a domain name. This article is about widening the horizon of the online economy beyond ads, ads, and more ads.

Subscriptions

This is probably the most obvious alternative to ads, and trickier than you might think to implement. The principle of it is simple: a website does something of value and asks users to pay for it.

A major advantage of subscriptions is their simplicity. Want X? Pay for X. More and more people are wising up to the fact that few things online are truly free. More often than not when an online service is ‘free’ its users are the product. A valuable service reasonably priced is a welcome antidote to that.

A high profile example of this is Medium. Signing up for a few dollars a month gives members access to articles. It’s an increasingly popular approach in editorial circles. Some publications, like The Guardian, make their content accessible to everyone, while the likes of The New York Times use a paywall. In either case, the pitch is the same: help make what we do possible by subscribing.

Smashing itself does this well, having pivoted away from ads during the big site redesign a few years back. Ads still play a big part, yes, but they’re not the only part. Sustainability online isn’t about moving all your eggs from one basket to another — it’s about variety, about escaping the tunnel vision of advertising.

There are examples of subscriptions and donations working away from editorial contexts. Lynda charges for its courses. Wikipedia, mercifully, is ad-free, sustained by intermittent donation drives to its parent organization, the Wikimedia Foundation.

The subscription approach isn’t for everyone. The above examples all happen to be household names, after all. Strange that. Trust is such a big factor, and if you’re new on the block how many people are likely to give you their moola?

And, of course, there is also the Catch-22 situation of paywalls making a site inaccessible to most of the Internet. It’s bad for growing an audience and at odds with the web’s founding spirit of openness and transparency. That doesn’t sit well with a lot of people — including myself.

I think the saving grace here is that the ‘subscription model’ is much more of a spectrum than it was even five years ago. You can have everything from paywalls to ‘buy me a coffee’ buttons depending on what a website does.

If you provide a service — be it quality editorial content, useful tools, open access to data, or whatever else — don’t be shy about asking for support. And don’t be shy about incorporating those requests into the website’s design. A variety of tools and platforms can be integrated into existing sites with relative ease. Patreon, Ko-fi, and plenty more.

This is not about making people feel guilty. Not everyone can afford to support the sites they visit, and not everyone will think you’re worth supporting. It’s on you to make a positive case for yourself. Crowdfunding platforms like Open Collective and Chuffed are especially good reference points for this, modeling behavior such as:

Not making visitors feel guilty;
Telling stories people want to be part of and support;
Transparency about where the money’s going.

There is also the question of integration. Buttons, pop-ups, prudently placed CTAs. It all adds up, having started and pushed a reader patron scheme at a previous job.

Further Reading & Resources

Monetising With Buy Me a Coffee, Does it Work?, Michael Brockbank
Open Collective, a platform for transparent financing

Micropayments

It’s early days for this one, but something to keep an eye on. Web Monetization is a concept whereby Internet users have a kind of fund they top up regularly — let’s say $5 every month. When time is spent on a site, a fraction of the fund is transferred to that site.

The Brave web browser is a major example of this. Another is Web Monetization, which is being proposed as a W3C standard. Or Scroll, a kind of catch-all ad-free web package.

This approach seems to have struck a nerve, I think because it hits a balance between a Wild West Internet and a corporate one. The more people believe in it, the better it works. Three billion people use the web. If 10% signed up for three bucks a month that would still be a cool ten billion dollars up for grabs.

For the time being results are closer to pennies. But hey, nothing worth having comes easy. Supporting this approach is a two-way street. Depending on the system, implementation can be as simple as adding a line of code to the <head> of your website. It’s also a case of walking the walk.

Will this approach alone save the Internet? Probably not, but again, moving away from ads is about diversification, not finding a silver bullet.

Free, Non-Corporate Platforms

Now obviously, free platforms are not the answer to large-scale applications and web experiences. They are, however, often a perfect way to have an online presence without being sucked into the engagement black hole of modern social media.

Places like Neocities — a homage of sorts to GeoCities — still have a lot of life in them. I know, I’m on it. Independent, playful non-corporate platforms feel like something from another time, but they’re still perfectly good ways of planting your flag online.

It seems marketing has hammered into people that the only website worth having is one you’re paying through the nose for. Not so. The DIY weird web is alive and well.

With the likes of Netlify and GitHub pages about it’s perfectly possible to piggyback along without paying for anything more than a domain name, and even that is optional.

Of course, there is a limit to this kind of approach, but that doesn’t make it any less viable. By the time a website is bringing in enough traffic to warrant a dedicated hosting plan, it’s likely well placed to be asking for support.

Further Reading

Autonomy Online: A Case For The IndieWeb, Ana Rodrigues

Taking Control Of Your Data

All this talk of diversification and sustainability ties into a broader discussion going on right now about privacy. Half the battle is messaging. Although awareness is growing, a lot of people still don’t know about the costs of ‘free’ online experiences. That’s not an accident. Take the time to explain that if someone subscribes to a website’s service, they’re not just receiving the service. They’re receiving priority, respect, and privacy.

Advocating for a less ad-centric web means taking an honest look at who our masters are online. When you make a site, who is the site for? Is it for advertisers? Affiliates? Clients? Or is it for the people visiting the site? How lovely would it be to have robust, ethical income strategies that made websites beholden first and foremost to the people who use them.

The Role Of Developers

In a line of work where projects are increasingly fragmented, it’s easy to remove oneself from the moral failings of any given project. Edward Snowden said the same was true of the NSA spying programs he leaked in 2013. Just this year he identified social networks and apps as carrying similar risks.

Incorporate sustainability into your designs. Communicate what you do and how you survive and what people can do to help. Progress does not happen on its own. It never has and it never will. We have to be the change we want to see.

Christmas Design Resources – Fonts, Icons, Vectors, Tutorials And More

Original Source: https://www.hongkiat.com/blog/christmas-design-resources/

Christmas is that magical time of the year when everyone becomes a kid again. The thought of finding gifts under the Christmas tree, Santa and his flying reindeer, Christmas dinner and family…

Visit hongkiat.com for full content.

Sparks Of Inspiration To Welcome The New Year (January 2021 Wallpapers Edition)

Original Source: https://smashingmagazine.com/2020/12/desktop-wallpaper-calendars-january-2021/

Maybe you’ve already started into 2021 as you’re reading this, maybe you’re still waiting for the countdown to begin. Either way, it’s never too late or too early for some New Year’s inspiration!

For this wallpapers post, artists and designers from across the globe once again put their creative skills to the test and designed beautiful and unique wallpapers to welcome January 2021. All of them come with a calendar, and, in case you want to stick with your favorite even after January has ended, we’ve got you covered with non-calendar versions of each design, too. A big thank-you to everyone who created a wallpaper and shared it with us this time around — you are truly smashing!

At the end of this post, there’s also a little bonus goodie waiting for you: a hand-picked selection of January treasures that we rediscovered deep down in our wallpaper archives. Have a happy and healthy 2021!

All images can be clicked on and lead to the preview of the wallpaper,
We respect and carefully consider the ideas and motivation behind each and every artist’s work. This is why we give all artists the full freedom to explore their creativity and express emotions and experience through their works. This is also why the themes of the wallpapers weren’t anyhow influenced by us but rather designed from scratch by the artists themselves.

Ready for New Adventures

“2020 was a bumpy ride, but we are not to be disheartened. We are entering 2021 with enthusiasm, optimism, vigor, and bravery to face all challenges that come our way, effortlessly glide through all difficulties, and jump over any hurdles that stand between us and our goals.”
— Designed by PopArt Studio from Novi Sad, Serbia.

preview
with calendar: 320×480, 640×480, 800×480, 800×600, 1024×768, 1024×1024, 1152×864, 1280×720, 1280×800, 1280×960, 1280×1024, 1400×1050, 1440×900, 1600×1200, 1680×1050, 1680×1200, 1920×1080, 1920×1200, 1920×1440, 2560×1440
without calendar: 320×480, 640×480, 800×480, 800×600, 1024×768, 1024×1024, 1152×864, 1280×720, 1280×800, 1280×960, 1280×1024, 1400×1050, 1440×900, 1600×1200, 1680×1050, 1680×1200, 1920×1080, 1920×1200, 1920×1440, 2560×1440

Stars In A Bottle

“Hoping for a better year in 2021, we created this warm wallpaper to get you into the Holidays mood. We know it’s been a rough year for everyone, and we have high hopes for the future. Until then, let’s enjoy the winter holidays at home!”
— Designed by Ovidiu Pall from France.

preview
with calendar: 800×600, 1024×1024, 1280×960, 1440×900, 1920×1080, 2560×1440
without calendar: 800×600, 1024×1024, 1280×960, 1440×900, 1920×1080, 2560×1440

Spread The Love Online

Designed by Ricardo Gimenes from Sweden.

preview
with calendar: 640×480, 800×480, 800×600, 1024×768, 1024×1024, 1152×864, 1280×720, 1280×800, 1280×960, 1280×1024, 1366×768, 1400×1050, 1440×900, 1600×1200, 1680×1050, 1680×1200, 1920×1080, 1920×1200, 1920×1440, 2560×1440, 3840×2160
without calendar: 640×480, 800×480, 800×600, 1024×768, 1024×1024, 1152×864, 1280×720, 1280×800, 1280×960, 1280×1024, 1366×768, 1400×1050, 1440×900, 1600×1200, 1680×1050, 1680×1200, 1920×1080, 1920×1200, 1920×1440, 2560×1440, 3840×2160

Oldies But Goodies

What inspired the community to design a New Year’s wallpaper in past years? Join us on a stroll down memory lane, and maybe you’ll spot one of your favorites among the oldies, too. (Please note that these wallpapers don’t come with a calendar.)

Start Somewhere

“If we wait until we’re ready, we’ll be waiting for the rest of our lives. Start today — somewhere, anywhere.”
— Designed by Shawna Armstrong from the United States.

preview
without calendar: 1280×720, 1280×800, 1280×960, 1280×1024, 1400×1050, 1440×900, 1600×1200, 1680×1050, 1920×1080, 1920×1200, 1920×1440, 2560×1440

Open The Doors Of The New Year

“January is the first month of the year and usually the coldest winter month in the Northern hemisphere. The name of the month of January comes from ‘ianua’, the Latin word for door, so this month denotes the door to the new year and a new beginning. Let’s open the doors of the new year together and hope it will be the best so far!”
— Designed by PopArt Studio from Serbia.

preview
without calendar: 320×480, 640×480, 800×480, 800×600, 1024×768, 1024×1024, 1152×864, 1280×720, 1280×800, 1280×960, 1280×1024, 1366×768, 1400×1050, 1440×900, 1600×1200, 1680×1050, 1680×1200, 1920×1080, 1920×1200, 1920×1440, 2560×1440

Winter Leaves

Designed by Nathalie Ouederni from France.

preview
without calendar: 320×480, 1024×768, 1280×1024, 1440×900, 1600×1200, 1680×1200, 1920×1200, 2560×1440

A New Start

“The new year brings hope, festivity, lots and lots of resolutions, and many more goals that need to be achieved. This wallpaper is based on the idea of ‘A New Start’.” — Designed by Damn Perfect from India.

preview
without calendar: 320×480, 640×480, 800×480, 800×600, 1024×768, 1024×1024, 1152×864, 1280×720, 1280×800, 1280×960, 1280×1024, 1366×768, 1400×1050, 1440×900, 1600×1200, 1680×1050, 1680×1200, 1920×1080, 1920×1200, 1920×1440, 2560×1440

Happy Hot Tea Month

“You wake me up to a beautiful day; lift my spirit when I’m feeling blue. When I’m home you relieve me of the long day’s stress. You help me have a good time with my loved ones; give me company when I’m all alone. You’re none other than my favourite cup of hot tea.”
— Designed by Acodez IT Solutions from India.

preview
without calendar: 320×480, 640×480, 800×480, 800×600, 1024×768, 1024×1024, 1152×864, 1280×720, 1280×960, 1280×1024, 1366×768, 1400×1050, 1440×900, 1600×1200, 1680×1050, 1680×1200, 1920×1080, 1920×1200, 1920×1440, 2560×1440

A New Beginning

“I wanted to do a lettering-based wallpaper because I love lettering. I chose January because for a lot of people the new year is perceived as a new beginning and I wish to make them feel as positive about it as possible! The idea is to make them feel like the new year is (just) the start of something really great.”
— Designed by Carolina Sequeira from Portugal.

preview
without calendar: 320×480, 1280×1024, 1680×1050, 2560×1440

Oaken January

“In our country, Christmas is celebrated in January when oak branches and leaves are burnt to symbolize the beginning of the new year and new life. It’s the time when we gather with our families and celebrate the arrival of the new year in a warm and cuddly atmosphere.”
— Designed by PopArt Studio from Serbia.

preview
without calendar: 320×480, 640×480, 800×480, 800×600, 1024×768, 1024×1024, 1152×864, 1280×720, 1280×800, 1280×960, 1280×1024, 1366×768, 1400×1050, 1440×900, 1600×1200, 1680×1050, 1680×1200, 1920×1080, 1920×1200, 1920×1440, 2560×1440

Hidden Gem

“Kingfishers are called ‘ijsvogels’ (ice-birds) in Dutch. Not because they like the winter cold, but because of the intense blue and teal colors.”
— Designed by Franke Margrete from the Netherlands.

preview
without calendar: 320×480, 360×480, 376×668, 768×1024, 1024×1024, 1280×720, 1280×800, 1280×1024, 1366×768, 1366×1050, 1440×900, 1536×864, 1600×900, 1920×1080, 1920×1440, 2560×1440, 2560×1600, 3840×2160, 5120×2880

Wolf-Month

“Wolf-month (in Dutch ‘wolfsmaand’) is another name for January.”
— Designed by Chiara Faes from Belgium.

preview
without calendar: 640×480, 800×600, 1024×768, 1152×864, 1280×720, 1280×800, 1280×960, 1366×768, 1400×1050, 1440×900, 1600×1200, 1680×1050, 1920×1080, 1920×1200, 1920×1440, 2560×1440

The Early January Bird

“January is the month of a new beginning, hope and inspiration. That’s why it reminds me of an early bird.”
— Designed by Zlatina Petrova from Bulgaria.

preview
without calendar: 320×480, 640×480, 800×480, 800×600, 1024×768, 1024×1024, 1152×864, 1280×720, 1280×800, 1280×960, 1280×1024, 1400×1050, 1440×900, 1600×1200, 1680×1050, 1680×1200, 1920×1080, 1920×1200, 1920×1440, 2560×1440

January Fish

“My fish tank at home inspired me to make a wallpaper with a fish.”
— Designed by Arno De Decker from Belgium.

preview
without calendar: 320×480, 640×480, 800×480, 800×600, 1024×768, 1024×1024, 1152×864, 1280×720, 1280×800, 1280×960, 1280×1024, 1400×1050, 1440×900, 1600×1200, 1680×1050, 1680×1200, 1920×1080, 1920×1200, 1920×1440, 2560×1440

Blue Neon Sign

Designed by Jong S. Kim from the United States.

preview
without calendar: 1280×800, 1440×900, 1680×1050, 1920×1080, 1920×1200

Rubber Ducky Day

“Winter can be such a gloomy time of the year. The sun sets earlier, the wind feels colder and our heating bills skyrocket. I hope to brighten up your month with my wallpaper for Rubber Ducky Day!”
— Designed by Ilya Plyusnin from Belgium.

preview
without calendar: 320×480, 640×480, 800×480, 800×600, 1024×768, 1024×1024, 1152×864, 1280×720, 1280×800, 1280×960, 1280×1024, 1366×768, 1400×1050, 1440×900, 1600×1200, 1680×1050, 1680×1200, 1920×1080, 1920×1200, 1920×1440, 2560×1440

Winter Melancholy

Designed by Aleksandra Laczek from Poland.

preview
without calendar: 1024×768, 1280×800, 1366×768, 1440×900, 1680×1050, 1920×1080, 1920×1200, 2560×1440

Carry Warmth Carry Each Other

Designed by Marika Smirnova from Russia.

preview
without calendar: 320×480, 1024×768, 1024×1024, 1280×800, 1280×1024, 1440×900, 1680×1050, 1920×1080, 1920×1200, 2560×1440

Caucasian Mountains

“From Caucasus with love!” Designed by Ilona from Russia.

preview
without calendar: 1280×1024, 1440×900, 1680×1050, 1920×1080, 1920×1200, 2560×1440

Rest Up For The New Year

“I was browsing for themes when I found this “Festival of Sleep” that takes place on the 3rd, and I’m a big fan of sleep… Especially in these cold months after the holiday craziness, it’s nice to get cozy and take a nice nap.”
— Designed by Dorothy Timmer from Central Florida, USA.

preview
without calendar: 640×480, 640×1136, 750×1334, 800×480, 800×600, 1024×768, 1024×1024, 1152×864, 1280×720, 1280×800, 1280×960, 1280×1024, 1366×768, 1400×1050, 1440×900, 1600×1200, 1680×1050, 1680×1200, 1920×1080, 1920×1200, 1920×1440, 2560×1440

Freedom

“It is great to take shots of birds and think about the freedom they have. Then I start dreaming of becoming one and flying around the world with their beautiful wings.”
— Designed by Marija Zaric from Belgrade, Serbia.

preview
without calendar: 800×450, 1280×720, 1366×768, 1440×810, 1600×900, 1680×945, 1920×1080, 2560×1440

Reindeer

Designed by Ana Masnikosa from Belgrade, Serbia.

preview
without calendar: 320×480, 640×480, 800×480, 800×600, 1024×768, 1024×1024, 1152×864, 1280×720, 1280×800, 1280×960, 1400×1050, 1440×900, 1600×1200, 1680×1050, 1680×1200, 1920×1080, 1920×1200, 1920×1440, 2560×1440

Submit your wallpaper

Did you know that you could get featured in one of our upcoming wallpapers posts, too? We are always looking for creative talent, so if you have an idea for a wallpaper for February, please don’t hesitate to submit it. We’d love to see what you’ll come up with. Join in! →

Awesome Gifts For The Geek Fashionistas

Original Source: https://www.hongkiat.com/blog/awesome-christmas-gifts-for-the-geek-fashionista-in-your-life/

With the holiday season and Christmas coming up, we thought it would be cool to celebrate the geek fashionistas in our lives. All of us know one geek chick that totally rocks. Often finding a gift…

Visit hongkiat.com for full content.

Deal: The Preposterously Huge Book of Google Font Combinations

Original Source: https://www.webdesignerdepot.com/2020/12/deal-the-preposterously-huge-book-of-google-font-combinations/

Google Fonts is one of the most useful tools designers have, with hundreds of amazing fonts provided for free. But if you just grab one of the top ten suggestions, you’re missing out on a vast wealth of typographic gems.

Just about every font on Google Fonts is worth trying out, but the very best designs — designs that engage, inspire, and delight — combine two or more fonts. It’s the same principle as sweet and sour; two competing tastes that are both familiar and surprising; that’s a good font combination.

But how do you pick out those flavors? How do you know what complements and what clashes? Does Inter work okay with Open Sans? Does Merriweather look good with Roboto?

Well, today we’ve got a deal for you that will answer those questions and more. Our sister site, MightDeals.com, has arranged an extraordinary discount on The Preposterously Huge Book of Google Font Combinations. To date, it’s the single largest collection of Google font combinations ever produced.

Read on to find out how the PHBGFC will save you time, update your design choices, and keep you inspired throughout 2021 and beyond…

What’s Preposterous About the PHBGFC?

The Preposterously Huge Book of Google Font Combinations is almost 8,000 pages long. If you use one of the suggested font combinations every week, it will take you 125 years to exhaust it.

We think you’ll agree that that’s a truly preposterous number of design options.

What Exactly is the PHBGFC?

When you visit Google Fonts, you see a nice clean interface, with some dropdowns. You can pick a font. And then maybe pick another. But there’s no real way of discovering, trying out or otherwise selecting font combinations.

The Preposterously Huge Book of Google Font Combinations changes that by lining up all the possible combinations in an easy-to-browse package.

Step 1: Navigate to the index at the front of the book.

Step 2: Locate a font you’re interested in, in the index.

Step 3: Click the font name to navigate to the corresponding page in the book.

Step 4: Scroll back and forth through the pages to review the possible combinations for your font.

It’s that easy!

The Preposterously Huge Book of Google Font Combinations lays out all the best Google Font combinations for you — every font included has a regular, bold, italic, and bold italic version — saving you days of hunting through the site hoping to hit upon a combination that works.

What If I Don’t Like the Suggestions?

The Preposterously Huge Book of Google Font Combinations isn’t a set of rules or guidelines; it’s a tool to help you make the best design decisions you can make in the shortest possible time.

The Preposterously Huge Book of Google Font Combinations purposefully doesn’t exclude any combinations — even ugly combinations are deliberately included — so you’re free to compare an unredacted list of font options.

Every design decision you take is yours, but instead of spending hours downloading, installing, and comparing prospective fonts, you can review a combination in seconds.

Who Should Use the PHBGFC?

The Preposterously Huge Book of Google Font Combinations is an essential purchase for anyone working with Google Fonts. It will save you time and improve your familiarity with one of the web’s best resources.

If you like fonts, then you’re going to enjoy just scrolling through the Preposterously Huge Book of Google Font Combinations. It’s a beautifully realized catalog of font options.

Whether you’re a design student, a web developer curious about design, or a seasoned design professional, The Preposterously Huge Book of Google Font Combinations won’t just save you time; it will help develop your eye for great font combinations.

Grab The Preposterously Huge Book of Google Font Combinations Today!

This incredible resource, designed to help you maximize your use of Google Fonts, will save you hours of fruitless hunting through Google’s UI.

The Preposterously Huge Book of Google Font Combinations normally sells for $69, but thanks to our sister-site MightyDeals.com, WebDesignerDepot readers can grab it for just $24! That’s a suitably preposterous 65% off the full retail price.

Head over to MightyDeals today to download your copy of The Preposterously Huge Book of Google Font Combinations and start making Google Fonts work for you.

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

UI Interactions & Animations Roundup #13

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

Lots of fantastic new animation concepts have been shared in the last couple of weeks with some shiny trends, lovely 3D effects and amazing immersive interactions.

We hope you enjoy this set and get updated with some fresh trends and ideas in UI interactions and animations.

2DOX Website Loader

by Halo Web

Luxam 3D Museum Scene

by Advanced Team

SQuarE

by Jacek Janiczak

Wine + Peace™ · Manifesto and Footer Homepage

by Pierre-Jean Doumenjou

Doonbeg—Golf Club

by Hrvoje Grubisic

Burger Menu animation

by Givi Dautashvili

Software Developer Website Interaction

by Cuberto

3D slider concept

by Hrvoje Grubisic

Lewa House – Early Concept

by Jack Harvatt

Naba Zabih Folio

by Zhenya Rynzhuk

Default Cube PRO

by Oleg Frolov

Lewa House Concept

by Nathan Riley

Méribel – posters

by Konstantin Yakovlev

kicks editorial

by Hampus Öhman

Instagram Social Widget

by Francesco Zagami

Landing page web design & interactions for Qoorio

by Vilius Vaicius

Motion Exercise N°008

by Bastien Allard

Bento 3D Design Vol.3

by Kirill Emelyanov

E-Commerce Web Interaction – Domingo

by Daniel Tan

Clothes Brand Website Design

by tubik

CUYANA — Store

by tokitoshi

The post UI Interactions & Animations Roundup #13 appeared first on Codrops.

Collective #642

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

Collective 642 item image

Inspirational Website of the Week: Guillaume Colombel

Slick and cool, that’s the portfolio of Guillaume Colombel, our choice this week.

Get inspired

Collective 642 item image

Hotwire

Hotwire is an alternative approach to building modern web applications with Turbo at its heart, which is a set of complementary techniques for speeding up page changes and form submissions without writing any JavaScript at all.

Check it out

Divi Layout Packs

Our Sponsor
Instant websites for your clients with Divi Layout Packs

With the Divi Layout Packs you’ll get professional designs ready to be used for your client projects.

Start building

Collective 642 item image

AnimXYZ

The first composable CSS animation toolkit that helps you create, customize, and compose animations for your website without writing a single keyframe.

Check it out

Collective 642 item image

Let’s Build a Confetti Cannon

Learn how to make a confetti cannon in this interactive tutorial by Varun Vachhar.

Read it

Collective 642 item image

Santa Cruise

Help save Christmas with this fun game where you are a gift distributing Elf. By the folks of Kffein.

Play it

Collective 642 item image

A typographer and designer’s guide to elegance

A great interview with remarkable designer Ayaka B. Ito on her work and how she crafts elegenace.

Read it

Collective 642 item image

Aysenur Turk’s UI works

UI developer Aysenur Turk has made these stunning UI designs in 2020.

Check it out

Collective 642 item image

Type Scale Clamp Generator

A nice visual type scale generator using the clamp() property.

Check it out

Collective 642 item image

3D model configurator with React Three Fiber and gltfjsx

A fantastic React Three Fiber tutorial by Yuri Artyukh.

Watch it

Collective 642 item image

Pattern Generator

A super stylish tool to create unique, seamless, royalty-free patterns. Export as SVG, JPEG, or PNG.

Check it out

Collective 642 item image

Pinecraft

Make a digital tree & share it, and Sennep will plant a real one!

Check it out

Collective 642 item image

JavaScript Christmas

In case you missed it: One of Bekk’s advent calendars with original content.

Check it out

Collective 642 item image

Conditional JavaScript

Umar Hansa shares a few techniques which you can use for selectively downloading/executing resources such as JavaScript.

Check it out

Collective 642 item image

Video: Using Tailwind with WordPress

Michelle Barker chats with Keith Devon and Mark Wilkinson of Highrise Digital, alongside Ben Furfie, about her experience of using Tailwind CSS for building WordPress sites.

Watch it

Collective 642 item image

Scale

One new high-quality, open-source illustration each day with the option to customize the primary color.

Check it out

Collective 642 item image

EPIC days

A great project by EPIC where they share illustrations of many international days.

Check it out

Collective 642 item image

Free Christmas Illustrations

A high-quality free Christmas illustration pack for Photoshop, Illustrator, Adobe XD and Sketch.

Check it out

Collective 642 item image

Everything About Callback Functions in JavaScript

In this post, Dmitri Pavlutin explains the concept of a callback function and shows how to distinguish the two types of callbacks: synchronous and asynchronous.

Read it

Collective 642 item image

Improving Cross-Browser Testing, Part 1: Web Application Testing Today

The first article in a series of posts where you’ll learn about the current web-application testing landscape and what Firefox is doing today to allow developers to run more kinds of tests.

Read it

Collective 642 item image

10 Misconceptions on UX

Castor & Pollux put together this really beautifully designed quiz with 10 common misconceptions about design interfaces.

Check it out

Collective 642 item image

Recreating a Dave Whyte Animation in React-Three-Fiber

Learn how to use instanced rendering and post-processing techniques to recreate a hypnotic looping animation with react-three-fiber.

Read it

Collective 642 item image

Inspirational Websites Roundup #21

A hand-picked collection of some really good web designs for your inspiration.

Check it out

Collective 642 item image

UI Interactions & Animations Roundup #13

A fresh set of trendy UI interactions and animations for your inspiration.

Check it out

The post Collective #642 appeared first on Codrops.

What’s Coming To VueX?

Original Source: https://smashingmagazine.com/2020/12/vuex-library/

Vuex is the solution for state management in Vue applications. The next version — Vuex 4 — is making its way through the final steps before officially releasing. This release will bring full compatibility with Vue 3, but doesn’t add new features. While Vuex has always been a powerful solution, and the first choice for many developers for state management in Vue, some developers had hoped to see more workflow issues addressed. However, even as Vuex 4 is just getting out the door, Kia King Ishii (a Vue core team member) is talking about his plans for Vuex 5, and I’m so excited by what I saw that I had to share it with you all. Note that Vuex 5 plans are not finalized, so some things may change before Vuex 5 is released, but if it ends up mostly similar to what you see in this article, it should be a big improvement to the developer experience.

With the advent of Vue 3 and it’s composition API, people have been looking into hand-built simple alternatives. For example, You Might Not Need Vuex demonstrates a relatively simple, yet flexible and robust pattern for using the composition API along with provide/inject to create shared state stores. As Gábor states in his article, though, this (and other alternatives) should only be used in smaller applications because they lack all those things that aren’t directly about the code: community support, documentation, conventions, good Nuxt integrations, and developer tools.

That last one has always been one of the biggest issues for me. The Vue devtools browser extension has always been an amazing tool for debugging and developing Vue apps, and losing the Vuex inspector with “time travel” would be a pretty big loss for debugging any non-trivial applications.

Thankfully, with Vuex 5 we’ll be able to have our cake and eat it too. It will work more like these composition API alternatives but keep all the benefits of using an official state management library. Now let’s take a look at what will be changing.

Defining A Store

Before we can do anything with a Vuex store, we need to define one. In Vuex 4, a store definition will look like this:

import { createStore } from ‘vuex’

export const counterStore = createStore({
state: {
count: 0
},

getters: {
double (state) {
return state.count * 2
}
},

mutations: {
increment (state) {
state.count++
}
},

actions: {
increment (context) {
context.commit(‘increment’)
}
}
})

Each store has four parts: state stores the data, getters give you computed state, mutations are used to mutate the state, and actions are the methods that are called from outside the store to accomplish anything related to the store. Usually, actions don’t just commit a mutation as this example shows. Instead, they are used to do asynchronous tasks because mutations must be synchronous or they just implement more complicated or multi-step functionality. Actions also cannot mutate the state on their own; they must use a mutator. So what does Vuex 5 look like?

import { defineStore } from ‘vuex’

export const counterStore = defineStore({
name: ‘counter’,

state() {
return { count: 0 }
},

getters: {
double () {
return this.count * 2
}
},

actions: {
increment () {
this.count++
}
}
})

There are a few changes to note here. First, instead of createStore, we use defineStore. This difference is negligible, but it’s there for semantic reasons, which we’ll go over later. Next, we need to provide a name for the store, which we didn’t need before. In the past, modules got their own name, but they weren’t provided by the module itself; they were just the property name they were assigned to by the parent store that added them. Now, there are no modules. Instead, each module will be a separate store and have a name. This name is used by the Vuex registry, which we’ll talk about later.

After that, we need to make state a function that returns the initial state instead of just setting it to the initial state. This is similar to the data option on components. We write getters very similar to the way we did in Vuex 4, but instead of using the state as a parameter for each getter, you can just use this to get to the state. In the same way, actions don’t need to worry about a context object being passed in: they can just use this to access everything. Finally, there are no mutations. Instead, mutations are combined with actions. Kia noted that too often, mutations just became simple setters, making them pointlessly verbose, so they removed them. He didn’t mention whether it was “ok” to mutate the state directly from outside the store, but we are definitely allowed and encouraged to mutate state directly from an action and the Flux pattern frowns on the direct mutation of state.

Note: For those who prefer the composition API over the options API for creating components, you’ll be happy to learn there is also a way to create stores in a similar fashion to using the composition API.

import { ref, computed } from ‘vue’
import { defineStore } from ‘vuex’

export const counterStore = defineStore(‘counter’, {
const count = ref(0)

const double = computed(() => count.value * 2)

function increment () {
count.value++
}

return { count, double, increment }
})

As shown above, the name gets passed in as the first argument for defineStore. The rest looks just like a composition function for components. This will yield exactly the same result as the previous example that used the options API.

Getting The Store Instantiated

In Vuex 4, things have changed from Vuex 3, but I’ll just look at v4 to keep things from getting out of hand. In v4, when you called createStore, you already instantiated it. You can then just use it in your app, either via app.use or directly:

import { createApp } from ‘vue’
import App from ‘./App.vue’ // Your root component
import store from ‘./store’ // The store definition from earlier

const app = createApp(App)

app.use(store)
app.mount(‘#app’)

// Now all your components can access it via `this.$store`
// Or you can use in composition components with `useStore()`

// ———————————————–

// Or use directly… this is generally discouraged
import store from ‘./store’

store.state.count // -> 0
store.commit(‘increment’)
store.dispatch(‘increment’)
store.getters.double // -> 4

This is one thing that Vuex 5 makes a bit more complicated than in v4. Each app now can get a separate instance of Vuex, which makes sure that each app can have separate instances of the same stores without sharing data between them. You can share an instance of Vuex if you want to share instances of stores between apps.

import { createApp } from ‘vue’
import { createVuex } from ‘vuex’
import App from ‘./App.vue’ // Your root component

const app = createApp(App)
const vuex = createVuex() // create instance of Vuex

app.use(vuex) // use the instance
app.mount(‘#app’)

Now all of your components have access to the Vuex instance. Instead of giving your store(s) definition directly, you then import them into the components you want to use them in and use the Vuex instance to instantiate and register them:

import { defineComponent } from ‘vue’
import store from ‘./store’

export default defineComponent({
name: ‘App’,

computed: {
counter () {
return this.$vuex.store(store)
}
}
})

Calling $vuex.store, instantiates and registers the store in the Vuex instance. From that point on, any time you use $vuex.store on that store, it’ll give you back the already instantiated store instead of instantiating it again. You can call the store method straight on an instance of Vuex created by createVuex().

Now your store is accessible on that component via this.counter. If you’re using the composition API for your component, you can use useStore instead of this.$vuex.store:

import { defineComponent } from ‘vue’
import { useStore } from ‘vuex’ // import useStore
import store from ‘./store’

export default defineComponent({
setup () {
const counter = useStore(store)

return { counter }
}
})

There are pros and cons to importing the store directly into the component and instantiating it there. It allows you to code split and lazily loads the store only where it’s needed, but now it’s a direct dependency instead of being injected by a parent (not to mention you need to import it every time you want to use it). If you want to use dependency injection to provide it throughout the app, especially if you know it’ll be used at the root of the app where code splitting won’t help, then you can just use provide:

import { createApp } from ‘vue’
import { createVuex } from ‘vuex’
import App from ‘./App.vue’
import store from ‘./store’

const app = createApp(App)
const vuex = createVuex()

app.use(vuex)
app.provide(‘store’, store) // provide the store to all components
app.mount(‘#app’)

And you can just inject it in any component where you’re going to use it:

import { defineComponent } from ‘vue’

export default defineComponent({
name: ‘App’,
inject: [‘store’]
})

// Or with Composition API

import { defineComponent, inject } from ‘vue’

export default defineComponent({
setup () {
const store = inject(‘store’)

return { store }
}
})

I’m not excited about this extra verbosity, but it is more explicit and more flexible, which I am a fan of. This type of code is generally written once right away at the beginning of the project and then it doesn’t bother you again, though now you’ll either need to provide each new store or import it every time you wish to use it, but importing or injecting code modules is how we generally have to work with anything else, so it’s just making Vuex work more along the lines of how people already tend to work.

Using A Store

Apart from being a fan of the flexibility and the new way of defining stores the same way as a component using the composition API, there’s one more thing that makes me more excited than everything else: how stores are used. Here’s what it looks like to use a store in Vuex 4.

store.state.count // Access State
store.getters.double // Access Getters
store.commit(‘increment’) // Mutate State
store.dispatch(‘increment’) // Run Actions

State, getters, mutations, and actions are all handled in different ways via different properties or methods. This has the advantage of explicitness, which I praised earlier, but this explicitness doesn’t really gain us anything. And this API only gets more difficult to use when you are using namespaced modules. By comparison, Vuex 5 looks to work exactly how you would normally hope:

store.count // Access State
store.double // Access Getters (transparent)
store.increment() // Run actions
// No Mutators

Everything — the state, getters and actions — is available directly at the root of the store, making it simple to use with a lot less verbosity and practically removes all need for using mapState, mapGetters, mapActions and mapMutations for the options API or for writing extra computed statements or simple functions for composition API. This simply makes a Vuex store look and act just like a normal store that you would build yourself, but it gets all the benefits of plugins, debugging tools, official documentation, etc.

Composing Stores

The final aspect of Vuex 5 we’ll look at today is composability. Vuex 5 doesn’t have namespaced modules that are all accessible from the single store. Each of those modules would be split into a completely separate store. That’s simple enough to deal with for components: they just import whichever stores they need and fire them up and use them. But what if one store wants to interact with another store? In v4, the namespacing convolutes the whole thing, so you need to use the namespace in your commit and dispatch calls, use rootGetters and rootState and then work your way up into the namespaces you want to access getters and state from. Here’s how it works in Vuex 5:

// store/greeter.js
import { defineStore } from ‘vuex’

export default defineStore({
name: ‘greeter’,
state () {
return { greeting: ‘Hello’ }
}
})

// store/counter.js
import { defineStore } from ‘vuex’
import greeterStore from ‘./greeter’ // Import the store you want to interact with

export default defineStore({
name: ‘counter’,

// Then use the store
use () {
return { greeter: greeterStore }
},

state () {
return { count: 0 }
},

getters: {
greetingCount () {
return `${this.greeter.greeting} ${this.count}’ // access it from this.greeter
}
}
})

With v5, we import the store we wish to use, then register it with use and now it’s accessible all over the store at whatever property name you gave it. Things are even simpler if you’re using the composition API variation of the store definition:

// store/counter.js
import { ref, computed } from ‘vue’
import { defineStore } from ‘vuex’
import greeterStore from ‘./greeter’ // Import the store you want to interact with

export default defineStore(‘counter’, ({use}) => { // use is passed in to function
const greeter = use(greeterStore) // use use and now you have full access
const count = 0

const greetingCount = computed(() => {
return ${greeter.greeting} ${this.count} // access it like any other variable
})

return { count, greetingCount }
})

No more namespaced modules. Each store is separate and is used separately. You can use use to make a store available inside another store to compose them. In both examples, use is basically just the same mechanism as vuex.store from earlier and they ensure that we instantiating the stores with the correct instance of Vuex.

TypeScript Support

For TypeScript users, one of the greatest aspects of Vuex 5 is that the simplification made it simpler to add types to everything. The layers of abstraction that older versions of Vuex had made it nearly impossible and right now, with Vuex 4, they increased our ability to use types, but there is still too much manual work to get a decent amount of type support, whereas in v5, you can put your types inline, just as you would hope and expect.

Conclusion

Vuex 5 looks to be almost exactly what I — and likely many others — hoped it would be, and I feel it can’t come soon enough. It simplifies most of Vuex, removing some of the mental overhead involved, and only gets more complicated or verbose where it adds flexibility. Leave comments below about what you think of these changes and what changes you might make instead or in addition. Or go straight to the source and add an RFC (Request for Comments) to the list to see what the core team thinks.

How To Retain Customers During Covid-19

Original Source: http://feedproxy.google.com/~r/Designrfix/~3/BNiCHUHZzW4/how-to-retain-customers-during-covid-19

Customers in Canada are stuck inside with little to do other than work from home and teach their children. Covid-19 has changed lives in recent history, and people are struggling with what to do with all their time. When looking for a Canadian online casino, real money casinos are plentiful in this growing market. All […]

The post How To Retain Customers During Covid-19 appeared first on designrfix.com.