#295: Projects and Serverless Functions

Show Description

Dee, Marie, and Chris talk about behind the scenes updates to dramatically improve CodePen Projects.

Time Jumps

  • 03:52 Fixing tragic bugs
  • 07:33 How did we upgrade Projects
  • 16:57 Sponsor: WooCommerce
  • 19:36 Bye Gulp

Sponsor: WooCommerce

WooCommerce is a WordPress plugin that brings eCommerce to your WordPress sites. It’s unique in its customizability and flexibility. You can use it to sell physical products, digital downloads, memberships, services, and tickets, plus offer customers lots of different ways to pay, including things like Apple Pay and Bitcoin powered by Stripe.

Show Links

CodePen Links

The post #295: Projects and Serverless Functions appeared first on CodePen Blog.

Why You Should NOT Build Your Data Pipeline on Top of Singer

Singer.io is an open-source CLI tool that makes it easy to pipe data from one tool to another. At Airbyte, we spent time determining if we could leverage Singer to programmatically send data from any of their supported data sources (taps) to any of their supported data destinations (targets).

For the sake of this article, let’s say we are trying to build a tool that can do the following:

A Quick How-To Guide: Security with Spring Boot and Vaadin Fusion

When you build a web application, you’re working with many moving parts and pieces. Your frontend app is running business logic, the backend server deals with API calls, and it’s your job to make sure they’re secure and in sync. 

This article will teach you how to utilize Okta, Spring Boot, and Vaadin Fusion to create a full-stack web application with authentication. Specifically, this will involve: 

Best linux distro for touch controls?

Hi
I'm looking for Linux with the best chance to work with touch controls straight out of the box.

I bought Z3735F/2048MB/32GB tablet that doesn't support touch on win 10 at all (it was a "Bing" edition tablet).

Maybe there is sth in linux world that is highly compatible with stuff like that?

What I have tried:

Android x86 - and it's nothing like the mobile expiriance

Building Server in Julia and Connecting to a Database

Introduction

With the growing popularity of the internet, building a web server has been an absolutely required skillset for any developer. However, there are popular frameworks in some languages available (like Node.js or Django) to build the backend. Still, Julia, being a relatively new language, also provides a framework for the same purpose. Julia is still under active development phase and has closer compiler performance to C than other languages.  Developers who have already implemented a machine learning or some data processing algorithm in Julia can now use the Julia Genie framework to expose APIs as well, which would help them use the same stack for the whole backend.

Installing Julia

If Julia is already installed in the system, typing $julia --version in the terminal should give version of Julia installed locally. Otherwise, official Julia documentation can be referred for installation. If installed properly, typing $julia in the terminal should start Julia in REPL mode.

Need your help in Making syntax Checker in C++ using stack

 QUESTION:You are required to write a program that performs syntax checking for a given computer program
  Hey Everyone i need your help badly can anyone please modify my code below

against the following rules:
The code always starts with begin keyword and ends with the end keyword
The conditional statements start with if keyword and ends with endif keyword
There may be zero, one or more elseif within ifendif block
There may be zero or one else within ifendif block
There are two kinds of loops: The for loop block ends with endfor, and while loop block
ends with endwhile.
The brackets must be balanced. The inner brackets must close before the outer brackets.
Following is example of balanced brackets:
/{ { ( ) } ( ) }/
Following is an example of imbalanced brackets (note the sequence of last two closing brackets):
/{ { ( ) } ( } )/
Your program must check that the given code is free of the following errors:
begin without end
end without begin
if without endif
elseif without if
else without if
endif without if
for without endfor
endfor without end
while without endwhile
endwhile without while
Imbalanced {} and () brackets
In case of an error (mismatched keyword or bracket) your program should print an error message,
properly showing the keyword which was mismatched, and the line of code where the mismatch is seen//

#include<iostream>
#include<cstring>
#include<stack>
#include<fstream>

using namespace std;

stack <string> s;

void stk(string m) 
{
    if ( m == "begin" || m == "if" || m == "for" || m == "while" || m == "{" || m == "(" ) 
    {
        s.push(m);
    }

    else if ( m == "elseif" && s.top() == "if" )
    {
        s.push(m);
    }

    else if ( m == "else" && s.top() == "if" )
    {
        s.push(m);
    }

    else if ( m == "endif" ) 
    {
        if ( s.top() != "if" )
        {
            cout << "[WARNING] 'endif' is not allowed withoud 'if'" << endl;
            return;
        }

        else if ( s.top() == "if" )
        {
            s.pop();
        }
    }

    else if ( m == "endfor" )
    {
        if ( s.top() != "for" )
        {
            cout << "[WARNING] 'endfor' is not allowed withoud 'for'" << endl;
            return;
        }

        else if ( s.top() == "for" )
        {
            s.pop();
        }
    }

    else if ( m == "endwhile" )
    {
        if ( s.top() != "while" )
        {
            cout << "[WARNING] 'endwhile' is not allowed without 'while'" << endl;
            return;
        }

        else if ( s.top() == "while" )
        {
            s.pop();
        }
    }

    else if ( m == "}" )
    {
        if ( s.top() != "{" )
        {
            cout << "[WARNING] '}' is not allowed withoud '{'" << endl;
            return;
        }

        else if ( s.top() == "{" )
        {
            s.pop();
        }
    }

    else if ( m == ")" )
    {
        if ( s.top() != "(" )
        {
            cout << "[WARNING] ')' is not allowed withoud '('" << endl;
            return;
        }

        else if ( s.top() == "(" )
        {
            s.pop();    
        }
    }

    else if ( m == "end" )
    {
        if ( s.top() != "begin" )
        {
            cout << "[WARNING] 'end' is not allowed withoud 'begin'";
            system("pause");
            return;
        }

        else if ( s.top() == "begin" )
        {
            s.pop();
        }
    }
}

void syntaxChecker() 
{
    if ( s.empty() == true || s.top() == "elseif" || s.top() == "else") 
    {
        cout << "No syntax error found";
    }

    else if (s.top() == "{" )
    {
        cout << "Expected '}' ";
    }

    else if (s.top() == "(" )
    {
        cout << "Expected ')' ";
    }

    else if (s.top() == "if" )
    {
        cout << "Expected 'endif' ";
    }

    else if (s.top() == "while" )
    {
        cout << "Expected 'endwhile' ";
    }

    else if (s.top() == "for" )
    {
        cout << "Expected 'endfor ";
    }
}

int main ()
{
    //string code;
    //readfile();
    string ch;

    fstream new_file; 
    new_file.open("ENTER FILE ADDRESS HERE",ios::in);  

    if(!new_file) 
    cout<<"No such file"; 
    else 
    { 
    cout<<"File opened successfully!\n\n";

    while (!new_file.eof()) 
    { 
    new_file >>ch; 
    cout << ch;   
    }

    new_file.close();    
    }

    do
    {
        stk(ch);
    }
    while(ch != "end");

    syntaxChecker();
    return 0;
}

I just need to enter a file(TXT) using file handling and then the program will chk whther the code given in file is balanced or not according to above certain conditions. Can anyone kindly enough can do this for me. That will be very helpful

npm ruin dev

In 2020, I rediscovered the enjoyment of building a website with plain ol’ HTML, CSS, and JavaScript — no transpilin’, no compilin’, no build tools other than my hands on the keyboard.

Seeing as my personal brand could be summed up “so late to the game that the stadium has been demolished,” I decided to start a podcast in 2020. It’s the podcast of my agency, Clearleft, and it has been given the soaringly imaginative title of The Clearleft Podcast. I’m really pleased with how the first season turned out. I’m also really pleased with the website I put together for it.

The website isn’t very big, though it will grow with time. I had a think about what the build process for the site should be and after literally seconds of debate, I settled on a build process of none. Zero. Nada.

This turned out to be enormously liberating. It felt very hands-on to write the actual HTML and CSS that will be delivered to end users, without any mediation. I felt like I was getting my hands into the soil of the site.

CSS has evolved so much in recent years—with features like calc()  and custom properties—that you don’t have to use preprocessors like Sass. And vanilla JavaScript is powerful, fully-featured, and works across browsers without any compiling.

Don’t get me wrong—I totally understand why complicated pipelines are necessary for complicated websites. If you’re part of a large team, you probably need to have processes in place so that everyone can contribute to the codebase in a consistent way. The more complex that codebase is, the more technology you need to help you automate your work and catch errors before they go live.

But that setup isn’t appropriate for every website. And all those tools and processes that are supposed to save time sometimes end up wasting time further down the road. Ever had to revisit a project after, say, six or twelve months? Maybe you just want to make one little change to the CSS. But you can’t because a dependency is broken. So you try to update it. But it relies on a different version of Node. Before you know it, you’re Bryan Cranston changing a light bulb. You should be tweaking one line of CSS but instead, you’re battling entropy.

Whenever I’m tackling a problem in front-end development, I like to apply the principle of least power: choose the least powerful language suitable for a given purpose. A classic example would be using a simple HTML button element instead of trying to recreate all the native functionality of a button using a div with lashings of ARIA and JavaScript. This year, I realized that this same principle applies to build tools too.

Instead of reaching for all-singing all-dancing toolchain by default, I’m going to start with a boring baseline. If and when that becomes too painful or unwieldy, then I’ll throw in a task manager. But every time I add a dependency, I’ll be limiting the lifespan of the project.

My new year’s resolution for 2021 will be to go on a diet. No more weighty node_modules folders; just crispy and delicious HTML, CSS, and JavaScript.


The post npm ruin dev appeared first on CSS-Tricks.

You can support CSS-Tricks by being an MVP Supporter.

How to Create a Favicon That Changes Automatically

I found this Free Favicon Maker the other day. It’s a nice tool to make a favicon (true to its name), but unlike other favicon generators, this one lets you create one from scratch starting with a character or an emoji. Naturally, I was curious to look at the code to see how it works and, while I did, it got me thinking in different directions. I was reminded of something I read that says it is possible to dynamically change the favicon of a website. That’s actually what some websites use as a sort of notification for users: change the favicon to a red dot or some other indicator that communicates something is happening or has changed on the page.

I started browsing the emojis via emojipedia.org for inspiration and that’s when it struck: why not show the time with a clock emoji (🕛) and other related favicons? The idea is to check the time every minute and set the favicon with the corresponding clock emoji indicating the current time.

We’re going to do exactly that in this article, and it will work with plain JavaScript. Since I often use Gatsby for static sites though, we will also show how to do it in React. From there, the ideas should be usable regardless of what you want to do with your favicon and how.

Here’s a function that take an emoji as a parameter and returns a valid data URL that can be used as an image (or favicon!) source:

// Thanks to https://formito.com/tools/favicon
const faviconHref = emoji =>
  `data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%22256%22 height=%22256%22 viewBox=%220 0 100 100%22><text x=%2250%%22 y=%2250%%22 dominant-baseline=%22central%22 text-anchor=%22middle%22 font-size=%2280%22>${emoji}</text></svg>`

And here’s a function that targets the favicon <link> in the <head> and changes it to that emoji:

const changeFavicon = emoji => {
  // Ensure we have access to the document, i.e. we are in the browser.
  if (typeof window === 'undefined') return

  const link =
    window.document.querySelector("link[rel*='icon']") ||
    window.document.createElement("link")
  link.type = "image/svg+xml"
  link.rel = "shortcut icon"
  link.href = faviconHref(emoji)

  window.document.getElementsByTagName("head")[0].appendChild(link)
}

(Shout out to this StackOverflow answer for that nice little trick on creating the link if it doesn’t exist.)

Feel free to give those a try! Open up the DevTools JavaScript console, copy and paste the two functions above, and call changeFavicon("💃"). You can do that right on this website and you’ll see the favicon change to that awesome dancing emoji.

Back to our clock/time project… If we want to show the emoji with the right emoji clock showing the correct time, we need to determine it from the current time. For example, if it’s 10:00 we want to show 🕙. If it’s 4.30 we want to show 🕟. There aren’t emojis for every single time, so we’ll show the best one we have. For example, between 9:45 to 10:14 we want to show the clock that shows 10:00; from 10:15 to 10:44 we want to show the clock that marks 10.30, etc.

We can do it with this function:

const currentEmoji = () => {
  // Add 15 minutes and round down to closest half hour
  const time = new Date(Date.now() + 15 * 60 * 1000)

  const hours = time.getHours() % 12
  const minutes = time.getMinutes() < 30 ? 0 : 30

  return {
    "0.0": "🕛",
    "0.30": "🕧",
    "1.0": "🕐",
    "1.30": "🕜",
    "2.0": "🕑",
    "2.30": "🕝",
    "3.0": "🕒",
    "3.30": "🕞",
    "4.0": "🕓",
    "4.30": "🕟",
    "5.0": "🕔",
    "5.30": "🕠",
    "6.0": "🕕",
    "6.30": "🕡",
    "7.0": "🕖",
    "7.30": "🕢",
    "8.0": "🕗",
    "8.30": "🕣",
    "9.0": "🕘",
    "9.30": "🕤",
    "10.0": "🕙",
    "10.30": "🕥",
    "11.0": "🕚",
    "11.30": "🕦",
  }[`${hours}.${minutes}`]
}

Now we just have to call changeFavicon(currentEmoji()) every minute or so. If we had to do it with plain JavaScript, a simple setInterval would make the trick:

// One minute
const delay = 60 * 1000

// Change the favicon when the page gets loaded...
const emoji = currentEmoji()
changeFavicon(emoji)

// ... and update it every minute
setInterval(() => {
  const emoji = currentEmoji()
  changeFavicon(emoji)
}, delay)

The React part

Since my blog is powered by Gatsby, I want to be able to use this code inside a React component, changing as little as possible. It is inherently imperative, as opposed to the declarative nature of React, and moreover has to be called every minute. How can we do that?

Enter Dan Abramov and his amazing blog post. Dan is a great writer who can explain complex things in a clear way, and I strongly suggest checking out this article, especially if you want a better understanding of React Hooks. You don’t necessarily need to understand everything in it — one of the strengths of hooks is that they can be used even without fully grasping the internal implementation. The important thing is to know how to use it. Here’s how that looks:

import { useEffect } from "react"
import useInterval from "./useInterval"

const delay = 60 * 1000

const useTimeFavicon = () => {
  // Change the favicon when the component gets mounted...
  useEffect(() => {
    const emoji = currentEmoji()
    changeFavicon(emoji)
  }, [])

  // ... and update it every minute
  useInterval(() => {
    const emoji = currentEmoji()
    changeFavicon(emoji)
  }, delay)
}

Finally, just call useTimeFavicon() in your root component, and you are good to go! Wanna see it work? Here’s a deployed CodePen Project where you can see it and here’s the project code itself.

Wrapping up

What we did here was cobble together three pieces of code together from three different sources to get the result we want. Ancient Romans would say Divide et Impera. (I’m Italian, so please indulge me a little bit of Latin!). That means “divide and conquer.” If you look at the task as a single entity, you may be a little anxious about it: “How can I show a favicon with the current time, always up to date, on my React website?” Getting all the details right is not trivial.

The good news is, you don’t always have to personally tackle all the details at the same moment: it is much more effective to divide the problem into sub-problems, and if any of these have already been solved by others, so much the better!

Sounds like web development, eh? There’s nothing wrong with using code written by others, as long as it’s done wisely. As they say, there is no need to reinvent the wheel and what we got here is a nice enhancement for any website — whether it’s displaying notifications, time updates, or whatever you can think of.


The post How to Create a Favicon That Changes Automatically appeared first on CSS-Tricks.

You can support CSS-Tricks by being an MVP Supporter.

22 Amazing Gifts For Designers – 2020 Edition

We have collected 22 fantastic Christmas gifts for all your creative web designer and graphic designer friends out there. While not exhaustive, these are some of the best gifts for designers available right now, just in time for your holiday shopping.

Ready? Let’s get started with our 2019 gift guide!

Rocketbook Smart Reusable Notebook

Rocketbook - Gifts For Designers - 1st Web Designer

The Rocketbook notebook provides a classic pen and paper experience, yet is built for the digital age. Although it feels like a traditional notebook, the Rocketbook is endlessly reusable and connected to all of your favorite designer’s relevant cloud services. When your designer friend writes using any pen from the Pilot Frixion line, their writing sticks to Rocketbook pages like regular paper. But add a drop of water… and the notebook erases like magic. Designed for those who want an endlessly reusable notebook to last for years, if not a lifetime, the Rocketbook has pages made with synthetic materials that provide an extremely smooth writing experience. Blast handwritten notes to popular cloud services like Google Drive, Dropbox, Evernote, box, OneNote, Slack, iCloud, email and more using the free Rocketbook application for iOS and Android.

CHECK PRICE ON AMAZON

reMarkable – the Paper Tablet – 10.3″ Digital Notepad and E-reader

reMarkable - Gifts For Designers - 1st Web Designer

reMarkable is the first digital device that gives your favorite designer a pen-to-paper note-taking experience. reMarkable converts theirr hand-written notes to typed text, making them easy to refine, organize and share. With no backlight or glare, reMarkable offers a paper-like reading experience they won’t find on any LCD display. Annotate on their documents just like theywould on paper. Includes digital tools like undo, erase, move, and many more.

CHECK PRICE ON AMAZON

Wacom Intuos Pro Digital Graphic Drawing Tablet

Wacom Intuous Pro Drawing Tablet - Gifts For Designers - 1st Web Designer

The professional standard in creative pen tablets Wacom Intuos Pro sets a new standard for professional graphics tablets. The new Wacom Pro Pen 2 features impressive pressure sensitivity, tilt response and virtually lag free tracking. Your favorite designer will get natural creative control while they illustrate, edit or design digitally with Intuos Pro.

CHECK PRICE ON AMAZON

Wacom INTUOS4/CINTIQ21 Grip Pen

Wacom Intuous4 Grip Pen - Gifts For Designers - 1st Web Designer

Sketch and write on an Intuos tablet or Cintiq display comfortably with this Wacom Grip Pen stylus. It has a contoured body and ergonomic weight to help prevent wrist fatigue during extended use, and its tilt sensitivity provides a natural feel for accurate drawing. Maximize productivity with the programmable side switches and pressure-sensitive eraser.

CHECK PRICE ON AMAZON

Moleskine Pen+ Smart Writing Set Pen & Dotted Smart Notebook

Moleskine Smart Writing Set - Gifts For Designers - 1st Web Designer

Your favorite designer will watch their ideas travel off the page and evolve on screen. Part of the Smart Writing System, the Smart Writing Set is an instant-access kit containing a dotted layout Paper Tablet, Pen+ smart pen and Moleskine Notes app: everything needed to bring all the advantages of digital creativity to freehand notes and sketches.

CHECK PRICE ON AMAZON

Adobe Stock – Try Risk Free For 30 Days!

Adobe Stock Subscription - Gifts For Designers - 1st Web Designer

Give the gift that keeps on giving, starting with a risk-free 30-day trial! Find the perfect high-res, royalty-free, stock image to enhance your favorite designer’s next creative project. Preview watermarked images inside designs first. Then license, access and manage them directly within Photoshop, InDesign, Illustrator, and other Adobe desktop apps.

GET THE FREE TRIAL

Vaydeer USB 3.0 Wireless Charging Aluminum Monitor Stand Riser

Vaydeer Monitor Stand - Gifts For Designers - 1st Web Designer

Your favorite designer can create additional space on their desktop while adding USB 3.0 ports, wireless charging for your devices, and keyboard and mouse storage, all in a sleek and affordable package!

CHECK PRICE ON AMAZON

Sinstar 8 in 1 Aluminum Multi Port Adapter Type C Combo Hub

Sinstar Multi Port Adapter - Gifts For Designers - 1st Web Designer

This handy little device features three USB 3.0 ports, SD and Micro SD card slots, Ethernet, charging port, and 4K HDMI video output. The compact and easy-to-use design makes it simple to take the Type-C USB Hub with you anywhere you go. Your favorite designer won’t be far from the convenience of accessing their favorite USB devices.

CHECK PRICE ON AMAZON

Rhodia Webnotebook

Rhodia Webnotebook - Gifts For Designers - 1st Web Designer

The Rhodia Webnotebook has a leatherette cover with a glued spine. The Webnotebook is A5 in size and has 96 sheets with an elastic closure to keep the book closed. The Webnotebook has a coloured ribbon and expanding pocket.

CHECK PRICE ON AMAZON

Lemome A5 Hardcover Dot Grid Notebook with Pen Loop

Lemome Notebook - Gifts For Designers - 1st Web Designer

A popular choice for everyday use, designers can use it to capture ideas, drafts, and drawings. Never lose your pen again, since the strap holds the pen and fits securely onto the side of the notebook. You’ll never have to rummage around again for something to write. Thick premium paper means it’s perfect to write and draw on.

CHECK PRICE ON AMAZON

Field Notes Signature Series Notebook 2-Pack

Field Notes - Gifts For Designers - 1st Web Designer

What designer doesn’t want Field Notes? Field Notes Signature Series Notebook 2-Packs are available in two versions: Cream covered books with plain ruled paper inside, or gray covered sketch books with plain paper inside. The covers are gently debossed with just a tint of ink. Inside you’ll find 72 pages of very high quality white Strathmore Premium Wove paper. The ruled pack has a fine application of gray lines on the pages.

CHECK PRICE ON AMAZON

Pantone: 10 Notebooks

Pantone Notebooks - Gifts For Designers - 1st Web Designer

Ten petite journals feature Pantone’s iconic color chip design in ten sumptuous shades. Grid-dot interior pages and a sturdy slipcase make these notebooks eminently practical and chic for on-the-go note-taking when used solo, and an eye-catching object for desktop display when grouped together.

CHECK PRICE ON AMAZON

Envato Elements

Envato Elements - Gifts For Designers - 1st Web Designer

Another gift that keeps on giving! One affordable subscription provides access to 1,800,000+ assets, including graphics, video, audio, presentation templates, photos, fonts, WordPress themes and plugins, and so much more. Sign up the designer you care about and they will forever be grateful!

SIGN UP NOW

Bellroy Classic Pouch

Bellroy Classic Pouch - Gifts For Designers - 1st Web Designer

The Classic Pouch is the humble sidekick that can make a big difference to your favorite designer’s day. They’ll never again leave behind their pen, charger, gum or lip balm, just because they can’t keep track of their essentials. And they won’t rummage around their bag looking for them, either. The Classic Pouch is the place to keep them in one place (and in the right place). An everyday pouch for keeping daily essentials in one spot — cables, cosmetics, toiletries, tools and more!

CHECK PRICE ON AMAZON

Vintage Typography Notecards

Vintage Typography Cards - Gifts For Designers - 1st Web Designer

Discovered in vintage typographic manuals, the specimens featured on these elegant cards range from one-of-a-kind hand-drawn samples to classic favorites used in the early decades of the twentieth century. The back of each card features a minihistory of the typeface’s origins and use.

CHECK PRICE ON AMAZON

Fifty Type Specimens: From the Collection of Tobias Frere-Jones

Fifty Type Specimens - Gifts For Designers - 1st Web Designer

Fifty Type Specimens is a collection of postcards with stunning images of typography, for inspiration, correspondence, or display. Cards feature classic letterforms, pages from specimen books, and crops of gorgeous letters presented in a box with the feel of an old specimen book. Historic typefaces, selected by renowned designer Tobias Frere-Jones, are organized into four geographic categories by thumb tabs: Germany, France, United States, and the United Kingdom.

CHECK PRICE ON AMAZON

UI PROGO Stainless Steel Stencils

UI Progo Stencils - Gifts For Designers - 1st Web Designer

Premium quality materials with innovative design to create the ultimate tool for stenciling. With icons that are large enough to actually use, these stencils are a must-have for all designers, artists, students, and journaling enthusiasts. Complete with the latest social media icons, these stencils give you what you need to create the perfect design you have in mind. Made to be portable, you can take them with you to work, the office, or class.

CHECK PRICE ON AMAZON

2020 Stendig Wall, Office, and Home Calendar

Stendig Wall calendar - Gifts For Designers - 1st Web Designer

This calendar is special. It is much more than just a wall calendar: It is a masterpiece of art. This is the original, genuine and authentic work of the great Massimo Vignelli, designed in 1966. This modern calendar has withstood the test of time. Year after year designers, architects, doctors, lawyers, and many others purchase this calendar to let guests in their home or office know one thing: “I have style”.

CHECK PRICE ON AMAZON

Creative Workshop: 80 Challenges to Sharpen Your Design Skills

Creative Workshop - Gifts For Designers - 1st Web Designer

80 creative challenges that will help designers achieve a breadth of stronger design solutions, in various media, within any set time period. Exercises range from creating a typeface in an hour to designing a paper robot in an afternoon to designing web pages and other interactive experiences. Each exercise includes compelling visual solutions from other designers and background stories to help your favorite designer increase their capacity to innovate.

CHECK PRICE ON AMAZON

A Few Minutes of Design: 52 Activities to Spark Your Creativity

A Few Minutes of Design - Gifts For Designers - 1st Web Designer

This colorful, handy card deck presents fifty-two exercises and activities to jump-start your favorite designer’s creative juices, free them from creative block, start a new project, or finish an existing one. Each exercise offers insight into the innumerable small decisions involved in design: How to establish a pattern, continue a series, how to say it without words, how to name a project, what fits, and what doesn’t? These cards benefit established practicing designers or creatives in any field with activities that are sometimes playful, sometimes challenging, but always enlightening. Each activity is estimated to take 15 minutes.

CHECK PRICE ON AMAZON

Meggs’ History of Graphic Design

Meggs History of Graphic Design - Gifts For Designers - 1st Web Designer

Meggs’ History of Graphic Design is the industry’s unparalleled, award-winning reference. With over 1,400 high-quality images throughout, this visually stunning text will guide your favorite designer through a saga of artistic innovators, breakthrough technologies, and groundbreaking developments that define the graphic design field. The initial publication of this book was heralded as a publishing landmark, and author Philip B. Meggs is credited with significantly shaping the academic field of graphic design.

CHECK PRICE ON AMAZON

Pantone Postcard Box: 100 Postcards

Pantone Postcards - Gifts For Designers - 1st Web Designer

With a palette drawn from the systems of Pantone, each postcard in this set of 100 offers a different bold hue to brighten up your favorite designer’s mail.

CHECK PRICE ON AMAZON

GCC And Wx Error

Hi,
Sorry, If this question is not appropriate to this section. Admin, kindly move this qeustion.
I recently changed my tdm-gcc-5.1.0-3 to tdm-gcc-9.2.0, 32 bit. Before changing the gcc my software was working fine, compiled without any problem. But today I installed gcc 9.2.0 and I can't compile my sofware anymore. I am getting an error -

C:/TDM-GCC-32/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:/TDM-GCC-32/bin/../lib/gcc/mingw32/9.2.0\libstdc++.a(bad_alloc.o):bad_alloc.cc:(.text+0x10): multiple definition of `std::bad_alloc::~bad_alloc()'; C:/TDM-GCC-32/bin/../lib/gcc/mingw32/9.2.0/libstdc++.dll.a(d005218.o):(.text+0x0): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:/TDM-GCC-32/bin/../lib/gcc/mingw32/9.2.0\libstdc++.a(eh_exception.o):eh_exception.cc:(.text+0x0): multiple definition of `std::exception::~exception()'; C:/TDM-GCC-32/bin/../lib/gcc/mingw32/9.2.0/libstdc++.dll.a(d005266.o):(.text+0x0): first defined here
collect2.exe: error: ld returned 1 exit status

Is this related to wxWidgets or GCC? I just recompiled wxWidgets with TDM-GCC-9.

Thank you for giving me your time.
Happy Christmas.

Ethical Considerations In UX Research: The Need For Training And Review

We rely on UX research, collecting data from our users, to inform our UX process. As the Nielsen Norman Group aptly states “UX without user research is not UX”. That doesn’t mean that all UX teams conduct research the same way, or have specific roles dedicated to UX research. This means everyone on a UX team has the potential to play a role in collecting and analyzing data. For example, designers might need to conduct their own usability testing. PMs and developers might assist with analyzing interview data to identify themes.

We benefit from greater involvement of our team members and other organizational stakeholders in the research process. They increase empathy and understanding of what users truly experience and need out of a product when they experience research first hand. However, as we push to democratize UX research in organizations, we need to keep in mind potential perils associated with poorly planned and conducted research. I don’t mean this only to the untrained team members we advocate taking part in research, I’m also talking about the need for those with UX researcher in their title to have a level of understanding of how to identify and avoid research that might take advantage of vulnerable populations, research that causes harm or is misleading, and poorly done research with no potential use for the outcomes.

We can have a false sense UX research is purely benign. After all, aren’t we collecting data to fight on behalf of our users and their experience? While usability testing seems harmless on the surface and interviews are only words, we need to be intentional in knowing why we are conducting research, the potential negative effects our research might have on participants, and what we can do to mitigate the potential for conducting unethical research.

We are asking a lot of our team to include research along with their many other duties. That’s why it is important to best prepare everyone on the team for the potential to encounter unexpected situations that might cross over ethical lines. Researchers by training and trade have often been required to take courses and pass exams to reflect an awareness of potential ethical issues in research. We can best prepare our colleagues to avoid these situations through similar training and standards.

Academia identified the need decades ago for researchers to have training and submit their research protocols to an Institutional Review Board (IRB). This didn’t happen accidentally — it was after decades or centuries of examples of improperly carried-out research. Medical and psychological research across the globe has a history of unethical research which led to withholding potential treatment or negative outcomes on the mental health of participants. UX research, particularly in health fields, stands to recreate some of these harmful scenarios, even if inadvertently.

What Are The Problems And Potentials With UX Research Done Poorly

You might wonder how your research could potentially cause harm or be unethical. Perhaps you are just conducting interviews in exploration of a concept you have for a new banking application. Or you are testing updated designs for a new workflow you’ve created allowing people to submit forms to your organization; things that seem harmless on the surface.

Defining Ethics

Dictionary.com provides one definition of ethics as “the rules of conduct recognized in respect to a particular class of human actions or a particular group, culture, etc.” I am using the word ethics as it applies to a class of human actions (UX Research) and specifically, I am defining the rules of conduct we need to consider in UX research as:

  • UX Research should be respectful and compassionate to study participants.
  • UX Research should respect our stakeholders and colleagues, and the resources and trust they give our work.
  • UX Research should respect the norms associated with social science and research using human subjects, including all studies using methods that have defined protocols providing informed consent.

Any research involving human participants has the potential to cross over ethical boundaries if done poorly. I’ve identified six common issues we need to watch out for regardless of the topic or focus of our research:

I’ll cover each of these issues in detail and then offer some potential solutions UX practitioners should advocate across all organizations.

Vulnerable Populations

Researchers studying human subjects have a higher bar to pass in justifying research with populations often labeled vulnerable. You can consider any population that cannot make their own decisions vulnerable (and likely off-limits) if you are not a highly trained and experienced researcher.

The Children’s Hospital of Philadelphia Institutional Review Board provides this definition of vulnerable populations: “those who are ill (dependent on clinician for care), ethnic or racial minorities, non-English speakers, children, the economically disadvantaged, adults with diminished capacity.”

Additionally, they offer the following “Special justification is required for inviting vulnerable individuals to serve as research subjects and, if they are selected, the means of protecting their rights and welfare must be strictly applied.” While this guidance is being directed towards potential medical studies, there is no reason UX research should hold itself to lower standards when it comes to working with potentially vulnerable populations (in English speaking countries).

You should not be recruiting children, those experiencing illness, the homeless, or prisoners without seeking guidance and having appropriate conditions met. I’ll explore this more in the solutions section.

Misleading Users

Researchers in psychological fields are familiar with the concept of deception. These researchers need to justify any attempt to deceive or distract research participants from the true purpose of the research or that they are participating in research that is potentially meant to examine. Think of the often referenced Milgram’s shock experiment in which participants were instructed to administer what they thought were real electric shocks to another human. The person receiving the shocks wasn’t, in real life, being shocked, however, this was unknown to the participants administering the shock until after they completed the experiment. Participants experienced visibly stress during the experiment, reflecting the likelihood the situation was causing them mental duress as well. Milgram felt the need to deceive research participants was essential to collecting valid data. He also didn’t clear his protocol with any ethical review board. Milgram’s experiment would hopefully encounter much more rigorous review, and be required to adopt projections for participants, had it occurred today.

While we are likely not attempting to have our users shock another human, or cause any obvious harm to another using our design, we do need to give some thought into how we are conducting our UX research. Critical questions we need to answer and be comfortable we are not being deceptive include:

  • What role am I asking the user to play in this study and why?
  • Am I able to adequately explain the purpose of the research in a way that justifies the need?
  • What expectations am I creating in the participant through their participation in the research?
  • What, if any, mental harm or stress could come from someone participating in this study?
    • If there is the potential for harm or stress, how will I deal with this?
  • How honest and open will I be with participants?
    • Will I share the timeline for creating the product? If no, why?
    • Will I share the company that is sponsoring the research? If no, why?
    • Am I creating false expectations exposing design concepts or ideas that might never see the light of day?
  • Have I accounted for diversity and how diverse populations might respond to the research?
  • Is there a logical connection between the research participants and the topic of the research?
  • Will I compensate participants upon completion of the study?
    • How might this compensation influence both participation and responses during the research.
  • How will I respond to a participants’ request to end the research? There is a correct answer to this one — you will stop immediately.

You need to answer these questions and feel comfortable you are taking due diligence in reducing/removing deception or misleading information in your research. I recommend answering these questions with your full product team and documenting the responses prior to undertaking your study.

Inadvertent Sensitive Topics/Extreme Experiences

Those engaged in research need to maintain an awareness that even seemingly benign topics can take a quick turn into sensitive areas, risking confrontation or emotional encounters during an interview. I could share dozens or perhaps hundreds of experiences where I walked into a conversation with a research participant who already had an axe to grind with the company I was researching on behalf of.

You need to be prepared for defusing these situations. It is impossible to define all the potential sensitive topics that exist, what’s more important is for a trained researcher to understand how to respond when a situation becomes intense. For example, you are researching on behalf of an electric power generation company and you speak with someone who states they just had their electricity shut off and they were glad to finally get ahold of someone they could ask to resolve an issue with their billing statements. How will you respond in a way that will make things better, not worse, knowing it is outside of your power to do anything about this participant’s electricity bill?

Other topics are naturally sensitive. For example, if you are conducting research for a digital voters education platform, you can expect people will come to your interview prepared to share their political beliefs. How will you respond?

You need to be prepared for how you will deal with emotional responses. This includes letting people have emotional outbursts and giving them time to recover. This includes you (the researcher) needing to reflect proper empathy. I’m not suggesting you need to expose yourself to situations you aren’t comfortable with, I’m stating the opposite — don’t conduct the research if you cannot handle situations involving human emotions and unpredictable responses.

We have an opportunity to involve our colleagues with less experienced research in observing us when we do conduct research that might broach sensitive topics. We can model response (or non-response) to emotional or provocative reactions from research participants. We can also role-play with our colleagues prior to engaging in research to practice how we might respond to unexpected reactions.

False Expectations

Research participants often have expectations about the purpose of the research, who will be conducting the research, and how their information might be used. We need to be prepared to address inaccurate expectations and redirect the conversation in a sensitive way that will still allow us to have a rapport with the participant and gain valuable insights. These scenarios are similar to inadvertent sensitive topics in that it is difficult to account for all of the potential scenarios you might encounter. One example of a scenario I’ve frequently encountered is a participant shows up expecting to discuss a specific experience they’ve recently had with my client, while I’m looking to cover a broader topic, such as their overall attitudes and behaviors towards products in an entire industry or set of services.

You might not be the one directly recruiting people for your study. Your ability to account for participant expectations prior to research is reduced if you don’t have direct access to recruiting the participants. You will need to provide the person/organization recruiting your participants' detailed guidelines for who you are trying to reach, and the importance of getting a diverse, non-convenience sample. You need to provide them with a script that lays out the details of what participants will need to know prior to agreeing to engage in the study. I often draft emails explaining the purpose and details of a study for clients to use when communicating with potential research participants on my behalf.

You are likely to encounter bumps even when you set the expectations clearly to research participants or those recruiting on your behalf. I often find, no matter how clear I am in my recruiting instructions, people show up to one on one interviews expecting it will be a group interview. You can account for and reset expectations in the opening of your study’s protocol. I inform participants of the purpose of the study and give them a general outline of what we will review, along with the format. For example:

Today I’d like to spend the next 30 minutes speaking with you about your experience with XYZ digital product. I want to learn from you, so I’ll ask some specific questions about your experience and spend most of the time listening. I’d also like your feedback on some updated designs for XYZ digital product. After my initial questions, I’ll start sharing my screen and control of my mouse with you so you can show me how you’d use this design. Does that align with what you thought we’d be doing today? [address any concerns or comments]. Do you have any questions for me based on what I’ve shared so far? [address any concerns or questions]

No Idea How To Use The Findings/Misinterpreted Findings

UX practitioners engaged in research should understand the overall questions they are trying to answer (purpose of the research), how they will answer this (methods), the type or types of data the methods they will use will generate, and how to convert this data into findings and recommendations (analysis). This potential issue reflects the rule of conduct I noted above that UX Research should respect our stakeholders and colleagues, and the resources and trust they give to our work. We are wasting everyone’s time if we are simply asking questions because we can, or because we think the insights might be interesting. We respect our research participants and our colleagues when we create studies that are purposeful and focused.

You need to answer the following questions to ensure that you're able to collect the correct data, and interpret your findings appropriately:

  • What are the question(s) your study is trying to answer?
    • If relevant, what hypotheses do you have about the answer to these questions?
  • What specific questions will you ask on your interview, survey, usability test, etc?
    • How does each of these questions tie back to answering the overall questions and hypotheses?
  • What type(s) of data will your study generate?
  • How will you analyze this data?
  • How will your findings and recommendations be used?

As a researcher, I want research to flourish and grow in all organizations. However, I don’t want to see organizations conducting research without a purpose. We already fight survey fatigue, screen fatigue, and millions of other opportunities vying for our potential research participants' time. If you cannot clearly state why you are conducting research, and how your organization will use the research, you should reconsider conducting the research.

Information Misuse

We are often in a position of asking research participants for their personal information. How will you use the information you collect from individuals? This includes what data you might collect through forms or on-screen fields if you are having users test a prototype of a design that includes collecting personal information. We are all familiar with End User License Agreements (EULA) that instruct us on our rights and the right of the company whose software we are using on how they will use any data we provide through our use of the software. Researchers should similarly make participants aware of any agreement they are entering into with providing you their data.

Are you having users enter potential sensitive information? For example, I’ve had users enter personal information into systems in order to generate accurate, real-life results for them to give feedback on. We made participants aware this would be a requirement for participating in the research, and gained their consent prior to scheduling the sessions. You shouldn’t present participants with a screen requesting their social security number with the expectation they will use their real information if you haven’t previously made them aware they should have an expectation of providing personal information.

We need to inform users prior to their participation on whether their information will be kept or destroyed. Researchers must consider how information will be kept and stored for future access. Academic researchers are required to submit a data storage plan when they submit a study proposal. This includes addressing how data will be stored and protected, who will have access to the data, the length of time the data will be stored, and what is the potential for others to gain access to this information.

We often ask our clients or team members to listen in or observe our research. You are obligated to make participants aware of the presence of observers. If you have a situation where there is an observer with an imbalance of power (for example a supervisor listening in on calls with their staff) you need to make your participants aware of this — including if the observation will take place post-participation through the sharing of a recording of the session. We need to avoid situations that might cause repercussions to our participants based on their responses or perceptions of their responses by others in power.

There is no one size fits all solution for data storage and access. It might seem logical to destroy data once a study is complete. However, what would you do if someone challenges your findings a year or two from now and you have no way to show your work? On the other hand, the longer you store data the more risk you take on. Who should have access to the data isn’t always clear, either. If a client or internal authority figure is requesting access to raw data, we lose our ability to accurately say how data will be used in the future. Researchers need a plan for how we will address these issues.

Potential Solutions And Ways To Avoid Ethical Issues

I’ve discussed six potential ethical pitfalls when it comes to conducting UX research. I’ve noted these pitfalls are more likely to occur if untrained researchers are designing and conducting studies. You might not be surprised that my solutions focus on proper training and governance of research activities.

I’ll cover the following potential solutions in this section:

  • Participant experience focused protocols with informed consent script (immediate).
  • Peer review of research protocols (immediate).
  • Ethical research and sensitivity training (near term — as soon as reasonable).
  • Data analysis training (near term — as soon as reasonable).
  • Mentoring/Modeling (near term to midterm for formalized mentoring programs).
  • IRB review (long-term/aspirational).

I’ve organized these solutions in terms of how soon you can begin to implement them from immediate to longer-term. Participant experience focused protocols and peer review require little or no cost and can be done immediately. Training-based solutions require some cost and need to be scheduled in advance, so I’ve listed them as shorter term to allow time, but still should be considered urgent. IRB review is something as a field we should promote and reward, but there are costs and time commitments that would alter plans, and therefore I consider this more aspiration for widespread adoption.

Participant Experience Focused Protocols With Informed Consent Script

When you engage in research, you need to create a protocol, documented procedures including the purpose of the research and questions you will ask, prior to engaging in research. Your protocol should reflect thoughtfulness and be thorough. The guidance I've received in the past is that your protocol should reflect enough detail that if you needed to call out sick for a day you are meant to collect data, another researcher would have the ability to successfully understand the study and administer the data collection.

You need to ask participants to provide informed consent at the beginning of the research. You need to inform participants they have the ability to withdraw participation at any time, and how their data will be used. If you intend to collect audio or video recording data from the session you need to gain permission to record. You also need to provide contact information for the participant in case they have a need to follow up post-participation.

The University of Michigan’s Office of Research Ethics & Compliance provides detailed guidelines for their researchers, which includes advice to write your consent targeting an 8th-grade reading level, and to have other people read through the consent to make sure it’s easy to understand.

The key to making informed consent worth anything is you, the researcher, understand it and what it obligates you to do and then you follow through on those obligations. You are telling the research participant they have the right to stop the research, you need to respect that should it happen. You are promising to safeguard their data. You are entrusted to use their data as you’ve told them and not for other means without seeking additional permission.

Peer Review Of Research Protocols

UX practitioners are a community of peers. We are obligated to support our peers and this includes offering to review protocols and research proposals for potential ethical pitfalls. You can formalize peer review as a part of your process if you have a large team of UX colleagues. Even better, have colleagues from other teams or departments review your protocols to flag potential issues.

Informally, we should be comfortable asking our fellow colleagues outside of our organization to review our protocols. We should consider peer review sessions or opportunities as part of our gatherings or conferences. We all stand to grow and improve when we share our perspectives and experiences. We also provide a good example of being vulnerable when we allow other researchers to review our work.

Ethical Training And Sensitivity Training

Anyone collecting data from human subjects needs to complete training that covers at least the potential ethics-related topics I’ve noted in this article. I don’t advocate any specific vendor for training. You can do your own research to find a quality organization providing training on social science research with human subjects. We should require researchers to take ethics-related training before engaging in research and then have continuous refresher courses.

Those who engage in ongoing research need continuous training and refreshers on how to deal with sensitive issues. Today's benign issues are tomorrow’s sensitive issues as we grow as a society and in our understanding of appropriate research techniques. Additionally, you should understand the unique characteristics or cultures of the populations you are working with. This is critical to both avoid being insensitive, but to also understand the sample providing the data you are collecting. Sensitivity training should also touch on topics of unconscious bias and attempting to reduce bias through effective protocols for both data collection and analysis.

Data Analysis Training

UX researchers and team members potentially assisting in data analysis need training in effective data analysis. How can we expect people to make sense of the data collected if they don’t have an understanding of how to use the data? We need to require our research teams to continue to train formally and informally with each other. There is no substitute for experience when it comes to data analysis, which is why we should all participate in data analysis as frequently as possible, and with supervision from trained researchers whenever possible.

Mentoring/Modeling Good Research

I noted in the brief background section that we need to best prepare our team members for engaging in ethical research. Those of us with more experience conducting research have a responsibility for modeling good research practice to our less experienced colleagues. You can operationalize this in many ways, through formalized mentorship relationships, or through informally having colleagues observe sessions and participate in supervised protocol design and data analysis.

We should be willing to take on a role to educate others and serve as examples for others on conducting ethical research. Specific to two of the issues I’ve raised, this includes:

  1. Sensitive Topics
    We have an opportunity to involve our colleagues with less experienced research in observing us when we do conduct research that might broach sensitive topics. We can model response (or non-response) to emotional or provocative reactions from research participants. We can also role-play with our colleagues prior to engaging in research to practice how we might respond to unexpected reactions.
  2. Misinterpret Findings
    We can involve our less experienced colleagues in the upfront discussion on what questions we are asking and why. We can show how we are tying the questions to our hypotheses in the beginning, and discuss what type of data we expect to collect and how we will analyze this data. We can involve our colleagues in sense-making sessions (some folks lovingly refer to these as data jam sessions) where we analyze our data and interpret our findings. This helps model how research goes from the messy stage of collected data to the more refined and presentable stage of findings and recommendations.

We have another powerful research method our colleagues can use to help ensure ethical high-quality research: observation. Having colleagues observe your process and take notes is valuable to both you and them. You can review their notes together and point out what you were thinking at specific times during a session and why you reacted the way you did. You can also use their observations as a lesson for yourself and reflect on your own performance.

IRB Review

Institutional Review Boards exist for a reason. We should use them. I saved this idea for last because I think it is the most difficult to realize. I acknowledge using an IRB would cost money and add time to the process of engaging in research. However, I’d argue that any research conducted under the authority of an IRB would align with what we could consider the gold standard for ethical research.

I wouldn’t realistically expect UX teams to incorporate IRB review as part of their process for running usability testing with six users for your online banking app. I would expect the use of an IRB for the following situations:

  • You want to publish your research as academically valid.
  • You intend to work with vulnerable populations, including children.
  • You have aspects of mental or physical health to your research (e.g., you are testing a device that includes a heart rate monitor and you intend to ask participants to engage in a physical activity).

Putting It In Place

As we push to increase awareness and participation in research-related activities, we need to be mindful of potential ethical pitfalls in allowing inexperienced team members to collect and analyze data. I’m not the authority on ethics, and most likely neither are you. That’s why we need to take steps to safeguard our research from venturing into unethical territory. We stand to damage the reputation of UX and UX research if we move forward with conducting potentially unethical research.

I’ve presented six potential areas ethical issues might arise, as well as some potential solutions. Moving forward, you can start with the easiest and most accessible solution of running your protocols by other UX practitioners for review or requiring your UX team members to do this. Additionally, you should codify the language that needs to be included in your informed consent and ensure it covers the minimum requirements to make participants aware of their rights and how their data will be used and stored.

Pitfall Solutions Comments
Vulnerable populations Ethical training and sensitivity training,Peer Review of Research Protocols,Mentoring/Modeling, IRB review, Participant experience focused protocols with informed consent script IRB is the ultimate authority on vulnerable populations and protocols for studies that might include vulnerable populations. Guidance is to avoid vulnerable populations without IRB approval/oversight
Misleading Users/Deception Ethical training and sensitivity training, Peer Review of Research Protocols,Mentoring/Modeling, IRB review, Participant experience focused protocols with informed consent script Solutions focus on avoiding misleading users through education, effective protocol, and review of protocol. IRB approval/oversight is recommended if you intend to intentionally mislead users as part of a study
Inadvertent sensitive topics/extreme experiences Ethical training and sensitivity training, Peer Review of Research Protocols,Mentoring/Modeling, Participant experience focused protocols with informed consent script Solutions focus on gaining education, experience and comfort in handling unexpected issues as they arise. Effective protocols include carefully worded questions and prompts for potential responses if they arise.
False expectations Peer Review of Research Protocols,Mentoring/Modeling, Participant experience focused protocols with informed consent script Solutions focus on clarifying the purpose of the research in the protocol and all communication, while gaining experience and comfort in handling participant concerns and expectations, and responding to unexpected situations as they arise
No idea how to use/interpret the findings Data Analysis Training, Mentoring/Modeling Training and experience are key for effective data interpretation. Effective protocols will tie questions back to hypotheses which will assist in data analysis.
Information misuse Ethical training and sensitivity training, Peer Review of Research Protocols, Mentoring/Modeling, IRB Protocols need to account for how data will be used and kept secure, peer review and IRB are outside sources we can use to screen our protocols for ethical data use and storage

We should push our peers toward more formal efforts to review any protocols intended for use with vulnerable or protected populations. We should explore and demand a budget for training and refresher courses for both experienced and new UX practitioners. We should also explore a standard of requiring IRB approval for any research findings researchers share in a more public forum such as publishing in journal articles or presenting findings at conferences if these findings are intended to be generalizable and considered gathered under valid research conditions.