k Millions Of People No Longer Have An Address. Yet We Know How To Reach Them. By icanbecreative.com Published On :: Fri, 15 Dec 23 16:46:05 +0200 Imagine an empty apartment block, stark and desolate, with just a single light flickering in the overwhelming darkness. This is not a scene from a movie; it ... Full Article Design Inspiration
k How To Introduce Your Artwork To The Online Community By icanbecreative.com Published On :: Wed, 27 Mar 24 18:41:40 +0200 Many aspiring artists turn to the online community to present their work to the general public. Not only will this enable them to reach an extremely diverse ... Full Article Learning
k 150 Simple Desktop Wallpapers For Minimalist Lovers By icanbecreative.com Published On :: Tue, 14 May 24 21:29:17 +0300 Today I have collected some excellent desktop wallpapers dedicated to minimalism. Minimalism is a popular style of design because it keeps things simple and ... Full Article Design Roud-up
k Vector Frames - Free Download Y2K Aesthetic By icanbecreative.com Published On :: Sat, 25 May 24 18:17:00 +0300 Discover our special freebie: vector frames in Y2K style, perfect for your 2000s fashion aesthetic projects. Download now for free! Vector frames are a co ... Full Article Vector
k How To Remove Watermarks From A Photo Like A Creative By icanbecreative.com Published On :: Mon, 22 Jul 24 19:58:20 +0300 Removing watermarks from a photo can feel like an easy task, especially if you're new to photo editing and want to learn how to pick a new creative design s ... Full Article Learning
k 5 Ways To Break Boundaries With Conceptual Art In Photoshop By icanbecreative.com Published On :: Thu, 17 Oct 24 16:38:37 +0300 From a mere, individual concept idea discovered in a random online pic to an ordinary shot taken with a camera, there’s hardly anything that software like P ... Full Article Learning
k Theme: Perfect for Photoblog with Creative Works By www.blogperfume.com Published On :: Mon, 10 Dec 2012 02:18:28 +0000 Onward is perfect for a photoblog as well as showcasing visual creative work of any kind. It is super simple to use and the asymmetric grid design looks fantastic on any device. It has beautiful grid-like display to show all your posts, whether it be blog posts, portfolio work or anything else you like. Pricing: […] Full Article Theme
k Bootstrap Hornbook Interactive Infographic By www.blogperfume.com Published On :: Fri, 22 Feb 2013 07:06:11 +0000 As per scientists around 90% of all information we perceive comes through our eyes. The visual side always has been quite important for humanity, we can see it from the culture of writings and visual art having very long history. The other suitable feature is laconism. We can experience the lack of time for finding […] Full Article Information
k A Glance over Depositphotos, the Fastest-Growing Microstock Agency By www.blogperfume.com Published On :: Mon, 01 Apr 2013 14:16:00 +0000 Stock photography business has become trend. It could be seen from the number of stock photography providers or so called microstock agencies in the internet which is increasing. The number affects the effort of every microstock agency to survive and get much buyers as possible. As a result, we can see so many microstock agencies […] Full Article Information
k How to Make a Grid in Adobe Illustrator (Rectangular and Polar) By www.bittbox.com Published On :: Thu, 08 Jun 2023 13:29:15 +0000 Are you looking for a way to create an effective grid system in Adobe Illustrator? If so, then you've come to the right place! This quick tutorial will teach you how to make a comprehensive and visually appealing grid using the popular vector graphics software. While creating grids manually can be time-consuming, with this tutorial,... The post How to Make a Grid in Adobe Illustrator (Rectangular and Polar) appeared first on Bittbox. Full Article Illustrator
k How to Change the Background Color in Adobe Illustrator By www.bittbox.com Published On :: Mon, 12 Jun 2023 13:05:24 +0000 The background plays a significant role in making a design pop. As a designer, changing the background color is something you'll probably do frequently when working in Adobe Illustrator. There are several ways to change the background color in Adobe Illustrator. In this tutorial, we'll learn how to change the background color in Illustrator quickly... The post How to Change the Background Color in Adobe Illustrator appeared first on Bittbox. Full Article Illustrator
k How to Recolor Artwork in Adobe Illustrator By www.bittbox.com Published On :: Thu, 22 Jun 2023 11:22:01 +0000 We all know that color is the essence of any artwork. It's the language through which artwork communicates its message and tone. And recoloring artwork can bring new life to a design, giving it a fresh and captivating look. Fortunately, Adobe Illustrator offers a fantastic tool that makes recoloring artwork easy, smooth, and flexible. In... The post How to Recolor Artwork in Adobe Illustrator appeared first on Bittbox. Full Article Illustrator
k Koi Theme Has Moved By ndesign-studio.com Published On :: Fri, 15 Oct 2010 15:24:16 +0000 Please be advised that the Koi theme has been converted into a Themify theme. With the Themify framework and widgets integration, it gives you more options in term of theme settings, styling, layout options, and sidebar widgets. I also added some new WordPress 3.0 features such as custom menus and child theme support. Read this […] Full Article Blog Updates WordPress
k Speaking at FOWD Conference By ndesign-studio.com Published On :: Wed, 27 Oct 2010 15:14:08 +0000 I will be speaking at Future of Web Design (FOWD) conference in New York City upcoming November 15 – 17, 2010. This will be my second time speaking at FOWD. I’ve been attending FOWD in the past several years and they get better and better. So, I’m very excited to have this opportunity to speak […] Full Article Blog Updates
k Illustration: Japan Earthquake 11-03-2011 By ndesign-studio.com Published On :: Mon, 18 Apr 2011 06:35:06 +0000 I’ve recently created new illustration, Japan Earthquake 11-03-2011, that was inspired by the recent disaster in Japan. With this illustration I’ve joined force with To Japan with Love, a group of artists who are aiming at raising funds for Japan earthquake relief efforts. My illustration will be showcased at the art show (May 4th, 2011 […] Full Article Blog Updates
k Speaking at Mad Conference (Spain) By ndesign-studio.com Published On :: Tue, 24 May 2011 18:17:23 +0000 I’m excited to announce that I’m invited to speak at Mad in Spain on June 3rd, 2011. Organized by Domestika, Mad in Spain is one of the largest design conferences in Spain. This year is going to be their 6th anniversary. I will presenting a talk on applying art in modern web design. After the […] Full Article Blog Updates
k IconDock and Themify Coupon Code By ndesign-studio.com Published On :: Wed, 25 Jan 2012 17:01:41 +0000 If you are interested to buy icons from IconDock or themes from Themify, I have a coupon code for you. Use ‘ndesign’ coupon code on IconDock to save 20% off any icon sets. The discount code on Themify is also the same ‘ndesign’. You can save 20% off any WordPress themes. Full Article Blog News
k Cake Based on Phoenix Illustration By ndesign-studio.com Published On :: Fri, 01 Jun 2012 20:34:29 +0000 Check out this awesome cake made by Elena based on my Phoenix illustration. According to Elena, it took her about a week, 5 hours each day, to finish it. I’m amazed with the details and colors she input on the work. It depicts the features of the Chinese phoenix. The cake was for a local cake […] Full Article Blog Photos
k New Pinterest-Like Theme By ndesign-studio.com Published On :: Thu, 28 Jun 2012 17:27:26 +0000 Check out this new Pinterest inspired theme I designed – Pinboard. It incorporated infinite scroll as seen on Pinterest site. The posts are auto loaded and stacked as soon you hit the bottom of the page. It is also responsive. Check the demo and resize your browser window to see how the layout adapts. Full Article Blog Updates
k Flickr announces new photo licensing Marketplace By www.tzplanet.com Published On :: Tue, 29 Jul 2014 16:41:36 +0000 Yahoo has announced a new upcoming Marketplace for licensing images on Flickr. Short on details for now, but certainly full of potential. Related posts: Upload your photos to Flickr with Adobe Lightroom Download your Flickr Stats files NOW SlideFlickr – Embedding your Flickr Photos on blog posts made easy Full Article Marketing and Business Photography News Agency Collection Featured flickr Getty Library Rights-Managed Royalty Free Stock
k DxO FilmPack 3 free until 15 August By www.tzplanet.com Published On :: Fri, 01 Aug 2014 14:37:24 +0000 Grab your free copy of DxO FilmPack 3 until August 15, 2014. Related posts: MIT offering free photography courses Full Article Photography News DxO Film Free processing Software
k Stuck with Apple’s Aperture? Adobe will give you a hand By www.tzplanet.com Published On :: Tue, 05 Aug 2014 08:13:58 +0000 After the announcement that Apple will not be continuing development of Aperture, Adobe announces the development of a migration tool to help those thinking about switching. Related posts: Upload your photos to Flickr with Adobe Lightroom Great Deals on Adobe Lightroom 3 and Photoshop CS5 Lots of prizes to give away on PhotoNetCast Full Article Photography News Adobe Aperture Apple Catalog Featured Library lightroom Software Workflow
k The Lost Generation, by Kevin Gilbert By www.tzplanet.com Published On :: Fri, 08 Aug 2014 21:18:14 +0000 880 billion images will be made this year, in the USA alone. How important is it to makes sure image loss is minimised not to have a Lost Generation? Full Article Photography in General Backups Kevin Gilbert Memories video
k Mastering Landscape Photography – David Taylor: Book Review By www.tzplanet.com Published On :: Thu, 06 Nov 2014 21:34:13 +0000 Book review of "Mastering Landscape Photography" by David Taylor. Related posts: Fundamentals of Photography, Tom Ang – Book Review Understanding Composition, Steve Mulligan – Book Review ATP Photofinder Mini – Reinventing Geotagging (Product Review) Full Article Reviews book David Taylor Landscape Photography review
k First time photographing a Hockey game By www.tzplanet.com Published On :: Fri, 14 Nov 2014 13:48:13 +0000 Photographing hockey for the first time. How hard can it be, right? Here's the story... Related posts: Photographing Copyrighted Work – Can you or not? Full Article Photography in General action fast Featured hockey ice hockey rink servo sports tough
k WooCommerce stores are revving up for Black Friday: The 2024 holiday trends survey By woocommerce.com Published On :: Wed, 04 Sep 2024 10:00:00 +0000 As ecommerce revs up for the holidays, it's time to prepare. Brand new survey data for Black Friday 2024 stats and trends from your friends at Woo. Full Article Marketing News Sell Online
k How to customize the WooCommerce checkout page By woocommerce.com Published On :: Wed, 18 Sep 2024 20:21:29 +0000 Beautiful, high-converting checkout pages: Customize your WooCommerce checkout page with these tools and tips! Video + step-by-step instructions. Full Article Design
k Kellox and Maksimer: Speeding up 800,000 SKUs with WooCommerce By woocommerce.com Published On :: Mon, 30 Sep 2024 09:00:00 +0000 How one of Norway's largest importers migrated to WooCommerce and scaled an 800k SKU operation for a better user experience, performance, and results. Full Article Customer Stories Enterprise Ecommerce
k 2024 Black Friday trends: Top strategies from Woo stores and partners By woocommerce.com Published On :: Wed, 02 Oct 2024 14:08:11 +0000 Black Friday trends: Understand the best practices and favorite tools for your WooCommerce store's Black Friday marketing strategy. Full Article Enterprise Ecommerce Marketing Sell Online
k How to choose an NFT and tokengating partner By woocommerce.com Published On :: Thu, 17 Oct 2024 10:00:00 +0000 How to navigate NFTs + the top considerations for choosing the right partner in this beginners guide for store owners. Full Article Enterprise Ecommerce Marketing Sell Online
k Prepare your checkout for the holidays: 5 ways to reduce cart abandonment with Amazon Pay By woocommerce.com Published On :: Thu, 17 Oct 2024 14:54:49 +0000 Make the most of the holiday shopping season — convert more visitors into customers. Quick changes that can make a big difference in 5 steps. Full Article Payments Sell Online
k Boyd Lake at dusk: bike and canoe adventure By photokayaker.fit2paddle.com Published On :: Thu, 21 Mar 2024 17:19:46 +0000 I love photographing Boyd Lake at sunrise and sunset. This year I visited this State Park twice. Gravel biking First time it was in late January. The lake was covered by a solid ice and there was a lot of […] Full Article trip reports bike blue hour Boy Lake canoe gravel bike royalty free stock photography sunset
k Rock breakwater in Engure By xltphoto.net Published On :: Sun, 12 Jun 2016 13:14:36 +0000 Full Article Industrial abandoned Latvia mole old port rock sea seascape
k Old Glass: The Rokkor 58mm f/1.4 Prime Lens. Star Performer. By alphatracks.com Published On :: Mon, 23 May 2022 21:11:19 +0000 The MC Rokkor – 58mm f/1.4 lens is one of my all-time favorite lenses. It... The post Old Glass: The Rokkor 58mm f/1.4 Prime Lens. Star Performer. appeared first on Alphatracks. Full Article Review Rokkor 58mm f Rokkor Lenses Uncategorized Lens Adapter Photography Rokkor
k MC Rokkor 58mm f/1.4 Sample Images By alphatracks.com Published On :: Mon, 23 May 2022 21:11:51 +0000 MC Rokkor 58mm f/1.4 Sample Images The following images are representative of the type of... The post MC Rokkor 58mm f/1.4 Sample Images appeared first on Alphatracks. Full Article Rokkor 58mm f Rokkor Lenses Sample Images Alphatracks Lens Adapter Lenses Photography Rokkor
k Alison Baskerville By www.designsnips.com Published On :: Thu, 08 Oct 2020 21:00:42 +0000 Full Article Inspiration siteinspire Web
k Self-Host Your Identity Provider with authentik By www.viget.com Published On :: Fri, 31 May 2024 00:00:00 -0400 Authentication! What a hassle! Evans, where's that SAML from Earth!? You start off simple enough — username / password authentication in your application. Then, well, someone mentions that traditional passwords are a security vulnerability, so maybe we should use one-time passwords. That inevitably leads to discussions about magic links and multi-factor authentication. Next thing you know, one dev is in a corner, rocking back and forth and muttering something about SAML, and another dev just left — walked out the door, never to be seen again. Well, not to worry, we've got just the tool for you. authentik is an open-source identity provider written in Python. I'm going to focus on the self-hosted version, but they also offer a paid enterprise plan if you want some extra support. Self-Hosting The philosophy of open-source tools and self-hosting is a big, complex topic for another post. In the world of SaaS products, you likely don't need to self-host. I quite like hosted identity providers like Clerk and Auth0. They're good and appropriate solutions for different types of apps and companies. But I just love to self-host tools. Tinkering and toying with Docker, reverse proxies, and sometimes even server hardware is a lot of fun to me. It does add complexity in some (or many) places, but a little extra complexity means you've got a little more control over your tooling. Self-hosting also allows me to disconnect from the Internet and still be able to work on features and enhancements in my projects. As long as I've already installed the relevant packages or pulled the right Docker images, I can keep working if I'm in a place where I can't (or don't want to) connect to the Internet. This is a small thing, but really important to me. authentik makes it really easy to self-host your application. Right out of the gates, they provide a Docker Compose example and a Kubernetes example. Getting authentik running took me about 10 minutes using the Docker Compose example. Most of that was reading. This can make authentik a great tool during the proof-of-concept or beta phase of your application, getting authentication out of the way so you can focus on building the cool and unique features of your app. Integrations One of the great things that authentik has waiting for you is a bunch of documentation on integrating with a lot of tools you probably already use. These integrations range from other self-hosted apps like Outline (another favorite of mine) to cloud providers like AWS and even platforms like WordPress. authentik's integration docs show you how to set up authentik for your existing providers and applications, so no need to dig around for the right configuration. Sure, if you're building your own application, you don't have the luxury of a README (until you write one, of course!), but don't worry — all the documentation you'll need for your choice of providers is at your fingertips. Personally, I'm fan of the OAuth2 provider for most my pet projects, but I also find the Proxy Provider to be a really great tool if you want to secure a static site that doesn't have any means of authenticating users. Customization This is a pretty nice default login screen, but maybe a mountain road isn't your vibe. You can change this background, add your own company logo, and add your own CSS. Just add your static files to your authentik deployment and modify to your heart's content. But actually, that's not even the cool part of the customization to me. authentik has the concepts of Flows and Stages that are used to determine what steps a user should take to log in, log out, and more. First, you define Stages that represent a single step of authentication — something like requiring a user to enter their username or a password. There's a whole lot to choose from. Once you've set up your Stages, you'll create a Flow, stringing those Stages together until you have a complete process to authenticate, register, or even delete a user. Flows can be imported and exported as .yaml files, making it easy to keep your Flows and Stages synced between different environments. authentik comes with a pretty reasonable set of default Flows and Stages. If you're setting authentik up just to try it out, you might not need to add anything. They do have a couple of example Flows to get you started, though. Flows and Stages can feel pretty intimidating. On your dev server, I'd recommend basically deleting all of the default Flows and Stages and building up new ones from scratch. It's the easiest way to learn how these pieces fit together. If you accidentally break something in dev, you can always just drop your database and spin up a fresh install. Conclusion authentik is an awesome tool and I've only scratched the surface of what it can do for you. As a self-hosted identity provider, it gives you a lot of control on how your services are authenticated. It's great for local development and beyond, and it has a lot of ready-to-go integrations for services you might already use. If you're interested in further reading, I'd definitely recommend checking out the docs on Outposts and External Sources. Hopefully this has given you some inspiration to spin up a local instance of authentik and try it out! It will definitely simplify your authentication needs. Here's your SAML, Mr. Horrible Gelatinous Blob! Full Article Code Back-end Engineering Security
k Fluid Breakout Layout with CSS Grid By www.viget.com Published On :: Thu, 13 Jun 2024 09:23:00 -0400 So you're building a site and you've got a nice containing element around your content — but wait! Not all the content is the same width! That nice, neat tube of content is not so much a straight tube as a pile of different sized bricks. It's a common layout problem, but how do we account for these 'breakout' widths in the layout? There's a couple ways we could go about it: Encapsulate each component and set widths and margins. (Works fine if you have full control but can be fiddly). Force the component out of the containing element with negative margins. (Works fine if there's only a little deviation). Use CSS Grid to build a fluid universal grid! (????). That last one is what we'll be exploring: how to use CSS Grid definitions to allow for consistent component sizing across all breakpoints — no media queries required! This is a technique that's based on Ryan Mulligan's 'Layout Breakouts' which is based on Josh Comeau's 'Full-Bleed Layout' and is especially useful when creating a fully fluid layout. This also pairs well with fluid type techniques resulting in layouts that TRULY scale with the viewport size. Setting Up the Grid # Here's the layout we're going to be building: If we break apart the design, we've got 4 possible widths for components: Full-Width Feature Popout Content We've also go some special side-anchored elements that 'stick' to one of the screen edges but also honor the other element widths. We'll come back to these later on. Now that we've categorized the widths, lets start drawing column edges and defining areas: Left margin / Full-Width Left Feature Left Popout Center Content Right Popout Right Feature Right margin / Full-Width That's a lot of columns! Yet on mobile, we only need 3 columns, just left margin (1), center content (4), and right margin (7). We want some of these intermediate columns to disappear! Fortunately, CSS Grid gives us some powerful tools to create the measurements needed—yes, even for the disappearing columns! We won't even have to write any media queries for this one. We can make just ONE definition that works at all sizes. We'll store our measurements as CSS variables for easy use later on: :root { --gap: clamp(1rem, 4vw, 2rem); --full: minmax(var(--gap), 1fr); --feature: minmax(0, 12vw); --popout: minmax(0, 2rem); --content: min(clamp(30rem, 52vw, 60rem), 100% - var(--gap) * 2); } Let's break these down. --gap: clamp(1rem, 4vw, 2rem); gap will be our side margin, allowing it to stretch up to 2rem at max, with a preferred width of 4vw, but never going below 1rem. --full: minmax(var(--gap), 1fr); We're going to use the minmax() function for these next three measurements to say: "If there's room in the CSS Grid, you can expand out to here but then don't go smaller than the minimum". The full area is going to expand from left edge to right edge (remember we have to split the areas to allow for the other columns) and will double as our margin, so we'll pop in our gap value as our minimum and tell it that it can expand up to 1fr, or basically as much space as the rest of the grid will allow it. --feature: minmax(0, 12vw); --popout: minmax(0, 2rem); The feature and popout both have a minimum value of 0. This is what powers our disappearing columns! As other areas of the grid expand, these will collapse when there's no longer any room for them, essentially taking up no space. --content: min(clamp(30rem, 52vw, 60rem), 100% - var(--gap) * 2); And then finally, our content area is our most complex measurement. It's saying, take the minimum value of either: A fluid measurement that can be 30-60rem (with the help of clamp()) OR full width minus our gap value (but doubled for both left and right values). These measurements can be changed to fit the needs of your layout. Specifically the feature and popout maximum values and the first content value. For example, our use of vw for the feature means it will fluidly expand out as the screen grows whereas the popout will remain only 2rem larger on each side than the content column. Now we can assemble these measurements in a CSS grid column definition. We'll name our column edges with [custom-ident] and use the -start and -end endings to help make assignment easier later on. .grid-breakout { display: grid; grid-template-columns: [full-start] var(--full) [feature-start] var(--feature) [popout-start] var(--popout) [content-start] var(--content) [content-end] var(--popout) [popout-end] var(--feature) [feature-end] var(--full) [full-end]; } The definition is complex, but if we visualize the start and end lines of our columns as well as the measurements, it looks like this: You can see we have our middle content column, our disappearing feature and popout columns, and finally our full columns that double as our margin. To finish off the definitions, we need to create column assignments. Because we named our columns with custom identifiers and specified the start and stop lines, we don't have to fiddle with grid numbers. We can assign them directly like: .full { grid-column: full; } .feature { grid-column: feature; } .popout { grid-column: popout; } .content { grid-column: content; } And if we want to create a default assignment for elements in the grid (which is especially useful if you don't have full control over the markup) you can create one like this: .grid-breakout > * { grid-column: content; } Now you can attach any of these classes to components in your grid and have them snap to the width you want. Watch the screen capture below as the grid scales down. You can see the feature and popout columns disappearing as everything transitions to a mobile width, and then expands back up. A video showing how the intermediate columns collapse down to transition to the mobile layout and then expand as the window increases in width. You can see a demo of the base setup here: See the Pen Universal Breakout CSS Grid - Basic by Nathan Long (@nathanlong) on CodePen. Nesting Grids # Now let's go back to our header element. You can see that though the header is full-width, we actually want its inner content to honor the feature width. Fortunately, because of the flexible nature of this grid definition, we can repeat the definition and then continue using the same column names on the inner structure. Because our grid only goes one layer deep we're free to replicate as much as we need or even break out and use different layout methods for the component interiors. <main class="grid-breakout"> <section class="full grid-breakout"> <div class="feature"> <!-- inner content --> </div> </section> </main> You can see it in action here: See the Pen Universal Breakout CSS Grid - Basic by Nathan Long (@nathanlong) on CodePen. Anchoring Left and Right # Remember those side-anchored components? This is where we need to get a little tricky to line everything up. Going back to our diagram, we want an element to span MOST of the way across the page, but end at the opposite feature edge. We can reuse our column definitions for the first part. .feature-left { grid-template-columns: full-start / feature-end; } Great! That gives us exactly what we want... except for when we try to nest the grids. Our original grid definition assumes that our content, while different widths, is centered in the window. We have to rethink our inner grid definition a little bit. We're shaving off one end of the grid, specifically a full definition. So two things need to happen: We need to adjust our content width to now account for only having one gap. We need our new grid end to stop at the edge of the feature column. We can achieve this with a new measurement and a new grid definition: :root { /* previous definitions... */ --content-inset: min(clamp(30rem, 52vw, 60rem), 100% - var(--gap)); } .grid-breakout-feature-left { display: grid; grid-template-columns: [full-start] var(--full) [feature-start] var(--feature) [popout-start] var(--popout) [content-start] var(--content-inset) [content-end] var(--popout) [popout-end] var(--feature) [feature-end full-end]; } We've replaced the inner content measurement with the new value and combined the feature and full ends with the final line of the template column definition: [feature-end full-end] This will allow redefinition inside the new side-anchored component. You will notice that you'll need to supply your own padding for the inner as they no longer have that final margin to prevent it from reaching the new grid edge. <main class="grid-breakout"> <section class="feature-left grid-breakout-feature-left"> <div class="feature"> <!-- inner content --> </div> </section> </main> If you want to reverse this to be anchored to the right, you can flip the grid definition, moving the double start to the top like: .grid-breakout-feature-right { display: grid; grid-template-columns: [full-start feature-start] var(--feature) [popout-start] var(--popout) [content-start] var(--content-inset) [content-end] var(--popout) [popout-end] var(--feature) [feature-end] var(--full) [full-end]; } You can see a demo of the side-anchored component here: See the Pen Universal Breakout CSS Grid - Side-Anchored Elements by Nathan Long (@nathanlong) on CodePen. But What About Tailwind! # We love using Tailwind at Viget as a Team Accelerator™, and it's straightforward to implement these measurements and definitions in your Tailwind config. /** @type {import('tailwindcss').Config} */ import plugin from "tailwindcss/plugin"; export default { // the rest of your other definitions theme: { // the rest of your theme definitions extend: { gridColumn: { content: "content", popout: "popout", feature: "feature", full: "full", "feature-left": "full-start / feature-end", }, gridTemplateColumns: { breakout: `[full-start] var(--full) [feature-start] var(--feature) [popout-start] var(--popout) [content-start] var(--content) [content-end] var(--popout) [popout-end] var(--feature) [feature-end] var(--full) [full-end]`, "breakout-feature-left": `[full-start] var(--full) [feature-start] var(--feature) [popout-start] var(--popout) [content-start] var(--content-inset) [content-end] var(--popout) [popout-end] var(--feature) [feature-end full-end];`, }, }, }, plugins: [ plugin(function ({ addBase }) { addBase({ ":root": { // grid sizing variables "--gap": "clamp(1rem, 4vw, 2rem)", "--full": "minmax(var(--gap), 1fr)", "--content": "min(clamp(30rem, 52vw, 60rem), 100% - var(--gap) * 2)", "--popout": "minmax(0, 2rem)", "--feature": "minmax(0, 12vw)", "--content-inset": "min(clamp(30rem, 52vw, 60rem), 100% - var(--gap))", }, // force unspecified content blocks into 'content' grid ".grid-cols-breakout > *": { "grid-column": "content", }, }); }), ], }; Everything is effectively the same, but you'll call your grid classes like grid-cols-breakout to set the grid, and your columns like col-feature per Tailwind naming conventions. Forwards to a Fluid Future! # And there you have it! A media-query-less fluid breakout layout defined with CSS grid! While the setup is more complicated at first glance, I've found that the more fluid your layout rules are, the FEWER rules you have to write overall! Especially when paired with fluid type, dynamic viewport units, and all the amazing features that are landing in CSS — it's truly a fluid future! Full Article Code Front-end Engineering
k Your Website Transition Checklist By www.viget.com Published On :: Thu, 20 Jun 2024 11:00:00 -0400 When onboarding a new partner to redesign your website, take over maintenance, or rescue a project going sideways, you'll need to carefully transition access to a variety of critical systems and tools. And if you're navigating a contentious relationship or onboarding into a new organization without documentation, you might not know where to start.Does that sound scary? It doesn't have to be. Here's a comprehensive checklist to ensure that you retain full control of your website and avoid any potential hiccups during a transition. Codebase access. Ensure you have ownership or administrative access to the existing codebase or code repository. Popular platforms like Bitbucket and GitHub are often used for this purpose.Content Management System access. Ensure you have the highest level of access (super admin) for your Content Management System (CMS). Hosting information and access. Gather all hosting information and ensure you have access to the account that owns the workspace. This is crucial to prevent unauthorized updates or changes to your site. For hosted platforms, you’ll need Owner access, not just Administrator access. Additional services information and access. This might include your domain registrar (e.g., GoDaddy), DNS settings, email services, your content delivery network (CDN), if applicable. This could also include any third-party services that are integrated with your website. Common examples might include: Algolia, Hubspot, Stripe, etc. Analytics and Data. Make sure you have access to all analytics tools used to monitor your website traffic and user behavior. This might include both old Google Universal Analytics data and current GA4 data, Google Tag Manager, or any other analytics services used on your website (e.g., Mixpanel, Hotjar, Adobe Analytics, etc.). Backups. Secure a full backup of your site, including the file system. Plugins like UpdraftPlus for WordPress can be very helpful for this process. Also, ensure you have backups of shared files, such as those in Google Drive, Box, or Dropbox.Design Assets. Retain copies of raw design assets (e.g., Figma files). We always transfer ownership of Figma files to our client teams to ensure they have the ability to extend the design system in the future.Licenses. Make sure you own any required licenses, such as font/photo licenses, CMS licenses, API keys, or premium plugins. We insist that our client teams purchase any required licenses/subscriptions using their corporate information so we’re never blocking access to those critical resources. Transitioning website partners can be a smooth process with foresight and preparation. While ideally there would never be gaps in access to these critical resources and services, by following this checklist, you can ensure that you’re not missing anything when offboarding old partners or getting your bearings with a new team or organization. Do you need help figuring out how this checklist might apply to your situation? Be in touch, and we’d be happy to discuss your current status and suggest next steps for your website transition. Full Article Strategy Process Project Management
k Handling Spelling Mistakes with Postgres Full Text Search By www.viget.com Published On :: Tue, 25 Jun 2024 12:37:00 -0400 Background # Postgres Full Text Search (FTS) is a great way to implement site search on a website running Postgres already, without requiring additional infrastructure. On a recent engagement with a client, we were deciding between Postgres FTS and ElasticSearch. Ultimately we chose FTS because we could spin it up without having to add extra infrastructure, as we would with ElasticSearch. Since the project was written in Ruby on Rails, we were able to use the excellent PgSearch gem to implement FTS in ActiveRecord. Multisearch # As we wanted a general site search, we needed to utilize multisearch. Multisearch combines multiple ActiveRecord models into one search 'document' table that you can search against. For example, if a user searches for some search term, and the search is configured for multisearch, then every single model that we mark as multisearchable will be searched for that term at the same time. See here for more detail. Search Features # PgSearch allows for different search features, tsearch, trigram, and dmetaphone. The default is tsearch, which uses the built-in Postgres Full Text Search. This was great for our use case, since it also comes with highlighting, a feature that was required. The highlighting is from a field returned by Postgres FTS, where it returns the text around the search term for context and bolds the search terms. Spelling Mistakes # Unfortunately, tsearch does not handle misspelled words. However, as I mentioned before, PgSearch allows for other search features! And trigram is a feature that can be installed via a Postgres extension (pg_trgm) that does just that. Trigram # The idea behind trigram search is to split pieces of text into sets of three-letter segments, and compare the sets to one another If two trigram sets are similar enough, we assume there was a spelling mistake, and return the document with the correctly-spelled term. As a quick example (ignoring whitespace): Consider the word Viget. Viget would make trigrams: [vig, ige, get] Now, consider our evil twin agency, Qiget. They would make trigrams [qig, ige, get] The two trigram sets match very closely, with only one of the trigrams not being the same. Thus, if we were to compare these with pg_trgm, we could reasonably tell that anyone typing 'Qiget' must have been actually looking for 'Viget', and just misspelled it. Working Trigram into our existing solution # PgSearch allows us to use multiple search features at once, so we can use tsearch and trigram side by side. Note that we cannot just replace tsearch with trigram due to needing some features in tsearch that are exclusive to it. Here is what an example configuration might look like. PgSearch.multisearch_options = { using: { tsearch: { prefix: true, highlight: { MaxFragments: 1 } }, trigram: { only: [:content] } } } Trigram (and timelines) causing issues # While it was easy to slot Trigram into our multisearch, it caused a pretty serious performance hit. We were seeing 50x-75x slower searches with both features combined than with just tsearch. We needed to find a way to balance performance with handling misspellings At the point that handling misspellings became prioritized, the entire search feature was almost fully QA'd and about ready to go out. There wasn't much time left in the budget to find a good solution for the issue. This thread from the PgSearch repo sums it up pretty well – there were multiple other users that were/are having similar issues as we were. The top-rated comment in this thread is someone mentioning that the solution was to just use ElasticSearch ('top-rated' is doing a lot of heavy lifting. It did have the most likes...at two). We needed to find some sort of middle ground solution that we could act on quickly. Postgres Documentation saves the day # In the docs for the Trigram Postgres extension, the writers give an idea for using Trigram in conjunction with Full Text Search. The general idea is to create a separate words table that has a Trigram index on it. Something like this worked for us. Note that we added an additional step with a temporary table. This was to allow us to filter out words that included non-alphabet characters. execute <<-SQL -- Need to make a temp table so we can remove non-alphabet characters like websites CREATE TEMP TABLE temp_words AS SELECT word FROM ts_stat('SELECT to_tsvector(''simple'', content) FROM pg_search_documents'); CREATE TABLE pg_search_words ( id SERIAL PRIMARY KEY, word text ); INSERT INTO pg_search_words (word) SELECT word FROM temp_words WHERE word ~ '^[a-zA-Z]+$'; CREATE INDEX pg_words_idx ON pg_search_words USING GIN (word gin_trgm_ops); DROP TABLE temp_words; SQL This words table is therefore populated with every unique word that exists in your search content table. For us, this table was pretty large. result = ActiveRecord::Base.connection.execute("SELECT COUNT(*) FROM pg_search_words").first['count'] puts result.first['count'] # => 1118644 Keeping the words table up-to-date # As mentioned in the docs, this table is separate from your search table. Therefore, it needs to be either periodically regenerated or at least have any new words added to search content also added to this table. One way to achieve this is with a trigger, which adds all new words (still filtering out non-alphabet characters) that are inserted into the documents table to the words table create_trigger("pg_search_documents_after_insert_update_row_tr", generated: true, compatibility: 1) .on("pg_search_documents") .after(:insert, :update) do <<-SQL_ACTIONS CREATE TEMP TABLE temp_words AS SELECT word FROM ts_stat('SELECT to_tsvector(''simple'', ' || quote_literal(NEW.content) || ')'); INSERT INTO pg_search_words (word) SELECT word FROM temp_words WHERE word ~ '^[a-zA-Z]+$'; DROP TABLE temp_words; SQL_ACTIONS end Note that this does not handle records being deleted from the table – that would need to be something separate. How we used the words table # Assuming for simplicity the user's search term is a single word, if the search returns no results, we compare the search term's trigram set to the trigram index on the words table, and return the closest match. Then, we'd show the closest match in a "Did you mean {correctly-spelled word}?" that hyperlinks to a search of the correctly-spelled word Given more time, I would have liked to explore options to speed up the combined FTS and Trigram search. I'm certain we could have improved on the performance issues, but I can't say for sure that we could have gotten the search time down to a reasonable amount. A future enhancement that would be pretty simple is to automatically search for that correctly-spelled word, removing the prompt to click the link. We could also change the text to something like "Showing results for {correctly-spelled word}". Ultimately, I think with the situation at hand, we made the right call implementing Trigram this way. The search is just as fast as before, and now in the case of misspellings, a user just has to follow the link to the correctly-spelled word and they will see the results they wanted very quickly. Full Article Code
k 10 Things I Learned in My 10 Weeks at Viget By www.viget.com Published On :: Wed, 07 Aug 2024 09:56:00 -0400 This summer, I was the Application Developer Intern at Viget. This being my first internship, I was pleasantly surprised by how much I learned. Rather than being tasked with fetching coffee or doing busy work, the internship focused primarily on our growth and development as interns. As my time at Viget comes to a close, I wanted to reflect on ten key things I learned during my experience here.Following the real-world development cycleGoing into this internship, my development process involved me sitting down and coding until the feature was completed, and that's it. During this internship, I learned and practiced the development cycle used at Viget. For each feature, I created a Branch. Then, I submitted a Pull Request once it was completed. After that, my advisor reviewed my code and gave feedback. Once I had completed the requested changes (if any), I would rebase and merge into the main branch. This cycle made the code cleaner, and the feedback on my code always ensured I was going in the right direction.Maintaining a clean git historyDuring my development process at Viget, my advisor ensured I took the necessary steps to maintain a clean git history in my projects. I put the corresponding issue number next to each git commit and pull request. This made it much easier to see which commits belonged to which feature when reviewing git history. I also learned to always use “rebase and merge” rather than “create a merge commit” when merging a pull request. This helped when reviewing git history as merge commits make it much more difficult to understand what’s going on, and rebase and merge provided a clean git history.Getting introduced to DevOpsNevin Morgan hosted a MicroClass where he went over the basics of DevOps. Going in, I didn’t know much about DevOps, but the class gave me a solid understanding of the basics. DevOps is a combination of philosophies, practices, and tools designed to improve the speed of development. Their responsibilities include:Keeping Communication clear for development teamsMaking sure teams continue collaboratingEnsuring deployments are quick and reliableI also got the chance to pair with Nevin when he set up AWS deployment for one of my projects, and when he was setting up Grafana for Viget. Getting to see DevOps in action gave me a good idea of what goes into being part of the DevOps team.Learning to work with clientsAt the start of our intern group project, Nathan Long gave us a presentation on what it's like to work with clients. He covered the typical client project cycle, client presentations, and how to handle client feedback. For our project, we simulated a client relationship with Viget as our client. They provided us with their requirements, and me and the other interns planned out the details of what we would deliver. Throughout the process, we gave several client presentations, received valuable feedback, and iterated on our product. Two weeks later, we had a finished product, which we presented to the client in a live demo. This whole process was designed to mimic what Viget goes through with real clients, and seeing the different perspective required when working with clients was really eye-opening for me.Exploring digital accessibilityNathan Schmidt hosted a MicroClass for the interns on Accessibility. He gave us an overview of what digital accessibility is and who it impacts. I learned that digital accessibility is the lens through which we ensure that people of all abilities, and particularly those with disabilities, are able to engage with the digital world. Every website is graded to a level set from the Web Content Accessibility Guidelines (WCAG). These guidelines include video captions, text size, color contrast, and many more requirements. It is the industry standard to follow these WCAG guidelines so that your website can be accessible to a broad range of consumers.Building confidence in public speakingWhen the summer began and I learned that I would need to present to the entire company, I felt intimidated. Public speaking has always been a source of anxiety for me, but I had numerous opportunities to work on this skill. Throughout the summer, I became increasingly confident. First, my fellow interns and I presented our group project to everyone at Viget at the company-wide all hands meeting known as TTT. I presented my personal project to the Dev team, discussing the libraries I used and walking through my code. The most significant presentation I delivered was my final one, where I spoke to everyone at Viget about my Gap Year through a Viget Tradition known as LabShares. Public speaking is a skill that improves with practice, and the various opportunities I had greatly boosted my confidence in this area.Diving into Vanilla JavaScriptGoing into this summer, I had never written a line of JavaScript in my life. I quickly learned that JavaScript is essential if you’re going to work in web development. On my personal project, which was an audio sharing social media app, I had a for you page, and I wanted to make the page update as soon as the user went to the next sound. This would require me to write JavaScript. I went through and wrote Vanilla JavaScript to update all the necessary information from the server's response. Although it was a challenging and tedious process, it significantly enhanced my understanding of how websites work and the role of JavaScript in web development.Getting my feet wet with RailsFor the first half of the internship, I got my foothold in Ruby on Rails. This was my first time writing in Ruby, so there was a bit of a learning curve. I started with the Rails tutorial and then made a Hacker News clone. This exposed me to a broad range of the application stack and got me prepared for the Intern project, where I also used Rails. I found Rails’ Model, View, Controller setup to be very intuitive, so the learning process was relatively painless.Discovering the benefits of TailwindBeing the only Application Developer Intern, my focus throughout the internship was primarily on the back-end. However, I did have the chance to use Tailwind for the first time during my personal project. The biggest thing that stuck out to me was how it was convenient to not have to go through and change the stylesheets myself. With Tailwind's utility-first approach, you can quickly apply predefined classes for spacing, colors, typography, and more, without having to write custom CSS. This makes it much faster to prototype and iterate on designs, as you can see changes immediately by simply adjusting the class names in your HTML.Exploring the Basics of ReactChris Manning hosted a MicroClass on React. I had never actually used React, but he made the class very beginner friendly. React is a JavaScript library, whose main strength is how dynamically it responds to user input and cascades UI changes. Chris went over JSX and React components, props, children, and state memory. I didn’t have time to actually write any React this summer, but I appreciate that Chris hosted this class after I said React was something I was interested in!Reflecting on what I’ve learned here at Viget, I realize how invaluable this experience has been for both my personal and professional growth. From learning Rails and JavaScript, to understanding the intricacies of client relationships, I've gained a wealth of knowledge that extends far beyond technical skills. The opportunity to work alongside experienced professionals and receive constructive feedback has been a huge source of development for me. As I move forward, I am excited to apply these lessons and continue exploring the world of Software Development, confident in the foundation this internship has provided. Full Article Code News & Culture Back-end Engineering Internships and Apprenticeships
k The Keys to Successful Concept Testing: Planning By www.viget.com Published On :: Fri, 30 Aug 2024 10:43:00 -0400 Concept testing is a research method that explores how a user perceives or interacts with a new idea. It usually takes place early in a project, and involves putting ideas into the “real world” to see how users will react to them.Not every project needs to include concept testing, but it can make your solutions more user-centered. Involving users in the design process leads to products, sites, and experiences that are more aligned with user wants and needs — and ultimately more successful.Concept testing is most useful when exploring ideas that are novel, complex, or risky. It can also help your team:Generate more purposeful, user-centered ideas.Identify which ideas provide the greatest value to users. Prioritize the most promising idea(s), saving time and money.Evaluate any significant changes you make along the way.I’ll cover how we use concept testing at Viget to help our clients gain clarity and develop user-centered solutions. This article will be part of a three-part series focused on concept testing. First, we’ll focus on planning out your concept testing. Form a clear planA successful concept test has a well-defined plan at its foundation from the start. At Viget, we work with clients to define what you want to learn, and who you want to learn from. Let’s imagine that you and your team are redesigning an online food delivery platform, and you have some new concepts that you want to test to see if they resonate with users. Focus on what you want to learn.Start by defining research objectives. Think of these objectives as your north stars that will guide you and your team. You’ll use these for initial alignment, and then to frame what the prototype needs to do, and what feedback you really need.You can create a strong set of objectives by asking:What initially sparked the motivation to test?Where do you have the most uncertainty about your concept?What are the key things you need to know through testing? Teams usually have a lot of questions, and feel pressure to answer all of them at once. Resist the pressure! Instead, focus on the most pressing and critical — it will allow you to dive deeper into the most important areas in a session. Otherwise, you may not have the depth you need to move forward when you finish the testing.Let’s say you've developed new solutions that span the whole user journey of online food delivery. You could spend a whole research session asking questions that cover all that breadth, but you would get much more depth by focusing on one particular moment in the journey, like the online ordering experience.Think about who you want to talk to (and be holistic).If you aren’t intentional about who you test with, you can end up with feedback that may not be applicable. Ideally, you’re talking to existing customers or people who would use the website or product in the future. Look at behaviors, like whether they’ve used a competitor, or hold specific sentiments, when recruiting participants. Perhaps you’re trying to expand your audience for your new food delivery app, so you may want to talk to people who cook at home frequently as well. Don’t forget to think holistically. Consider every person who might interact with this solution, from beginning to end, and who might be affected by it. For your new app, you'll want to test with the diner, but your solutions may also affect the restaurant host/hostess, cooks and cashier’s workflows for example. So you may need to capture their perspectives. Opinions aren’t strong evidence.You may gravitate towards seeking preferences or opinions about your concepts (i.e., “which concept is better?”). But rather than focusing on which concept users like most, it’s more important to uncover user behavior. Preference-centric concept testing won’t teach you about how someone might actually interact with this concept. For instance, you’ll learn much more about which new concepts for online food ordering are most beneficial to users if you ask about how they might use it in a scenario. Or even better, you actually have them interact with each one. Questions like the ones below will give you stronger indications of user behavior:When was the last time you used [the competitor]?How might this concept fit into your day to day?How would you accomplish this task with the concept? Avoid asking questions like “Which concept is better?” or “which one do you prefer?” Instead ask why one concept has advantages or disadvantages over another for a user, or how they actually envision it in their daily life. Even if the focus of the test is on preference (as is the case for branding or marketing research) it’s still helpful to dive deeper into what a user feels the design is communicating to them and why that prompts a specific reaction.These key strategies that I’ve covered should get you a jump-start for successfully planning out your first concept test.In the next article in the series, I'll dive into prototyping. Full Article Design & Content User Experience Research Product
k Use Behavioral Analytics Data to Make Your Site More Effective By www.viget.com Published On :: Tue, 10 Sep 2024 10:00:00 -0400 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: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. We are redesigning a client’s website and want to get a sense of where the current experience is excelling or falling short.We are conducting an annual analysis to help clients keep an eye on potential areas of growth or stagnation. 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 articleGo directly to your home pageCome from an email referral to a donation page Learn about you from ChatGPT and land on your About pageFrom 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 funnelmoments 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 LargeSome 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. Full Article Strategy Data & Analytics Research
k 5 Ways to Make Your Next In-Person All-Hands Event Worthwhile By www.viget.com Published On :: Fri, 25 Oct 2024 13:41:00 -0400 In recent years, as distributed work has become the norm, all-hands trips have become more commonplace. Even companies that have always done them now see their importance in a new light. They are expensive and demanding for everyone involved, but when they’re done well they can be incredibly impactful. Are you bringing your team together and feeling the stress of getting it right? Designing the time together takes strategic thinking, logistics planning, and the confidence to ask everyone to contribute to the event’s success.Last week, we came together to connect, celebrate each other, and look forward to a bright future in our quarterly all-hands event we call Third Third Thursday or TTT. It was our first in-person all-hands event since May 2023. At Viget, we actively build our culture together. The responsibility doesn’t fall on just a few individuals' shoulders. Our events are successful because individuals show up, speak up, listen, and honor the limited time we have together in-person. This is evident in the chats over breakfast pastries, the all-in approach to competitions breakout sessions, and the peer talks and discussions throughout our events. This connection and camaraderie doesn’t just happen, we work hard to make it happen. Reflecting on last week’s event (and 7 years of other events), I want to share these five key planning tips to help you craft a successful event. Leverage your physical space to help achieve your event goals. This fall we had a smaller number of attendees and we wanted to encourage discussion throughout the event so we set up the room in large U shape to foster conversation. We also made the most of our exterior space, which featured a fire escape staircase, by hosting an egg drop competition. Over communicate, especially around when team members can expect breaks and when they can expect to be fed. As the event lead, I share my phone number multiple times ahead of and throughout the event. We also make sure to communicate in dedicated channels, including an event Slack channel for all attendees, a behind-the-scenes Slack channel for presenters only, and an event website. We share important key information like bus schedules and flight confirmations via email. In advance of the big day, we shared this slide with our team to both inform and inspire. Leave room for unstructured time and connection. Over the years we learned that some of the best discussions and a-ha moments come from chats over a meal or a snack during the “unplanned” parts of the event. Now we plan ahead for these, leaving ample time for unplanned, impromptu a-has. We think about airport Uber rides, charter bus rides, morning runs, evening board games, or late-night drinks and look for ways to grease the wheels of serendipity. This was especially important for us this fall since it had been so long since the last time we all gathered together. Look for ways to celebrate what is unique to your company. One pretty fantastic thing that comes with a quarter century in business is the community we’ve built along the way. We make a point to keep up with previous Viget employees who we proudly call our alumni. We love our alumni and enjoy recognizing their contributions to Viget. One way we do so is with annual picnics, which we host when the most current Viget employees are in town for an event. These picnics are often a great mix of reconnections and networking. Find ways to surprise and delight. Think big and small. For example, this fall we put colored pencils and butcher block paper out during our meeting time. Our autumnal decor included blue(ish) and orange pumpkins (Viget colors!). We made a subtle callout to an internal project by serving french fries as our afternoon snack. And we surprised our team with Unreal treats for their bus rides home. The treats served as dessert and a means for us to introduce our next in-person event, our spring TTT, aka Viget25. Some companies advocate for all-hand retreats to be social and relaxing, but not “productive.” They tout a meeting-free event. At Viget, we see the meeting time as crucial because that is when peers share knowledge, reflect on their recent work, showcase client impact, and highlight new ideas and personal growth. Similarly, our co-founders reflect on Viget’s performance and share thoughts on the upcoming business direction. The meeting sparks genuine inspiration and creates a time for us to remember what brought us to Viget in the first place – to build world class tech in support of our clients. On the heels of a successful gathering, it’s time to start planning the next one. For our next event we’ll head to the Allegheny Mountains where we’ll leverage a unique and memorable venue, offer plenty of unstructured time for connection (with each other and nature), loop in alumni where appropriate, plan inspiring meeting content, enjoy many meals and treats together, and of course find ways to surprise and delight. Work-related travel isn't for everyone, but if you know someone who appreciates the idea of dedicated time to connect with and celebrate their peers, we’re hiring. And to all the culture champions and event planners out there, good luck with your next all-hands! Full Article News & Culture Employee Engagement
k The Keys to Successful Concept Testing: Prototyping By www.viget.com Published On :: Mon, 04 Nov 2024 12:22:00 -0500 This is part two of a three-part series on how to successfully conduct concept testing with users, focused on prototyping. Check out part one (planning) to learn more. Prototype your conceptsOnce a well-aligned research plan has been crafted, it’s time to create a prototype (or multiple) based on your concept. There are a plethora of ways you can create prototypes that communicate your concepts to users; I’ll cover strategies that will help spark meaningful reactions and conversation.Provide context to ground your conceptWe humans as a whole are poor predictors of our own future behaviors, so it’s really important that your concept testing simulates the future experience you’re trying to test. Ideally, you want to ground your concepts, so a participant can envision it in their own day-to-day. One of the best ways to do this is by building in context, whether into the prototype itself or in the way you actually test out the concepts.You can ground a participant in what they would actually do by: Adding small contextual details into the prototype (e.g. the participant’s name or location). Providing the participant with a realistic scenario to frame the prototypesDesigning a certain scenario into the actual prototype (e.g. error messages appear in). Conducting the test in the actual or simulated environment where it will be used. Grounding a participant can make a difference in how someone interacts with your prototype. Let’s imagine you and your team are redesigning a part of an online food delivery platform for restaurants, specifically the parts that hosts and cashiers use. When you put your concept to the test, you can ground participants by “simulating” a lunch rush atmosphere (distractions, loud noises, etc).Build real-ish prototypesIt might sound counterintuitive but you don’t need high-fidelity prototypes for concept testing. While high-fidelity prototypes may best simulate the future experience, that level of fidelity may not be feasible for a few reasons: You don’t have the time to create something at that level of detail or complexity before testing.You don’t have the details fleshed out yet.You want your users to help define these details with you. Low to mid-fidelity (or as I like to call “real-ish”) prototypes can still get you to the insights you need and even have some unexpected benefits. It’s easier for research participants to focus on overarching concepts when interacting with low-fidelity prototypes. Higher fidelity prototypes tend to invoke feedback hyper-focused on the details. With lower-fidelity, research participants are more likely to provide critical feedback on ideas, since they don’t seem as “final.” You can also leave out certain details in a low-fidelity concept, which allows you to brainstorm with participants.Again, crafting context is a large part of building out an idea that starts to feel “real” enough for a user to invoke a response. Some examples of real-ish prototypes with just enough context include: Setting the stage with realistic scenarios for how and when research participants would reach out to an AI chat bot in a therapy app.Creating initial wireframes for a ride-sharing app that research participants test out in a simulated car ride experience, to understand what info is most helpful at each moment on the ride.Sending research participants “updates” on their food delivery order, to learn what participants might want to know about their order’s progress. Be selective about which concepts to showYou may have several concepts (or variations on a single concept) that you want to prototype out, and test through research. They may all feel exciting and important, but showing too many in one session can leave a research participant with decision fatigue. Even if you need to test multiple concepts to move forward, you don’t want to show every single one you’ve come up with.Instead, you’ll want to be selective. One way to help you decide which concepts are best to test is by mapping them out on a matrix. Let’s imagine again you and your team have generated multiple concepts for your food delivery app that aim to tempt users to order takeout more frequently. Perhaps some concepts focus on individualized recommendations, while other concepts show social trends. First, create a matrix that has extreme aspects of the concepts on each end and place them where you think they might belong. Then, ask yourself a few questions: Are there two concepts that are too similar to each other? Is this concept playing it too safe?These kinds of concepts may not give you useful feedback because they’re not distinct enough or they’re too neutral over all. Instead, you’ll want to select concepts that are on the edges of your extremes. Those concepts will allow you to learn much more about your users and how they might interact with your concepts in the future.These tips will help you craft prototypes that research participants can more easily and accurately react to. To end this series, I’ll discuss how to prepare for the actual testing in my next article. Full Article Design & Content User Experience Research Product
k Link Roundup #001 By www.beyondphototips.com Published On :: Mon, 06 Nov 2023 17:44:00 +0000 This post: Link Roundup #001 was first published on Beyond Photo Tips by BPT Staff Welcome to Beyond Photo Tips’ very first photography link roundup. In this brand new series of weekly posts, we are going to bring you, a glimpse of everything that we found interesting in the week gone by. This last week has been especially busy, with a number of cameras being announced by some of the […] This post: Link Roundup #001 was first published on Beyond Photo Tips Full Article Link Roundup Artificial Intelligence canon Fujifilm Lenses nikon
k Canon EOS R5 Mark II Specs By www.beyondphototips.com Published On :: Wed, 17 Jul 2024 14:14:53 +0000 This post: Canon EOS R5 Mark II Specs was first published on Beyond Photo Tips by Susheel Chandradhas Canon announced their update to the EOS R5, the EOS R5 Mark II today. As expected, the specs are a step up from the original R5. The sensor size is the same, though it is a new sensor with higher readouts. The Auto-Focus (AF) has been improved, with eye-control AF and new AF tracking options, […] This post: Canon EOS R5 Mark II Specs was first published on Beyond Photo Tips Full Article Announcements Cameras camera canon Canon EOS R5 Mark II Launch
k What Is Silica Gel? How Does It Work? By www.beyondphototips.com Published On :: Mon, 16 Sep 2024 21:29:32 +0000 This post: What Is Silica Gel? How Does It Work? was first published on Beyond Photo Tips by Susheel Chandradhas Ever fished out those little packets from a new camera bag and thought, “What on earth is Silica Gel?” Well, buckle up, because we’re about to dive into the wonderful world of these moisture-munching marvels! You might think they’re just pesky packaging, but let me tell you, Silica Gel is about to become your camera […] This post: What Is Silica Gel? How Does It Work? was first published on Beyond Photo Tips Full Article Maintenance Guides humidity Silica Gel storage
k RIP a Livecast #639 – Leak After Leak By metalinjection.net Published On :: Tue, 28 Sep 2021 20:22:29 +0000 We kick things off by talking about the early 2000s. We also discuss the latest Machine Gun Kelly drama. Then, we discuss a group of metalheads who were denied an […] Full Article RIP a Livecast featured2
k RIP a Livecast #645 – Backstory and Frontstory By metalinjection.net Published On :: Tue, 09 Nov 2021 22:36:08 +0000 We talk about David Ellefson's absurd quote comparing him to Jesus. Speaking of Jesus, we check in with Marilyn Manson's Christianity. We discuss the latest NFT craze, Seinfeld, the Golden […] Full Article RIP a Livecast featured featured2