ge

How Generative AI Can Add Human Delight to Your Virtual Event

We just celebrated 24 years of Viget. That’s two dozen years! This year, our Spring TTT in celebration of “Viget24” was a virtual extravaganza. We’ve put on a lot of virtual events over the years. Some with really strong themes and swag bags; some that focus on simple, meaningful time together; and others that let us enjoy learning something new as a team. Regardless of the rest of the experience, a key component of all of our virtual events is joyachieved often through intentional levity. We think it’s important to laugh together! We see laughter as a way to expedite connection, and connection leads to rapport which makes us better at collaborating — and in turn leads to more quality products for our clients. 

Experimenting and iterating is a critical way we try to continually get delight right. We’re pretty pleased with one of our experiments from Viget24 that we called “Lovely Spring Day”.

A Lovely Spring Day

As we were brainstorming for this TTT, we thought about how to throw some joyful levity pizzazz into the pieces of our virtual events puzzle that have become pretty standard. How do we add lots of delight without adding lots of time to the action-packed schedule? We zeroed in on the virtual backgrounds we’ve been creating for every event — they add a layer of specialness. Of place. This isn’t any old virtual meeting. This is a TTT! 

A small collection of past event-specific virtual backgrounds

Another key consideration for our team is figuring out creative ways to tie in inspiration from our industry and our work. AI has been an obvious contender —  we’ve discussed it and tied it in to some extent for the past several TTTs. But this time, we wanted to see how we could use AI for delight — marrying it with virtual backgrounds felt obvious. And so, a ”Lovely Spring Day” was born. 

The TL;DR is that we generated custom virtual backgrounds for every Viget employee that encapsulates their “ideal spring day.” We then played a 15-minute guessing game where people tried to guess who the background “belonged to.” Then, people had access to the full folder of AI-generated virtual backgrounds to look through. Vigets could then choose the background that spoke to them most and set it as their background. 

Read on for more on how we put this together!

Pre-Event Survey

To support all of our TTTs, we send out thoughtful pre-event logistics surveys 2-3 weeks before the big day. The survey lets us know where folks are joining from (where can we send their activity + snack packages?) and gives folks a chance to provide input on how the People Team can help folks enjoy and be present for TTT. This time, we also snuck in three questions, just “for giggles.”

  • In one sentence, describe your ideal spring day.
  • List three things that spark joy.
  • What color do you think suits you best?

We did not share why we asked these questions. Sneaky, sneaky! When it’s low-key like this, the element of surprise is often a quick way to level up the delight.

Asking for a Friend

With rich data in hand about what makes people happy in spring, we were ready to generate the backgrounds. I was stoked! I’ve been experimenting with ChatGPT for some time, so it was fun to be able to use the DALL-E 3 side of OpenAI’s GPT-4 model

Who knew Prompt Engineering would be part of my role as a recruiter-who-helps-support-TTT-planning? I played around with a couple different prompts to generate these background images. Ultimately, my goal was to create backgrounds that were meaningfully different from one another but still felt good (i.e., something you might feasibly want to set as your virtual background and nothing freakily AI, like uncanny valley hands).

Here are the prompts I landed on that got me to our set of virtual backgrounds:

  • Please generate an image (dimensions of a virtual meeting background) that encapsulates the vibe of a day with [ BLANK ].
  • Please generate an image (dimensions of a virtual meeting background) that features [ BLANK ].

In the blanks, I wrote the things people included in their surveys. Those blanks were filled with everything ranging from dogs, cats, and friends to beverages, specific temperatures, yard games, carbohydrates, hammocks and more! Sometimes, I’d include a detail I knew about that person myself, even if it wasn’t in their survey. Yes, I occasionally editorialized for both clarity and whimsy! This was for delight purposes, but also helped serve my goal of having the backgrounds be “meaningfully different from one another.” It’s amazing how many people’s ideal spring day is as simple as having 1) moderate temperatures and 2) no pollen!

I generated 55 images. Throughout the process, DALL-E nailed it. I only needed to regenerate 2 or 3 images with clarifiers (and only because they included AI-specific outliers like disembodied hands). Huzzah!

Here are some of my favorites, along with their prompts in the captions. Can you guess who they belong to?

Please generate an image (dimensions of a virtual meeting background) that features an outdoor brewery/taproom in the appalachian mountains. There's a playground with kids in the very distance. In the foreground, frisbee, soccer, volleyball, etc. with friends and family.
Please generate an image that encapsulates the vibe of a day ending with an outdoor dinner with lights near an outdoor shower. There should be some hiking boots scattered about.
Please generate an image that features a nice hot bath after a cold but sunny day, with a beautiful mug of green tea and a box of takeout that looks really good. The calendar shows April 25th.
Please generate an image that encapsulates the vibe of sitting outside in a nice purple adirondack chair with buc-ees paraphernalia around.
Please generate an image that encapsulates the vibe of a sunny, 65 degree day with a slight breeze at the ballpark watching a game. The image should feature cats, baseball, and art.
Please generate an image that encapsulates the vibe of being outside in a canoe along with carbs, bad jokes, and games (video OR board games).
Please generate an image that features endless mountain bike trails, a blue bike with a cup of coffee in the cupholder, and roaming cats.

IRL

Ok, so for the actual activity we had the images ready to go in a private Google Folder. I took twelve of the images and put them in a very simple deck. I shared my screen, introduced the activity, and invited people to guess who they think each image belonged to in Slack. It was so fun seeing people throw out guesses and then narrow in with any verbal hints I gave!

Each image took about a minute. Then, we shared access to the Google Folder, gave folks a couple minutes to choose a background that called to them (their own image or someone else’s), and set it as their background. It felt like a magical moment to witness people finding and resonating with their own image or delighting in the ridiculousness of their coworkers’. We saved about 5 minutes for this piece, which felt right.

The whole Lovely Spring Day activity took just over 15 minutes! It was a perfect way to transition from a long meal break into our next grouping of content. And, we got to see the different backgrounds throughout the rest of the meeting.

Oh, the humanity!

I think this activity was successful for a couple of reasons.

1. People laughed! 

Color commentary in the #ttt Slack channel

2. People felt seen. Some of these backgrounds were incredibly on point. Some of that was due to key folks having well-documented interests and a Slack-Famous Dog. 

Laura Sweltz has a famous love of books and an incredibly iconic beagle named Phoebe.

But some of it was due to the People Team knowing about our people — our coworkers — beyond the sentence they wrote in. This uniquely human involvement helped me call an audible as needed and tweak prompts slightly to make the backgrounds feel even more relatable.

Steven, Carolyn, and Laura Sweltz felt seen.

3. We could commiserate about our eventual AI overlords. (Did you notice that I say “please” in my prompts?!) Listen, Viget has plenty of practical, healthily skeptical people who are dubious about AI. GenAI is not always a fun, lighthearted thing. But using it in a fun, lighthearted way to do something it’s really good at was a nice use case and thought-provoking exposure even for people who are not into it.

4. We could see where we all align, and where we differ! It was amazing to see just how many people love picnics, covet their caffeine, and appreciate a bike ride. It was also cool to see some unique folks who simply crave a rainy spring day, or some beloved Buc-ee’s. What a rich tapestry of individuals — literally!




ge

Balancing Image Speed and Quality with imgix

Users expect a website to load fast. An average web page loads in about 2.5 seconds. The longer the user has to wait, the higher the user bounce rate. There are a lot of factors that go into site speed, but images account for about 75% of the page weight on an application or website. Google’s Core Web Vitals uses several metrics to rank sites. Visual site speed or largest contentful paint affects ROI as slower sites have fewer repeat users and fewer sales.

Without properly sized images, both site speed and image quality are affected. Accordingly, we use several methods to deliver properly sized images. Our primary solution is imgix because it is easy to implement and saves managers and clients time and effort. 

Imgix Key Features

Imgix provides a lot of features — some we consistently use on projects, and others we use in very specific situations. 

Responsive Images

Setting up responsive images can be complex. As the variety of devices and their screen resolutions continue to expand, managing all the different image requirements is increasingly challenging.

Consider this scenario: a website’s images look crisp and clear on a high-resolution monitor. When that same page is viewed on a mobile device, the images are so large the page takes forever to load. A solution could be to upload a smaller image for mobile, right? It's not quite that simple. We need eight or more different sizes of the same image to account for different screen sizes and retina screens. Keeping track of all the image sizes and saving each size gets complex and would be nearly impossible to do manually on a site that has hundreds or thousands of images. 

One of our clients, National Park Foundation (NPF), wanted to clarify its message to better target major donors. Their gorgeous, large scenic images are essential to their website strategy.  NPF needed the images throughout their site to be crisp and clear at all screen sizes. Using imgix, NPF content managers can load high-resolution images to the CMS and not worry about the site's speed or performance. They rely on imgix to deliver the correctly resized image for any user's screen.

Imgix does this with their Device Pixel Ratio and Client Hints which automatically sets the pixel density for the image based on the user's device. Those API parameters can be easily set in the URLs for the image’s `srcset`. This allows developers to set an image width for an image `srcset` and then imgix delivers the right pixel ratio image to the user. We use `srcset` with imgix on other client sites like Bezos Earth Fund and Human Rights Campaign as well.

Resize and Cropping

Imgix allows you to crop images in addition to setting an image’s focal point. So, only one image needs to be uploaded and it can be used at multiple sizes and croppings throughout the site. Let's say we upload a large landscape image, but on some pages we only need to use a portion of the image cropped as a square. Imgix will crop the image and deliver the smaller versions on the pages we need while persisting the larger versions on other pages.

At Viget we use resizing and cropping on our own website, including our articles, to crop the staff photo to a smaller size at the top of the articles. This makes it possible for us to upload the staff photo once and the article image gets created automatically. 

Color Palette 

Another feature that we've used on client sites is the Color Palette API which allows you as many colors as you want from an image. For example, the Shedd Aquarium website that we built uses this feature by pulling a vibrant color from the image and setting it as the background color for the page hero. Aside from taking the manual work out of closely aligning photography with a page’s design, there’s an additional benefit: if you are on a slow connection, you will see a dynamic colored banner at the top before the image loads.

Image Upscaling

Another valuable feature is the ability to upscale images. Even if you upload an image that is low resolution, it can still be used at a higher resolution. This is especially useful for e-commerce sites or applications where users are uploading their images.  The upscale feature uses Generative AI to take a pixelated image and create a higher-resolution image. The final image will not be perfect, but it looks more professional. See the upscale demo on imgix.

Non-upscaled image
Upscaled image using Imgix

PDF Preview Images

There is also a PDF page to image option in imgix. The API enables the generation of a page-specific image preview from the PDF, which can serve as both a thumbnail and a full-size preview. When we built AHIP.org, they had a resources section for their members containing quite a few PDFs. To help with clarity and findability, we used imgix to show previews of the PDF documents to non-members. This feature allows AHIP to upload resource PDFs without having to also upload any thumbnail images. 

Face Detection

Another nice feature is a face detection parameter that you can pass to the API. This allows you to upload a photo and no matter the cropping or size it will keep the face as the focal point of the image. We used this feature on NEA for their team member page. It's great for user profile images that are used in different contexts throughout the site. 

Video Streaming

Videos have become a key design element on websites. However, determining which service to use for embedding those videos is an ongoing topic of discussion. Video platforms enable you to integrate the video onto the page, yet they introduce scripts that may impede page loading speed. Imgix offers a video embed service that allows content managers to keep all the images and videos in one place. The videos are automatically encoded to Adaptive Bitrate Streaming to get the best compression and video quality. So, videos load fast and look great on mobile and desktop. 

Imgix Video API with Adaptive Bitrate Streaming

Performance 

A lot of CMSs have image transformations built in. An image transformation encompasses everything for that image including responsive sizes, cropping, resizing, and face detection from the original. This is great for small sets of images, but transformations quickly get out of hand the more images there are on a site. For example, the homepage of the National Park Foundation has a minimum of 96 image transformations. 

Processing all of those image transformations uses a lot of server resources. Imgix saves the images and delivers them through their CDN. The imgix image CDN has an average of 0.15 milliseconds return on requests which enables images to load as quickly as possible. The CDN also caches the images on CDN edge nodes making them immediately available for future requests. 

Flexibility

Imgix is flexible enough to work with almost any site structure; including WordPress, Craft CMS, Shopify, React, Ruby on Rails, Python, and more (see the full list). So, whether a site is a WordPress site or a Rails application, imgix fits right into the ecosystem. And, even better: you don’t have to rebuild your web app or website to gain the benefits of image performance, which can save you a lot of time and money.

Setting up imgix on an existing website is easy. Imgix can connect to existing asset storage sources like AWS, Azure, or a web folder on the same domain. Once the image source is set up, a developer can start passing parameters to the API

Cost

Imgix is free for 1,000 images which makes it easy to integrate and grow with your site. Pricing goes to $750/yr for 5,000 images and $3,000/yr for 25,000 images. In their pricing structure, “images” are categorized as origin images, so the count only includes original images and not transformed ones. So, you could have hundreds of images and thousands of image transformations all being delivered through a CDN for free.

Conclusion

Ensuring fast site speed isn't just important. It is vital. It's the cornerstone of a successful online presence, directly influencing search engine rankings, user satisfaction, and ultimately, your return on investment. Properly sized and optimized images are key to ensuring your site loads quickly and displays correctly for users across various devices.

We have found that imgix enables our team to efficiently create projects with diverse image options, saving managers and developers valuable time. Our clients benefit from reduced server space and an increased site speed. Imgix’s API is comprehensive, so you can use one tool for all features and options around site images — from cropping and resizing to face detection and automated color palettes, to video and beyond. Having used imgix for the past five years to support the wide-ranging needs of our clients, we feel confident recommending it and using it again and again. 

Users expect a website to load fast, and imgix is a reliable way to make sure that happens. 




ge

10 Things I Learned in My 10 Weeks at Viget

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 cycle

Going 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 history

During 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 DevOps

Nevin 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 teams
  • Making sure teams continue collaborating
  • Ensuring deployments are quick and reliable

I 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 clients

At 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 accessibility

Nathan 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 speaking

When 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 JavaScript

Going 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 Rails

For 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 Tailwind

Being 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 React

Chris 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.



  • Code
  • News & Culture
  • Back-end Engineering
  • Internships and Apprenticeships

ge

Evolving Traditions: 15 Years of Viget Internships

This week we will bid farewell to our fifteenth cohort of summer interns. Ciel Park (UI Developer Intern), Faye Stover (Product Designer Intern), and Paul McKissock (Application Developer Intern) joined our team ten weeks ago and have been hard at work learning and growing, teaching and sharing, and iterating ever since – and so have we. 

Viget’s 15th Summer Internship Cohort: Faye Stover, Paul McKissock, Ciel Park (left to right)

At Viget we are committed to fostering curiosity and drive both for budding engineers and designers but also for our team of full-timers who are eager to learn themselves and flex their mentorship muscles. As we’ve shared over the years, the internship is one of our favorite traditions and while a lot has changed in fifteen years, that commitment remains the same. 

Here’s a quick look at three core aspects of the Viget internship that remain flexible. 

Cohort size and available roles.

We are not married to a specific number of interns. We recruit for and match interns with available mentors who serve as our interns’ dedicated advisors.

Working location. 

This summer our interns primarily worked from our Falls Church, Virginia headquarters. We required interns to work in the office for the first three weeks of the program and the last. During weeks four through nine they were able to work remotely two to three days a week. In the past the internship has been fully in-person and fully remote

Cross-discipline internship project. 

Interns can expect cross-discipline collaboration during their time at Viget but how exactly that takes shape remains flexible. In years past interns spent 8 weeks coming up with, designing and building a working product. This year, with our smaller cohort of interns, we opted for a smaller approach to the group project. The project was pre-defined, scoped by our advisors, and happened over just two short weeks.   

Earlier this summer we hosted an internship alumni panel and invited Hayley McMillon (2022 Summer Cohort), Andrea Brucculeri (2019), Gabriel Kay (2019), and Vigenesh Gopalan (2018) to discuss lessons learned at Viget, life after Viget, underrated skills worth developing, tips for remote collaboration and more. The event was open to all and both current staff and other alums sat in on the moderated panel discussion. It was awesome, and everyone – long-timers and interns alike – left feeling inspired. This is my favorite aspect of the internship, our alumni network, and how our interns graduate to be active contributors.

Summer 2024 Internship Alumni Panel

I’m looking forward to staying in touch with Ciel, Faye, and Paul and I cannot wait to see all the wonderful things they accomplish. 

Does this sound like an experience you want to be a part of? We’ll host our 16th cohort of college students and recent grads next summer. Bookmark our internship page to keep an eye on future opportunities. 



  • News & Culture
  • Internships and Apprenticeships

ge

Motion Magic: Project Insights From My Viget Internship

When we open an app or website, we do so to accomplish a task or find information. A well-designed user experience ensures users can achieve their goals efficiently. But what keeps us engaged beyond basic functionality? What differentiates a mundane interface from an exciting one? In my opinion as an up and coming UI developer, one key element is motion.

During my summer internship at Viget, I had the opportunity to dive deep into the world of agency work. From getting the chance to contribute to client sites to participating in a hackathon and pursuing a personal project, I seriously leveled up my stack and gained valuable development experience. Not to mention the amount I learned from exceptional, dedicated mentorship and micro-classes on everything from React to SQL to business models. 

However, coming into the internship, I had the specific goal of learning how to add motion to my web projects. I walked in on day one with no idea where to start, and now I’m leaving my last week with a complex knowledge of Rive, canvas elements, JavaScript animation, GSAP, and more. Here’s how… 

Spinet

In this two week hackathon project, I worked alongside Faye and Paul, the Product Designer and App Developer interns, to create a spinning wheel name picker. During the first week, I took on branding and visual design work. 

I spent the second week implementing wireframes. Through this project I learned how to transform client specifications into design directions, a style guide, and ultimately, UI components.

For this app, the motion of the spinning wheel was critical to the experience. Initially, client feedback indicated that the spin felt too uniform. I adjusted the motion parameters by extending the slowdown time and changing the easing function from linear to cubic, which increased feelings of suspense at the end of the spin animation. 

To add a level of joy and celebration to the winner announcement popup at the end of a spin, I incorporated confetti animations. In doing so, I discovered the world of JavaScript animation libraries that make implementing animations as easy as simple as adding the script to my HTML and adjusting the timing and placement of the animation object. Finally, we had ultimately decided on a modern, clean-cut video game aesthetic for the branding, and pulled this in through inspired sound effects, the logo design, and a 3D button component with a click animation accomplished entirely through Tailwind. 

Luna chatbot

After the hackathon, I got the chance to work on a personal project of my choice: an AI mental health chatbot inspired by tools like Woebot and EarKick. I was motivated by the question of what could make conversational AI feel less intimidating and more empathetic. My answer was an AI support companion with an animated avatar to enhance feelings of emotional connection and understanding. 

To get started, I experimented with various chatbot APIs and found that the Llama3 model was the best at following system prompts and offered the most natural interactions. A huge part of this project was the chatbot’s expression animations. I surveyed several popular tools and found Rive was the best fit for this, offering intricate animation capabilities, easy web integration, and a state machine for managing overlapping states and complex transitions.

The first step of animating in Rive is to create a design. Luckily, Rive has a vibrant open-source community, and I learned a lot from examining and remixing community files. The second step was learning to create the animations themselves. This was my first time animating anything, but the concept of keyframes was relatively intuitive, and the UI reminded me of video editing software, like iMovie, I’d used in the past.

The third and most challenging step for me was making all the animations work together in a state machine. 

This is the logic that connects animations together, taking input values that determine when to transition between states. Getting smooth animations between emotional states required a lot of rewiring and experimenting. Finally, embedding the Rive file in my project and linking the emotion data from API responses to the animation inputs was relatively straightforward using vanilla JavaScript. 

In conclusion

Animations, whether simple or complex, add a layer of interactivity and visual interest to digital products. Over a short 10 weeks, my internship projects allowed me to explore UI development, modern animation tools, and motion using CSS and JavaScript.

If you’re interested in bringing ideas to life and sparking joy through motion design, then diving into a passion project, seeking inspiration from the community, and exploring tools like Rive and GSAP will definitely kickstart your journey!



  • Code
  • Internships and Apprenticeships

ge

Craft 5: What It Means For Super Table Page Builders

If you’re like us, you’ve likely built ‘page builder’ fields in Craft CMS using Matrix. But sometimes you need more than a block. We use Super Table to create ‘page sections’ that include some extra settings (like background color, controls for width, etc.). We can then nest a Matrix field to control page blocks within the Page Section (Super Table). This has worked well for us in the past but there's a new, simpler way to achieve this starting in Craft 5.

Upgrading a site from Craft 4 to Craft 5 can seem intimidating. Even more so when your site relies on complex content models like the one I described above. You might think, okay I'll upgrade to Craft 5 and then look into migrating to the newer method in the future. Well, now is the time. Verbb has announced that Super Table has reached end-of-life.  While there is a Craft 5 compatible version available, it won't receive updates. That means now is the perfect time to migrate your Super Table fields to native Matrix fields.

Craft 5 makes the process easy by converting Matrix blocks to entry types automatically during the upgrade. This guide will walk you through the process. We'll cover preparation, the upgrades themselves, and steps to clean up afterward. As you’ll see below, the process is actually quite simple and nothing to stress over!

An example page builder using Super Table with a nested Matrix in Craft 4

Preparing for the Upgrade

The first step in any upgrade is preparation. Start by backing up your site’s database. This ensures that you can restore your site to its previous state if anything goes wrong during the upgrade process. We use (and love) DDEV here at Viget, so this guide will be leveraging it. But you can easily adapt the commands if you are not. To create a database backup, run:

❯ ddev snapshot

Next, review the compatibility of your installed plugins. Check the Plugin Store or the author’s site to confirm that each plugin has a Craft 5 compatible version. Make a list of any plugins that need updating or replacing. Super Table will need to be updated to at least version 4.0.0.

It's also essential to familiarize yourself with the Craft 5 Upgrade Guide. This guide provides detailed information on the changes, new features, and potential breaking changes in Craft 5, helping you understand what to expect. It serves as a fantastic set of instructions to get your site upgraded.

The Upgrade Process

Once you're prepared, you can begin the upgrade process. Per the Craft Upgrade Guide, we will update Craft and plugins at the same time. Open your editor and modify your composer.json with the new versions of your plugins. The two for sure we will need to modify are:

"craftcms/cms": "^5.0.0",
"verbb/super-table": "^4.0.0",

After you've checked all your versions and are ready to proceed, run:

❯ ddev composer update

This command will update Craft (and its dependencies) and all your plugins to the latest version compatible with Craft 5. After updating, you need to run the database migrations to complete the upgrade. This can be accomplished by running:

❯ ddev craft up

During this upgrade process, Craft 5 automatically converts all of your existing Matrix blocks to entry types. This conversion requires no interaction from you, streamlining one of the most complex aspects of the upgrade. After it’s finished, all of your non-reusable matrix blocks are now their own reusable entry type.

Craft 5 automatically converted the matrix blocks to their own entry types

Updating Super Table Fields and Templates

With the Matrix blocks converted to entry types, you need to reconfigure any Super Table fields to be Matrix fields.

Update Super Table Fields:

  • Browse to SettingsFields and edit any Super Table fields
  • Change the field type from Super Table to Matrix (there will be no content loss when switching from Super Table to Matrix)
  • Select the entry type to use (Craft has already created one for you)
  • Save the field
  • That's it!
Changing the field type from Super Table to Matrix (with no content loss)

Review Your Templates: #

  • If you've been working with Super Table content as part of entry queried data, you may not need to make template changes at all

  • Search your templates for craft.superTable to find any direct queries of Super Table blocks and replace them with entry queries


At this point, you have removed your dependency on Super Table and have a page builder entirely built with Matrix fields. What were previously Super Table blocks are now a custom Entry Type and what were Matrix blocks are now also Entry Types. This allows you to have nested Matrix within Matrix thanks to Craft’s Entrification plan.

A nested Matrix in Matrix page builder at last!
Our page builder looks just like before, only now it adds entries instead of blocks

Cleaning Up After the Upgrade

After updating your fields and templates, it's time to clean up. First, uninstall the Super Table plugin. Navigate to SettingsPlugins in the Control Panel to uninstall the plugin. Then remove it from your project by running:

❯ ddev composer remove verbb/super-table

Thoroughly test your site to ensure everything is functioning correctly. Pay close attention to the entry types where you used Super Table fields, confirming that authoring and your front-end work as expected.

Additionally, you can also take this opportunity to clean up your fields and entry types. Craft 5’s reusable fields and entry types give you ample opportunity to consolidate and Craft 5 provides new utilities to make this process as simple as possible.

  • fields/auto-merge — Automatically discovers functionally identical fields and merges their uses together.
  • fields/merge — Manually merge one field into another of the same type and update uses of the merged field.
  • entry-types/merge — Merge one entry type into another and update uses of the merged entry type.

That’s it!

Upgrading from Craft 4 to Craft 5 and transitioning from Super Table is incredibly simple, thanks to Craft 5’s automatic conversion of Matrix blocks to entry types. Super Table will no longer be maintained moving forward, and it's better to switch to the native Craft solution for better long-term support. By following these steps, you can quickly tackle the change and take advantage of the new features and improvements in Craft 5. With careful planning, thorough testing, and a few commands, you’ll have your page builder working again in Craft 5 in no time. Happy upgrading!




ge

Agency Partnerships: A Rising Tide Lifts All Boats

For agencies like ours, success doesn’t come from being an expert at everything—a big part of it is complementing our expertise and working hand-in-hand with like-minded partners who share our values and standards.

These partnerships haven't just boosted what we can do, they've created opportunities for us to engage with new clients. Here's how these collaborations have made us—and our partners—stronger:

  1. Incremental Value: We have a deep respect for expertise. We believe If you try to be an expert at everything, it’s difficult to be exceptional at anything. By teaming up with partners who bring different skills and services to the table, we get access to all sorts of proficiencies we wouldn't have on our own, adding value to prospective and existing clients. Instead of “That’s not our area of expertise”, now it’s “Yes, we can help with that.” These alliances empower us to deliver a higher level of service and comprehensive results for our clients.
  2. Mutual Scalability: Sometimes, there’s a ton of demand for what we do, and it's hard to keep up. Strategic partnerships mean we can call in reinforcements when we need them. By tapping into our partners' talent pools, we can handle even the most time-sensitive client demands without sacrificing quality or speed. And it’s mutual. When our team has time available, we are the reinforcements instead.
  3. More Leads, More Growth: In a crowded market, having a steady stream of clients is crucial. Naturally, every knock on our door can’t be a great fit. Through our partnerships, we've built a network of agencies that share our values, quality standards, and culture. By working closely together and passing leads back and forth, we've created a symbiotic ecosystem where projects flow smoothly, keeping all of us busy and growing.
  4. Reaching New Frontiers: Exploring new markets or industries can be risky, especially if you don't know the terrain. That's where partnerships come in handy. With an experienced partner on your team, it cracks open a door to reach new customers that may have otherwise been too difficult to open on your own. By teaming up with others who know the ropes in different areas (e.g. machine learning, hardware prototyping, reputation management, etc.), we can expand our reach, and establish ourselves in new segments with confidence.
  5. Getting Creative Together: Innovation flourishes when different minds come together under a set of constraints. By teaming up with partners who bring fresh ideas to the table, whether through smaller things like adding feedback to a partner’s open-source library, or bigger things like discussing AI’s impact on the web, we create a space where new approaches can flourish. (And, well, it’s our namesake after all).
  6. Professional Development: Values like “learn & grow” are part of a rewarding career at Viget. The symbiotic ecosystem created in our partner network provides opportunities for knowledge sharing. Partners help us solidify new skills including teaching others. Our own expertise shared with our peers gets reciprocated—each agency broadening the other’s horizons and leveling up one another’s teams. 

In the end, strategic partnerships are an important ingredient in our recipe for success. They give us access to all sorts of perks we wouldn't have on our own, and they help us build a community of successful agencies and contractors who all value the power of teamwork. 




ge

What Is Silica Gel? How Does It Work?

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




ge

RIP a Livecast #652 – Get a Good Spin Going

We kicked things off on the final Livecast of 2021 with Sid telling a scary story about his mother. Rob tells the latest stories of geriatric interactions at his Russian […]



  • RIP a Livecast

ge

GENE SIMMONS Says VAN HALEN "Destroyed" BLACK SABBATH On Tour: "Tony Iommi Admitted It, And So Did Ozzy"

There will never be another Eddie Van Halen.




ge

Cocktails with Don Draper, Dinner and Drinks at Oakland’s New Mid-Century Modern, Bardo Lounge and Supper Club

If, like me, you are a fan of all things mid-century modern, then you won’t want to miss Oakland’s newest Lakeshore addition, Bardo Lounge and Supper Club. Like a vintage trip with Don Draper back in time, you’ll enjoy all the little touches that make for a perfect night out for some excellent cocktails along …




ge

Gardeners and Climate Change

Courtesy of Climate Nexus Gardening is a beloved hobby for millions of people across the country. Whether motivated by healthy outdoor exercise, the satisfaction of eating delicious home-grown fruits and veggies, or the artistic pleasure of a beautiful flower arrangement, … Continue reading




ge

Indigenous Farmers Practice the Agriculture of the Future

By Leaiman Yes! Magazine Affectionately called “Professor” by his neighbors, Josefino Martinez is a well-respected indigenous farmer and community organizer from the remote town of Chicahuaxtla, in the Mexican state of Oaxaca. He watched with patient attention as I showed … Continue reading




ge

For Generations Meiji Jingu Forest

In the heart of Tokyo nearly 100 years ago – in 1920 to be exact – more than 100,000 young volunteers planted 100,000 trees donated from all parts of Japan, to create a sacred forest for the new Meiji Shrine – a … Continue reading




ge

Lingerie Shoot – 140524

Not long ago I did a lingerie shoot with an anonymous model. I’ve been given permission to share these photos. I hope you enjoy them! Please don’t hesitate to comment!




ge

Redesign of Stavanger Golf Club Website ????️

I’ve helped Stavanger Golf Club through the years with webdesign and admin, and it was due for a refresh. I decided to try a no-code approach with WordPress. I first designed the site in UXPin (see version here), and then installed a fresh Local install of WordPress to get started. I used Astra theme along…




ge

Fishing in ???????? Suldalslågen

This summer, we had the opportunity to take two trips to Suldal in Norway. Suldal is known for having some of the biggest wild salmon in the country, with average weights often exceeding 10kg. Our first trip was in July, when we fished in Sandsfossen. The fishing in this area was fantastic, and we were…




ge

15 Best WordPress Plugins for Sidebars and Widgets

Are you looking for the best WordPress plugins for your site’s sidebar and widgets? Most website owners use sidebars mainly for 2 purposes: That said, there are so many ways to get creative with these areas to improve user experience, add SEO elements, and make your site’s design more appealing. Check out how WPBeginner uses […]

The post 15 Best WordPress Plugins for Sidebars and Widgets first appeared on IsItWP - Free WordPress Theme Detector.




ge

Follow up on WordPress plugin changelogs

Following up on the WordPress weekly, and the final topic of discussion; changelogs and implementing them into your plugins. Now a plugin, shows the changelog in your plugin page...

The post Follow up on WordPress plugin changelogs appeared first on WPCult.




ge

Guide to Building a Pinterest Presence for Bloggers

Introduction Why Pinterest Deserves Your Attention Now, let’s talk numbers—impressive numbers. With over 450 million active dreamers and doers, Pinterest is not merely thriving; it’s bustling with opportunity. For the astute blogger, these aren’t just stats—they represent a bustling metropolis of potential readers, engaged followers, and eventual customers. Each user is searching, planning, and ready […]

The post Guide to Building a Pinterest Presence for Bloggers appeared first on WPCult.




ge

WordCamp comes to Los Angeles

Another WordCamp has arrived at my doorstep, this time I am the organizer of the event. So if any of you WordPress fans are in the greater Los Angeles area, or within a 200 mile radius I suggest you get you fingers type or click on this link. For more info I suggest heading over […]

The post WordCamp comes to Los Angeles appeared first on WPCult.





ge

Get Large with iOS 6

Operating system is the software that helps computers or mobile devices to run smoothly. iOS on the other hand is the mobile operating system that has been made particularly by Apple and it is applicable only for the iPhone, iPad and other related devices. It was first introduced in 2007 and with time Apple kept […]

The post Get Large with iOS 6 appeared first on WPCult.





ge

Getting To The Bottom Of Minimum WCAG-Conformant Interactive Element Size

WCAG provides guidance for making interactive elements more accessible by specifying minimum size requirements. In this article, Eric Bailey discusses the nuances of interactive element sizes and clarifies what it looks like to provide accessible interactive experiences using WCAG-compliant target sizes.




ge

Integrating Image-To-Text And Text-To-Speech Models (Part 1)

Joas Pambou built an app that integrates vision language models (VLMs) and text-to-speech (TTS) AI technologies to describe images audibly with speech. This audio description tool can be a big help for people with sight challenges to understand what’s in an image. But how this does it even work? Joas explains how these AI systems work and their potential uses, including how he built the app and ways to further improve it.




ge

Pricing Projects As A Freelancer Or Agency Owner

Discover effective pricing strategies for digital projects. Learn how to balance fixed pricing, time and materials, and value-based approaches while managing client expectations and scope creep.




ge

Regexes Got Good: The History And Future Of Regular Expressions In JavaScript

Although JavaScript regexes used to be underpowered compared to other modern flavors, numerous improvements in recent years mean that’s no longer true. Steven Levithan evaluates the history and present state of regular expressions in JavaScript with tips to make your regexes more readable, maintainable, and resilient.




ge

Generating Unique Random Numbers In JavaScript Using Sets

Want to create more randomized effects in your JavaScript code? The `Math.random()` method alone, with its limitations, won’t cut it for generating unique random numbers. Amejimaobari Ollornwi explains how to generate a series of unique random numbers using the `Set` object, how to use these random numbers as indexes for arrays, and explores some practical applications of randomization.




ge

Integrating Image-To-Text And Text-To-Speech Models (Part 2)

In the second part of this series, Joas Pambou aims to build a more advanced version of the previous application that performs conversational analyses on images or videos, much like a chatbot assistant. This means you can ask and learn more about your input content.




ge

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.




ge

Designing For Gen Z: Expectations And UX Guidelines

There are many myths revolving around Gen Z and how they use tech. Time to take a look at actual behavior patterns that go beyond heavy use of social media. Part of [Smart Interface Design Patterns](https://smart-interface-design-patterns.com) by yours truly.




ge

Website Inspiration: NYC condo & co-op budgeting guide

Clean landing page (built with Webflow) helping condo and co-op board members learn about and prepare their building budgets. Worth noting this is a perfect example of a targeted landing page providing value, within a bigger website. The larger service being Daisy, a modern property management company Full Review




ge

Urging Multi-Pronged Effort to Halt Climate Crisis, Scientists Say Protecting World’s Forests as Vital as Cutting Emissions

By Julia  Conley Common Dreams “Our message as scientists is simple: Our planet’s future climate is inextricably tied to the future of its forest.” With a new statement rejecting the notion that drastically curbing emissions alone is enough to curb … Continue reading




ge

Humanity ‘Sleepwalking Towards the Edge of a Cliff’: 60% of Earth’s Wildlife Wiped Out Since 1970

By Julia Conley Common Dreams “Nature is not a ‘nice to have’—it is our life-support system.” Scientists from around the world issued a stark warning to humanity Tuesday in a semi-annual report on the Earth’s declining biodiversity, which shows that … Continue reading




ge

Kluge Interactive





ge

Geckoboard





ge

WhitePage





ge

Juste avant l’orage

Ce midi à St-Donat, le ciel se métamorphose en un spectacle grandiose et inquiétant juste avant la tempête. Une masse nuageuse imposante et tourmentée envahit le ciel, ses volutes sombres contrastant violemment avec les champs verdoyants en dessous. Les nuages, lourds et menaçants, semblent presque toucher les collines, créant une atmosphère à la fois dramatique...




ge

Paysage rural automnal à Padoue

Cette image aérienne capture un paysage rural baigné de lumière, où les vastes champs verts et dorés s’étendent à perte de vue, ponctués par quelques fermes et des routes sinueuses. À l’horizon, les collines se teintent des couleurs flamboyantes de l’automne, un dégradé de rouge, jaune et orange contrastant avec l’azur éclatant du ciel. Des...




ge

Solar Surges: Renewable Energy Jobs Topped 8 Million in 2015

By Andrea Germanos Common Dreams On the heels of clean fuel milestones in Germany and Portugal , a new report finds that the renewable energy industry employed over 8.1 million people worldwide in 2015. According to the International Renewable Energy … Continue reading




ge

Leonardo DiCaprio Premiers “Before the Flood” Climate Change Documentary

Environmental activist and Academy Award®-winning actor Leonardo DiCaprio and Academy Award®-winning filmmaker Fisher Stevens premier their documentary film, Before the Flood, a compelling account of the powerful changes occurring on our planet due to climate change. Before the Flood will … Continue reading




ge

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




ge

2023: A Year of Challenges

As has become my ritual, I’m spending December 31 reflecting on everything that happened throughout the year. Then, I’ll spend the night hunkered down with the kitties, safe from the pops and bangs at midnight. 2023 has most definitely been a challenging year. So challenging that I failed to write…




ge

Over Twenty Years Together

November would’ve made 21 years. Smeagol was with me for over half my life, and pretty much my full adult life to this point. He was with me as I fell in and out of love who knows how many times over the years. He was with me as I…




ge

Heritage Staffers Think Lying to Voters is Hilarious

Tweets are flying around X about how, actually, now that Donald Trump has won, Republicans can admit that Project 2025 really is the agenda. And the thing is, no one is laughing harder than the actual staffers at The Heritage Foundation. Sources told NOTUS that, in recent days, Heritage group chats have been filled with these sorts of tweets, celebrating how conservatives "tricked the Libs into believing Project 2025 wasn't real."




ge

Musk 'Efficiency' Effort So Unserious They Named It DOGE

President-elect Trump is appointing Elon Musk and Vivek Ramaswamy to lead an effort to cut government spending, eliminate regulations and restructure federal agencies. To give you an idea of how clownish the project already is, they're calling it the Department of Government Efficiency (DOGE). Dogecoin is the name of a cryptocoin created as a joke to mock crytocurrency speculation. People bought it for the lulz and it's currently worth 39 cents.




ge

The Best CorelDRAW Graphics Suite Discounts: Get 10 to 50% Off (2024)

Save money (10-50%) on CorelDRAW software with these top discounts, sales & deals. See the best CorelDRAW discounts & special offers on Graphics Suite & more.





ge

7 Best AI Image Upscalers to Boost Quality and Resolution

Discover top AI image upscalers to boost resolution and clarity without quality loss—perfect for designers, marketers, and content creators.