KubeVirt in Action

Introduction

KubeVirt is an open-source project that offers you a VM-based virtualization option on top of any Kubernetes cluster. Lots of work happened in this area in the last couple of years, and Kubevirt is reaching the maturity stage to become production-ready. In this article, we will see how to deploy this in Openshift Container Platform (OCP) 4.2 and get your first windows VM up and running inside OCP.

Prerequisites

  • Up and running OCP 4.2 cluster.
  • KubeVirt V0.24.0.
  • Windows 2012 R2 ISO download.
  • Containerize Data Importer (CDI) operator for ISO image upload.
  • virtctl for operating on VM.

High-Level Steps

To run a windows-based VM using Windows ISO file, the following 8 steps are required:

URL Shortener: A Detailed Explanation

Introduction

A URL shortener is a service that is used to create short links from very long URLs. Usually, short links have the size of one third or even one-fourth of the original URL, which makes them easier to type, present, or tweet. Clicking on a short link user will be automatically redirected to the original URL. 

There are many URL shortening services available online, like tiny.cc, bitly.com, cutt.ly, etc. Implementing a URL shortening service is not a complex task, and it is often part of system design interviews. In this post, I will try to explain the process of implementing the service. 

Introduction to Micro-Frontend Architecture

As the frontend world grows, the architectural solutions for it should grow as well. The main idea behind micro-frontends is to divide frontends into independent parts so that independent teams can maintain them.

“An architectural style where independently deliverable frontend applications are composed into a greater whole”

Lock Striping in Java

There are dozens of decent lock-free hashtable implementations. Usually, those data structures, instead of using plain locks, are using CAS-based operations to be lock-free. with this narrative, it might sound I’m gonna use this post to build an argument for lock-free data structures. that’s not the case, quite surprisingly. on the contrary, here we’re going to talk about plain old locks.

Now that everybody’s onboard, let’s implement a concurrent version of Map with this simple contract:

Calling Java Functional Interfaces from Kotlin

Basics

Below is a Functional Interface defined in Java:

Java

Note, that an interface does not need to be annotated with @FunctionalInterface to be treated as one.

Native Memory Allocation in Java

From time to time, we run into a memory problem that is not related to Java Heap but Native Memory. Let's imagine the situation where we have a running container that is restarted once per day. We look at Prometheus/Grafana to check the reason behind this issue. However, we don't spot any problem with Java Heap size (exported via JMX) and start blaming our container scheduler to do any inconvenient operations with our containers :). The real problem can be hidden a bit deeper — in Native Memory.

Do you use any native memory allocator in your code or do you use any library that stores its internal state outside the Java Heap? It could be whatever third-party code that tries to minimize GC, such as I/O libraries or databases/caches keeping data in memory inside your process.

Playing With Particles Using the Web Animations API

When it comes to motion and animations, there is probably nothing I love more than particles. This is why every time I explore new technologies I always end up creating demos with as many particles as I can.

In this post, we'll make even more particle magic using the Web Animations API to create a firework effect when clicking on a button.

Browser support

At the time I'm writing this article, all major browsers — with the exception of Safari and Internet Explorer — at least partially support the Web Animations API. Safari support can be enabled in the "Experimental Features" developer menu.

This browser support data is from Caniuse, which has more detail. A number indicates that browser supports the feature at that version and up.

Desktop

ChromeFirefoxIEEdgeSafari
8376No80TP

Mobile / Tablet

Android ChromeAndroid FirefoxAndroidiOS Safari
80688013.3

If you're interested in reproducing the Twitter heart animation you could also have a look at this cool article by Ana Tudor which is another great example of exploding particles on a button.

HTML setup

We won't need much HTML for this demo. We will use a <button> element but it could be another type of tag element. We could even listen to any click on the page to make particles pop from anywhere if we really wanted to.

<button id="button">Click on me</button>

CSS setup

Since every particle has a few CSS properties in common, we can set them in the global CSS of the page. As you can create custom tag elements in HTML, I will use a <particle> tag name to avoid using semantic tags. But truth is, you could animate <p>, <i> or any tag of your choice.

particle {
  border-radius: 50%;
  left: 0;
  pointer-events: none;
  position: fixed;
  top: 0;
}

A couple thing to note here:

  • The particles should not interact with the layout of our page, so we're setting a fixed position with top and left at 0px each.
  • We're also removing pointer events to avoid any user interaction on the HTML particles while they are on the screen.

Because styling the button and the page layout is not really the purpose of this article I will leave that on the side.

JavaScript setup

Here are the six steps we will follow in our JavaScript:

  1. Listen to click event on the button
  2. Create 30 <particle> elements and append them into the <body>
  3. Set a random width, height and background for every particle
  4. Animate each particle from the mouse position to a random place as they fade out
  5. Remove the <particle> from the DOM when the animation is complete

Step 1: The click event

// We first check if the browser supports the Web Animations API
if (document.body.animate) {
  // If yes, we add a click listener on our button
  document.querySelector('#button').addEventListener('click', pop);
}

Step 2: The particles

// The pop() function is called on every click
function pop(e) { 
  // Loop to generate 30 particles at once
  for (let i = 0; i < 30; i++) {
    // We pass the mouse coordinates to the createParticle() function
    createParticle(e.clientX, e.clientY);
  }
}
function createParticle(x, y) {
  // Create a custom particle element
  const particle = document.createElement('particle');
  // Append the element into the body
  document.body.appendChild(particle);
}

Step 3: Particle width, height and background

function createParticle (x, y) {
  // [...]
  // Calculate a random size from 5px to 25px
  const size = Math.floor(Math.random() * 20 + 5);
  // Apply the size on each particle
  particle.style.width = `${size}px`;
  particle.style.height = `${size}px`;
  // Generate a random color in a blue/purple palette
  particle.style.background = `hsl(${Math.random() * 90 + 180}, 70%, 60%)`;
}

Step 4: Animate each particle

function createParticle (x, y) {
  // [...]
  // Generate a random x & y destination within a distance of 75px from the mouse
  const destinationX = x + (Math.random() - 0.5) * 2 * 75;
  const destinationY = y + (Math.random() - 0.5) * 2 * 75;

  // Store the animation in a variable because we will need it later
  const animation = particle.animate([
    {
      // Set the origin position of the particle
      // We offset the particle with half its size to center it around the mouse
      transform: `translate(${x - (size / 2)}px, ${y - (size / 2)}px)`,
      opacity: 1
    },
    {
      // We define the final coordinates as the second keyframe
      transform: `translate(${destinationX}px, ${destinationY}px)`,
      opacity: 0
    }
  ], {
    // Set a random duration from 500 to 1500ms
    duration: 500 + Math.random() * 1000,
    easing: 'cubic-bezier(0, .9, .57, 1)',
    // Delay every particle with a random value from 0ms to 200ms
    delay: Math.random() * 200
  });
}

Because we have a random delay, the particles waiting to start their animation are visible on the top-left of the screen. To prevent this, we can set a zero opacity on every particle in our global CSS.

particle {
  /* Same as before */
  opacity: 0;
}

Step 5: Remove particles after the animation completes

It is important to remove the particle elements from the DOM. Since we create 30 new elements on every click, the browser memory can fill up pretty quickly and cause things to get janky. Here's how we can do that:

function createParticle (x, y) {
  // Same as before
  // When the animation is finished, remove the element from the DOM
  animation.onfinish = () => {
    particle.remove();
  };
}

Final result

Putting everything together gives us what we're looking for: a colorful explosion of particle goodness.

Not seeing the animation in the demo? Check if your browser supports the Web Animations API. in the support table at the top of the post.

Be creative!

Because all this is using CSS, it's pretty simple to modify the particle styles. Here are five examples using various shapes... and even characters!


Or hey, we can even explode the button itself like Zach Saucier did in this post.

A button with a gradient exploding into particles

The post Playing With Particles Using the Web Animations API appeared first on CSS-Tricks.

Ideas for Distorted Link Effects on Menus

After exploring some distortion effects on line elements for links, I couldn’t wait but try them on some big style menus. So here is a little set of demos that shows some ideas for how to use those distortion effects. They were a great excuse to play with some of my favorite typefaces available on Adobe Fonts including Bely Display, Freight and Rigatoni.

How about a tiny squiggly line under an outlined text:

Or some distortion on a thick line with a gradient:

Or maybe two lines hugging the lovely Rigatoni typeface:

Let’s put that swirly line in front of a sexy serif:

Or be bold and make a strong contrasty box with a wave inside:

Check out all the demos here.

I really hope you enjoy these styles and find them useful!

Please share your creations with me on Twitter @codrops!

Ideas for Distorted Link Effects on Menus was written by Mary Lou and published on Codrops.

Remote Agile (Part 1): Practices and Tools

Agile has always been about colocation, about direct communication, physical boards, and all the other haptic and analog moments to create value in the digital realm. As a Professional Scrum Trainer, I strive to provide training classes without using PowerPoint or digital devices. Moreover, admittedly, I love index cards. However, times are changing. So, let’s dive into the particularities of practicing remote Agile with distributed teams. 

We start with basic techniques and tools and follow up with how to apply Liberating Structures in the remote realm. 

DesiredCapabilities in Selenium

It’s a huge challenge for QA engineers to roll out robust web-applications that provide a seamless user experience across a variety of devices. Considering a large number of devices and browsers in the market, QAs need to test web-applications in different environments to ensure they meet market requirements.

These environments include different mobile devices, web-browsers, emulators, or simulators. To use the desired environment, QAs use DesiredCapabilities in test automation frameworks like Selenium. This article aims to explain in detail what DesiredCapabilities is and how it helps QAs test web-apps for cross-browser compatibility testing across multiple devices and platforms.

Functional and Non-Functional Testing: The Basics You Should Know

Testing is an essential part and success factor of the software development process. If the test management is carried out correctly, tests can help to avoid software errors and ensure a high quality of the product. There are a lot of testing practices to make sure that your solution works correctly and can be used easily across multiple environments and platforms. These methods are usually divided into functional and non-functional tests.

You may also like: Functional Testing vs. Non-Functional Testing

Smart City With an Event Streaming Platform Like Apache Kafka

A smart city is an urban area that uses different types of electronic Internet of Things (IoT) sensors to collect data and then use insights gained from that data to manage assets, resources, and services efficiently. This includes data collected from citizens, devices, and assets that are processed and analyzed to monitor and manage traffic and transportation systems, power plants, utilities, water supply networks, waste management, crime detection, information systems, schools, libraries, hospitals, and other community services.

You may also like: Smart Cities: Who Wins and Who Loses?

7 Best Platforms to Easily Sell Digital Products (Compared)

Do you want to sell digital products online? Perhaps you’re planning to create ebooks, online courses, software, or something else entirely.

Regardless of which type of digital product you create, you will need an easy to use platform to sell your digital products and deliver them to your customers.

In this article, we will share the best platforms to sell digital products online. As we go through them, we’ll explain their pros and cons to help you choose the best option for your needs.

Best Platforms to Sell Digital Products Online

Why You Need a Platform to Sell Digital Products

If you are selling a single product, then you can probably create a contact form and accept credit card payments using Stripe or PayPal.

However, if you are selling multiple products and need an efficient way for users to access downloads, then you need a proper platform to sell digital products.

These platforms provide you with all the features you’ll need to grow your online business, including:

  • Easy ways to accept payments using multiple payment methods
  • Deliver product downloads to the customers
  • You can provide an account management area for customers
  • You can sell subscriptions based access to downloads
  • You can offer courses, lessons, quizzes, etc.
  • Built-in tools to display and promote products on your website

That being said, let’s take a look at some of the best platforms to sell digital and downloadable products online.

1. MemberPress

The MemberPress website

MemberPress is the best WordPress membership plugin. It allows you to sell subscriptions and easily control access to different parts of your website.

You can create subscriptions for your digital or downloadable products, so customers can access them from their accounts after purchasing the membership.

Pros

MemberPress integrates with major payment gateways like PayPal, Stripe, and Authorize.net. It also integrates with email marketing services like Constant Contact, ConvertKit, and others.

You can use MemberPress to create as many members only pages or sections on your site. You could deliver your paid content in the form of posts, pages, or downloads that are accessed through a protected “members only” page.

There’s no limit to how many different membership levels you can set up in MemberPress. You can define these however you like.

Most people find MemberPress fairly easy to use. If you get stuck, just check out the step by step instructions in our ultimate guide to creating a WordPress membership site.

MemberPress allows for one-off payments or recurring memberships. You can even set up a free trial membership, create coupon codes to offer discounts, or release drip content to convert more sales.

There are loads of reports available, so you can see which products and membership levels are selling well.

You can use MemberPress with any WordPress theme, but we recommend the following WordPress membership themes since they look beautiful. It can also be easily integrated with other WordPress plugins.

Cons

MemberPress is geared towards sellings subscriptions and memberships and may not be well-suited for businesses that just want to sell one-off downloads.

MemberPress is incredibly powerful and flexible. You may need to read their getting started tutorials to familiarize yourself with all the features.

Pricing

MemberPress costs $149 at the Basic level which is enough for most users who’re just getting started. You can upgrade to their Plus or Pro plan unlock other powerful features.

2. WooCommerce

WooCommerce is the best eCommerce platform in the world. It’s a free WordPress plugin, and you can use it to sell both physical and digital products.

Pros

  • WooCommerce itself is free, but you’ll need a WordPress website which requires a domain name and web hosting.
  • You can use it to sell both physical goods as well as digital products.
  • There are lots of WooCommerce plugins and extensions that you can use and many of them are free, or have a free version.
  • There are plenty of beautiful WooCommerce templates that will make your store look professional and boost sales.
  • WooCommerce has dozens of payment gateways available as add-ons including all the top payment services.

Cons

  • WooCommerce can seem a little overwhelming at times as there are so many options.
  • Additional paid plugins or tools can increase your eCommerce website costs. However, you can easily control it by using free options whenever possible.

Pricing

Although WooCommerce itself is free, you might want to pay to add extra functionality. That might mean buying some premium plugins or a premium WooCommerce theme.

We recommend using either Bluehost or SiteGround because they offer the best WooCommerce hosting at affordable rates. After that you can follow our complete WooCommerce tutorial to get started.

3. LearnDash

The LearnDash website

LearnDash is the best LMS (Learning Management System) plugin for WordPress plugin. It allows you to easily sell online courses on your website.

Pros

  • LearnDash supports a huge range of pricing models. These include one time sales, subscriptions, memberships, bundles, and more.
  • There’s lots of help available, including video tutorials, community forums, and documentation. There’s also a support team.
  • If you’re running an online course, you’ll find loads of helpful features. These include certificates and badges that you can use as incentives for your students.
  • You can create your own forums, specific to your courses, so that students can interact with one another.
  • There’s a 30-day money-back guarantee, so you can get a refund if you decide that LearnDash isn’t the right option for you.

Cons

  • You can only contact the support team by submitting a ticket. There’s no live chat or phone option.
  • There’s no free version or trial period available.

Pricing

The Basic plan costs $199 at full price. You’ll almost certainly find that it’s on sale for $159 when you visit the site, though.

If you want to use LearnDash on several site, the Plus packet lets you install it on up to 10 sites. That costs $229 full price, though it’s normally on sale for $189.

For more details, see our guide on how to create and sell online courses with LearnDash.

Often users use LearnDash in combination with MemberPress to get the most value.

4. Easy Digital Downloads

The Easy Digital Downloads website

Easy Digital Downloads does what you might expect from the name. It lets you sell digital downloads from your site. Again, it’s a WordPress plugin, so you’ll need a domain name and web hosting.

Pros

  • You can use Easy Digital Downloads for free, just like you can with WooCommerce. If you want extra features, there are lots of free and paid extensions available.
  • Easy Digital Downloads is specifically designed for selling digital products. If you have no intention of selling physical products, then it could be a great fit for you.
  • There’s plenty of support available. This includes support forums, videos, and tutorials. If you’re a premium user, you can get priority support.
  • You can use the Easy Digital Downloads shortcodes to display your products anywhere you want, such as in a blog post.

Cons

  • There aren’t all that many WordPress themes out there that are designed specifically for use with Easy Digital Downloads.
  • Easy Digital Downloads is free but you may need paid extensions to add extra features. This may increase your costs.

Pricing

The basic version of Easy Digital Downloads is free. If you want more features, then you will need their extensions. Some of them are free and others are paid addons.

You can also opt for one of the pricing plans, which are billed yearly. These give access to email support and various extras through included extensions. They start at $99/year.

5. Restrict Content Pro

The Restrict Content Pro website

Restrict Content Pro is the paid version of the Restrict Content plugin. It’s a WordPress membership plugin produced by the same team that’s behind Easy Digital Downloads.

Pros

  • Restrict Content Pro is really easy to get started with. Even if you’ve had little experience of WordPress, you should find it fairly straightforward.
  • Restrict Content Pro works seamlessly with Easy Digital Downloads. If you want to use both plugins on your site, it’s easy to do so.
  • It comes with a lot of built-in integrations, like Stripe, PayPal, MailChimp, WooCommerce, and more.
  • You can create as many different membership levels as you want, including free and trial memberships.
  • Your customers can move between subscription levels and only pay the difference. This happens automatically and could save you a lot of admin time.
  • You can easily view reports on your earnings, membership numbers, and more.
  • There’s an “Unlimited” plan available which includes lifetime updates and supports for a single one-off fee.

Cons

  • The free version of the plugin doesn’t handle payments. You’ll need to upgrade to Pro if you want people to pay to register.
  • Some of the most useful addons aren’t included in the Personal or Plus plans. These include the ability to drip content, which most membership plugins include as a basic feature.
  • There’s no phone or live chat support, even at the higher pricing tiers. You have to submit a support ticket instead.
  • Although there’s a 30 day refund period, you can only get a refund if you can explain why the plugin won’t work for you.

Pricing

There’s a free version of the plugin available, called Restrict Content. The Restrict Content Pro plugin costs from $99/year, which comes with 13 free add-ons.

6. Shopify

The Shopify website

Shopify is an all in one platform for eCommerce. This means it handles everything for you such as your site hosting, updates, and security. You just pay a single monthly fee.

Pros

  • Shopify is really easy to get started with. You don’t need to buy hosting or even a domain name. You just sign up for an account with Shopify and start creating your store.
  • You can sell both physical and digital products using Shopify. This could be useful if you might want to offer physical products in the future.
  • There are loads of apps available for Shopify. These add functionality to your store. Most of these will cost you money, but some are free integrations with other software that you might be paying for, such as OptinMonster.
  • You can pick from lots of different Shopify themes (templates) for your site, or even buy a premium theme from the Shopify themes store.
  • There’s 24/7 support available through live chat, phone, email, and Twitter. There’s also lots of documentation, plus video tutorials and support forums.

Cons

  • You can’t easily integrate Shopify with WordPress, so it’s not a good option if you want to sell directly from your existing website.
  • Shopify has a built-in payment system called Shopify Payments. If you want to use third-party payment gateways, like PayPal or Amazon Payments, Shopify charges an extra 2% fee on these transactions.

Pricing

Shopify costs $29/month for the basic plan. This gives you access to the majority of features that you’re likely to want, apart from reports and gift cards. Those are available on the next tier up, at $79/month.

7. Teachable

The Teachable website

Teachable is a platform where you can create your own online courses. It hosts your course for you, so you don’t need a website in order to use it.

Pros

  • Teachable is easy to get started with. It has a straightforward dashboard to guide you through the process.
  • There’s a generous free plan available, so you can get started without paying anything. This plan lets you have unlimited courses and students, and you can have a discussion forum and basic quizzes too.
  • It’s easy to arrange and organize your content in Teachable using the drag and drop interface.
  • You can upload your own logo, images, text, colors, and so on to customize how your Teachable sales pages looks.
  • Teachable can handle lots of different file types. It does a particularly good job of dealing with videos, which should look great whatever device your student is using.
  • There are great analytics that can show you how your students are doing. You can even track individual students’ progress.
  • You can communicate with students directly from your Teachable platform.

Cons

  • If you want to customize your course homepage using the Power Editor, you’ll need to understand HTML and CSS code.
  • Teachable is designed for courses. It’s not really going to work for you if you want to sell something like an ebook or software.

Pricing

Teachable’s free plan doesn’t cost anything. However, you will pay $1 plus 10% for every paid course that you sell. That means that if you have a course costing $200, you’ll pay Teachable $21 on each sale.

The cheapest plan is $29/month. If you’re on this plan, you’ll also be charged an additional 5% on each sale. To avoid paying any commission at all, you’ll need to be on the Professional Plan for $79/month.

Choosing the Best Platform for Your Needs

The best platform to sell digital products depends entirely on your needs.

If you want to sell subscription-based digital products, premium content, or pay-per-view website, then MemberPress is the best option.

If your products include ebooks, music, or software, then Easy Digital Downloads might well be all you need.

If you want to sell an online course, pick a platform like LearnDash or Teachable. These are specifically designed for online course creators, and it’s easy to use them to create a professional looking course.

Finally, if you’re also selling physical products, or might want to do so in the future, go with WooCommerce or Shopify. Both of these options make it easy to sell both digital and physical goods.

We hope this article has helped you compare the best platforms to sell digital products. You may also want to see our guide on the best WordPress plugins and our proven tips to grow your website traffic.

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

The post 7 Best Platforms to Easily Sell Digital Products (Compared) appeared first on WPBeginner.

20+ Deliciously Dark Website Designs

Dark website designs are where it’s at. Don’t believe me? They’ve become increasingly popular over the past year. Dark designs are thought to be easier on eye strain and make for a more pleasant viewing experience. They can also add atmosphere to your site.

As more and more websites have shifted to dark mode in 2020, we thought it imperative to highlight some designs that really capture the concept of dark designs well. What follows is a list of over 20 delightfully dark website designs you’ll definitely want to check out.

UNLIMITED DOWNLOADS: 400,000+ Fonts & Design Assets

Starting at only $16.50 per month!



Serge Thoraval: Atelier

The Serge Thoraval: Atelier website doesn’t just offer a dark design — it also features some really interesting effects. From a mouse hover effect when the site is loading to transition effects when you scroll down the page, this site sets itself apart.

Dark Website Designs - Atelier

Basilico

This site offers a dark design that makes each portfolio piece really stand out. Plus, when you hover over each item, they color shift and descriptive text scrolls across it from right to left.

dark website designs - Basilico

Big Drop Inc

Big Drop Inc has a combination of light and dark designs that are both appealing and effective.

dark website designs - Big Drop Inc

DevArt

DevArt is another site with a dark design that helps to make the artwork it features stand out. It’s also easier on the eyes than sites with brighter backgrounds.

dark website design - DevArt

Creative Park

The Creative Park website offers up a delightfully dark design that allows the subject of photos to really stand out. It also has some really interesting transition effects for changing slides, clicking links, and opening menus.

dark website designs - Creative Park

Olivia Restaurant

The Olivia Restaurant website mimics the mood inside of the restaurant itself — dark, cozy, and inviting.

dark website designs - Olivia Restaurant

3D Hubs

The 3D Hubs website leverages its dark design to make the components it features stand out. This also works well for displaying video and individual items the company offers.

dark website designs - 3D Hubs

Welford Media

Welford Media is a web design firm that uses a dark design on its website to engage visitors. This design choice allows the company’s tagline stand out at a glance and builds immediate interest.

dark website designs - Welford Media

Meaning 2020

The website for the Meaning 2020 Conference has a dark design as well. The gray background allows the colorful logo to stand out and offers a subdued backdrop onto which videos and photos are placed.

dark website designs - Meaning 2020

Rich Brown

This is a website dedicated to the work of Rich Brown, an art director and UX/UI designer. The site itself features a dark design onto which video backgrounds play seamlessly.

dark website designs - Rich Brown

Artem Pivovarov

The design on this website is super interesting. Artem Pivovarov has a dark design with a prominent photo background. It also has interactive elements in this background that react on hover.

dark website designs - Artem Pivovarov

Formigari Srl

Formigari Srl is another site you should check out for dark design inspiration. It highlights videos and photos on a deep gray background that makes the entirety of the content feel immersive.

Formigari Srl

Canvas United

Still another site you should check out is Canvas United. This site is for a New York-based digital agency that provides some cool transition effects and an immersive experience.

Canvas United

The Kennedys

The Kennedys website currently features an under construction sign that’s set on a dark background.

The Kennedys

Resoluut

The Resoluut website offers a dark purple background with images that appear as though they’re hovering on top of it. There is a lot of play with depth of field here.

Resoluut

Fantassin

Still another option is the Fantassin website, which features a dark background and tons of cool scroll effects that draw the eye further down the page.

Fantassin

Cody Petts Studio

The Cody Petts Studio website highlights the work of Cody Petts, including print and packaging designs as well as photography. It’s dark, gritty, and extremely compelling.

Cody Petts Studio

Kazuma Kurata

The design for the Kazuma Kurata website offers a dark background that’s intimately inviting. It makes the colorful aspects of featured photos stand out even more. The design and function of the site make it clear why it’s deserving of its AWWWARDs Nominee status.

Kazuma Kurata

Bachoy

The Bachoy website highlights a creative and tech studio. The dark design featured here uses a cool spotlight hover effect and interesting interactions with photos as you scroll down the page.

Bachoy

Agency Legend

The Agency Legend website has a truly appealing site that takes advantage of superhero motifs to increase engagement.

Agency Legend

Arara

Last on our list is the website for Arara, which offers battery-free bicycle lights. This site is dark but not brooding, and instead uses the darker background to make the bright colors featured in images and videos “pop.”

Arara

Dark Website Designs Can Serve You Well

As you can see from the examples listed above, dark website designs can really take the overall look of your website to the next level — whatever that means for you. Whether you want to make colors look more vibrant, ease eye strain, or provide a mood, dark designs offer flexibility in both form and function. Have fun playing with them!

How Should Designers Learn To Code? The Terminal And Text Editors (Part 1)

How Should Designers Learn To Code? The Terminal And Text Editors (Part 1)

How Should Designers Learn To Code? The Terminal And Text Editors (Part 1)

Paul Hanaoka

As a designer with many years of experience, I often encourage my colleagues and reports to pick up some coding skills. While many are open to the idea, others balk at the notion. I usually hear some variation of “I didn’t study design to become a developer.” Although this is a valid concern, I’d like to emphasize two points: a better understanding of the materials usually leads to better outcomes, and there is an important distinction between “coding” and “software engineering.”

This two-part series of articles should be useful for any designers out there who’d like to gain also some coding skills.

Understanding The Raw Materials

Contrary to what some may think, design isn’t about creating beautiful mockups, it’s about delivering an intuitive, functional experience to the end user. That simply can’t be done without an understanding of the building blocks of a solution. An architect isn’t going to be very good at her job if she doesn’t understand the materials her plans demand and a designer isn’t going to be very good if he doesn’t understand the materials that make his designs come to life — the code. Experience with coding helps designers understand what’s possible and what’s not and whether or not their designs will be able to effectively perform their desired functions.

I also reassure my colleagues that knowledge of coding doesn’t mean one has to become an engineer. The two refer to different, though related, skill sets. As Kyle Thayer, a PhD candidate at the University of Washington recently wrote, the field of computer science (or engineering) is about giving students “an overview of the scientific field of computing”:

“The purpose of a Computer Science degree is to give students an overview of the scientific field of computing. While this includes some programming, programming is done primarily for the purpose of learning about other areas (e.g., operating systems, algorithms, machine learning, human-computer interaction). A CS degree is a good first step into the academic field of computer science.”

Kyle Thayer

By contrast, coding simply means becoming familiar enough with a given programming language to complete a task. Asking someone to learn basic HTML or JavaScript does not necessitate their becoming a full-stack software architect. Despite what some might think, forking a repo and copy/pasting Stack Overflow answers in does not make you a software engineer — but it can increase the value you bring as a designer to a product development team.

What About “Low Code”?

Some may say that we’re entering a low code future where designers (and developers) are able to build applications through drag-and-drop functionality and a GUI (graphical user interface). So taking the time to learn a programming language isn’t “worth it.” The emergence of tools like Webflow, Modulz, FramerX, UXPin, etc., seems to support this line of reasoning. And this can be very true for many applications — it’s easier than ever to create a site or app without a single line of code. However, if you don’t understand the underlying principles, you will be capping the value you can deliver with a low code application.

Logos and screenshots showing the code behind tools developed by companies like Modulz, Studio.Design, FramerX, and others.
Modulz, Studio.Design, FramerX, and other apps — there’s still a lot of code in there... (Large preview)

We’re also not yet at the point where you can build enterprise-scale applications with low code platforms. As designers we have to work in the world we live in, not the one we imagine is coming.

That being said, everyone brings a unique blend of skills to the table. Knowledge of code is not an absolute necessity and it should just be encouraged, not required.

Where To Start?

There is an endless amount of tools, languages, schools, guides, and other resources available for anyone who has access to the internet — so where to begin? An important disclaimer — I am by no means an expert, or anything close to a software engineer — and the following are insights from my personal experience, not a guaranteed path to success.

Many of the designers/developers I know have usually started hacking HTML and CSS templates on sites like MySpace, Geocities, Tumblr, Neopets, or others. Now that I have sufficiently dated myself, for anyone starting out today, I would recommend beginning in your friendly command-line interface (CLI) shell.

The Terminal: An Essential Tool

The go-to application for Hollywood directors whenever there’s a computer hacker on the screen, the terminal is simply an interface that allows you to execute actions via a text input rather than the graphical user interface (GUI) that most people are accustomed to. I’ll let real developers explain the intricacies and technical how-to, but for our purposes it’s good enough to know that familiarizing yourself with the CLI is beneficial for a number of reasons.

The terminal gives you access to your computer’s file and folder structure — the same way that you click through Finder or Explorer, you navigate using your keyboard in the terminal. It definitely takes some time getting used to, but developing your mental model in this area is foundational to working in code.

Like a lot of designers, I am using the macOS environment (formerly known as OS X), but the following applies to other *nix operating systems (Linux, Unix), and also to Windows PowerShell. While there is a lot of overlap between different modern operating systems, there are some differences that I will do my best to highlight.

Note: For a more complete introduction to the terminal, I recommend reading Paul Tero’s article, “Introduction To Linux Commands”.

Regular Expressions

A key feature in a CLI is the ability to use regular expressions (regex) in your commands. Think of regex as boolean search operations (using quotation marks to search for exact phrases or the minus sign to exclude words) on steroids — they allow you to define a pattern in a string of text so that you can perform some action on the output. Here are some real-world examples:

  1. If you have a long list of phone numbers in a variety of formats, you could define a script that would give you a consistent output based on a regular expression — e.g.: (###) ###-#### for the U.S. phone numbers format.
  2. If you want to quickly rename a group of files to a specific case — from kebab-case to CamelCase or anything in between.

I highly recommend watching Wes Bos’ Command Line Power User series — or at the very least his intro video which will give you a good idea about a few essentials commands that you can use.

Here are some basic terminal commands* to help you getting started:

  1. cd stands for “Change Directory”, type this and then a file or a folder path to go — note that you can type a folder name but it needs to be inside your current folder to go to it.
  2. ls lists the files and folders in your current folder.
  3. pwd stands for “Print Working Directory” — this will list out where you currently are in your computer.
  4. mkdir and a folder name will create a folder in your working directory.
  5. using cd with .. takes you one level up — if you’re in /users/username/documents/2019 and you enter cd ../.. you’ll end up in /users/username.
  6. Bonus tip — hitting the Tab key will autocomplete as you type a folder/file path.

Note: The following will work on the Windows command line (cmd):

  • cd, cd .., mkdir, Tab key for path autocomplete (ls and pwd won’t work).

The more modern Windows command line (Windows PowerShell) supports all of them:
  • cd, cd .., ls, pwd, mkdir, and Tab for path autocomplete.

For a complete list of commands available in PowerShell, check this Microsoft’ Help page “Using Familiar Command Names”.

Mass-File Management

You can manipulate files and folders en masse via the terminal — here are a few ideas:

  1. You can create three years of folders with subfolders for each month in a single command — using mkdir -p and {list-of-years}/{list-of-months} will create folders for each year with subfolders for each month. Use your imagination, I’m sure you can put this to good use!
  2. You can quickly clean up your desktop by using mv Screen\ Shot* Screenshots — this will move all of your files that start with “Screen Shot” to a folder named “Screenshots”.
A screenshot of a terminal window showing the commands and output of a folder creation script.
Create 36 folders on your computer with a single line of code! (Large preview)

Note: These two examples will most likely only work in *nix environments — but the theory still applies. And Windows PowerShell is also a very powerful command line tool, you just need to learn its features and specific commands.

Scripting And Maintenance

Now that we have a glimpse into the power of regular expressions and the options available in the terminal we can start combining those things into scripts. One very simple, yet powerful and commonly used script is Mike G’s file renamer:

criteria=$1 
re_match=$2
 replace=$3
 for i in $( ls *$criteria* ); 
 do
     src=$i
     tgt=$(echo $i | sed -e "s/$re_match/$replace/")
     mv $src $tgt
 done

What this script allows you to do, is define the scope (criteria), define what you’d like to change (re_match), and what you’d like to change it to (replace) — and then execute it.

There are countless other scripts that you can create beyond creating and renaming files — Vlad’s Batch Resizing script is an excellent example of the time-saving capabilities that you can create using bash scripts.

Advanced Tips And Tricks

Something I have found over the years is that regularly resetting my computer and reinstalling the operating system helps it stay relatively clutter-free and prevents the slowdowns everyone experiences after years of digital detritus that accumulates on harddrives. For many, the prospect of wiping a computer and re-setting everything back at best sounds like a few days of work, and at worst an impossible nightmare that you may never recover from.

But it doesn’t have to be — by using a few command-line tools, once you’ve backed up, wiped, and reinstalled your OS, you can install not only your list of favorite apps, but also fonts in a matter of minutes using Homebrew. (Homebrew is for Mac and Linux only. For Windows, try Chocolatey which is a solid alternative.)

If you’re interested — we’ve created an easy-to-follow setup guide to get your computer in good shape for most development. Our guide is for macOS, but Owen Williams has written a solid guide for Windows as well.

If you don’t have the time for Wes’ entire series of tutorials about the command line — at the very least I highly recommend the following stack:

  1. Oh My ZSH
  2. zsh-autosuggestions
  3. zsh-syntax-highlighting
  4. z-jump-around

Choosing A Text Editor

There are many options when it comes to choosing a code editor — Sublime Text and VS Code (Visual Studio Code) are the two I have the most experience with and am currently using.

Sublime Text was one of the earlier text editors that became popular with front-end developers — it was the gold standard up until a few years ago. Features like multiple cursors, a powerful package manager, and highly customizable shortcuts that allowed you to quickly navigate in and between files and folders. Not to mention it was an incredibly lightweight and fast application which made it an easy choice.

VS Code (Visual Studio Code) came on the scene around 2015, it took a while for people to switch from Atom and Sublime, but VS Code has established itself as many developers’ favorite editor. In addition to pretty much all of Sublime’s features, VS Code differentiated itself with a built-in terminal and tight integration with Git. In addition, Visual Studio Code has a rich plugin ecosystem that allows you to extend and customize your environment to your heart’s delight.

All that is to say — you don’t need to be a developer to appreciate the features of a good code editor. I have found many uses for it in my daily work; two, in particular, are the ability to use multiple cursors, and using regex to find-and-replace text across folders of files. Let’s take a closer look at both.

Editing With Multiple Cursors

Picture your typical word processor — that blinking vertical line that shows where the text you’re entering will go? Now picture the ability to add more than one cursor to this window so that whatever you type will appear wherever there is a cursor!

This might not be blowing your mind just yet — so here’s an example that shows a few ways that an advanced text editor can help you create everyday efficiencies in your workflow.

A screencap showing a list of names being manipulated and turned into a list of email addresses.
Mass-editing in a text editor is much faster and more intuitive than in a spreadsheet. (Large preview)

Here we have a list of names that we need to convert into email addresses — we’d also like to make them all lowercase and then sort them alphabetically. This can be done with a few keystrokes.

Using a text editor to quickly manipulate lots of text in Sublime Text (short video).

Once you paste the list in, Cmd + Shift + P brings up the Command Palette (fancy term for a searchable menu that gives you all the available functionalities). You can basically type in this menu what you want to do, pretty much anything you can do to text is available here. If it’s not, there’s likely a plugin or an extension that you can find.

We’re able to change the case and sort the lines in a matter of seconds — then pressing Ctrl + Shift + arrow keys adds cursors, then whatever we type gets added to every line — in this case, we’re turning the names into email addresses, but your wild imagination could find myriad other ways to use this.

You might be saying — well I can do this in Excel or Google Sheets, which is true, but I have found that it is a lot quicker to handle these types of things in a text editor. You avoid having to write formulas and select things with a mouse.

Which Code Editor Should I Use?

I’m a designer — so of course, my answer is “it depends”.

  • If you’re new to these concepts, I would recommend getting a free trial of Sublime — it continues to be a very lightweight app and does not consume too many system resources. You can customize Sublime’s key bindings (fancy word for hotkeys) and extend its built-in functionality with plugins.
  • If you’ve been using Sublime, Atom, or another editor — I’d recommend checking out VS Code as well. The team at Microsoft has really done an excellent job making it a powerful, yet easy-to-use text editor.

Personally, I use both editors — Sublime is lightning quick and opens in a fraction of a second allowing me to easily paste and manipulate text. But when I want to get some more serious work done, I use VS Code. It’s difficult to top the all-in-one package that VS Code provides — a vibrant plugin and extension ecosystem, powerful command palette, and hyper-customizable interface means you can really make it your own. Not to mention the fact that Microsoft is very incentivized to ensure that it’s a first-class experience for developer productivity.

Conclusion, And What’s Next?

In this first article, you will have learned the basics of the terminal, a few productivity hacks to get you started, and should have a better idea of what code editor to choose. In the next part, we’ll continue with the topics of version control, HTML and CSS, and an introduction to engineering principles.

Anything Amiss?

There’s a good chance that something in this post was obscure, obtuse, and/or obsolete and I’d love the opportunity to make it better! Please leave a comment below, DM me, or @mention me on Twitter so I can improve.

Smashing Editorial (mb, yk, il)

How to Make a WordPress Website: Ultimate Guide for Beginners and Advanced Users Alike

Many people wonder how to make a WordPress website. They’ve heard about WordPress, its incredible popularity, excellent features and designs, and now they want to join the pack and build a WordPress website of their own. So, where does one get started? Regardless of how advanced you might be with the platform, we have a tailor-made resource for you here. What follows is a choose-your-own-adventure guide on how to make a WordPress website.