You're viewing an email archive of The Hustle newsletter. Join free to receive the 5-minute newsletter keeping 2M+ innovators in the loop.

👃 Digital scents, explained

The Hustle

Time to dust off that aloha shirt you haven’t worn in two years. We’re giving away four $3.5k vacation packages. Each winner gets a $1.5k American Airlines gift card and a $2k Airbnb gift card.

Enter the giveaway by sharing your unique referral link by tomorrow, March 4 at 11:59pm ET. Details below.*

In today’s email:

  • Smellable VR: How does scent fit into virtual reality?
  • Chart: The cost of plastics in clothing.
  • Baseball: The economics of canceled games.
  • Around the web: Free Blockbuster, book-writing tips, recipe swaps, and more cool internet finds.

🎧 On the go? Listen to today’s 10-minute podcast to hear about who’s suing McDonald’s for $900m, Fitbit’s recall of 1.7m watches, smelly VR, and more.

The big idea
smelling gif

Scent’s purpose in virtual reality

Digital scent tech has a long history of failures, from Smell-O-Vision to iSmell, an attempt to perfume the internet.

But what about VR, a medium designed for immersion? That’s what Vermont-based startup OVR Technology is all about.

Co-founder Aaron Wisniewski has a background in food science…

… and worked as a chef and sommelier before founding flavor and fragrance company Alice and the Magician in 2013.

He told The Hustle he was blown away by how real VR felt, but — given his background — the thing that was missing was smell.

How it works

OVR’s scent device, ION, straps to the bottom of any VR headset and connects via Bluetooth. It contains a replaceable cartridge that Wisniewski describes as “a salt shaker filled with scented liquid.”

In OVR’s demo, you can pluck roses and roast marshmallows. As you do, the device releases scent molecules. Smells intensify and fade with proximity to VR objects.

An engineering hurdle with similar devices has been the ability to create — and clear — scents without filling a room. OVR’s tech can do that, and the medium helps.

“VR or AR [are spatial technologies] that you can personalize. You can have 100 people having a different experience right next to each other,” Wisniewski said.

There are 3 main applications

Health and wellness: OVR’s meditation experience, INHALE, is being used at rehab and detox clinics.

Albert “Skip” Rizzo, Ph.D, director for medical VR at USC’s Institute for Creative Technologies, uses VR exposure therapy to treat PTSD in veterans, immersing them in war simulations to confront and reprocess memories.

Rizzo told The Hustle that because smell is connected to memory, “we theorize that it would add value to the already compelling audio-visual stimuli presented in VR.

Training: Field medics, who must learn to perform in stressful situations, might face bad smells like gunpowder, burning rubber, or bodily fluids.

Arts and entertainment: Games, theater, and storytelling. OVR recently partnered on “Shifting Homes,” an experience that explores storms exacerbated by climate change in Samoa.

Currently, ION isn’t available to consumers, but you might see it at festivals, pop-ups, and installations soon.

Fun fact: The Void — a VR attraction with touch, temperature, and scent — shut down amid the pandemic. But it might be coming back.

Share on Facebook Share on Twitter Send as email to a friend View on our website

Amazon may be opening grocery stores, but it’s closing all 68 of its Pop Up, Amazon Books, and 4-star shops in the US and UK. #ecommerce-retail

Survey says: A Pew Research Center poll found that 69% of Americans want to develop alternative energy over fossil fuels. #clean-energy

More human than human: Robotics company Sanctuary Cognitive Systems raised $58.5m to build robots with “humanlike intelligence” that can replace humans in dangerous tasks. #emerging-tech

Nvidia says a hacker is leaking proprietary info and employee credentials online. The chipmaker has been investigating the hack for several days. #privacy

Colorado is the 1st state to announce it will accept tax payments in crypto. The program is expected to begin this summer. #fintech-crypto

Big Tech vs. Russia: Google has dumped Russian state media from Google Play, while Dell and Apple halted sales in Russia. And that’s not all. #big-tech

Fashion’s Fault
women's clothing that contain new plastics

Singdhi Sokpo / The Hustle

Plastic looks great — but comes at a cost

There’s a good chance the clothing you’re wearing right now is made from plastic.

New plastics — including fabrics like polyester, nylon, and elastane — have soared in popularity with modern styles from athleisure to faux furs, according to Bloomberg.

The issue is that these materials are often blended. Recycling clothes is already hard, but recycling clothes with blends is even harder because you need to sort by material. One recent report found less than 1% of clothing marked for recycling is actually reused.

And in case you were wondering where most clothes end up, we’ve got you covered (and it’s not pretty).

Share on Facebook Share on Twitter Send as email to a friend View on our website
Free Resource

12 rockin’ resume templates for your next hunt

No need for you to make that from scratch. We’ve lined up some winners.

Maybe you’re about the DIY life. You know we respect that. But these templates are already so pristine and aesthetically pleasing that all that’s left is to fill in the blanks.

Download all 12 professional resume templates:

  • Templates fit for hustlers, strategists, specialists, whoever
  • Fully customizable to size, space, and color to your liking
  • Available on Google Docs/Slides + Microsoft Word/Powerpoint

Just add a mugshot, bio, and bullets. That’s a killer first impression.

12 gig-getting templates →
Pastime Problems
baseball graphic

The economics of canceled baseball games

Baseball may be a “national pastime,” but a favorite pastime of baseball is labor disputes.

Since 1972, there have been 9 instances of strikes or lockouts in Major League Baseball (MLB).

Most recently, on Tuesday, the MLB’s owners failed to reach an agreement with the players union, resulting in the cancellation of 91 games across the league.

And there are big implications

Baseball is a big business, with the average MLB team worth $2.2B. A lockout would affect everyone:

  • Players don’t get paid if games don’t get played. Collectively, players stand to lose ~$20.5m for each day that’s wiped off the schedule.
  • Teams: One estimate pegs the average revenue per MLB game at ~$4m across tickets, food, and merchandise.
  • Local businesses surround ballparks, and they’ll miss out on some of their biggest days of the year.

There’s also lost broadcast revenue and stadium workers that won’t get paid, among other things.

So what’s the hold up?

In short, players and owners can’t agree on things like a salary floor and the number of teams that make the playoffs.

Critics have been skewering MLB commissioner Rob Manfred for pushing a sport that’s already losing fans even closer to irrelevance.

Hopefully the parties can fix things before this pastime literally becomes a thing of the past.

Share on Facebook Share on Twitter Send as email to a friend View on our website

🏒 On this day: In 1875, the 1st indoor game of ice hockey was played in Montreal. Naturally, it ended in a brawl.

🥗 Useful: Trying to eat less meat? Having a vegan over for dinner? Use this site to turn any recipe into a plant-based one.

🦯 That’s interesting: 350+ blind people worldwide received a bionic implant from Second Sight that enables some vision. But what happens now that the company’s gone bankrupt?

📘 How to: A guide to writing a book. And then getting it published.

📼 That’s cool: Free Blockbuster is a network of free video rentals. Take a movie, leave a movie.

Meme of the day
VR meme

Source: imgflip

How did you like today’s email?

Get the 5-minute roundup you’ll actually read in your inbox​

Business and tech news in 5 minutes or less​


How'd Bezos build a billion dollar empire?

In 1994, Jeff Bezos discovered a shocking stat: Internet usage grew 2,300% per year.

Data shows where markets are headed.

And that’s why we built Trends — to show you up-and-coming market opportunities about to explode. Interested?

[email-submission-form button-text="Join Free" include-trends-opt-in="true" success-url="" default-source="thehustleco" default-medium="home-exit-popup" default-campaign="home-page" form-id="exit-popup-general" optinmonster-conversion="true"]
<script type="text/javascript"> var onloadCallback = function() { grecaptcha.render('verify-your-humanity', { 'sitekey' : '6LdddrcZAAAAALyttpvOqiwQGwq5BNhgDz4tMQGE' }); }; function getCookieValue(a) { var b = document.cookie.match('(^|[^;]+)\\s*' + a + '\\s*=\\s*([^;]+)'); return b ? atob(decodeURIComponent(b.pop())) : ''; } function getCookie(name) { var cookieArr = document.cookie.split(";"); for(var i = 0; i < cookieArr.length; i++) { var cookiePair = cookieArr[i].split("="); if(name == cookiePair[0].trim()) { return decodeURIComponent(cookiePair[1]); } } return null; } function setHiddenFieldValue(wrappingDiv, searchParams, className, utmName, cookieName, defaultValue) { var el = wrappingDiv.getElementsByClassName(className)[0]; var existingVal = el.getAttribute('value'); if (utmName == 'ref') { var newVal = searchParams.get(utmName) || getCookie(cookieName); } else { var newVal = searchParams.get(utmName) || getCookieValue(cookieName); } if ((existingVal == null || existingVal == '' || existingVal == defaultValue) && (newVal != null && newVal != '')) { el.setAttribute('value', newVal); } } function setHiddenFieldValueFromUtm( wrappingDiv, searchParams, className, utmName, defaultValue ) { var el = wrappingDiv.getElementsByClassName(className)[0]; if (el != null) { var existingVal = el.getAttribute("value"); var newVal = searchParams.get(utmName); if (newVal != null && newVal != "") { el.setAttribute("value", newVal); } } } function initForm() { var wrappingDivs = document.getElementsByClassName('email-submission'); wrappingDivs.forEach(wrappingDiv => { var sp = new URLSearchParams(; setHiddenFieldValue(wrappingDiv, sp, 'funnel-source', 'utm_source', 'funnel_source', 'thehustleco'); setHiddenFieldValue(wrappingDiv, sp, 'funnel-campaign', 'utm_campaign', 'funnel_campaign', 'home-page'); setHiddenFieldValue(wrappingDiv, sp, 'funnel-medium', 'utm_medium', 'funnel_medium', 'home-exit-popup'); setHiddenFieldValue(wrappingDiv, sp, 'funnel-referral', 'ref', 'funnel_referral', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-a', 'a', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-c', 'c', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-o', 'o', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-oc', 'oc', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-e', 'e', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-f', 'f', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-r', 'r', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-t', 't', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-s1', 's1', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-s2', 's2', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-s3', 's3', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-s4', 's4', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-s5', 's5', ''); var error_message = getCookieValue('validate-email-message'); if (error_message && error_message.trim() != '') { var error = wrappingDiv.getElementsByClassName('funnel-error')[0]; var prev_email = getCookieValue('funnel_email'); error_message = prev_email + " is not valid. Please try again"; error.innerHTML = error_message; = ''; } }); if (false) { initCaptchaFormV2(); } } function initCaptchaFormV2() { var v3RecaptchaResponseEl = document.getElementById('recaptcha-response-v3'); v3RecaptchaResponseEl.parentNode.removeChild(v3RecaptchaResponseEl); var wrappingDiv = document.getElementById('email-submission'); var subForm = wrappingDiv.getElementsByClassName('email-submission')[0]; var captchaVersion = document.createElement('input'); captchaVersion.class = 'g-recaptcha hidden-input'; captchaVersion.type = 'hidden'; = 'g-recaptcha-response-v2'; captchaVersion.value = 'true'; subForm.appendChild(captchaVersion); var captchaEl = document.createElement('div'); = 'verify-your-humanity'; subForm.prepend(captchaEl); var captchaApiScriptEl = document.createElement('script'); captchaApiScriptEl.src = ''; captchaApiScriptEl.async = true; captchaApiScriptEl.defer = true; document.head.appendChild(captchaApiScriptEl); } function appendCheckboxes_email_submission() { var wrappingDiv = document.getElementById('email-submission'); var optInDivs = wrappingDiv.querySelectorAll('.trends-opt-in'); optInDivs.forEach(el => { = null; if (el.getElementsByClassName('trends-opt-in-checkbox').length < 1) { var checkbox = document.createElement('input'); checkbox.setAttribute('id', 'trends_opt_in_email_submission'); checkbox.setAttribute('class', 'trends-opt-in-checkbox'); checkbox.setAttribute('type', 'checkbox'); checkbox.setAttribute('name', 'trends_opt_in'); var label = document.createElement('label'); label.setAttribute('for', 'trends_opt_in_email_submission'); label.setAttribute('class', 'trends-opt-in-text'); label.textContent = "Yes, I'd like to receive additional emails on hot business opportunities from Trends, by the Hustle"; el.appendChild(checkbox); el.appendChild(label);; } }) } window.addEventListener('DOMContentLoaded', (event) => { initForm(); if (true) { appendCheckboxes_email_submission(); } }); </script> <div class="email-signup" id=email-submission> <div class="funnel-error" style="display:none;"></div> <form class="email-submission " id="exit-popup-general" action="" method="post" autocomplete="email"> <div class="email-form-wrap"> <input class="funnel-source hidden-input" type="hidden" name="source" value="thehustleco"> <input class="funnel-campaign hidden-input" type="hidden" name="campaign" value="home-page"> <input class="funnel-medium hidden-input" type="hidden" name="medium" value="home-exit-popup"> <input class="funnel-form-id hidden-input" type="hidden" name="form-id" value="exit-popup-general"> <input class="funnel-referral hidden-input" type="hidden" name="referral_code"> <input class="funnel-fail-url hidden-input" type="hidden" name="fail_url" value=""> <input class="funnel-a hidden-input" type="hidden" name="a" value=""> <input class="funnel-c hidden-input" type="hidden" name="c" value=""> <input class="funnel-o hidden-input" type="hidden" name="o" value=""> <input class="funnel-oc hidden-input" type="hidden" name="oc" value=""> <input class="funnel-e hidden-input" type="hidden" name="e" value=""> <input class="funnel-f hidden-input" type="hidden" name="f" value=""> <input class="funnel-r hidden-input" type="hidden" name="r" value=""> <input class="funnel-t hidden-input" type="hidden" name="t" value=""> <input class="funnel-s1 hidden-input" type="hidden" name="s1" value=""> <input class="funnel-s2 hidden-input" type="hidden" name="s2" value=""> <input class="funnel-s3 hidden-input" type="hidden" name="s3" value=""> <input class="funnel-s4 hidden-input" type="hidden" name="s4" value=""> <input class="funnel-s5 hidden-input" type="hidden" name="s5" value=""> <input class="funnel-success-url hidden-input" type="hidden" name="success_url" value=""> <input id="recaptcha-response-v3" class="g-recaptcha hidden-input" type="hidden" name="g-recaptcha-response" value=""> <div class="signup-icon" style="display:none;"> <svg width="24" viewBox="0 0 24 24" fill="none" xmlns=""><path d="M22 6c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6Zm-2 0-8 5-8-5h16Zm0 12H4V8l8 5 8-5v10Z" fill="#848B92"></path></svg> </div> <input class="signup-email" type="email" name="email" placeholder="Your email address" required autocomplete="email"> <input class="email-submit om-trigger-conversion" type="submit" value="Join Free"> </div> <div class="validate-mistake-emails-message" style="display:none;"></div> <div class="trends-opt-in" style="display:none;"></div> <div submit-success> <template type="amp-mustache"> <p class="c-message c-message--success">Thank you for subscribing.</p> </template> </div> <div submit-error> <template type="amp-mustache"> <p class="c-message c-message--failed">Your submission failed. Please try again!</p> </template> </div> </form> </div>