el

The Military’s “Uniquely Invisible” Injuries

A troubling report from the Pentagon earlier this year revealed that suicide is the leading cause of death for Army soldiers—a population that is nearly nine times as likely to die by suicide than in combat.  “Suicide in the military continues to be a public health crisis, despite decades of targeted interventions. The rates are persistently higher than in the general population,” says Jayna Moceri-Brooks, an assistant professor at NYU Rory Meyers College of Nursing who studies firearm injury prevention and suicide among service members and veterans.




el

How Can We Better Support the Mental Well-Being of Veterans Returning from Service?

Military service is difficult, dangerous, and demanding. But for some veterans, returning to civilian life can also be a challenge. Going from the structure of active duty—with its purpose-driven roles, full-throttle environment, and sense of camaraderie—to the relatively humdrum life of a civilian can be jarring, particularly for veterans who’ve experienced trauma during their service and may suffer from post-traumatic stress disorder (PTSD).  Researchers at Boston University, including Dawne Vogt and Casey Taft—both professors of psychiatry in the Chobanian & Avedisian School of Medicine—are utilizing a variety of data-backed strategies to support veterans struggling to adapt to their new normal lives. 




el

Chronic Brain Trauma Is Extensive in Navy’s Elite Speedboat Crews

The pounding that sailors’ brains take from years of high-speed wave-slamming in the Special Boat Teams can cause symptoms that wreck their careers — and their lives.




el

10 Excellent WordPress Themes for 2024

There is certainly no shortage of excellent WordPress themes you can select from to help you create an engaging and high performing website. Finding the best one for the job would most certainly be a challenge as there are literally thousands of great WordPress themes available plus you’ll have to define just what the makeup […]




el

10+ Excellent Web Design Tools & Resources to Use in 2024

It’s a New Year, but one thing hasn’t changed. The number of web design resources and tools just keeps on increasing. That’s a good thing. But it does make it that much more difficult to find a theme, plugin, or resource you really have a need for if you are to stay abreast of or […]




el

Can Ritalin Help Mitigate Brain Injury Symptoms?

Learn about the risks and benefits of taking Ritalin after a brain injury.




el

Testing Brain Injury-Related Vision Issues with People Who Can’t Communicate

How do you test the vision of someone with TBI who cannot communicate — talk or respond otherwise to questions?




el

What Is the Ideal Timeline to Do MRIs, fMRIs, DTIs, and Fiber Tracking to Diagnose TBI?

More than imaging, diagnosis of TBI is still based on the initial symptoms at the time of the injury.




el

Changes in Taste, Smell, and Hormones After Brain Injury

How and why does a TBI change a person’s ability to taste and smell, and cold hands and feet, too?




el

Can the Drugs Namenda and Aricept Help After Brain Injury?

Learn about the risks and benefits of these drugs for symptoms of brain injury.





el

Susan Meiselas awarded Sony World Photography Awards’ Outstanding Contribution to Photography 2025

In a significant recognition of her pioneering role in documentary photography, Susan Meiselas has been awarded the 2025 Outstanding Contribution to Photography by the Sony...

The post Susan Meiselas awarded Sony World Photography Awards’ Outstanding Contribution to Photography 2025 appeared first on DIY Photography.



  • news
  • Sony World Photography Awards


el

Eliminate Breathing Sounds and Mouth Noises

No matter how good your technical equipment might be, it is almost impossible to avoid capturing unwanted in-/exhaling sounds and mouth noises during voice recordings. After some users asked for an automatic removal of such sounds to improve the audio quality, we got to work and are now proud to present a major upgrade to our Denoiser, including the automatic removal of mouth noises and a new “Remove Breathings” option!
Check out our Audio Examples and the Getting Started Guide below.

What is new?

  • Remove Breathings: When the new “Remove Breathings” option is enabled, all the inhalation and exhalation sounds will be muted like all the other noises.
  • Eliminate Mouth Noises and Eating Sounds: With our upgrade to the Denoiser, we have integrated the elimination of all types of mouth noises, such as smacking, chewing and clicking. These sounds are set to silence in your output file.

Breath sounds are traditionally either manually silenced or removed via level-based gating algorithms using a pre-defined threshold to discriminate breaths from speech. However, depending on the speaker and recording setup, levels of speech and breath sounds may be very similar, making accurate breath removal difficult. If the threshold is set too low, some unwanted breaths may pass. Conversely, if the threshold is set too high, quiet speech may be unintentionally removed. In contrast to these traditional approaches, our new AI-based “Remove Breathings” algorithm is trained on a huge collection of breath sounds to automatically discriminate breaths from speech and to reliably remove the former while keeping the latter intact.

NOTE:
By default, mouth noises and breathing segments are muted but not cut. If you want to cut out all silent segments, just add the “Cut Silence” option for “Automatic Cutting” in the audio algorithms.

Audio Examples

1. Example: Breathing Removal

In our first audio example (Freak Show 136), a speaker breathes directly into the microphone, creating a Darth Vader-like effect. This heavy breathing is removed using the “Remove Breathings” algorithm and the Dynamic Denoiser:

Original:
Denoised:

2. Example: Mouth Noise and Eating Sounds Elimination

The following example is an excerpt from the Joe Rogan Experience #2054 where Elon Musk and Joe Rogan are eating pizza and talking about how terrible it is for the sound. Listen to how the chewing and smacking sounds are removed after processing with the new Dynamic Denoiser:

Original:
Denoised:

Getting Started Guide

For the Auphonic Web Service:

To remove breathing sounds in the Auphonic Web Service, simply create a production or preset as usual and check the “Remove Breathings” checkbox for “Noise Reduction” in the “Audio Algorithms” section.
“Remove Breathings” is only available for Speech Isolation and the Dynamic Denoiser, but NOT for the Static Denoiser.

For the removal of mouth noises, no special settings are required. Just enable the Speech Isolation or the Dynamic Denoise method for Noise Reduction.

For API Use:

To use “Remove Breathings” with the API, set the "denoisemethod" to dynamic or speech_isolation and the "debreath" flag to true, as in these two examples:

"algorithms": {
    "denoisemethod": dynamic, "denoiseamount": 100, "debreathamount": 100,
}

"algorithms": {
    "denoisemethod": speech_isolation, "denoiseamount": 12, "debreathamount": 100,
}

For more information about the API, please visit our API help page, where you will also find all other API Audio Algorithm Settings.

Conclusion

Breath and mouth noise removal is essential for podcasters, as it enhances audio clarity and ensures a more professional, polished presentation. By removing distracting sounds, you can maintain listener engagement and provide a seamless listening experience.

Anyway, we hope you enjoy the new features!
If you have any feedback for us on how the breath and mouth noise elimination is working for you, please feel free to contact us via email or directly comment in our production interface!







el

Signs You’re Putting Yourself Last (+ How to Fix It)

What if the secret to unlocking your best creative self was as simple as putting yourself first? There’s this catchy phrase in finance called “Pay Yourself First,” which means setting aside savings before paying any bills. But I believe this concept extends far beyond finances. When we’re constantly pulled in a million directions, learning to quote “pay yourself first” is a simple reminder: Don’t forget about you. Why We Feel Burned Out As creators, our lives are filled with endless projects, tight deadlines, and the constant pressure to innovate. It’s exhilarating but can also be exhausting. How many times have you put off the things you truly want to do—or need to do—for yourself until the end of the day when you’re already tired and wasted? We push ourselves to the brink, squeezing our passions and self-care into the leftover minutes of our days, and then wonder why we feel burned out, unfulfilled, or exhausted. Signs You’re Putting Yourself Last Let’s talk about the signs that you’re caught in this trap of self-neglect. Feeling constantly tired, even after a full night’s sleep, is a big one. Struggling to fall asleep or waking up frequently throughout the night might also ring...

The post Signs You’re Putting Yourself Last (+ How to Fix It) first appeared on Chase Jarvis.

The post Signs You’re Putting Yourself Last (+ How to Fix It) appeared first on Chase Jarvis.




el

Game-Changing Tactics to Elevate Your Status

In this episode, Professor Alison Fragale, an expert in organizational psychology, discusses the fascinating dynamics of power and status and how they shape our lives and well-being. We dive into the differences between power and status, why both are essential human needs, and how their presence or absence affects our mental and physical health. Professor Fragale shares actionable strategies to help anyone elevate their status, build influence, and navigate power dynamics with authenticity. We also touch on the challenges of gender and racial status, the importance of autonomy, and practical tactics like leveraging your network and social media to boost your influence. Some highlights we explore: The critical difference between power and status, and how both impact your life. Practical strategies for building influence and maintaining authenticity. The role of gender, race, and autonomy in navigating power dynamics. And more! Enjoy! FOLLOW ALISON FRAGALE: instagram | linkedin | website Listen to the Podcast Subscribe

The post Game-Changing Tactics to Elevate Your Status first appeared on Chase Jarvis.

The post Game-Changing Tactics to Elevate Your Status appeared first on Chase Jarvis.




el

The Secret to Lifelong Creativity (Hint: It Doesn’t End After Your 20s)

Creativity doesn’t expire. Chase Jarvis explains how to keep your creative spark alive, no matter your age or life stage.

The post The Secret to Lifelong Creativity (Hint: It Doesn’t End After Your 20s) first appeared on Chase Jarvis.

The post The Secret to Lifelong Creativity (Hint: It Doesn’t End After Your 20s) appeared first on Chase Jarvis.




el

How to Tell if Your Hard Work Is Leading to Gold

Is your hard work leading to success or fool's gold? Learn how to spot progress, push through mental barriers, and strike your own gold.

The post How to Tell if Your Hard Work Is Leading to Gold first appeared on Chase Jarvis.

The post How to Tell if Your Hard Work Is Leading to Gold appeared first on Chase Jarvis.




el

Data Cuisine: Barcelona

I am *ridiculously* excited to announce a new edition of data cuisine workshop. This time, it is the Data Cuisine Workshop Barcelona! The workshop is happening in coordination with CCCB, the Big Bang Data exhibition, and Sónar. For the culinary side of the project, we will collaborate with Sebastian Velilla — a chef who has […]




el

Data Cuisine Workshop Barcelona: The results

The Data Cuisine Workshop Barcelona was fantastic, we had a really great time. Big thanks to my collaborators Dr. Susanne Jaschko and Sebastian Velilla, thanks to Jose Luis de Vicente and Olga Subiros for bringing us over, and last but not least for our great participants for the crazy dish ideas they came up with! […]




el

OECD Regional Well-Being

OECD Regional Well-Being: A new site for the OECD, and once again with my great collaborator Dominikus Baur and some help from my friends over at Raureif. The site presents an exciting new perspective on more than 300 regions worldwide. As we all know, conditions inside a country can differ quite drastically, so going beyond […]




el

-ach, -ingen, -zell

If you travel across Germany, you will notice how some place name endings are quite universal, and others are quite specific, regionally. -ach, -ingen, -zell is a little exploration of those spatial patterns. It was a welcome opportunity to experiment with a few techniques I wanted to learn more about. Find the code with some remarks […]




el

Cross-Platform Development: Coding for Online Gaming on Multiple Devices

In today’s world of online gambling which is constantly changing, cross-platform development is essential for success. Players want to be able to play their favourite casino games on mobile phones as well as tablets or desktop computers but this presents [...]

Read Article

The post Cross-Platform Development: Coding for Online Gaming on Multiple Devices first appeared on CSS Reset.




el

Leveraging Automated Market Analyzers: A Developer’s Guide to Building Financial Tools with Web Technologies

Building financial tools has never been more accessible. With the rise of web technologies, developers can create powerful market analyzers that are quick, responsive, and packed with features that were previously only available to large trading platforms. Here, we outline [...]

Read Article

The post Leveraging Automated Market Analyzers: A Developer’s Guide to Building Financial Tools with Web Technologies first appeared on CSS Reset.




el

Free WordPress Theme – Travel Much?

Travelers and backpackers also need nice blogs so here is a new Free WordPress Theme dedicated to travel bloggers – Travel Much? This is a minimalist WordPress blog template that lets you highlight your beautiful holiday pictures and also post your experiences. The theme is built using Bootstrap and can be customized through WordPress’ native...




el

On Styled Form Elements

Anthony Colangelo makes the case for letting the browser and operating system decide how form elements should be styled:

Dropdowns and date pickers are just a sampling of the things that are better handled by systems themselves—a device will always be able to make better decisions about its use than the device-agnostic web.

The simplistic interactions of early input types gave us room to experiment, but the more complex interactions of modern fields leave little room for that. There’s only so much we can control before the browser and operating system take over, and then we’re at their whim. The web isn’t stopping any time soon—we’re headed for more complex input types with even less control exposed.

I agree. Trying to control form styling is a bit like trying to build sites for a specific set of screen widths. Yes, you can keep creating and managing more breakpoints, but you’ll always be fighting a losing battle because there will always be more screen sizes to design for. A better strategy is to choose a minimal amount of breakpoints to suit the content, and use a liquid layout to fill the rest. In the same way, browsers will always be evolving the implementation of their form elements, so trying to keep your own implementation consistent across all platforms will introduce an ongoing maintenance burden. Of course there will be cases where you have to implement your own styles – the form element you want may not exist, or may not be suited to your needs – but if there is no great need then it’s best to leave the specifics of form implementation to the browser.




el

Tobias Frere-Jones on Apple's Choice of Helvetica as a UI Typeface

Co.Design asked Tobias Frere-Jones of Hoefler & Co. to give his thoughts on Apple’s choice of Helvetica as an interface typeface for the upcoming OS X Yosemite update:

Despite its grand reputation, Helvetica can’t do everything. It works well in big sizes, but it can be really weak in small sizes. Shapes like ‘C’ and ‘S’ curl back into themselves, leaving tight “apertures”–the channels of white between a letter’s interior and exterior. So each shape halts the eye again and again, rather than ushering it along the line. The lowercase ‘e,’ the most common letter in English and many other languages, takes an especially unobliging form. These and other letters can be a pixel away from being some other letter, and we’re left to deal with flickers of doubt as we read.

This reminds me of what Erik Spiekerman wrote about Helvetica:

[Helvetica] really wasn’t designed for small sizes on screens. Words like milliliter can be very difficult to decipher. If you ever had to read or write a password with 1, i, l or I, you know the problem.

Still, I wouldn’t keep Lucida Grande for HiDPI displays. With a 2× resolution jump (4× pixels) pixel fitting becomes less of an issue, and pixel optimized typefaces like Lucida Grande begin to look crude in comparison with typefaces made primarily for print. Legibility obviously still matters just as much, but the choice need no longer be bound to fonts optimized for low resolution displays.




el

Beautiful Jewels Inspired by the Ocean

Mademoiselle Salty est une marque née dans l’esprit de Marion Ferrari, lors d’une année de vie en Indonésie. L’équipe derrière elle, liée par une passion de l’océan, du surf, des voyages, des bijoux et de la culture indonésienne, propose des bagues, colliers ou encore des bracelets et accessoires fabriqués à la main. Ces derniers sont […]




el

Constance Ephelia Seychelles

Découverte du plus grand hôtel des Seychelles, situé dans un domaine immense pour un séjour avec des activités variés. Membre de la gamme des hôtels Constance avec une forte réputation, cet établissement est adapté pour les familles et les couples avec le luxe de choisir entre deux plages et cinq restaurants. Plus de détails en […]




el

Timelapse Unveils the Sky Vault over the Joshua Tree National Park

Le court métrage “Moonlight Mojave” est un sublime timelapse pris dans le parc national de Joshua Tree, dans un paysage nocturne. Un ciel étoilé hypnotique se déploie au dessus du désert que la lune et les étoiles illuminent comme si c’était le jour. Le film fait partie du projet Skyglow, qui veut sensibiliser au problème […]





el

Beadme Jewelry

A friend of mine just setup an online shop to sell bead jewelry made with quality beads and silver. Below is a gallery of their products. Check out Beadme.ca to buy or see more. [nggallery id=15]




el

New Minimal & Responsive Theme Released at Themify

I just wanted to announce a new WordPress theme that I designed called Elemin. It is minimal theme coded with Google font, CSS3, Javascript and HTML5. The design is completely fluid and responsive (using CSS3 Media Queries). This means the layout automatically adapts based on the user’s viewport. To see it in action, visit the […]





el

How to hire a WooCommerce developer

Hire a WooCommerce developer who's reliable, affordable, & gets the job done on time. 4 ways to find the right fit. Here’s what to ask first.




el

Kellox and Maksimer: Speeding up 800,000 SKUs with WooCommerce

How one of Norway's largest importers migrated to WooCommerce and scaled an 800k SKU operation for a better user experience, performance, and results.




el

Ecommerce business models: Which is best for you?

Which ecommerce business model is best for your idea? Long-term and short-term strategies for operations, profits, and a successful launch.




el

What are digital products? How to sell them in 2024

Are digital products more profitable? How does inventory work? Examples you can start selling fast! The best tools to sell digital products.




el

Florida to Colorado with 4Runner and Liteboat Rowing Shell

In late November, I embarked on an 8-day trip from Colorado to Florida and back. The primary goal was to bring home a rowing shell and, of course, capture as many pictures and video clips as possible. I drove my […]







el

Nahel Moussi – Portfolio

Nahel Moussi is a Freelance Product Designer. Discover her work and get in touch if you want to collab.




el

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!




el

Self-Host Your Identity Provider with authentik

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!




el

Building Magic with Webflow: A UI Developer's Perspective

In the fast moving and constantly changing landscape of web development, codeless solutions like Webflow and Squarespace have emerged as an alternative to more traditional development. These platforms allow users to design and build websites through intuitive visual interfaces, and are viable solutions for many use cases out there. 

For the past several months, I've been working as a frontend development support specialist alongside one of our talented designers, Blair Culbreth, who is managing a large, established Webflow project. Here are my candid thoughts and impressions from this experience, along with some critical considerations for those looking to integrate Webflow into their own workflow. Spoiler alert: while Webflow has some impressive strengths, it also comes with limitations that can be both unexpected and frustrating at times.

What Webflow Does Really Well

Small Team Efficiency

Webflow truly shines for smaller teams or products, especially those with limited resources. For a team that’s just a single designer or a small development crew, Webflow can help lower the technical debt involved with getting a website to production. By mitigating some of the more complex aspects of development such as responsive design, cross-browser compatibility, and hosting, teams are able to focus on other aspects of the site. This makes it a strong option for startups, freelancers, or small businesses looking to create professional-grade websites efficiently and effectively without the necessity of a developer.

Animation Tooling

When I say professional-grade websites, I’m talking about more than just functional designs. Webflow has some fantastic animation tooling making it incredibly simple to build rich, full-page animations and interactions without ever touching a line of code. Users can create scroll-bound animations or interactive moments of joy all from the comfort of a relatively simple and straightforward GUI. Through the use of animation keyframes, you can elevate a static site into something that feels modern and expensive. Heck, I could even see using the animation tooling itself as a prototyping tool for design handoff in a more traditional web development process. This ability to easily add sophisticated animations allows smaller teams to produce polished, dynamic websites that rival those created by much larger teams with dedicated development resources.

Documentation & Education

Beyond its design capabilities, Webflow also stands out for its educational impact. The platform offers incredible documentation that covers core frontend principles, effectively bridging the divide between design and development. Through simple, digestible, and intuitive videos and written documentation, Webflow equips designers with knowledge that shores up many concepts and intricacies of web development.

Working with Webflow provides designers with numerous takeaways they can apply to future projects, including those outside the realm of Webflow. The platform educates users on HTML structureCSS styling properties, and responsive design. This deeper understanding of web development makes designers more versatile and effective in their roles and inherently benefits communication between designers and developers, as their thinking will be more aligned with one another.

Navigating Webflow’s Limitations

Class Styles

Webflow's class-based styling system is a standout feature, especially to those familiar with CSS. It allows you to bundle properties into classes and apply them efficiently across different elements, minimizing code duplication. When used effectively, this approach facilitates the creation of reusable styles and design systems; however, mastering it requires attention to detail, similar to working with CSS directly, which can be made challenging within the Webflow UI.

Due to the separation of pages and content in Webflow, tracking down existing CSS classes and applying styles consistently throughout a project can be challenging. Keeping track of which class names apply what styles can be a struggle. While Webflow offers a Style Manager to help organize and manage classes, it can be difficult to use for quickly identifying how styles are being applied across the platform.

Moreover, the inability to open multiple pages in designer mode at once presents a significant frustration. Without the ability to compare elements across different pages simultaneously, users may face challenges in ensuring consistency and troubleshooting design issues efficiently. This limitation may lead to a slower, more cumbersome workflow, particularly in larger projects where maintaining a coherent design system is critical.

Another struggle with managing styles within the UI comes in the form of applying styles to combo classes. Combo classes are when you combine multiple classes together to create a variation or modified state of an element. Inadvertently applying styles to a combo class when intending to apply a style for the base class was a common issue I found myself running into, highlighting some challenges users should be aware of, especially when getting more familiar with Webflow.

These challenges underscore the value of implementing a strong and consistent CSS class naming system, such as BEM (Block Element Modifier). Adhering to a standardized naming convention will help mitigate some of the challenges posed by Webflow's class-based styling system, but it does come with the added overhead of needing to learn a new class naming convention.

Preset Web Elements

Webflow provides users with a diverse selection of default web elements, ranging from simple divs to intricate lightbox elements, which serve as the foundational building blocks for websites. These preset elements occasionally impose rigid structural constraints. For instance, when attempting to create a tabs menu with a filter, users may encounter a problem with adding additional elements to the tab menu block. This restriction forces users to either conform their design to Webflow’s constraints or devise creative workarounds to achieve their desired functionality.

Navigating such limitations can be challenging, particularly when striving to realize a specific design vision. It may involve exploring alternative solutions or compromising on the original plan. Yet, as users gain familiarity with the platform, those limitations can be anticipated, allowing them to develop strategies to circumvent the constraints.

Custom Scripts

One of the most powerful aspects of Webflow is also one of the most challenging features to balance. It requires careful management to avoid issues like performance degradation and increased technical debt.  It’s incredibly easy to have a website get bogged down with bloat, especially when a larger team might be working on a project.

Webflow lacks a built-in feature to view all custom scripts at a glance, making it difficult to track and manage them. Maintaining a documented list of all custom scripts used in your project and detailing their purposes and locations can help mitigate this issue, but that’s a fair amount of overhead to maintain. Additionally, custom scripts do not function in Webflow’s editor mode, requiring a site deploy for testing and troubleshooting, which can be time-consuming. 

The ability to add custom scripts opens up a world of options, including third-party plugins and libraries that can expand Webflow's native features. Tools like Jetboost or Finsweet can help fill in the gaps, and are oftentimes worth the investment as they provide relatively easy-to-use integrations that will make for a better user experience.

That’s all to say that applying custom scripts to a Webflow project is not necessarily bad, but should be approached with considerations on how to mitigate technical debt. Here are a few suggestions to help with integrating custom scripts into your Webflow project:

  • Maximize Native Features: Use Webflow’s built-in features as much as possible. If a design can be achieved with Webflow’s interactions and animations, avoid adding custom JavaScript.
  • External Development: Develop and test scripts in an external environment to reduce time spent deploying and debugging within Webflow.
  • Reusable Components: Save frequently used custom code as reusable components to simplify maintenance and ensure consistency across the site.
  • Regular Audits: Periodically review and clean up scripts to ensure that only necessary ones are loaded, improving site performance and maintainability.

Mitigating Difficulty Through Teamwork

I started this article by mentioning that I recently served as a frontend development support specialist alongside our designer, Blair, on this project. Blair took on the primary responsibility of building many of the pages, and I want to share more about our collaborative experience. Webflow is as close as you can get to building a traditionally coded website without necessarily needing to touch code, but that doesn’t mean there’s no value in having someone more familiar with the technical side of website building available. From accessibility considerations to complex layout structures, a lot of time can be saved by having a developer serve as a pseudo consultant on the project.

On numerous occasions, Blair reached out to me to help set up more complex custom implementations that required JavaScript or weren’t coming together as expected. By being able to jump in and solve those issues quickly for Blair, she was able to focus on building out the other pages. Similarly, I was able to audit and review her work to ensure it was inclusive for all types of users.

There are various development tricks we can implement to enhance user experiences for visually impaired users. For example, hiding text specific to a screen reader to provide greater context is a technique that a designer might not generally think about or even be aware of, but a good frontend developer would know to include. By being involved in the building process, I was able to highlight and advise on such instances, ensuring our project was accessible and user-friendly for everyone.

Conclusion

Webflow presents a robust solution for web development, particularly for smaller teams or projects with limited resources. Its intuitive visual interface and powerful animation tools enable the creation of professional-grade websites without the need for extensive coding knowledge. Webflow’s educational resources also empower designers to deepen their understanding of web development, bridging the gap between design and development and fostering better collaboration.

Webflow is not without its limitations. The class-based styling system, while efficient, can be challenging to manage, and the need for site deployment to test custom scripts adds to both the complexity and time investment required to build a project. Despite these challenges, many of the difficulties can be mitigated through careful planning and teamwork. Leveraging native features, developing and testing scripts externally, and creating reusable components are all strategies that can help maintain site performance and manage technical debt.

Collaborative efforts between designers and developers can further enhance the process, as seen in my experience working alongside Blair. This teamwork allows for efficient problem-solving and ensures that accessibility and user experience are prioritized throughout the project. By combining the strengths of Webflow with thoughtful collaboration and strategic planning, teams can create dynamic, user-friendly websites that meet modern standards.




el

Handling Spelling Mistakes with Postgres Full Text Search

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.




el

Building Well-Connected Distributed Teams

Five years ago, without consciously trying, I would have noticed if a coworker was taking a break, feeling extra chatty, or looking hyper-focused. I got to choose whether to respond and how I might build rapport by responding (I’m sure I didn’t always get it right). Now that more of the Viget team works from home than in an office, I feel a loss. I have less awareness of other people's states of mind and fewer chances to demonstrate my interest. I need to learn new ways of connecting. 

I took notice when Adam Grant recently posted about pebbling

Sending memes, links, and videos to others isn't trivial. It signals that you're thinking of them and want them to share your joy. It's known as pebbling, based on penguins gifting pebbles to potential partners. Pebbling is an act of care. Every pebble is a bid for connection.” 

Grant acknowledges that the term "pebbling" comes from penguins, but he also uses the phrase “bid for connection,” which I associate with John Gottman. Gottman is a well-known psychologist who has researched marital stability and relationships. His work provides insights into how small interactions, or "bids," play a crucial role in building strong relationships. 

Gottman defines a "bid" as any attempt from one person to another for attention, affirmation, affection, or any positive connection. A bid can be as explicit as saying, “I had such a hard day,” or as random as saying, “Did you see the size of that red bird?” The impact of responding with interest (turning toward) or ignoring or dismissing (turning away from) significantly influences the quality of the relationship. A simple, “Tell me what happened,” or “What? No, I missed it!” can foster closeness and trust. Silence or something like, “Here we go again,” will spark feelings of neglect and distance.

Gottman's research is widely cited and has impacted my understanding of relationships.  I'm interested in bids for connection at work, particularly as our work environment has changed dramatically in recent years.

Connections at Work

Finding the right balance of work and non-work is a central challenge for most of us as we navigate demands on our time and energy. I generally hope work is a small enough part of a person’s life that they have time for many other things, but also that their work environment is engaging and meaningful enough that they enjoy it. I hope friendships emerge at work, mostly through collaboration or out of the gaps between responsibilities. 

As remote work has become commonplace, I find it’s harder to foster connections than it was before. The lack of proximity, and therefore organic social interactions, makes it harder for me to know my coworkers and be known by them. I’m not advocating for returning to offices. I’m noticing that after working with people for years in an office, I knew them better – their nerves before a presentation, their ability to set new people at ease, their grandma’s soup recipe, their knack for deadpan humor – and that made my life better. While many of my coworkers collaborate with each other daily through pair programming, design critiques, or iteration planning meetings, my work on a small People Team has always been less collaborative. For me, fewer organic in-person interactions means fewer interactions of any kind at work. 

The decline in ad-hoc opportunities for connecting impacts us all differently, but I am particularly interested because an aspect of my role at Viget is to nurture a strong company culture. For us that means a culture where we do excellent work, learn a lot, support each other, and – yes – make some friends. I’m looking for ways we can adapt our employee engagement efforts to the new work environment and evolve how we cultivate alignment.

The concept of "bids for connection" seems useful for understanding the building blocks of connection and, over time, friendships. As a mostly remote company, I want to be sure we’re asking: How do people make bids? How do others respond to them? What parts of the work environment encourage us to turn towards a bid? 

Bids While Distributed

There needs to be “space” for these interactions to happen across a distributed company, and we need to notice what is working and why. One opportunity for bids to play out is in recurring meetings. At Viget, we try to be efficient with our time, but we also build in time for informal interactions.  

Daily Stand-up Meetings

The discipline and project teams that do daily stand-ups are careful to keep them brief. These meetings need to be reliably quick-paced in order to fulfill their purpose. Still, without sacrificing efficiency, these meetings can spark strong bids for connection. Sharing work updates in small, daily increments encourages people to open up about specific elements of their progress. The specificity allows for connection in ways that broad strokes do not. Hearing someone say, “Progress was slow, but I’m finally done with the feature,” I might respond, “Oh, good.” But hearing someone say, “If I don’t figure out how to debug this API integration by noon, we need to update the launch timeline," gives me a chance to be curious, helpful, and invested in something very specific. 

Weekly All-Hands Meeting

Every Friday, our whole company meets for about an hour. The first 15 minutes are deliberately set aside for informal conversations and sharing, which mostly happens over Slack. We often play music or show a live stream of something noteworthy, like an eagle’s nest, to which we can react. Someone might share where they were when they first heard this song. Someone else might reveal they are an experienced falconer. The whole company gets a chance to see or hear these things, and while only a handful may react, we are all building shared awareness and memories.

Monthly Team Meeting

During a team meeting, a small group of same-discipline-peers comes together to talk shop, share lessons learned, or bond. These meetings allow for exercises that don’t scale to a whole company – like getting feedback or planning progress – and over time, certain activities can become team favorites. A monthly “rose, bud, thorn” or an annual “sharing circle” ritual prompts people to share in ways that otherwise might feel too awkward or vulnerable.

 

Another way to make and respond to bids for connection across locations is on Slack. Different kinds of Slack channels offer different kinds of opportunities.

Interest-based Slack Channels

At Viget we have channels like #woodworking, #sewing, #starwars, #hot-sauce, #gardening, #home-improvement, and many, many more. These types of channels allow people to go deeper than they might in more general channels. You know you’re talking to like-minded people, so why not dive fully into your opinion on robot vacuum cleaners?

"Random" Slack Channel

In our #random channel, I’ve seen everything from a heads up on free Firehouse subs to a recommendation for an estate planning system. The responses vary, too – sometimes they spark day-long conversations. At a minimum, posts will get a smattering of emoji responses and the impact can be significant. For example, a post might get a sympathetic :heart: but then a couple :same: or :it-me: come in and before you know it, there’s a subset of coworkers who realize they share the same rare phobia. I also think a share in #random can signal, “I’m between tasks. I’m open to distractions right now,” and folks can follow up with a DM.

Project-Specific Slack Channel

In channels where everyone is working on the same project with shared goals, stresses, and deadlines, we might see bids that build momentum. A PM might post something in the morning to encourage the team to rally behind a tough deadline. A designer might post mid-week, acknowledging the drudgery of certain tasks, implicitly giving everyone else permission to do the same. A developer might be slowly building a little arsenal of inside jokes and call-backs over weeks, dropping a note at just the right time to get others laughing. Someone might turn one of those jokes into a custom emoji that lives well beyond the project timeline and every time that inside-joke-emoji gets used, it's a bid for folks who worked on that team to recognize each other and reconnect. 

Recognizing Bids

We all grew up learning in-person social norms and have a mostly shared understanding of what’s considered warm, polite, stand-off-ish, or rude in the workplace. Now that we’re distributed, we may need to learn to recognize new signals and define new norms. 

A bid is an action that invites connection, but sometimes the action is so small, we might not notice it or realize it has potential value. Understanding the concept of bids can help us notice them and respond with more awareness. 

If we train ourselves to see bids for what they are and respond accordingly, we may get more mileage out of the limited impromptu interactions we have as remote coworkers. Actions like responding to an open-ended question in a Slack channel or acknowledging someone’s request for help during a meeting go a long way. Each response builds trust and camaraderie, even if in tiny doses. When a comment or question is ignored or dismissed, the negative effect is compounding; that person is less likely to reach out again.

Adam Grant said sharing memes and links are a way to invite someone to share in your joy.  At a distributed company, “bids” take a lot of different shapes, but they all communicate things like, “I am here,” and “let’s work together,” and “you can trust me.”

I’m encouraged to think we already have some infrastructure in place at Viget to support remote bids for connection. I’m excited to work with Aubrey Lear and others to find ways to evolve that infrastructure. We’ll continue to hire people who want to develop friendships with coworkers and who are willing to take personal responsibility for making and turning towards bids. Together, we can make sure Viget remains a great place to work as the workplace continues to evolve.




el

Founders Welcoming Business Partners

When Viget was founded in 1999, Andy and I used the title “Founding Partner.” We were founders of the business and also committed business partners. Within a couple of years, we switched to more specific titles: Co-Founder and President (Andy) and Co-Founder and CEO (me), but “business partners” was always the key structure.

We divided responsibilities of leadership, delivery, and operations in ways that optimized our different strengths and weaknesses. Key decision making has always been a collaborative process, with healthy debate between the two of us. I know some incredible solo entrepreneurs, but for us, having a partner to lean on, leverage, and grow with has been not only rewarding, it’s been essential to Viget’s longevity and success.

Also key to our success has been a founding principle of hiring incredible people who share our values and vision, value longevity and lasting relationships, and take pride in their work and careers. As they’ve joined, we’ve shared the opportunities and responsibilities that come with running a healthy business. Empowering others to lead key parts of Viget has taken us further than we’d ever gone otherwise.

Being owners and partners in the business has always been a privilege, an honor, and, at times, a stressful burden. When things go well – clients are happy, the team is gelling, the finances are solid – I’m filled with pride, satisfaction, and calm. When things aren’t going well – projects are sideways, turnover seems contagious, and the metrics point in the wrong direction – I’m filled with anxiety, frustration, and self-doubt. In either scenario, having a partner to navigate the waters with has been vital.

In recent years, three key areas of our business have matured thanks to the overall strength of our team and especially strong leadership. Our sales and marketing systems, tools, and strategies have fed a much more predictable revenue engine with great clients. Our client delivery processes and best practices have helped us consistently deliver value for our clients with more clarity, less risk, and better results. Finally, through some very challenging years in our industry, our culture has grown stronger and more adaptable, still centered on meaningful human connections at the core.

These three business areas have been led by Zach Robbins (sales and marketing), Kelly Kenny (delivery), and Emily Bloom (culture). They are the pillars upon which all other aspects of the business are built. These leaders have truly grown up with the business, having joined more than 13, 14, and 17 years ago, respectively. Their impact first as individual contributors, then managers, and eventually strategic leaders has been immeasurable.

Viget is coming up on a major milestone: we’ll soon eclipse 25 years since our founding on December 27, 1999. As Andy and I looked out at the next decade and beyond of our business, expanding our partnership became a clear goal. Embracing additional partners to not just lead their area of the business but to weigh in on all major decisions would help Viget continue to mature into the business we believe it can be. We saw an opportunity to invite others into the deep water of business partnership – the good, bad, and ugly – so that our shared decision making can be sharper, more insightful, and more strategic in the years to come.

At our fall retreat last week, we announced that we're welcoming Emily, Zach, and Kelly as partners at Viget. They’ve each been here for more than half of Viget’s history, each shaping Viget into what it is today. As partners, they’ll have even more influence as we take Viget into our second quarter century and beyond.



  • News & Culture

el

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