9 Free Data Visualization Tools

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

Data can be beautiful. And if you’ve ever had to work with graphs and statistics in your web design work before, you know that the extra visual reinforcement is much better than trying to figure out a bunch of numbers.

Writing a blog post, creating a chart for a client’s project, or just trying to get your own personal data sorted; these free tools are just what you need to make charts, graphs, and infographics that are both pretty and easy to understand.

Chartist

Chartist

“Simple responsive charts” – no more, no less. Download this tiny program and create vector pie charts, line graphs and more that will scale to any screen size. You can even add animations! The graphs are highly compatible with a majority of web browsers, so there’s no reason not to use it. However, you will need to learn some JavaScript and CSS. The documentation should be a big help if you’re new to these languages.

RAWGraphs

RAWGraphs

If you’re looking for variety, RAWGraphs has everything under the sun. Just paste in your spreadsheet data or upload a file, and you’ll be able to convert the numbers to anything from a bar graph to a bump chart! You can even add your own chart type if you’re familiar with JavaScript. When done customizing, you can download as a SVG, PNG or JSON file. Or just embed the vector into your site. This advanced program isn’t the easiest to use, but it has a lot of potential.

Datawrapper

Datawrapper

If you have spreadsheet data you want to include in an article, Datawrapper makes it easy to turn it into a beautiful graph. It’s not hard at all, and the graphs are fully customizable down to text alignment and color customization (there are even color-blind filters!) When you’re finished, you just need to sign up and you’ll get the embed code for the chart.

Tableau

Tableau

Need something professional? Tableau Public is a downloadable tool that allows you to visualize data in a variety of ways. Suitable for anything from small charts to dedicated infographics, the app is a great choice for web designers.

ChartBlocks

ChartBlocks

“The world’s easiest chart builder” is exactly what it says. Insert some spreadsheet data, do a little tweaking, pick a theme and you’ve got yourself a chart in less than a minute. If you want to, you can tweak the appearance further. Or you can just download it, embed it or share it on social media!

Beam

Beam

Are all these programs too complicated? Just need to make a simple graph from a handful of data without importing a bunch of files? Just tweak a few names and data points, pick from four types of simple charts, and choose a color profile. Easy as that!

Visualize Free

Visualize Free

This drag-and-drop program is a fantastic way to create beautiful infographics that involve a lot of data. You’ll need to sign up to use the app, but there are a bunch of examples on the homepage that you’re free to customize while getting a feel for the dashboard.

OpenHeatMap

OpenHeatMap

This app is amazing simply because it’s so easy to use! Upload a spreadsheet or Excel file – get a beautiful heatmap with an embed code. The process is clean and perfectly streamlined.

Timeline

Timeline

This one is a bit more difficult to set up, since you’ll need to follow the steps exactly and create a new spreadsheet. But if you need an embeddable interactive timeline for your project, this is the app you’re looking for.

Beautiful Data

Breaking up text with visually stimulating images is a great way to prevent a webpage from looking bland. With these free tools, you’ll be able to create interesting graphs and charts that will draw in anyone who sees them, and in minutes. No more spending hours trying to make your own infographics!


Black Friday Deals of 2018: Editor's Picks

Original Source: http://feedproxy.google.com/~r/abduzeedo/~3/VTdwJGcsMI0/black-friday-deals-2018-editors-picks

Black Friday Deals of 2018: Editor’s Picks

Black Friday Deals of 2018: Editor's Picks

AoiroStudio
Nov 23, 2018

Today is the day where brands, friends and more are kicking off their Black Friday & Cyber Monday deals for the long weekend of festivities. We have made an article entirely about it if you wanna check it out: Black Friday Deals for Designers, the Ultimate List!. Now let’s shift our conversation and still celebrating the spirit of Black Friday. I love Amazon and I took a dive through their Black Friday deals and tried to find the best deals with a decent amount of savings. And I made a roundup! You can easily get distracted on those sites on the apparent of why are you even there in the first place? So shall we?

More Links
Follow my tweets @aoirostudio
Follow my pictures on Instagram
My Best Black Friday Deals of 2018
ASUS Chromebook Flip 12.5-inch Touchscreen now $499.00

Black Friday Deals of 2018: Editor's Picks

Seagate Expansion 4TB now $79.99

Black Friday Deals of 2018: Editor's Picks

Echo Dot with Philips Hue White and Color Smart Light Bulb now $94.99

Black Friday Deals of 2018: Editor's Picks

Blue Yeti USB Microphone now $89.00

Black Friday Deals of 2018: Editor's Picks

CORSAIR K95 Gaming Keyboard now $139.99

Black Friday Deals of 2018: Editor's Picks

Manfrotto Compact Tripod now $41.67

Black Friday Deals of 2018: Editor's Picks

Logitech Wireless Mouse now $14.24

Black Friday Deals of 2018: Editor's Picks

Samsung 34″ Thunderbolt now $749.99

Black Friday Deals of 2018: Editor's Picks

Apple iPad (Wi-Fi, 32GB) now $249.00

Black Friday Deals of 2018: Editor's Picks

Dell UltraSharp 27-Inch now $329.00

Black Friday Deals of 2018: Editor's Picks

Logitech G933 Artemis Spectrum now $99.99

Black Friday Deals of 2018: Editor's Picks

Sony Alpha a6000 Mirrorless with two lenses kit now $598.00

Black Friday Deals of 2018: Editor's Picks

Fujifilm X-T2 Mirrorless kit lens now $1,499.00

Black Friday Deals of 2018: Editor's Picks

Elsewhere
Made by Google

Save $200 on Pixel 3 or $250 on Pixel 3 XL. Save $300 on Pixelbook. Mini and mighty. Save $44 on Google Home Mini. Save $10 on Chromecast. Save $100 on Google Home Max.

Made by Google Products

Black Friday Deals of 2018: Editor's Picks

black friday
guide


Monthly Web Development Update 11/2018: Just-In-Time Design And Variable Font Fallbacks

Original Source: https://www.smashingmagazine.com/2018/11/monthly-web-development-update-11-2018/

Monthly Web Development Update 11/2018: Just-In-Time Design And Variable Font Fallbacks

Monthly Web Development Update 11/2018: Just-In-Time Design And Variable Font Fallbacks

Anselm Hannemann

2018-11-23T14:00:24+01:00
2018-11-23T17:23:27+00:00

How much does design affect the perception of our products and the users who interact with them? To me, it’s getting clearer that design makes all the difference and that unifying designs to a standard model like the Google Material Design Kit doesn’t work well. By using it, you’ll get a decent design that works from a technical perspective, of course. But you won’t create a unique experience with it, an experience that lasts or that reaches people on a personal level.

Now think about which websites you visit and if you enjoy being there, reading or even contributing content to the service. In my opinion, that’s something that Instagram manages to do very well. Good design fits your company’s purpose and adjusts to what visitors expect, making them feel comfortable where they are and enabling them to connect with the product. Standard solutions, however, might be nice and convenient, but they’ll always have that anonymous feel to them which prevents people from really caring for your product. It’s in our hands to shape a better experience.

News

Yes, Firefox 63 is here, but what does it bring? Web Components support including Custom Elements with built-in extends and Shadow DOM. prefers-reduced-motion media query support is available now, too, Developer Tools have gotten a font editor to make playing with web typography easier, and the accessibility inspector is enabled by default. The img element now supports the decoding attribute which can get sync, async, or auto values to hint the preferred decoding timing to the browser. Flexbox got some improvements as well, now supporting gap (row-gap, column-gap) properties. And last but not least, the Media Capabilities API, Async Clipboard API, and the SecurityPolicyViolationEvent interface which allows us to send CSP violations have also been added. Wow, what a release!
React 16.6 is out — that doesn’t sound like big news, does it? Well, this minor update brings React.lazy(), a method you can use to do code-splitting by wrapping a dynamic import in a call to React.lazy(). A huge step for better performance. There are also a couple of other useful new things in the update.
The latest Safari Tech Preview 68 brings <input type="color"> support and changes the default behavior of links that have target="_blank" to get the rel="noopener" as implied attribute. It also includes the new prefers-color-scheme media query which allows developers to adapt websites to the light or dark mode settings of macOS.
From now on, PageSpeed Insights, likely still the most commonly used performance analysis tool by Google, is now powered by project Lighthouse which many of you have already used additionally. A nice iteration of their tool that makes it way more accurate than before.

Web forms are such an important part of the web, but we design them poorly all the time. The brand-new “Form Design Patterns” book is our new practical guide for people who design, prototype and build all sorts of forms for digital services, products and websites. The eBook is free for Smashing Members.

Check the table of contents ↬

Form Design Patterns — a practical guide for anyone who needs to design and code web forms

General

Explore structured learning paths to discover everything you need to know about building for the modern web. web.dev is the new resource by the Google Web team for developers.
No matter how you feel about Apple Maps (I guess most of us have experienced moments of frustration with it), but this comparison about the maps data they used until now and the data they currently gather for their revamped Maps is fascinating. I’m sure that the increased level of detail will help a lot of people around the world. Imagine how landscape architects could make use of this or how rescue helpers could profit from that level of detail after an earthquake, for example.

Web.dev

From fast load times to accessibility — web.dev helps you make your site better.

HTML & SVG

Andrea Giammarchi wrote a polyfill library for Custom Elements that allows us to extend built-in elements in Safari. This is super nice as it allows us to extend native elements with our own custom features — something that works in Chrome and Firefox already, and now there’s this little polyfill for other browsers as well.
Custom elements are still very new and browser support varies. That’s why this html-parsed-element project is useful as it provides a base custom element class with a reliable parsedCallback method.

JavaScript

Leonardo Maldonado compiled a collection of JavaScript concepts that are very useful to know for developers. The list includes both videos and articles so you can choose your preferred way of learning.
When a video doesn’t work on a website anymore and you’re using Service Workers, the problem might be the Range request. Phil Nash debugged this weird issue on his page and explains how you can do too.

UI/UX

How do you build a color palette? Steve Schoger from RefactoringUI shares a great approach that meets real-life needs.
Matthew Ström’s article “Just-in-time Design” mentions a solution to minimize the disconnection between product design and product engineering. It’s about adopting the Just-in-time method for design. Something that my current team was very excited about and I’m happy to give it a try.
HolaBrief looks promising. It’s a tool that improves how we create design briefs, keeping everyone on the same page during the process.
Mental models are explanations of how we see the world. Teresa Man wrote about how we can apply mental models to product design and why it matters.
Shelby Rogers shares how we can build better 404 error pages.

Building Your Color Palette

Steve Schoger looks into color palettes that really work. (Image credit)

Tooling

The color palette generator Palx lets you enter a base hex value and generates a full color palette based on it.

Security

This neat Python tool is a great XSS detection utility.
Svetlin Nakov wrote a book about Practical Cryptography for Developers which is available for free. If you ever wanted to understand or know more about how private/public keys, hashing, ciphers, or signatures work, this is a great place to start.
Facebook claimed that they’d reveal who pays for political ads. Now VICE researched this new feature and posed as every single of the current 100 U.S. senators to run ads ‘paid by them’. Pretty scary to see how one security failure that gives users more power as intented can change world politics.

Privacy

I don’t like linking to paid, restricted articles but this one made me think and you don’t need the full story to follow me. When Tesla announced that they’d ramp up model 3 production to 24⁄7, a lot of people wanted to verify this, and a company that makes money by providing geolocation data captured smartphone location data from the workers around the Tesla factories to confirm whether this could be true. Another sad story of how easy it is to track someone without consent, even though this is more a case of mass-surveillance than individual tracking.

Web Performance

Addy Osmani shares a performance case study of Netflix to improve Time-to-Interactive of the streaming service. This includes switching from React and other libraries to plain JavaScript, prefetching HTML, CSS, and (React) JavaScript and the usage of React.js on the server side. Quite interesting to see so many unconventional approaches and their benefits. But remember that what works for others doesn’t need to be the perfect approach for your project, so take it more as inspiration than blindly copying it.
Harry Roberts explains all the details that are important to know about CSS and Network Performance. A comprehensive collection that also provides some very interesting tips for when you have async scripts in your code.
I love the tiny ImageOptim app for batch optimizing my images for web distribution. But now there’s an impressive web app called “Squoosh” that lets you optimize images perfectly in your web browser and, as a bonus, you can also resize the image and choose which compression to use, including mozJPEG and WebP. Made by the Google Chrome team.

CSS

Oliver Schöndorfer shows how we can serve a Variable Font to modern browsers while providing a fallback web font for older browsers. This is especially interesting as Oliver goes deep into optimizing the fallback font and adjusting it via CSS in order to match the variable font as closely as possible in case a font swap happens during page load.
Andy Clarke shows what’s needed to redesign a product and website to support bright and dark modes which were introduced to several Operating Systems recently and will soon be supported via media queries by various browsers.
While background-clip is not super new, it hasn’t been very useful due to the lack of browser support. But as Sime Vidas shows, CSS Background Clip is now widely supported, giving us great opportunities to enhance the text styling on our websites.

Redesigning your product and website for dark mode

How to design for dark mode while maintaining accessibility, readability, and a consistent feel for your brand? Andy Clarke shares some valuable tips. (Image credit)

Work & Life

Stig Brautaset wrote about why he nearly failed to get into his job as a submarine sonar operator due to a silly hiring rule and how he made the best out of the situation and succeeded. A valuable lesson that shows that you shouldn’t stick too much to guidelines and rules when it comes to hiring people but trust your gut and listen to their stories instead.
In “People, Not Robots: Bringing the Humanity Back to Customer Support,” Kristin Aardsma shares why it’s important to rethink how customer support works.
Marcus Wermuth reflects on why becoming a manager is not a promotion but a career change.

Going Beyond…

Neil Stevenson on Steve Jobs, creativity and death and why this is a good story for life. Although copying Steve Jobs is likely not a good idea, Neil provides some different angles on how we might want to work, what to do with our lives, and why purpose matters for many of us.
Ryan Broderick reflects on what we did by inventing the internet. He concludes that all that radicalism in the world, those weird political views are all due to the invention of social media, chat software and the (not so sub-) culture of promoting and embracing all the bad things happening in our society. Remember 4chan, Reddit, and similar services, but also Facebook et al? They contribute and embrace not only good ideas but often stupid or even harmful ones. “This is how we radicalized the world” is a sad story to read but well-written and with a lot of inspiring thoughts about how we shape society through technology.
I’m sorry, this is another link about Bitcoin’s energy consumption, but it shows that Bitcoin mining alone could raise global temperatures above the critical limit (2°C) by 2033. It’s time to abandon this inefficient type of cryptocurrency. Now.
Wilderness is something special. And our planet has less and less of it, as this article describes. The map reveals that only very few countries have a lot of wilderness these days, giving rare animals and species a place to live, giving humans a way to explore nature, to relax, to go on adventures.
We definitely live in exciting times, but it makes me sad when I read that in the last forty years, wildlife population declined by 60%. That’s a pretty massive scale, and if this continues, the world will be another place when I’m old. Yes, when I am old, a lot of animals I knew and saw in nature will not exist anymore by then, and the next generation of humans will not be able to see them other than in a museum. It’s not entirely clear what the reasons are, but climate change might be one thing, and the ever-growing expansion of humans into wildlife areas probably contributes a lot to it, too.

Smashing Editorial
(cm, il)

Black Friday deal: This top monitor calibrator is a total bargain

Original Source: http://feedproxy.google.com/~r/CreativeBloq/~3/e1U4z7qCW5s/pick-up-a-top-monitor-calibrator-for-half-price

All digital artists and graphic designers will know how vital it is to have complete colour accuracy on your machine. The best monitor calibrators don't come cheap, which is why this Black Friday 2018 deal is such a great find. DataColour has slashed the prices of its Spyder5 range, and they're flying off the shelves. 

This deal is so popular that that Spyder5PRO has already sold out, but fear not: you can still grab a Spyder5ELITE with a whopping £97 (130€) off. This calibrator offers expert colour accuracy, with room light monitoring and unlimited settings for gamma, white point and advanced grey balancing enabling you to take complete control of your colour workflow. It work on laptops, desktops and projectors, too.

Please note, the online store price is in Euros, so the GBP value may fluctuate slightly depending on the exchange rate. On the hunt for some more top deals for artists and designers? Take a look at our pick of the best UK Black Friday gems (or, for those of you across the pond, US hidden gems).


10 Free Website Optimization & Guides For Improving Site Speed

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

Every metric you can measure on your site will give you an optimized loading time. Everything from usability to search engine rankings improve with a faster site.

There is no catch-all process to optimization. There are certain things you can do, like minifying your code or optimizing images to reduce file size.

But overall you’ll need to try a lot of things to ultimately reduce your page load speed. And the best place to start is with online guides solely built for web developers who want faster pages. Take a look over this collection and see if any of these resources can help you master the art of page speed optimization.

The UX Designer Toolbox
Unlimited Downloads: 500,000+ Wireframe & UX Templates, UI Kits & Design Assets


DOWNLOAD NOW

Essential Image Optimization

image optim guide

The Essential Image Optimization ebook is a fantastic primer on reworking your images for performance.

Google engineer Addy Osmani wrote this free ebook as a resource for all developers, designers, and server admins. The goal is to prove just how much image optimization can affect page speed.

With the right tools and processes you can radically improve your page load times. It won’t take much effort, and you can even get started with just a few simple changes. For example, WordPress users might try the SmushIt plugin that runs automatically and free of charge.

There’s a lot you can do for image optimization and this ebook is the best place to start.

Git-Tower Web Optimization Tips

gittower optimization guide

The team at Git-Tower published a massive guide to website optimization. This guide is really the bee’s knees on everything you could possibly want to do to your site.

It’s broken into sections almost like long chapters on various topics. They all follow a similar formula covering essential optimization topics:

Testing performance
Working with images
Reducing HTTP requests
Optimizing your code
Caching files

This guide also comes with a handy cheat sheet in PDF form. You can follow along while you make changes on your site, tracking performance as you go.

Ultimate Web Optimization Guide

A while back the team at Hongkiat wrote this optimization guide for the web. It’s still one of my favorites because it covers basically everything you should do for a faster site.

This talks about updating your server speed, your images, your HTTP requests, caching, CDN setup, everything.

Granted not everyone has the patience to go through all these things. It’ll take a lot of effort to switch servers and setup a CDN. Even though both of those things can radically improve performance, most people want a guide to help them along.

Take a look at this guide and see what you can glean from the writing. If you notice any sections that catch your eye be sure to Google for more info.

Top 10 Website Optimizations

top10 optimization ebook

Here’s a cool ebook on web performance released for free by Hostbaby. It covers 10 of the most important web optimization techniques you can use to radically improve your page speed.

The ebook does require an email submit which may annoy some people. But you can always unsubscribe from any lists you get added to, and the book is free forever regardless of if you subscribe or not.

Throughout the book you’ll learn not just the areas to optimize, but how to perform those optimizations and how to get the most from your efforts.

21 Expert Tips to an Ultra-Fast WordPress Site

siteground wp ebook

SiteGround has a similar ebook focused more on WordPress performance. This is a little more niche compared to general site optimization. Yet it’s incredibly useful since 27% of the Internet runs on WordPress.

The ebook is called 21 Expert Tips to an Ultra-Fast WordPress Site and it’s a great read for any WP users.

The tips in this ebook are gold, and they cover a lot of WP optimization tips for advanced caching and page testing. Probably the best guide to WP optimization you’ll find.

Again this does require an email submit to gain access, but it’s not difficult to unsubscribe later. I’ll say this is one ebook that’s worth submitting your email for – or you can just use a throwaway. Whatever works.

Web Page Size, Speed, and Performance

website speed performance ebook

Tech publisher O’Reilly has a massive book library totaling well into the thousands of titles. They release dozens of new books every year, most of them selling for a pretty penny.

But you can find a lot of free ebooks on their site released as 100% free guides, or as freemium previews to larger books.

One free guide I really like is Web Page Size, Speed, and Performance. This one’s easy to read and teaches you how to slim down your code to work well across all devices.

You’ll learn how to measure site speed, track down slow page assets, and how to optimize them to lift your site’s performance to new heights.

Static Site Generators

static site generator ebook

There’s been a lot of talk in recent years about static websites. Mostly surrounding static site generators like Jekyll.

These types of sites load crazy fast because there’s no database and no backend code to run. It’s all frontend assets, most of which can be delivered through a CDN. O’Reilly’s free ebook Static Site Generators can help you start down this path.

It’s a quick read but offers more than enough info to get you hooked on the static site frenzy.

Real User Measurements

real user measurements ebook

Page speed optimization isn’t performed in a vacuum. It’s primarily done to enhance the user experience and keep people on your page.

Real User Measurements is yet another O’Reilly ebook teaching you how to measure valuable aspects of user performance. You’ll learn about active and passive monitoring tools along with different workflows you can adopt while optimizing your site.

There is no perfect process for measuring user behavior. But this book offers a solid intro to the field of user experience with a focus on website speed and optimization.

CDNs for Dummies

cdn guide

I couldn’t find a free ebook covering CDNs but I did find this awesome guide from Woorkup. It’s 100% free although it doesn’t go into as much detail on the more technical stuff.

This is still a genuinely useful intro to the process of managing a CDN. You’ll learn how it works, why it helps with site speed, and what you can do to setup a CDN for your own site.

I also recommend reading this comparison guide which gives a truly honest assessment of the CDN marketplace. I used this guide to help me pick the best CDN for my site, and it’ll help you understand why the CDN you choose is vital to your site’s performance.

Image File Format Comparison Chart

image file format guide

Lastly I want to share this image comparison guide detailing all the different file formats you can pick from.

It’s not the most valuable guide out there, but it does compare a lot of useful features you’ll want to consider before exporting graphics. It discusses the pros & cons of each image format. And it shares image format properties like lossless compression, transparency support, and native browser support.

If you’re still not sure whether a PNG or SVG is the best choice for your homepage graphics then this guide is worth bookmarking.


Stop Acting Like an Amateur Freelance Web Designer

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

Being a successful web designer is more than just hardcore Photoshop skills and a mastery of the latest CSS framework. The challenge that keeps amateurs from becoming professionals is effectively managing their freelance careers.

While some of these skills cannot be learned overnight, here are a few things you can start doing now so clients think of you as a professional and transform your freelance web design career.

The Freelance Designer Toolbox
Unlimited Downloads: 500,000+ Web Templates, Icon Sets, Themes & Design Assets


DOWNLOAD NOW

1. Don’t Drop the Ball: Effective Communication Is Key

When was the last time you did work for a business that promised to call you back and never did? Or ignored your countless emails when trying to solve a problem?

Effective communication can make or break a professional in any field, but it’s of particular importance in the web design field. Professional designers understand that communication dictates the success of a project. Regular updates help make sure that your client is satisfied with the direction. And, if something does go wrong, you’re in a position to adjust timelines and expectations accordingly.

If you drop the ball on communicating with your clients regularly, it can result in deadlines being missed and an unhappy client who will not be raving about your web design services to anyone.

2. Always Set Clear Expectations to Avoid Problems

If you haven’t set expectations early on, the chances of you running into problems, later on, are high! Here are two types of documentation professional web designers use to ensure their clients understand their working process:

Draw up a Contract

Professional web designers never work without a contract. Not only does it protect you, but it helps set clear expectations to your client. Make sure your contract contains the following:

An outline of the job, including how many revisions will be allowed.
Who owns the rights to the finished product.
Your deadlines, rate fee, early termination fee, applicable late fees and dates of payment.

Create a Goals Document

Before you begin work on a project, agree on goals with your client and put them into a document. By taking the time to create this project scope, you have proof to charge more money if your client decides to change direction after the project has started.

And remember, while it won’t hurt to go above and beyond for your clients occasionally – don’t make it a habit. Avoid setting up expectations that you will work late nights and weekends just because you’re self-employed.

3. Only Deliver Showstopper Work That Will Make Your Portfolio Shine

You are never going to grow your freelance business and graduate from amateur to professional if you do not take pride in your work. While this tip does seem like a no-brainer, many freelancers take short cuts and only put in half the effort when working for clients that aren’t “exciting”.

While you do want to strive to build a client base that is aligned with your career goals, you may need to take on projects that aren’t your first choice, but you should not treat them as such.

Anything attached to your name should be a showstopper and make the next client eager to work with you. It should be your top priority to submit only your best, especially if you want to draw in those higher payer clients and grow your freelancing career.

4. Never Stop Networking and Looking for New Clients

A big mistake that amateur freelancers make is by relying on a small number of clients to make a living. A successful, professional web designer knows that there is more value in having a diverse client base and the stats speak for themselves.

A recent survey by Contently showed that half of all freelancers who never look for new clients make less than $20,000 per year.

By setting aside time on a regular basis to look for new clients, you can prevent becoming reliant on one or two for survival, and if one unexpectedly leaves, you can still get through the month without breaking a sweat.

Besides applying for jobs online, get away from your computer and go back to networking 101. Attend social events in your city, go to conferences, and discover where potential clients are hanging out. It is an excellent way to start making a name for yourself and form personable business connections.

5. Show off Your Work with a Professional Online Portfolio

If you do not have a portfolio that is up to date or an active social media presence your professional brand screams amateur. Professional web designers understand that clients can be found anywhere and how important it is to have a place to show off your experience, what companies you have worked with and your past projects.

An updated portfolio shows potential clients how relevant and active you are in the world of design and gives them solid evidence about your capabilities. By ensuring your portfolio is also filled with the sort of work you would like to do, you will attract the right clients and be one step closer to working on projects that inspire you and make you feel fulfilled.

Here are some of the key aspects your online web design portfolio should cover:

Layouts
Content Management
Composition
Typography
Colours
Techniques
Design Rationales

6. Screen Potential Clients to Wean out the Bad Apples

At some point in your freelance career, you are going to come across a bad client. Whether they want to control too much of what you do or communicate badly, the experience can be frustrating and lead to a loss of income as well as valuable resources like your time.

Professional web designers avoid attracting the type of clients they do not want by having a solid screening process in place. Instead of accepting any client that comes your way, ask yourself if their tastes align with your design principals. If you accept a client who hates the subtle, minimal designs you love, you are only setting yourself up for failure.

Other things to consider during this process is if the client can afford you, do you need them and if the project is aligned with your career goals. By focusing on attracting quality clients early on in your career, everything else will fall into place, and you will end up doing more work that you love.

7. Keep up with the Latest Trends and Don’t Stop Learning

To be a successful freelance web designer, you need to be technologically in tune with changes in the industry. Professionals who are quick to learn new things or technologies can differentiate themselves from competitors and become more sought after by potential clients.

Set aside time in your work day or during the week to learn things in your field. Read web design blogs to find out what’s new and trending, or invest in your continuous education by signing up for workshops, certifications, or the occasional class.

Remember you are never too old to learn new things and while you do not need to have the latest of everything to stay relevant, you need to keep your skills sharp and avoid working on technology that is outdated and not the industry standard.

Wrapping It All Up

What separates an amateur web designer from a professional is not how long they’ve been a freelancer. In reality, it is about their attitude and the way they handle their business and clients.

The road to becoming a professional freelance web designer is not easy. It is a challenging industry that requires dedication to not only tangible skills but soft ones like customer services to stay relevant and in demand.


How to Build a WordPress Theme from Scratch: Final Steps

Original Source: https://www.sitepoint.com/build-wordpress-theme-from-scratch-final/

In this article, we’ll complete our foray into building a WordPress theme from scratch, focusing on refining our templates, adding meta information, post thumbnails, sidebars, user-friendly controls and more.

This is the third, and last part of the WordPress series on building a WordPress theme. Part 1 introduced WordPress theming, and in part 2 we built a basic theme. We utilized the Clean Blog template by StartBootstrap to add style to our WordPress theme. The code we’ve written so far is available on GitHub.

We have added single.php, page.php, archive.php and index.php templates so far, but we left the task of finalizing it for this part of the task. We introduced functions.php — a file that WordPress uses to automatically include functionalities particular to our theme, and we added functions to it. We added a dynamic header function to our header.php, and we separated that functionality into our functions.php. Ideally, this should be organized into a separate file — possibly in an inc folder inside our theme — to keep things clean.

In part 2, we also introduced partials — footer.php and header.php.

Refining the Templates

In the previous article, we separated our <body> tag — the opening one — into header.php, and we added <?php body_class(); ?> to it. This adds some semantic classes to the body that tell us whether we are on a page, post, whether we’re logged in, or not, and so on — enabling us to style different elements of our website depending on pages visited, and other things.

If we visit the home page and open the browser console to inspect these classes, we’ll see that we lack the current template information among these classes:

Inspecting classes in the browser console

To be able to change the things WordPress displays, we need to know what file is being used. In our case, index.php is used as a default fallback template. This infographic shows the hierarchy of templates used. It can come very handy when overriding or creating themes.

In the previous article, we started refining the archive.php loop, adding meta information and post thumbnails to outputed articles. We’ll separate that loop into a separate file, include it in archive.php and index.php, and finish refining it.

Firstly, we’ll replace the content in both files between while and endwhile with a single line that requests the partial file, so index.php will look something like this:

<?php
/**
* @package Botega_Scratch_Theme
*/

get_header(); ?>

<?php
if ( have_posts() ) : while ( have_posts() ): the_post();

get_template_part( ‘partials/content’, get_post_type() );

endwhile;
endif;
?>

<?php get_footer(); ?>

Once we’ve done that, we’ll place the content we have replaced in archive.php into the partials/content.php file:

<div <?php post_class( ‘post-preview’ ); ?> id=”post-<?php the_ID(); ?>”>

<header class=”entry-header”>
<?php
if ( is_singular() ) :
the_title( ‘<h1 class=”entry-title”>’, ‘</h1>’ );
else :
the_title( ‘<h2 class=”entry-title”><a href=”‘ . esc_url( get_permalink() ) . ‘” rel=”bookmark”>’, ‘</a></h2>’ );
endif;

if ( ‘post’ === get_post_type() ) :
?>
<div class=”entry-meta”>
<?php
bsimple_posted_on();
bsimple_posted_by();
?>
</div><!– .entry-meta –>
<?php endif; ?>
</header><!– .entry-header –>

<a class=”post-thumbnail” href=”<?php the_permalink(); ?>” aria-hidden=”true” tabindex=”-1″>
<?php
the_post_thumbnail( ‘post-thumbnail’, array(

) );
?>
</a>

<?php the_excerpt(); ?>

</div>

Once we upload these changes to the server, we’ll see that our front page now, in each post in the post list, has meta information — date and author links:

Our front page now has date and author links

This means that our partial works.

Posts Thumbnails

We can see that none of our fake posts have any images in general, and no featured images specifically. If we go to the WordPress dashboard and try to add the featured image to our post/page, we’ll see that there’s no file upload field in the rightmost sidebar. (For those unfamiliar with WordPress, more about this feature can be read here.)

Post thumbnails aren’t enabled by default in WordPress themes. It’s a feature that needs to be turned on specifically in new themes. Most themes have it enabled.

To do this, we include add_theme_support( ‘post-thumbnails’ ); line to our functions.php.

Now thumbnails are enabled.

Now we can empty our WordPress installation of all the content by using the wp-cli command wp site empty –allow-root (or we can do it manually from the WordPress dashboard), and repopulate it with FakerPress. It should fill posts and pages with featured images it grabs from the Internet. (We’ll need to recreate the Top Menu like before, and assign pages and posts to it.)

One tip: if we’re building themes for sale, or generally themes that will be released to a wider audience, we may want to use theme unit test data provided by Automattic, as it may provide content for testing a wider scope of cases and theme details.

We can specify image sizes to FakerPress, but it will in all likelihood still result in a messy look.

When we build a theme, one of the techniques used to achieve a polished, standardized look is to specify thumbnail sizes. These are standard sizes WordPress will resize all uploaded image to fit. We’ll use the WordPress add_image_size() function to add several image sizes that our theme will use:

add_image_size( ‘list-thumb-1’, 730, 400, true);
add_image_size( ‘small-list-thumb-1’, 400, 200, true);
add_image_size( ‘small-list-thumb-2’, 300, 200, true);
add_image_size( ‘small-list-thumb-3’, 220, 140, true);

Then we’ll output any of the formatted images by using the_post_thumbnail() in our content.php:

<a class=”post-thumbnail” href=”<?php the_permalink(); ?>” aria-hidden=”true” tabindex=”-1″>
<?php
the_post_thumbnail( ‘small-list-thumb-1’);
?>
</a>

To achieve a nicely formatted excerpt in our archive or blog list, we’ll increase font size, but to do this, we’ll reduce the number of words outputted by the_excerpt():

# functions.php
function custom_excerpt_length( $length ) {
return 40;
}
add_filter( ‘excerpt_length’, ‘custom_excerpt_length’, 999 );

To be able to float image (thumbnail we just mentioned) and excerpt, we add the following to the parent element selector in our css:

.home .post-preview.post {
overflow: hidden;
}

(We don’t cover here the smaller styling adjustments that aren’t crucial to the theme itself.)

Now, we can increase our font size, and have the excerpt float around the image, by floating the image (along with the a parent element):

The excerpt floats around the image

We’ll also use post_thumbnails later, on single posts/pages.

Theme Sidebars

Theme Sidebars are widgetized areas in the theme. They need to be registered in the WordPress system so that we can place different widgets to these areas. Once we do that, we print — or output — these widgets in our template files.

We’ll register a number of sidebars in our theme, which can be seen in the GitHub repository of the theme. We do this by adding the following code to our functions.php:

// Register custom sidebars
function sidebar_register() {

$args = array(
‘name’ => __( ‘home_header’, ‘bsimple’ ),
‘description’ => __( ‘home_header’, ‘bsimple’ ),
‘id’ => ‘h_h’,
‘class’ => ‘home_header’,
‘before_widget’ => ‘ <div class=”dyn-sidebar side sidebar”>’,
‘after_widget’ => ‘</div>’,
‘before_title’ => ‘<h2 class=”widgettitle”>’,
‘after_title’ => ‘</h2>’,
);
register_sidebar($args);

$args = array(
‘name’ => __( ‘archive_sidebar_1’, ‘bsimple’ ),
‘description’ => __( ‘Archive Sidebar no 1’, ‘bsimple’ ),
‘id’ => ‘a_s_1’,
‘class’ => ‘archive_sidebar_1’,
‘before_widget’ => ‘ <div class=”dyn-sidebar side sidebar”>’,
‘after_widget’ => ‘</div>’,
‘before_title’ => ‘<h2 class=”widgettitle”>’,
‘after_title’ => ‘</h2>’,
);
register_sidebar($args);

$args = array(
‘name’ => __( ‘bottom_center_sidebar’, ‘bsimple’ ),
‘description’ => __( ‘Bottom Center Sidebar’, ‘bsimple’ ),
‘id’ => ‘b_c_s’,
‘class’ => ‘bottom_center_sidebar’,
‘before_widget’ => ‘<div id=”bottom-center-sidebar”>’,
‘after_widget’ => ‘</div>’,
‘before_title’ => ‘<h2 class=”widgettitle”>’,
‘after_title’ => ‘</h2>’,
);
register_sidebar($args);

}
add_action( ‘widgets_init’, ‘sidebar_register’ );

Here, we show how to register two sidebars. Further details on the register_sidebar() function can be found at wordpress.org.

We register eleven sidebars, but we don’t need to output all of these in all page templates or website locations. If they’re outputed in the currently customized page, they’re accessible in the Customizer under widgets:

The various sidebars

Here’s an example of actual output of the sidebar or widget area in the footer.php — which means it can be displayed globally:

<?php if ( is_active_sidebar( ‘b_c_s’ ) ) : ?>
<div class=”row b_c_s”><div class=”col-lg-8 mx-auto top-widget col-md-10 “>
<?php get_sidebar( ‘BottomCenterSidebar’ ); ?>
</div></div>
<?php endif; ?>

Here we use a sidebar ID we used in the register_sidebar function for the bottom_center_sidebar above.

We also conditioned the width of the central content container on the home page dependent on whether there are sidebars with active widgets ( is_active_sidebar()):

# index.php
<div class=”row”>
<?php if ( (is_home() && is_active_sidebar( ‘h_s_1’ )) || (is_archive() && is_active_sidebar( ‘archive_sidebar_1’ )) ) { ?>
<div class=”col-lg-7 col-md-9″>
<?php } else { ?>
<div class=”col-lg-12 col-md-10 mx-auto”>
<?php } ?>

<?php
if ( have_posts() ) : while ( have_posts() ): the_post();
get_template_part( ‘partials/content’, get_post_type() );
endwhile;
endif;
?>

</div>

<?php if ( (is_home() && is_active_sidebar( ‘h_s_1’ )) || (is_archive() && is_active_sidebar( ‘archive_sidebar_1’ )) ) { ?>
<div class=”col-lg-4 offset-lg-1 col-md-10 col-sm-12 arch- sidebar-side-cont”>

<?php }

if ( is_home() ) :
get_sidebar( ‘HomeSidebar1’ );
elseif ( is_archive() ) :
get_sidebar( ‘ArchiveSidebar1’ );
endif;
?>

<?php if ( (is_home() && is_active_sidebar( ‘h_s_1’ )) || (is_archive() && is_active_sidebar( ‘archive_sidebar_1’ )) ) { ?>
</div>
<?php } ?>

</div>

We output Bootstrap classes dependent on these conditions, making sure the theme won’t look empty if we omit setting up widgets for pages such as home.

After we fill these widget areas with widgets and images, this is what we get:

The result of filling the widget areas

Theme is shaping up nicely. Readers will, of course, adapt the styling to their liking.

The post How to Build a WordPress Theme from Scratch: Final Steps appeared first on SitePoint.

Magnificent Hand Lettering by Emilee Rudd

Original Source: http://feedproxy.google.com/~r/abduzeedo/~3/4F-pu0V_T5s/magnificent-hand-lettering-emilee-rudd

Magnificent Hand Lettering by Emilee Rudd

Magnificent Hand Lettering by Emilee Rudd

GisMullr
Nov 20, 2018

I’m slightly obsessed with hand lettering. I simply love when I stumble upon any branding, print, signage, mural, etc. showcasing a beautiful lettering work. The talent involved in creating beautiful things using only your free hand, creativity and skills never ceases to impress me. From packages on a supermarket shelf to restaurant chalkboard menus or street signs, I’m always delighted to see a good old hand-drawn piece. And this is why I’m always looking for artworks with that particular style. While browsing the hashtag hand lettering on Instagram I stumbled upon Emilee Rudd, a designer from Sacramento, CA. And so happy to have found this amazing talent. Her work simply stood out and caught my attention right away. Her style, the colors she uses, the lightness of her work are simply stunning. Upon browsing her Instagram you’ll find hand lettering for all sorts of things. And all of them are stunning. From menus to magazines covers, from coffee cups to quotes, Emilee showcases pieces that will certainly get you hooked into lettering too.

Since my own handwriting isn’t so great I feel like lettering is a little bit intimidating. The process of drawing letters and transforming words and sentences into beautiful artworks is fascinating. So I actually love to see artists creating these beautiful free handpieces. With that in mind, I’m delighted to share the videos Emilee has of her creative process. She makes the hand lettering creation process seem so effortless. Take a look at her artworks and videos we have here today. We have videos from her sketchbook and from a project she did for a client. Maybe after seeing her work, you’ll be inspired to give hand lettering another chance. Enjoy!

About: Emilee Rudd is an award-winning multidisciplinary creative who believes that inspiration lies on the confluence of art and design. She utilizes a professional background of various mediums and techniques to develop a unique creative solution to every client’s needs. With a passion for historical reference and experimental methodology, she enjoys a wide range of creative challenges to tackle. She loves nothing more than to work with a client to achieve a personalized and impactful solution to their brand or project’s needs.

Magnificent Hand Lettering by Emilee Rudd

Magnificent Hand Lettering by Emilee Rudd

Magnificent Hand Lettering by Emilee Rudd

Magnificent Hand Lettering by Emilee Rudd

Magnificent Hand Lettering by Emilee Rudd

Magnificent Hand Lettering by Emilee Rudd

Magnificent Hand Lettering by Emilee Rudd

Magnificent Hand Lettering by Emilee Rudd

Magnificent Hand Lettering by Emilee Rudd

Magnificent Hand Lettering by Emilee Rudd

Magnificent Hand Lettering by Emilee Rudd

Magnificent Hand Lettering by Emilee Rudd

Magnificent Hand Lettering by Emilee Rudd

Videos

Emilee Rudd Inktober 2018 from Emilee Rudd on Vimeo.

Emilee Rudd Sketchbook from Emilee Rudd on Vimeo.

More links:
emileerudd.com
Instagram
Drunk on Lettering podcast – Episode 83 Emilee Rudd

hand lettering
illustration


30+ Examples of Brand Identity Design Done Right

Original Source: https://www.hongkiat.com/blog/identity-branding-design-part-2/

Identity branding is an intergral part of business. After all, you have make sure that you can market yourself properly. It’s not always easy trying to come up with a design that suits your…

Visit hongkiat.com for full content.

Implications Of Thinking In Blocks Instead Of Blobs

Original Source: https://www.smashingmagazine.com/2018/11/implications-blocks-blobs/

Implications Of Thinking In Blocks Instead Of Blobs

Implications Of Thinking In Blocks Instead Of Blobs

Leonardo Losoviz

2018-11-20T13:00:59+01:00
2018-11-20T16:58:08+00:00

Gutenberg is a JavaScript-based editor (more specifically, it is a React-based editor), which will soon transform the experience of creating content for WordPress and (on an upcoming stage when Gutenberg is transformed into a site builder) the experience of creating WordPress sites.

Gutenberg, the site builder, will demand a different way of thinking how to lay the foundations of a website. In what we can already call the “old” model, WordPress sites are created by giving structure through templates (header.php, index.php, sidebar.php, footer.php), and fetching the content on the page from a single blob of HTML code. In the new model, the page has (React) components placed all over the page, each of them controlling their own logic, loading their own data, and self-rendering.

To appreciate the upcoming change visually, WordPress is moving from this:

The page contains templates with HTML code

Currently pages are built through PHP templates. (Large preview)

…to this:

The page contains autonomous components

In the near future, pages will be built by placing self-rendering components in them. (Large preview)

I believe that switching from blobs of HTML code to components for building sites is nothing short of a paradigm shift. Gutenberg’s impact is much more than a switch from PHP to JavaScript: there are things that could be done in the past which will possibly not make sense anymore. Likewise, a new world of possibilities opens up, such as rich and powerful user interactions. Web developers will not go from creating their sites in one language to creating their sites in another language because the site will not be the same anymore; it will be a completely different site that will be built.

Recommended reading: The Complete Anatomy Of The Gutenberg WordPress Editor

Web forms are such an important part of the web, but we design them poorly all the time. The brand-new “Form Design Patterns” book is our new practical guide for people who design, prototype and build all sorts of forms for digital services, products and websites. The eBook is free for Smashing Members.

Check the table of contents ↬

Form Design Patterns — a practical guide for anyone who needs to design and code web forms

Gutenberg has not been fully embraced by the WordPress community yet, for many reasons. For one, the new architecture is based on a plethora of tools and technologies (React, NPM, Webpack, Redux, and so on) which is much more difficult to learn and master than the old PHP-based one. And while it may be worth learning a new stack that delivers new functionalities, not every mom&pop site needs these new, shiny features.

After all, it is no coincidence that 30% of all sites across the globe are WordPress sites: most of these are really simple sites such as blogs, not dynamic social networks like Facebook. For another, WordPress inclusivity means that anyone could build a simple website — even people without coding experience, such as designers, content marketers, and bloggers.

But the complexity of the new architecture will leave many people out (I don’t even want to think about debugging my site in minified JavaScript code). And for another, once Gutenberg goes live, Facebook-backed React will be added to as many as 30% of all websites in the world — overnight. Many folks are uncomfortable with giving so much power to any sort of JavaScript library, while many others are mistrustful of Facebook. To alleviate this concern, Gutenberg abstracts React to also enable coding in other frameworks or libraries; however, in practice, React will undoubtedly be the predominant JavaScript library.

And yet, the prospect of being offered a new world of possibilities is sweet indeed. In my case, I am excited. However, my excitement is not about the technology (React) or about the implementation (Gutenberg), but about the concept, which is to create sites using components as the building unit. In the future, the implementation may switch to another platform, such as Vue, but the concept will remain.

Foreseeing what new features we will be able to implement is not always easy. It takes time to adapt to a new paradigm, and we tend to use new tools the old way until it dawns upon us how to use the new tools to accomplish new objectives. Even PDF files (which are a representation of print, the predominant technology before the web was born) are still a common sight on the web, neglecting the advantages that the web has over print.

“Imitating paper on a computer screen is like tearing the wings off a 747 and using it as a bus on the highway.”

— Ted Nelson

In this article, I will analyze several implications of building sites through a component-based architecture (as the concept) and through Gutenberg (as the implementation), including what new functionalities it can deliver, how much better it can integrate with current website development trends, and what it means to the future of WordPress.

Extended Versatility And Availability Of Content

A very important side effect of treating all content as blocks is that it allows to target chunks of HTML individually and use them for different outputs. Whereas content inserted in the HTML blob is accessible only through the webpage, as chunks it can be accessed through an API, and its metadata is readily available. Take media elements — such as videos, audio or images. As a standalone block, the video can be played in an app, the audio can be played as a podcast, and the images can be attached to the email when sending a digest — all of this without having to parse the HTML code.

Likewise, content from blocks can be adapted for different mediums: from the tiniest screen to the biggest ones, touchscreen or desktop, commanded by voice or by touch, 2D/AR/VR, or who knows what the future might bring. For instance, an audio block allows the audio to be played on an Apple Watch, commanded by voice through the In-car system or an AWS Echo, or as a floating item in our virtual world when using a VR headset. Blocks can also make it easier to set-up a single source of truth for content to be published in different outputs, such as a responsive website, AMP, mobile app, email, or any other, as was done by NPR through their Create Once, Publish Everywhere (COPE) approach.

Note: For more info on these topics, I suggest watching Karen McGrane’s Content in a Zombie Apocalypse talk.

Blocks can improve the user experience too. If browsing the site through 3G, blocks can self-render in a slow-connection mode to display low-quality images and skip loading videos. Or it can enhance the layout, such as offering to show an image gallery with one click at any point of the webpage, and not just at the place where it was embedded in the article.

These experiences can be attained by separating content from form, which implies that the presentation and the meaning of the content are decoupled, and only the meaning is saved on the database, making presentation data secondary and saving it on another place. Semantic HTML is an expression of this concept: we should always use <em> which implies meaning, instead of <i> which is a form of presentation (to make the character be displayed in italics), because then this content will be available to other mediums, such as voice (Alexa can’t read in italics, but she can add emphasis to the sentence).

Obtaining a thorough separation of content from form is very difficult since presentation code will often be added inside the block, through HTML markup (adding class “pull-right” already implies presentation). However, architecting the site using blocks already helps attain some level of separation at the layout level. In addition, blocks created to do just one thing, and do it very well, can make use of proper semantic HTML, have a good separation of concerns in its own architecture concerning HTML, JS, and CSS (so that porting them to other platforms may require only a minimum effort,) and be accessible, at least at the component-level.

Note: A general rule of thumb: The more inclusive a component is, the more prepared it is for mediums yet to be invented.

Unfortunately, Gutenberg was not designed with this purpose in mind, so blocks contain plenty of HTML markup for presentation too. For instance, an image block from an external image has, as its meaning, only the URL for the image, the alt description, and the caption (and possibly also the width and height); after creating an image block, the following chunk of code was saved in the DB (class aligncenter is for presentation, and the markup <div class="wp-block-image" /> would be completely redundant if storing only meaning):

<!– wp:image {“align”:”center”} –>
<div class=”wp-block-image”>
<figure class=”aligncenter”>
<img src=”https://cldup.com/cXyG__fTLN.jpg” alt=”Beautiful landscape”/>
<figcaption>If your theme supports it, you’ll see the “wide” button on
the image toolbar. Give it a try.</figcaption>
</figure>
</div>
<!– /wp:image –>

In addition, blocks are saved inside the post’s content (which is a big HTML blob) instead of each having an entry of its own in the database. Reusable blocks (also called global blocks) do have their own entry though, which makes me fear that developers may convert standard blocks to reusable blocks just for a quick hack to access them straight in the DB.

Similarly, I am worried that, if not properly designed, blocks can even cause havoc in our sites. For instance, unaware developers may ignore the rule of least power, using JavaScript not just for functionality but also for CSS and markup. In addition, Gutenberg’s server-side rendering (SSR) functionality is not isomorphic (i.e. it does not allow a single codebase to produce the output for both client and server-side code), hence dynamic blocks must implement the function to generate the HTML code also as PHP as to offer progressive enhancement (without which the site is unaccessible while being initially loaded).

In summary, blocks are a step in the right direction towards making WordPress content available on any format and for any medium, but they are not a definitive solution, so much work still needs to be done.

Performance

Performance matters. Faster sites lead to happier users, which leads to better conversion rates. The team at Etsy, for instance, shelves new features, as cool as they may be, if these make their site loading time go over a critical threshold (I recommend watching Allison McKnight’s talk on Building Performance for the Long Term and slides), while the team at Twitter re-architected their site several years ago to support server-side rendering in order to show content as soon as possible, and continually implements plenty of small changes that add up to deliver a fast user experience.

JavaScript being so attractive to developers, they experience no constraint on their use of it, which is a real problem: JavaScript is very expensive concerning performance, and it should be used very carefully.

As it stands now, Gutenberg is far from optimal: whereas creating a post with the old editor (for which we need to install the Classic Editor) requires loading around 1.4 MB of JavaScript, Gutenberg loads around 3.5 MB of JavaScript, just for its basic experience (that is, without installing any additional block):

At least 3.5 MB of scripts are required for loading Gutenberg

Loading scripts for Gutenberg. (Large preview)

That means that, as it stands now, 3.5 MB is the baseline, and loading size will only increase from there as the site admin installs more blocks. As was seen in a recent article on Smashing Magazine, creating a testimonials block required 150KB of minified JavaScript. How many blocks will a standard site require? How many MB of JavaScript will the average site need to download?

The implications are several: for one, a heavy site is out of reach to the next billion users, who have access mainly on slow connections, and who buy data plans which represent a significant chunk of their wage. For them, every MB of data makes a difference: sending Whatsapp messages is affordable, downloading several MBs of scripts just to load one site is not.

It is true that the user of the website will not need to interact with Gutenberg, since Gutenberg is simply for building the site, not for using it: Gutenberg is a back-end editor, not a front-end editor (and it may never be — at least as part of WordPress core). However, content creators will be penalized, and they are already a sizable target. In addition (as I argued earlier), users may end up being penalized too through dynamic blocks, which may create their markup through client-side JavaScript instead of server-side PHP.

There is also the issue of bloat from duplicated functionality added by 3rd party plugins. In the old days, a WordPress site may have loaded several versions of jQuery, which was relatively easy to fix. Nowadays, there is a huge array of open source libraries to choose from for implementing a needed functionality (drag and drop, calendars, multi-select components, carousels, etc.,) so more likely than not a site with dozens of 3rd party blocks will have the same functionality implemented by different libraries, creating unnecessary bloat. In addition, there is a bit of bloat added to Gutenberg itself: because blocks are registered in the frontend, unregistering an already-registered block is done by loading an additional script. In my opinion, this is one of the biggest challenges for the Gutenberg contributors: to put in place a streamlined process that allows anyone (not just developers experienced with Webpack) to remove undesired libraries and package only the minimal set of resources needed for the application.

Finally, I mention again that Gutenberg supports server-side rendering, but because it may not be easy to maintain, developers may be tempted to not rely on it. In this case, there is the cost of additional roundtrips needed to get the data from the REST endpoints, just to render the layout, during which time the user will be waiting.

In my opinion, performance will be one of the major challenges for Gutenberg, the one that could make or break in terms of widespread adoption, and there is still plenty of work that should be done, mainly targeting the next stage when Gutenberg becomes a site builder.

Web Standards

As mentioned earlier, Gutenberg abstracts React to provide a framework-agnostic approach to building blocks which, if implemented properly, can avoid WordPress being locked to React. The WordPress community is cautious when merging any JavaScript framework into WordPress core, in great part because Backbone.js, not long after being added to WordPress core, saw a sharp decline in popularity, and other than powering the Media Manager not many features were accomplished with it. Even if React is the most popular JavaScript library right now, there is no reason to believe that this will always be the case (as jQuery’s unraveling can attest), and WordPress must be prepared for when that day finally arrives (which, given the fast pace of technology, may happen sooner than expected).

The best way to avoid being locked to any library is through web standards and, more specifically in this case, the implementation of blocks through web components. Web components are strongly encapsulated components which operate with the browser APIs, so they don’t require any JavaScript library to work with. However, they can be implemented through any client-side JavaScript framework.

Even though React doesn’t provide a seamless integration with web components yet, it eventually (or rather hopefully) will. As it is explained in React’s documentation, web components and React components can work alongside:

“React and Web Components are built to solve different problems. Web Components provide strong encapsulation for reusable components, while React provides a declarative library that keeps the DOM in sync with your data. The two goals are complementary. As a developer, you are free to use React in your Web Components, or to use Web Components in React, or both.”

As of today, prospects of this situation taking place are not looking very promising: I haven’t been able to find any tutorial for building blocks with web components. I believe the community should focus some effort towards this cause, encouraging developers to start building blocks using web components, and the sooner the better, since Gutenberg forces us to learn new technologies anyway, right now. It is an opportunity to establish a strong foundation with web standards, from the very beginning.

Interoperability Between Sites, Homogenization Of Sites

A block is a smaller entity than a theme or a plugin, so eventually blocks will be accessible on their own, and acquired through newly created block markets. Most likely there will initially be a Cambrian explosion of blocks as many players in the ecosystem rush to be the first to market their solutions, leading on the medium and long-term towards consolidation of the most successful ones.

Once the dust has settled, a few blocks will stand out and become the winners, obtaining most of the market on their specific categories. If/when that happens will be a cause of both concern and jubilation: concern about a new wave of homogenization of the web taking place (as it happened with Bootstrap), as sites using the same components may end up with the same look and feel, an jubilation about an increased interoperability between sites from relying on the same components and the same APIs, which can open the gates to new opportunities.

I am particularly excited about expanding interoperability between sites. It is an area that could, in the long term, undo kingdoms such as Facebook’s: instead of relying on a monopolistic gateway for sharing information, sites with different communities can easily share data among themselves, directly. This is not a new concept: the IndieWeb movement has long been working towards enabling anyone to own their own data on their own servers, by having websites talk to each other through microformats. For instance, their Webmention web standard allows two sites to have a conversation, in which each comment and response is stored in both of them, and Micro.blog offers a Twitter-of-sorts but based on the open web, in which the posts on the user’s timeline are gathered from RSS and JSON feeds from subscribed sites. These endeavors are wonderful, but still very small in impact, since there is some level of tech-savviness required to be part of them. Gutenberg’s component-based architecture can potentially produce a much broader impact: Popular blocks can enable scores of WordPress sites to talk to each other, eventually allowing up to 30% of all sites on the web to be part of a decentralized, loosely-coupled network.

This area will need plenty of work though, before being viable. I do not think the default REST endpoints are the best communication interface since they were not conceived for this purpose (the folks from micro.blog have proposed a better solution through their JSON interface, which is based on the RSS specification). In addition, REST is itself being made obsolete by GraphQL, so I wouldn’t place high hopes on it for the long term. I am also involved in finding a better way, for which I am currently working on a different type of API, which can retrieve all the required data in only one request, and supports extensibility through a component-based architecture.

I also expect integration with cloud services to be more prominent, since providers can release their own blocks to interact with their own services. Because a component is a standalone unit, just by drag-and-dropping the block into the page already does all the work from the user’s perspective, making it very easy to build powerful websites with little or no knowledge. For instance, an image storage provider like Cloudinary could release a block that automatically crops the image according to the viewport of the device, or requests the image as WebP if supported, or other use cases.

In summary, consolidation of the block market may bring homogenization of the way in how it looks and feels, which would be a regrettable event and should be avoided, and powerful capabilities concerning interoperability and data-sharing between sites and integration with cloud services.

Integration With Pattern Libraries

A pattern library is a collection of user interface design elements, each of them often composed by snippets of HTML, JS, and CSS. A block is an autonomous component, often made up of bits of HTML, JS, and CSS. So blocks are evidently well-suited to be documented/built with pattern libraries. Having blocks ship their pattern libraries would be a great deal since it could enable teams not to start implementing the site’s pattern library only at the site level, but as an aggregation and refinement of the mini-pattern libraries from all the required blocks.

I believe something similar to the streamlining process for producing bloatless JavaScript packages that I mentioned earlier happens in this case, but concerning UI/UX/Documentation. It would be both a challenge and an opportunity for Gutenberg contributors to put in place a process that makes it easy for block developers to create pattern libraries for their blocks which, when aggregated all together, can result in a coherent pattern library for the site. Well implemented, such feature could drive down the costs of building sites from a documentation/maintenance perspective.

What Will Become Of WordPress?

Gutenberg will certainly make websites more attractive, even though at the cost of a required level of expertise that not everyone will be able to handle. In the longer term, this may lead to higher quality, lower quantity. Coming from the WordPress maxim of “Democratizing Publishing,” this may become a problem.

I am enthusiastic about Gutenberg, but more as the concept of a component-based architecture, than the React-based implementation. In general terms, I do agree with what Matt Mullenweg said during WordCamp Europe 2018 to justify Gutenberg:

“The foundation of WordPress that is now served us well for fifteen years will not last for the next fifteen.”

However, I also believe that the WordPress of fifteen years into the future may end up being completely different than the one we know today. I wonder if WordPress will end up primarily being the client-based editor, and not much more: the initiative to integrate Gutenberg into Drupal, with the aim of making Gutenberg become the editor of the open web, will officialize WordPress as a headless CMS operating through REST endpoints. This is a good development by itself, but it will make WordPress the back-end dispensable: if any other back-end platform provides better features, there is no reason to stick to the WordPress back-end anymore. After all, client-side Gutenberg will be able to work with any of them, while the simplicity of creating a site with WordPress will be lost, leveling the playing field with all other platforms.

In particular, I would not be surprised if developers feel that maintaining two codebases (one in JavaScript and one in PHP) for rendering dynamic blocks is too taxing, and decide to shift towards platforms which support isomorphic server-side rendering. If this scenario actually happens, would Matt decide to shift the WordPress backend to Node.js?

It is mainly because of this issue that I dare to say that the WordPress from 15 years from now may be a very different entity than what it is nowadays. Who knows what will happen?

Conclusion

By making components the new unit for building sites, the introduction of Gutenberg will be transformational to WordPress. And as with any paradigm shift, there will be winners and losers. Different stakeholders will consider Gutenberg a positive or negative development depending on their own situation: while the quality of a website will go up, the price of building such a site from hiring developers who can handle its complexity will also go up, making it less affordable and less popular.

These are exciting times, but also pivotal times. From now on, WordPress may slowly start being a different entity from what we are used to, and we may eventually need to think about what WordPress is, and what it represents, all over again.

Smashing Editorial
(rb, ra, yk, il)