use

How we use DDEV, Vite and Tailwind with Craft CMS

In 2022 we changed our dev tooling for new Craft CMS projects. Goodbye complex esoteric Webpack configuration, hello Vite. Goodbye complex esoteric Docker Compose configuration, hello DDEV. This small change in tooling has completely transformed our development experience. We start work faster and avoid wasting billable time debugging Webpack and Docker.

From Webpack to Vite #

Webpack has been the defacto way of bundling JavaScript and front end assets. It’s a powerful tool… but with that great power comes great responsibility complexity.

Vite bills itself as the “next generation” of frontend tooling. Vite is much faster at bundling. But more importantly… its default configurations work great for most website projects.

Before (Webpack) #

Well over 300 lines of configuration spanning three files. Good luck making changes!

After (Vite) #

A crisp 30 - 50 lines of code. Want to switch to TypeScript? Need to drop in a popular front-end framework? Easy! All it takes is adding a plugin and 2-3 lines of config.

Deleting old code has never felt this good!

From Docker to DDEV #

Docker is another development staple. It isolates server infrastructure into virtual “containers.” This helps avoid issues that arise from each developer having a slightly different setup. However, Docker can have a learning curve. Config changes, PHP upgrades and unexpected issues often eat up precious project time.

Enter DDEV! DDEV describes itself as “Container superpowers with zero required Docker skills: environments in minutes, multiple concurrent projects, and less time to deployment.” We’ve found that statement to be 100% true.

Before (Docker) #

Every Craft project has a different Docker config. Bugs and upgrades required deep Docker experience. Last (but not least), it was difficult to run several projects at one time (ports often conflict).

After (DDEV) #

Performance is consistently better than our hand-rolled setup thanks to Mutagen and faster DB import/exports. Simultaneous projects run out of the box. DDEV provides (and maintains) a growing list of helpful shortcuts and DX features.

Getting started #

Ready to make the switch? Here’s how to set up DDEV, Vite and Tailwind on your own Craft project.

Show me the config files already! #

If you would rather see full config files instead of following step by step, check out our Craft Site Starter on GitHub.

DDEV #

Let’s set up a fresh DDEV project and start customizing.

  1. Make sure you have DDEV installed on your computer.
  2. If you’re a PHPStorm user, install the exceedingly helpful DDEV plugin. VS Code users have a similar plugin too!
  3. Follow Craft’s guide for creating a new project (they love DDEV too).

Now you have a fresh .ddev/config.yaml just waiting to be customized.

Node Version #

Open your DDEV config and make sure your Node JS version matches Vite’s recommendations.

nodejs_version: '20' # Vite 5 expects Node 18+

Ports for Vite’s dev server #

Next, expose ports that Vite’s dev server uses will use to serve assets.

web_extra_exposed_ports:
  - name: vite
    container_port: 3000
    http_port: 3000
    https_port: 3001

Routing ports can sometimes be confusing. This diagram might help!

  • Vite’s dev server runs inside of DDEV’s web container (a Docker container).
  • Until we expose these extra ports, any custom port within DDEV is unavailable to your host machine (your computer).
  • When it’s time to configure Vite, we’ll use port 3000
  • HTTP and HTTPS traffic must use separate ports.
  • We use port 3000 for http traffic and 3001 for https

Run Vite automatically #

Usually, you’ll want Vite to watch and build files automatically after you start a DDEV project. Using web_extra_daemons adds a separate background process (daemon) for Vite.

web_extra_daemons:
  # Run Vite in a separate process
  - name: 'vite'
    command: 'npm install && npm run dev'
    directory: /var/www/html

Use hooks to improve DX #

DDEV’s powerful hooks system can run tasks before or after various DDEV commands. These post-start tasks keep dependencies and schemas up to date every time you start DDEV.

hooks:
  post-start:
    - composer: install # Keeps installed packages up to date
    - exec: ./craft up # Apply migrations & project config changes

Time for Vite #

Vite is a Node app that’s installed with NPM. Your project will need a package.json. If you don’t have one set up yet, follow NPMs initialization script.

ddev npm init

# Don't forget to ignore node_modules!
echo node_modules >> .gitignore

????Why ddev at the start of the command? This let’s us run NPM from within DDEV’s Docker containers. This means you’ll always be using the Node version configured for this project. DDEV has a bunch of shortcuts and aliases for running CLI commands (such as npm, yarn, craft and composer).

Make sure your NPM package is configured for ES Modules #

Our various config files will be using ES Module syntax for imports and exports.

ddev npm pkg set type=module

Install Vite! #

ddev npm install --save-dev vite

Add convenience scripts to package.json #

"scripts": {
  "dev": "vite",
  "build": "vite build"
}

npm run dev runs Vite in dev mode. It watches and builds your files every save. Files are served through Vite’s dev server.

npm run build bundles your JavaScript, CSS and static images for production. Your deploy process will usually call this script.

Configure vite.config.js #

Running Vite for a server rendered CMS requires some extra configuration. These options put production files in the right spot and keeps Vite’s dev server running on a specific port.

import { defineConfig, loadEnv } from 'vite'

// Match ports in .ddev/config.yaml and config/vite.php
const HTTP_PORT = 3000
const HTTPS_PORT = 3001

export default defineConfig(({ command, mode }) => {
  const env = loadEnv(mode, process.cwd(), '')

  return {
    // In dev mode, we serve assets at the root of https://my.ddev.site:3000
    // In production, files live in the /dist directory
    base: command === 'serve' ? '' : '/dist/',
    build: {
      manifest: true,
      // Where your production files end up
      outDir: './web/dist/',
      rollupOptions: {
        input: {
          // The entry point for Vite, we'll create this file soon
          app: 'src/js/app.js',
        },
      },
    },
    server: {
	    // Special address that respond to all network requests
      host: '0.0.0.0',
	    // Use a strict port because we have to hard code this in vite.php
      strictPort: true,
      // This is the port running "inside" the Web container
      // It's the same as continer_port in .ddev/config.yaml
      port: HTTP_PORT,
      // Setting a specific origin ensures that your fonts & images load
      // correctly. Assumes you're accessing the front-end over https
      origin: env.PRIMARY_SITE_URL + ':' + HTTPS_PORT,
    },
  }
})

Add JavaScript and CSS files (Entrypoint) #

Vite needs an entry point to determine what JavaScript, CSS and Front End assets it needs to compile. Remember src/js/app.js that we defined in vite.config.js? Let's make that file now.

/* Make a file in src/js/app.js */

import '../css/app.css'

console.log('Hello Craft CMS')

We’ll also add our CSS as an import in app.js . In plain-old-JavaScript you can’t import CSS files. However, Vite uses this to figure out CSS dependencies for the project.

Once Vite builds everything for production, you end up with a separate CSS file. The Craft Vite plugin includes this automatically with along your JavaScript bundle.

/* Make a file in src/css/app.css */

body {
	background-color: peachpuff;
}

Install the Vite Craft Plugin #

ddev composer require nystudio107/craft-vite
ddev craft plugin/install vite

Vite assets have different URLs in dev mode vs. production. In dev mode, assets are served from Vite’s dev server. It uses the ports that we defined in our DDEV & Vite configs.

When Vite builds for production, filenames are hashed (app.js becomes app-BZi_KJSq.js). These hashes change when the contents of the file changes. Browser can cache these files indefinitely. When an asset changes, a whole new file is served.

To help find these hashed filenames, Vite creates a manifest.json file. The manifest associates the name of your asset src/js/app.js to the hashed file that ends up on your server web/dist/assets/app-BZi_KJSq.js

The Craft Vite Plugin by NYStudio107 takes care of all this routing for you.

{
  "src/js/app.js": {
    "file": "assets/app-BZi_KJSq.js",
    "name": "app",
    "src": "src/js/app.js",
    "isEntry": true,
    "css": ["assets/app-BXePGY5I.css"]
  }
}

Configure the Vite Craft Plugin #

Make a new plugin config file in config/vite.php

<?php

use crafthelpersApp;

// Use the current host for dev server requests. Otherwise fall back to the primary site.
$host = Craft::$app->getRequest()->getIsConsoleRequest()
    ? App::env('PRIMARY_SITE_URL')
    : Craft::$app->getRequest()->getHostInfo();

return [
    'devServerPublic' => "$host:3001", // Matches https_port in .ddev/config.yaml
    'serverPublic' => '/dist/',
    'useDevServer' => App::env('CRAFT_ENVIRONMENT') === 'dev',
    'manifestPath' => '@webroot/dist/.vite/manifest.json',
    // Optional if using React or Preact
    // 'includeReactRefreshShim' => true,
];

Include your Vite bundles in Twig #

The script and asset functions includes the appropriate files depending on in if you’re in dev mode or production. Clear out your templates/index.twig file and add the following snippet to your <head> tag.

{# Load our main CSS file in dev mode to avoid FOUC #}
{% if craft.vite.devServerRunning() %}
    <link rel="stylesheet" href="{{ craft.vite.asset("src/css/app.css") }}">
{% endif %}

{{ craft.vite.script('src/js/app.js', false) }}

Whew! ???? We’re at a point now where we can test our integration. Run ddev restart and then ddev launch . You should see “Hello Craft CMS” in your browser console.


Setup Tailwind #

Now that Vite is processing src/css/app.css, it’s time to install Tailwind and really get cooking.

These steps are based on Tailwind’s official installation guide. But make sure to run all commands from within DDEV.

Install packages #

ddev npm install -D tailwindcss postcss cssnano autoprefixer
# No DDEV shortcut for npx :(
ddev exec npx tailwindcss init -p

Configure template paths in tailwind.config.js #

/** @type {import('tailwindcss').Config} */
export default {
	// Watch Twig templates and any JS or JSX that might use Tailwind classes.
  content: ['./templates/**/*.twig', './src/**/*.{js,jsx,ts,tsx,svg}'],
  theme: {
    extend: {},
  },
  plugins: [],
}

Configure postcss.config.js for production #

export default {
  plugins: {
    tailwindcss: {},
    autoprefixer: {},
    ...(process.env.NODE_ENV === 'production' ? { cssnano: {} } : {})
  }
}

Add Tailwind directives to src/css/app.css #

@tailwind base;
@tailwind components;
@tailwind utilities;

You’ll most likely need to run ddev restart again to get Vite to recognize your new Tailwind config.


❓ Do i need to set up live reload of Twig? Turns out it’s already done for you! Styling a Tailwind project means editing Twig files to change styles. It’s super handy to reload your browser every time you save. Normally you’d reach for vite-plugin-restart to get this functionality. However, Tailwind’s JIT mode automatically notifies Vite when CSS has compiled and the page should reload.

That's a wrap! #

That’s all it takes to configure a minimal DDEV and Vite project! We’ve found that both of these tools are easy to extend as a project get more complo'ex. Adding things like Redis or React are just a plugin install and a few lines of config away.

???? If you'd like to see this setup (and more) in a real-world Craft CMS project, check out our Craft Site Starter on GitHub.

Go forth and Vite + DDEV to your heart’s desire.




use

What is a Headless CMS and When Should I Use One?

When starting a new project, decision makers are faced with the dilemma of choosing a content management system (CMS). Sometimes, it’s not that simple and they must choose whether to go with a traditional CMS or a headless CMS. Both offer unique benefits and cater to different needs, making it crucial to understand when each makes sense for your project. Let’s take a look at some considerations that can help you make the right decision.

What is a Traditional CMS?

Traditional CMS’s – like Craft CMS, WordPress, and Drupal – offer a pre-packaged solution for content creation, management, and delivery. They include powerful interfaces with content editing capabilities and templating out of the box, enabling you to create sites with ease. A traditional CMS can be monolithic because the back-end and front-end are tightly coupled. Using a traditional CMS typically means you are using all of the tools included to achieve your goal.

What is a Headless CMS?

A Headless CMS is like a Traditional CMS in that it includes content creation and management tools. But it differs in the fact that the back-end content management system is decoupled from the front-end (presentation layer), allowing developers to use any technology stack they prefer for building the front-end of the site. The back-end acts as an API with its only purpose being to serve content from the database. There are CMS options like ContentfulPayload, and Strapi that are built to be headless. Popular traditional CMS’s like Craft CMS and WordPress also offer headless variants.

The Restaurant Analogy

Let’s simplify things a bit more and look at the decision using an analogy; a restaurant.

Traditional Restaurant (Traditional CMS)

Imagine a restaurant where the kitchen and dining room are connected. The chefs cook the food, and the waitstaff serve it directly to the customers in the same building. This setup means that everything is closely integrated, and the kitchen (back-end) is tightly coupled to the dining experience (front-end). Picture a scenario where the restaurant decides to change from table service to buffet style. The food now needs to be prepared in advance and delivered to the front of house in a different way, potentially even requiring new equipment. The restaurant needs to be reconfigured to not only accommodate the buffet but also to interface with the kitchen differently. Because the restaurant and kitchen are coupled, both sides would require work in order to accommodate a shift in strategy. 

Ghost Kitchen (Headless CMS)

Now, think of a ghost (or cloud) kitchen where food is prepared centrally but can be delivered to various locations or dining experiences. The kitchen (back-end) focuses solely on cooking (content creation and management) and doesn't worry about where the food is served. Instead, the meals (content) can be delivered to different endpoints like food trucks, home deliveries, or partner restaurants (or in our case websites, mobile apps, etc.). This separation allows more flexibility in how and where the content is delivered without changing the core cooking process. If a new experience requires new equipment or processes, the kitchen can be expanded without affecting the front-end experience.

When to Use a Headless CMS

Omni-Channel Content Delivery 

If you consistently need to deliver content across multiple platforms (websites, mobile apps, IoT devices), a headless CMS is ideal because it can serve the same content through APIs to any front-end. The front-end can be swapped out without any need for development to the back-end.

Scalability and Flexibility

If you want the ability to keep your content management system up-to-date independently of the presentation layer, a headless CMS can allow for more agile and scalable development. This could be especially useful if you anticipate needing to redesign or update parts of the front-end frequently without affecting the back-end content.

Front-end Framework Preferences

Maybe your team has developers who are very proficient in a particular JavaScript framework, like Next.js, SvelteKit, or Astro. The time needed to learn a new templating language could push you past your deadline. Maybe you have some cool interactive interface in mind? A headless CMS can provide the raw content for your developers to build highly custom, tailor-made front-ends in whatever language or framework they please.

Security

Going headless can offer security advantages due to its decoupled nature. By communicating via API to the front-end, data access can be controlled more granularly. Because the back-end is only responsible for content management and delivery, fewer plugins are typically used which means a smaller chance of vulnerabilities due to third-party software.

Hosting & Infrastructure

A cloud-based headless CMS offers additional advantages over a self-hosted headless CMS. It can simplify maintenance and operating costs since the cloud provider is responsible for updates and security of the platform. Cloud-based solutions like Strapi Cloud often come with integrated security features, automatic backups, and disaster recovery options.

Which will you choose?

While the flexibility and security a headless CMS offers may be great benefits, it may not be necessary for every project and could even introduce complexity. It’s important to consider the long-term purpose of the project and who will be responsible for maintaining it as well as authoring content. If your primary focus is on managing and delivering content in a structured manner with rapid development, a traditional CMS can be an excellent choice. But if you feel any of the examples I’ve laid out above align with your project’s requirements then a headless CMS may be right for you! 

Whatever route you take, remember that both Craft CMS and WordPress can be used in traditional or headless applications and are a fine choice either way! Now you know the differences between a traditional and headless CMS, and an informed decision can be made. If you have more questions or a project you think could benefit from a traditional or headless CMS, we’d love to help!




use

Use Behavioral Analytics Data to Make Your Site More Effective

Behavioral analytics are a great way to get a sense of what users are or are not doing on your website or app. While behavioral analytics may not provide insights into why users are behaving a certain way, this method does provide a quick and cost-effective way to see what your users are currently doing at scale. Knowing how your users are engaging with your website or product can help you make informed decisions that have a positive impact on engagement and conversions.

Here at Viget, we use behavioral analytics data for a number of use cases:

  1. Our client has a specific question about a certain aspect of their website or app (e.g., a specific user flow or content type) and wants to learn more about how and when users are engaging. 
  2. We are redesigning a client’s website and want to get a sense of where the current experience is excelling or falling short.
  3. We are conducting an annual analysis to help clients keep an eye on potential areas of growth or stagnation. 
  4. We are reviewing behavioral changes on a site or app after launching a new experience or feature to assess performance.

But what kind of insights can you expect to find from behavioral analytics data? 

It ultimately depends on the website or app, the users, and the kinds of questions you are asking, but let’s go through a few different examples of what kind of information you can gain from behavioral analytics tools.


Who is using your website or product?

Understanding who is using your website can provide helpful context on your user base and potentially unlock growth with new user groups you may have been unaware of. To investigate this, we may look at geographic location, language, device type, and any other demographic information that may be available. Sometimes this kind of data provides what I like to call descriptive information—information that often doesn’t feel immediately actionable but can become more useful relative to other data points. This could come from comparing your data to last year, to industry standards, to other content on the website, or it might come from comparing it to an assumption that an individual or organization holds. 

Here are some examples of findings that shed light on who was using the website or product:

32% of sessions were from users outside the United States. 
  Through a previously conducted survey, we were aware that some users were looking for content that was not specific to the United States. This metric helped us better gauge the size of that need.
97% of Canadian sessions interacted with the website in English, with only 3% of Canadian sessions using French.
  We were unsure to what degree French content needed to be prioritized and this metric helped provide a sense of scale.
15% of searches were conducted on a mobile device. 
  Although 15% may seem low, this metric was actually higher than expected because there were known issues with the mobile search experience. This demonstrated that even though the mobile experience was harder to use than the desktop version, users were still inclined to use it, further illustrating the importance of improving the mobile experience. 

How do users get to your website or product?

Knowing how users navigate to your website or product can highlight what traffic sources are particularly effective in driving conversions, but it can also help to provide important context on user expectations or goals. To understand this, we look at both the source/medium that brought them to the website as well as the first page they viewed. 

For example, users might:

  • Come from google and land on a blog article
  • Go directly to your home page
  • Come from an email referral to a donation page 
  • Learn about you from ChatGPT and land on your About page

From there, we might look at engagement rate, conversion rates, or other metrics to get a sense of what these users are doing and whether anything stands out as particularly effective or ineffective. 

Here are some examples of acquisition insights that informed our understanding and approach:

Only 10% of sessions started on the home page, with most users starting much deeper in the site on content-specific pages.
  Because only a small portion of users entered on the homepage, we could not solely rely on homepage messaging to orient users to the site. This highlighted the importance of providing sufficient context on any page of the site to ensure that users navigate to their desired content, regardless of what page they land on.
Although the paid ads were effective in driving users to the website, those sessions had abnormally high bounce rates, with one traffic source having a 95% bounce rate. 
  This indicated a potential mismatch between what users expected based on the ad, and what was actually on the page.
Organic search brought in a large amount of new traffic to their site through the blog pages and while users engaged with the blog content, they were not engaging with the CTAs. 
  Because these new users were potentially learning about this organization for the first time, the donation CTAs were likely not the best fit, and we recommended shifting the CTAs on those pages to focus more on learning about the organization.

What content or features do users engage with?

Here is where we start to get to the meat of what your users are actually doing on your website or product. Knowing what users are doing and what they’re not using can help to establish priorities and inform decisions. You might be surprised to learn that users are actually engaging with specific features or content quite a bit, but others are barely used. If the content or feature is surprisingly popular, then we likely don’t want to outright remove it and may instead consider iterating or leveraging that offering more. If users aren’t engaging with content or a feature, it may be worth considering the effort to maintain and iterate on that offering. 

Here are some examples of engagement insights that helped us identify opportunities related to content or features:

Less than 1% of users were engaging with a particular feature. 
  These same users were showing high engagement with other features though, indicating that users either didn’t know this feature existed, knew the feature existed but didn’t understand the value add, or the feature was simply not something they needed.
For a highly engaged audience, there wasn’t a standout page that most users visited. These users viewed a variety of pages across multiple sessions, typically viewing highly specific content pages. 
  This indicated that instead of relying on a single page to drive conversions, getting users to the specific details they needed was likely a better approach in getting users to try the product.
Nearly 84K sessions engaged with a particular content type. 
  While this was lower than other content types, it was much higher than expected. It was largely organic traffic and the sessions were highly engaged. We recommended doing some additional research to better understand the potential opportunities with that type of content.

What is the user journey or path?

Another major area of investigation is the sequence of steps users take when viewing content or completing certain actions. This could be perusing content on the website, going through a signup funnel, or checking out to make a purchase. 

This helps us identify:

  • the actual paths that lead to conversions (which is not always the path we assume it is) 
  • areas where users drop off at key points in the funnel
  • moments where users have to “turn around” in the journey, because the path laid before them doesn’t align with their needs 

This information can help you build towards a frictionless experience that encourages users to sign up, complete a purchase, or find the resources they need.

Here are some examples of user journey insights that helped us understand where there were existing points of friction for users:

While the CTA to demo the product appealed to users and they were quick to engage with it, it often resulted in users backtracking to the previous page. 
  We hypothesized that users were eager to get to the demo, but were moving too quickly and missed important context, resulting in them having to go back to a previous page. We were able to confirm this with user testing and recommended transitioning some of that context to the CTA page.

What “turning around” in the user journey can look like:

A select few products had abnormally high drop off rates, but at different stages depending on the product. 
  For one product, there was an abnormally high cart-abandonment rate, and for another product, there was an abnormally low add-to-cart rate. Based on these findings we recommended looking further into what is impacting a user’s purchasing decisions.

What dropoff can look like at different stages:

The Ecosystem at Large

Some clients have a larger ecosystem of products or services, and it’s important to look at how users engage with and navigate across the ecosystem. This might include subdomains for a shop, a marketing site versus the product site, help documentation, etc. By looking at the larger ecosystem we can reveal important connections that are missing or connections that could be strengthened.

Here are some examples of insights that demonstrated a need for changes in those ecosystem connections:

For sessions where a user was looking for a particular kind of resource, 95% of the searches were done exclusively in a single subdomain or microsite.
  Through user interviews we were able to confirm that this siloed experience was intentional for experienced users but unintentional for less-experienced users, who were largely unaware of the other parts of the ecosystem that were available. We recommended making changes to improve discoverability of those other areas.
For sessions where a user navigated between two domains, 75% of sessions navigated to the other domain to view documentation specifically.
  Yet, depending on the product, sometimes the documentation was hosted on a subdomain specific to documentation and sometimes it was available on the product domain. This created an inconsistent experience where for some products, users could find what they needed on the product website, but for other products, users were sent to an entirely different subdomain. We recommended creating a more consistent experience for users, where regardless of the product, the documentation would be found in the same location. 

Here at Viget, there are a wide variety of insights we may discover for any one project through behavioral analytics. These insights can help to identify new user groups, help to prioritize content or features maintenance and updates, or bring to attention moments in the user journey that are causing friction. These opportunities can help you bring in new users and retain your existing users, by providing an experience that aligns with their needs, whether that is finding resources, getting involved in a community, or making a purchase.  

If you’re interested in making your website or application more effective for your users by leveraging the power of behavioral analytics data, we’d love to hear from you




use

Why Limiting Free Users to 1,000 Photos on Flickr is a Smart Move

Yesterday Flickr made their first big restructuring announcement since recently being purchased by SmugMug. Beginning next year on January 8th, Flickr will limit free accounts to 1,000 photos. The previously offered free 1 terabyte of storage goes away. At the same time Flickr is returning their paid pro account to unlimited storage which had been …




use

The June WordPress users group meeting

The days have been flying by really fast. In fact I am glad I decided to check out LAWPUG.org today. I was reminded that this weekend is when the meet is. So if you in the Los Angeles area, and would like to sit down and chat with a few WordPress guru’s, please feel free […]

The post The June WordPress users group meeting appeared first on WPCult.




use

Use WordPress to print a RSS feed for Eventbrite attendees

Today I was working on the WordCamp.LA site. I was trying to show the “attendee list” on the attendees page with out having to update the page every day. Since I am using EventBrite to promote and sell ticket to the event I can collect info from there list. Evey one who purchases a ticket […]

The post Use WordPress to print a RSS feed for Eventbrite attendees appeared first on WPCult.





use

Used Ford Focus – An Elegant Free WP Theme

Used Ford Focus is 3 columns free wordpress theme with unique and modern style, having the classic combination of white, blue, grey and orange. Features: XHTML 1.0 Transitional Adsense Ready Threaded comments support FeedBurner subscribe via email support A lot of advertising spots 125×125 Note: Used Ford Focus Theme is Distribute by ElegantWPThemes.com designed by [...]




use

SVG Coding Examples: Useful Recipes For Writing Vectors By Hand

Myriam Frisano explores the basics of hand-coding SVGs with practical examples to demystify the inner workings of common SVG elements. In this guide, you’ll learn about asking the right questions to solve common positioning problems and how to leverage JavaScript so that, by the end, you can add “SVG coding” to your toolbox. You’ll also be able to declare proudly, “I know how to draw literal pictures with words!”




use

How To Manage Dangerous Actions In User Interfaces

One of the main laws that applies to almost everything in our lives, including building digital products, is Murphy’s Law: “Anything that can go wrong will go wrong.” Our goal is to prevent things from going wrong and, if they do, mitigate the consequences. In this article, Victor Ponamarev explores different strategies for preventing users from making mistakes.




use

Why Optimizing Your Lighthouse Score Is Not Enough For A Fast Website

Feeling good with your Lighthouse score of 100%? You should! But you should also know that you’re only looking at part of the performance picture. Learn how Lighthouse scores are measured differently than other tools, the impact that has on measuring performance metrics, and why you need real-user monitoring for a complete picture.




use

California Study: Four Widely Used Neonicotinoid Pesticides Harm Bees

Center for Biological Diversity Press Release WASHINGTON – Four commonly used neonicotinoid pesticides can harm bees and other pollinators, according to a new analysis by California’s Department of Pesticide Regulation. The study found that current approved uses of the “neonics” … Continue reading




use

‘Coming Mass Extinction’ Caused by Human Destruction Could Wipe Out 1 Million Species, Warns UN Draft Report

By Jessica Corbett Common Dreams Far-reaching global assessment details how humanity is undermining the very foundations of the natural world     On the heels of an Earth Day that featured calls for radical action to address the current “age … Continue reading




use

The FBI Is Now On The Trail of Animal Abusers

The FBI is making news with its recent announcement that it will now track animal abuse in the same way it follows Group A felonies like arson, assault and homicide. Federal statutes define animal cruelty is “intentionally, knowingly, or recklessly … Continue reading




use

To Improve Beijing’s Air Quality, Cut Household Fuel Use Too

By Jeffrey Norris UC Berkeley News China’s plans to curb Beijing’s health-damaging air pollution by focusing on restricting emissions from power plants and vehicles may have limited impact if household use of coal and other dirty fuels is not also … Continue reading




use

Researchers Use Augmented Reality to Teach Kids About Climate Change

By The University of British Columbia While Pokémon Go has helped to bring augmented reality to everyday life, UBC researchers are using similar technology to teach high school students about climate change. Based on the community of Delta B.C., the … Continue reading




use

Russian Doctor, Accused of Antiwar Stance, Jailed After Child's Testimony

The mother of a 7-year-old boy accused the Moscow pediatrician, Nadezhda Buyanova, of telling him that his father's death while fighting in Ukraine was justified.




use

NASA Guide to Air-filtering Houseplants

This excellent infographic created by lovethegarden.com is based on The NASA Clean Air Study of 1989. While researching ways to clean air in space stations, it was determined that these air-filtering houseplants significantly eliminate benzene, formaldehyde and trichloroethylene from the … Continue reading




use

Flipping the Magic Mouse


Flipping the Magic Mouse, originally uploaded by !efatima.




use

Heavily Used Pesticide Linked to Breathing Problems in Farmworkers’ Children

By Brett Israel UC Berkeley News Elemental sulfur, the most heavily used pesticide in California, may harm the respiratory health of children living near farms that use the pesticide, according to new research led by UC Berkeley. In a study … Continue reading




use

Why Use a Chat Bot: Customer Experience Benefits

Today’s business landscape is a complex, fast-evolving terrain where the need for agility has never been greater. Enterprises are under constant pressure to enhance customer experience while streamlining operations. This has led many to use Artificial Intelligence (AI) for solutions. One AI tool that has mainly gained attention is the chatbot. A chatbot is a […]

The post Why Use a Chat Bot: Customer Experience Benefits appeared first on 3.7 Designs.




use

Featured User, Kate Williams: Weddings, Portraits and Double Exposure

Wedding Photography is a tough business. You collaborate with people who are expecting to see passion and love reflected in your work, people who want to see every precious moment captured beautifully. There are no do-overs on wedding day, and the pressure can be enormous. Kate Williams, who works primarily a wedding photographer but also does stunning portraiture, […]




use

How to Use the Right Keywords For Increased Sales on Your Photography Website

While there are a number of ways visitors can potentially find your photography, search is the most vital method. If your website doesn’t offer a keyword search function, visitors may head to other sites that do – and the drop in traffic could hammer your sales figures. Just as search is crucial for finding websites, having a way […]




use

Featured User, Jon Kempner: Framing Buildings

Winston Churchill once said “We shape our buildings; thereafter they shape us.” British photographer Jon Kempner builds on that concept in his body of photographic work, crafting images that allow us to experience some of the world’s most unique architecture from afar. Kempner describes his work as “architectural portraiture”, and he uses space and decor […]




use

Searching For a Premium WordPress Theme? Use This Checklist

WordPress boasts thousands of free themes, some of which are pretty darn good. But it also offers the option of installing premium themes. They say that you get what you pay for, and this often holds true with premium themes. Your website’s design is your company’s virtual storefront. To mark your presence in the real […]







use

Study tests novel approach to PTSD treatment that helps individuals and spouses

Posttraumatic stress disorder (PTSD) among active-duty service members and veterans impacts not only individuals experiencing PTSD, but also their spouses and families. Left untreated, PTSD is typically chronic and very impairing. However, for individuals experiencing PTSD, one weekend retreat with their partner can support recovery while simultaneously improving their romantic relationships, according to a pilot study led by Steffany Fredman, associate professor of human development and family studies and associate professor of psychology at Penn State.




use

Microplates in Action: Recommendations for use

The optimal use of a microplate can significantly accelerate research and discovery. Making good use of recommendations learnt from different research sett



  • Cell &amp; Molecular Biology

use

Winamp failed to confuse people about software freedom

The Winamp Collaborative License included restrictions that rendered Winamp nonfree




use

The Single Gene Knockout that Causes Autism in Mice

This study has added to evidence that the cerebellum has important roles that are underappreciated.



  • Genetics &amp; Genomics

use

Cannabis Use Linked to More Sick Days from Work

Recent and frequent cannabis use and cannabis use disorder (CUD) are linked to higher levels of workplace absenteeism.




use

Cannabis Use Remains at Historical Highs in 2023

Use of cannabis and hallucinogens remained at historically high levels in 2023 among adults aged 19- 30 years and 35-50.




use

Regular Phone Use Linked to Cardiovascular Risk

Regular mobile phone use has been linked to an increased risk of cardiovascular disease.




use

Screen Use in Bed Causes Worse Sleep

Using a screen in bed may negatively impact your sleep.




use

Frequent Cannabis Use Linked to Poor Sleep, Memory Problems

People with cannabis use disorder (CUD) report more sleep problems than those without, and their disrupted sleep may affect visual learning memory.




use

Study Links Chronic Cannabis Use with Sleep and Memory Problems

A study published in The American Journal of Drug and Alcohol found that long-term cannabis users experience interfered with sleep and memory. The findings




use

21% of Adults Aged 50+ Used Cannabis in the Last Year

A new poll shows that 21% of people aged 50 years and up used cannabis in the last year, with 12% taking the substance at least once per month.




use

Study Highlights Link Between Cannabis Use and Lower Body Mass Index

A study published in Cannabis and Cannabinoid Research examined the effects of cannabis use on body mass index (BMI) and found that adults with a history o



  • Health &amp; Medicine

use

Study Links Chronic Cannabis Use with Sleep and Memory Problems

A study published in The American Journal of Drug and Alcohol found that long-term cannabis users experience interfered with sleep and memory. The findings



  • Health &amp; Medicine

use

21% of Adults Aged 50+ Used Cannabis in the Last Year

A new poll shows that 21% of people aged 50 years and up used cannabis in the last year, with 12% taking the substance at least once per month.



  • Health &amp; Medicine

use

Regular Phone Use Linked to Cardiovascular Risk

Regular mobile phone use has been linked to an increased risk of cardiovascular disease.




use

Microplates in Action: Recommendations for use

The optimal use of a microplate can significantly accelerate research and discovery. Making good use of recommendations learnt from different research sett




use

XZEB 1140: Introduction to Residential Mechanical Systems for Zero Energy/Emissions and Passive House Buildings

Organizer: British Columbia Institute of Technology
Location: Online




use

Gaza Apocalypse: Causes and Consequences

Nov 20, 2024, 6pm EST

A lecture and discussion with Mouin Rabbani, A86, previously senior analyst and special advisor on Israel-Palestine with the International Crisis Group, and head of political affairs with the Office of the United Nations Special Envoy for Syria. He is co-editor of Jadaliyya Ezine. He has published and commented widely on Palestinian affairs, the Israeli-Palestinian conflict, and the contemporary Middle East.

Moderated by Negar Razavi, A06, currently an associate research scholar at the Mossavar-Rahmani Center for Iran and Persian Gulf Studies at Princeton University, where she is working on her first book manuscript on the role of policy experts in shaping U.S. security policies toward the Middle East, generally, and Iran, specifically. Broadly, Razavi’s work examines the intersections of state power, empire, security, foreign policy, expertise, and gender.

BuildingBarnum Hall
Campus Location: Medford/Somerville campus
City: Medford, MA 02155
Campus: Medford/Somerville campus
Location Details: Room 104
Wheelchair Accessible (for in-person events): Yes
Open to Public: Yes
Primary Audience(s): Faculty, Students (Graduate), Students (Undergraduate)
Event Type: Lecture/Presentation/Seminar/Talk
Subject: International Affairs
Event Sponsor: Tisch College of Civic Life
Event Sponsor Details: IGL/Tisch
Event Contact Name: Heather Barry
Event Contact Emailheather.barry@tufts.edu
RSVP Information: None
Event Admission: Free



  • 2024/11/20 (Wed)

use

Friedman School Speaker Series: Eliminating Labor Abuses at Sea to Achieve Sustainable Seafood

Nov 20, 2024, 12:15pm EST

Speakers:

Bruno Ciceri, Stella Maris



Chris Williams, Fisheries Section Coordinator of the International Transport Workers' Federation



Noel Adabblah, Fisherman



Moderated by Jess Sparks, Assistant Professor, Friedman School

Online Location Details: Details provided via email
BuildingJaharis Family Center for Biomedical and Nutrition Sciences
Campus Location: Boston Health Sciences campus
City: Boston, MA 02111
Campus: Boston Health Sciences campus
Location Details: *Jaharis 118 and Online, Please note that this Speaker Series event will NOT be held in Behrakis Auditorium
Wheelchair Accessible (for in-person events): Yes
Open to Public: No
Primary Audience(s): Faculty, Postdoctoral Fellows, Staff, Students (Graduate)
Event Type: Lecture/Presentation/Seminar/Talk
Subject: Diversity/Identity/Inclusive Excellence, Health/Wellness
Event Sponsor: Gerald J. and Dorothy R. Friedman School of Nutrition Science and Policy
RSVP Information: No RSVP necessary
Event Admission: Free



  • 2024/11/20 (Wed)

use

Use of RSS and OPML at the Institutional Web Management Workshop 2006.

This year we are syndicating much of the content of the Web site. A page on RSS and OPML technologies is now available. [2006-05-05]




use

Use Of Google Maps.

As an example of embedding a Web 2.0 service in a Web site we are pleased to announce that a Google Map has been embedded in the IWMW 2006 Web site. [2006-05-18]